[
  {
    "path": ".commitlintrc.json",
    "content": "{\n  \"extends\": [\"@commitlint/config-conventional\"]\n}\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": ".gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n.pnpm-store\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.bmad-core/\n.claude/\n.cursor/\nweb-bundles/\n.replit \nreplit.md   \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\nREGISTRY_STRUCTURE.md\npackages/*\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": ".prettierignore",
    "content": "dist\nnode_modules\n.next\nbuild\n.contentlayer\napps/www/pages/api/registry.json\n**/fixtures\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nThanks for your interest in contributing to ui.creative-tim.com.\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 [Creative Tim](https://creative-tim.com/contact).\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\n## Structure\n\nThis repository is structured as follows:\n\n```\napps\n└── www\n    ├── app\n    ├── components\n    ├── content\n    └── registry\n        └── creative-tim-ui\n            ├── example\n            └── ui\n```\n\n| Path                  | Description                              |\n| --------------------- | ---------------------------------------- |\n| `apps/www/app`        | The Next.js application for the website. |\n| `apps/www/components` | The React components for the website.    |\n| `apps/www/content`    | The content for the website.             |\n| `apps/www/registry`   | The registry for the components.         |\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/creative-tim/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 `creative-tim.com/ui` website:\n\n```bash\npnpm dev\n```\n## Documentation\n\nThe documentation for this project is located in the `www` workspace. You can run the documentation locally by running the following command:\n\n```bash\npnpm dev\n```\n\nDocumentation is written using [MDX](https://mdxjs.com). You can find the documentation files in the `apps/www/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/www/registry`. The components are organized by styles.\n\n```bash\napps\n└── www\n    └── registry\n        └── creative-tim\n            ├── blocks\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 build:registry` 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.\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) 2025 [Creative Tim](https://www.creative-tim.com/)\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": "[![Creative Tim UI](https://raw.githubusercontent.com/creativetimofficial/ui/refs/heads/main/apps/www/public/opengraph-image.png)](https://creative-tim.com/ui)\n\n# Creative Tim UI\n\n[Creative Tim UI](https://creative-tim.com/ui) is a comprehensive component library built on top of [shadcn/ui](https://ui.shadcn.com/) to help you build modern web applications faster.\n\n## Overview\n\nCreative Tim UI provides pre-built, customizable React components and blocks designed for building beautiful, production-ready web applications. \nThe CLI makes it easy to add these components to your Next.js project.\n\n## Installation\nYou can use the Creative Tim UI CLI directly with npx, or install it globally:\n```bash\n# Use directly (recommended)\nnpx @creative-tim/ui@latest add <component-name>\n\n# Or using shadcn cli\nnpx shadcn@latest add https://creative-tim.com/ui/r/all.json\n```\n\n## Prerequisites\nBefore using Creative Tim UI, ensure your Next.js project meets these requirements:\n- **Node.js 18** or later\n- **shadcn/ui** initialized in your project (npx shadcn@latest init)\n- **Tailwind CSS** configured\n\n## Usage\n\n### Install All Components\nInstall all available Creative Tim UI components at once:\n```bash\nnpx @creative-tim/ui@latest add all\n```\nThis command will:\n- Set up shadcn/ui if not already configured\n- Install all Creative Tim UI components to your configured components directory\n- Add necessary dependencies to your project\n\n### Install Specific Components\nInstall individual components using the `components add` command:\n```bash\nnpx @creative-tim/ui@latest add <component-name>\n```\nExamples:\n```bash\n# Install the orb component\nnpx @creative-tim/ui@latest add card\n```\n\n### Alternative: Use with shadcn CLI\nYou can also install components using the standard shadcn/ui CLI:\n```bash\n# Install all components\nnpx shadcn@latest add https://creative-tim.com/ui/r/all.json\n\n# Install a specific component\nnpx shadcn@latest add https://creative-tim.com/ui/r/button.json\n```\n\nAll available components can be found [here](https://creative-tim.com/ui/docs/components) or explore a list of example blocks [here](https://creative-tim.com/ui/blocks).\n\n## Blocks\n\nExplore our collection of ready-to-use blocks organized by category. Each block is fully customizable and can be added to your project with a single command.\n\n### Application UI\n\n<table>\n<tr>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/modals\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/modals-thumbnail.jpg\" alt=\"Modals\" />\n<br/>\n<strong>Modals</strong><br/>\n<em>5 Blocks</em>\n</a>\n</td>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/account\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/account-thumbnail.jpg\" alt=\"Account\" />\n<br/>\n<strong>Account</strong><br/>\n<em>7 Blocks</em>\n</a>\n</td>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/billing\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/billing-thumbnail.jpg\" alt=\"Billing\" />\n<br/>\n<strong>Billing</strong><br/>\n<em>5 Blocks</em>\n</a>\n</td>\n</tr>\n</table>\n\n### Marketing\n\n<table>\n<tr>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/testimonials\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/testimonial-thumbnail.jpg\" alt=\"Testimonial Sections\" />\n<br/>\n<strong>Testimonial Sections</strong><br/>\n<em>17 Blocks</em>\n</a>\n</td>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/contact\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/contact-us-thumbnail.jpg\" alt=\"Contact Sections\" />\n<br/>\n<strong>Contact Sections</strong><br/>\n<em>15 Blocks</em>\n</a>\n</td>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/footers\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/footer-thumbnail.jpg\" alt=\"Footers\" />\n<br/>\n<strong>Footers</strong><br/>\n<em>16 Blocks</em>\n</a>\n</td>\n</tr>\n<tr>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/faqs\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/faq-thumbnail.jpg\" alt=\"FAQs\" />\n<br/>\n<strong>FAQs</strong><br/>\n<em>6 Blocks</em>\n</a>\n</td>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/blog\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/blog-posts-thumbnail.jpg\" alt=\"Blog\" />\n<br/>\n<strong>Blog</strong><br/>\n<em>15 Blocks</em>\n</a>\n</td>\n</tr>\n</table>\n\n### Ecommerce UI\nReady-to-use blocks for product listings, shopping carts, and checkout flows.\n\n<table>\n<tr>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/ecommerce\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/ecommerce-thumbnail.jpg\" alt=\"Ecommerce Sections\" />\n<br/>\n<strong>Ecommerce Sections</strong><br/>\n<em>14 Blocks</em>\n</a>\n</td>\n</tr>\n</table>\n\n### Web 3.0\nInnovative sections built for decentralized applications, blockchain projects, and crypto platforms.\n\n<table>\n<tr>\n<td width=\"25%\">\n<a href=\"https://creative-tim.com/ui/blocks/web3\">\n<img src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/collections-thumbnail.jpg\" alt=\"Web 3.0 Cards\" />\n<br/>\n<strong>Web 3.0 Cards</strong><br/>\n<em>5 Blocks</em>\n</a>\n</td>\n</tr>\n</table>\n\n## Contributing\n\nIf you'd like to contribute to Creative Tim UI, please follow these steps:\n\n1. Fork the repository\n2. Create a new branch\n3. Make your changes to the components in the registry.\n4. Open a PR to the main branch.\n\nPlease read the [contributing guide](/CONTRIBUTING.md).\n\n## Copyrights and Licenses\n\nCreative Tim UI is built upon the incredible work of the open source community:\n\n- **[shadcn/ui](https://ui.shadcn.com/)** - The documentation structure, registry system, and foundational (atomic) components are from the open source work in shadcn/ui. [MIT License](https://github.com/shadcn-ui/ui/blob/main/LICENSE.md)\n- **[Material Tailwind](https://material-tailwind.com/v3)** by Creative Tim - The blocks and component designs are inspired by and based on Material Tailwind Framework. [MIT License](https://github.com/creativetimofficial/material-tailwind/blob/main/LICENSE.md)\n- **[Eleven Labs UI](https://github.com/elevenlabs/elevenlabs-ui)** - General inspiration for the documentation structure and approach of blocks. [MIT License](https://github.com/elevenlabs/ui/blob/main/LICENSE.md)\n- **[Geist Font](https://vercel.com/font)** by Vercel - The beautiful typeface used throughout the interface. [SIL Open Font License 1.1](https://github.com/vercel/geist-font/blob/main/LICENSE.txt)\n\nWe are grateful to these projects for making their work available under open source licenses.\n\n## License\n\nLicensed under the [MIT license](https://github.com/creativetimofficial/ui/blob/main/LICENSE.md).\n\nMade with love by [Creative Tim](https://creative-tim.com).\n"
  },
  {
    "path": "apps/www/.env.example",
    "content": "# Private Registry Authentication\n# Set your API key to access private components (testimonials-03, testimonials-04)\n# Get your API key from: https://creative-tim.com/ui\nAPI_KEY=your_api_key_here\n\nNEXT_PUBLIC_V0_URL=https://v0.app\nNEXT_PUBLIC_APP_URL=http://localhost:5000\n\nNEXT_PUBLIC_ASSET_PREFIX = \"/ui\"\nNEXT_PUBLIC_VIEW_PATH = \"/ui/view\""
  },
  {
    "path": "apps/www/.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/www/.prettierignore",
    "content": "dist\nnode_modules\n.next\nbuild\n.contentlayer\nregistry/__index__.tsx\ncontent/docs/components/calendar.mdx\n"
  },
  {
    "path": "apps/www/app/(app)/(root)/page.tsx",
    "content": "import { Metadata } from \"next\"\nimport Link from \"next/link\"\nimport { Download, Package, Star, Users } from \"lucide-react\"\n\nimport { ExamplesNav } from \"@/components/examples-nav\"\nimport { ExamplesPreview } from \"@/components/examples-preview\"\nimport { ShowcaseMasonry } from \"@/components/showcase-masonry\"\nimport { TestimonialsSection } from \"@/components/testimonials-section\"\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 \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\n\nconst title = \"Creative Tim UI\"\nconst description =\n  \"Open-source components, blocks, and AI agents designed to speed up your workflow. Import them seamlessly into your favorite tools through Registry and MCPs.\"\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\n  const assetPrefix = process.env.NEXT_PUBLIC_ASSET_PREFIX \n\n  return (\n    <div className=\"bg-stone-50 dark:bg-stone-950 flex flex-1 flex-col\">\n      <div className=\"relative overflow-hidden\">\n        <div\n          className=\"pointer-events-none absolute inset-0\"\n          style={{\n            background:\n              \"radial-gradient(circle at center, transparent 0%, transparent 25%, hsl(var(--background) / 0.5) 50%, hsl(var(--background) / 0.8) 70%, hsl(var(--background) / 0.95) 85%, hsl(var(--background)) 95%)\",\n          }}\n        />\n        <PageHeader className=\"relative z-10\">\n          <PageHeaderHeading className=\"max-w-4xl\">\n            <span className=\"flex items-baseline gap-2 sm:gap-3\">\n              <span className=\"font-geist-bold leading-[0.95] font-bold tracking-[-0.03em]\">\n                Creative Tim\n              </span>\n              <span className=\"font-geist font-normal tracking-[-0.02em] opacity-90\">\n                UI\n              </span>\n            </span>\n          </PageHeaderHeading>\n          <PageHeaderDescription>{description}</PageHeaderDescription>\n          <PageActions>\n            <Button asChild size=\"sm\" variant=\"outline\">\n              <Link href=\"/docs\">Get Started</Link>\n            </Button>\n            <Button asChild size=\"sm\">\n              <Link href=\"/blocks\">View Blocks</Link>\n            </Button>\n          </PageActions>\n\n          {/* Logo Section */}\n          <div className=\"mt-16 flex flex-col items-center gap-6\">\n            <div className=\"flex flex-wrap items-center justify-center gap-8\">\n              {/* OpenAI */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-open-ai.png`}\n                  alt=\"OpenAI\"\n                  className=\"h-7 w-auto\"\n                />\n              </div>\n\n              {/* Claude */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-claude.png`}\n                  alt=\"Claude\"\n                  className=\"h-7 w-auto\"\n                />\n              </div>\n\n              {/* v0 */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-v0.png`}\n                  alt=\"v0\"\n                  className=\"h-7 w-auto\"\n                />\n              </div>\n\n              {/* Replit */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-replit.png`}\n                  alt=\"Replit\"\n                  className=\"h-7 w-auto\"\n                />  \n              </div>\n\n              {/* Bolt */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-bolt.png`}\n                  alt=\"Bolt\"\n                  className=\"h-7 w-auto\"\n                />\n              </div>\n\n              {/* Lovable */}\n              <div className=\"opacity-50 grayscale transition-all hover:opacity-100 hover:grayscale-0 dark:invert dark:opacity-60 dark:hover:invert-0\">\n                <img\n                  src={`${assetPrefix}/logo-lovable.png`}\n                  alt=\"Lovable\"\n                  className=\"h-7 w-auto\"\n                />\n              </div>\n            </div>\n          </div>\n        </PageHeader>\n      </div>\n\n      <ShowcaseMasonry />\n      \n\n      {/* Achievements Section */}\n      <section className=\"container py-12 md:py-20\">\n        <div className=\"mx-auto text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold tracking-tight sm:text-4xl\">\n            Remarkable Achievements\n          </h2>\n          <p className=\"text-muted-foreground mx-auto mb-12 max-w-3xl text-base sm:text-lg\">\n            Discover how our UI Tools have transformed web development. These\n            achievements showcase our dedication to innovation and our\n            community&apos;s growth.\n          </p>\n\n          <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n            <Card className=\"p-6 text-left gap-0\">\n              <Users className=\"text-muted-foreground mb-4 h-8 w-8\" />\n              <div className=\"mb-1 text-3xl font-bold\">2.6M+</div>\n              <div className=\"mb-3 text-sm font-medium\">Community Members</div>\n              <p className=\"text-muted-foreground text-sm\">\n                Join our community of developers and designers\n              </p>\n            </Card>\n\n            <Card className=\"p-6 text-left gap-0\">\n              <Download className=\"text-muted-foreground mb-4 h-8 w-8\" />\n              <div className=\"mb-1 text-3xl font-bold\">8.6M+</div>\n              <div className=\"mb-3 text-sm font-medium\">\n                Cumulative Downloads\n              </div>\n              <p className=\"text-muted-foreground text-sm\">\n                Based on Material Tailwind and Creative Tim Products\n              </p>\n            </Card>\n\n            <Card className=\"p-6 text-left gap-0\">\n              <Star className=\"text-muted-foreground mb-4 h-8 w-8\" />\n              <div className=\"mb-1 text-3xl font-bold\">48,000+</div>\n              <div className=\"mb-3 text-sm font-medium\">\n                Github Cumulative Stars\n              </div>\n              <p className=\"text-muted-foreground text-sm\">\n                On 100+ Open Source Repositories and Projects\n              </p>\n            </Card>\n\n            <Card className=\"p-6 text-left gap-0\">\n              <Package className=\"text-muted-foreground mb-4 h-8 w-8\" />\n              <div className=\"mb-1 text-3xl font-bold\">280,000+</div>\n              <div className=\"mb-3 text-sm font-medium\">\n                Monthly NPM Downloads\n              </div>\n              <p className=\"text-muted-foreground text-sm\">\n                Including React, HTML, Tailwind CSS and more.\n              </p>\n            </Card>\n          </div>\n        </div>\n      </section>\n\n      {/* Examples Preview Section */}\n      <ExamplesPreview />\n\n      {/* Testimonials Section */}\n      <TestimonialsSection />\n\n      <PageNav className=\"hidden md:flex\">\n        <ExamplesNav className=\"[&>a:first-child]:text-primary flex-1 overflow-hidden\" />\n        <ThemeSelector className=\"mr-4 hidden md:flex\" />\n      </PageNav>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/blocks/[...categories]/page.tsx",
    "content": "import { getAllBlockIds } from \"@/lib/blocks\"\nimport { BlockDisplay } from \"@/components/block-display\"\nimport { registryCategories } from \"@/registry/registry-categories\"\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 = [] } = await params\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} />\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/blocks/layout.tsx",
    "content": "import { Metadata } from \"next\"\nimport Link from \"next/link\"\n\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 \"@/components/ui/button\"\n\nconst title = \"Blocks\"\nconst description =\n  \"A collection of building blocks and components made by Creative Tim on top of shadcn/ui.\"\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        <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=\"https://github.com/creativetimofficial/ui\">\n              Add a block\n            </Link>\n          </Button>\n        </PageActions>\n      </PageHeader>\n      <PageNav id=\"blocks\">\n        <BlocksNav />\n      </PageNav>\n      <div className=\"container-wrapper section-soft flex-1 md:py-12\">\n        <div className=\"container\">{children}</div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/blocks/page.tsx",
    "content": "import { BlockDisplay } from \"@/components/block-display\"\n\nexport const dynamic = \"force-static\"\nexport const revalidate = false\n\nconst FEATURED_BLOCKS = [\n  \"software-purchase-01\",\n  \"dark-product-overview-01\",\n  \"web3-04\",\n  \"account-basic-info-01\",\n  \"cruds-01\",\n  \"testimonials-03\",\n]\n\nexport default async function BlocksPage() {\n  return (\n    <div className=\"flex flex-col gap-12 md:gap-24\">\n      {FEATURED_BLOCKS.map((name) => (\n        <BlockDisplay name={name} key={name} />\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/docs/[[...slug]]/page.tsx",
    "content": "import Link from \"next/link\"\nimport { notFound } from \"next/navigation\"\nimport { mdxComponents } from \"@/mdx-components\"\nimport {\n  IconArrowLeft,\n  IconArrowRight,\n  IconArrowUpRight,\n} from \"@tabler/icons-react\"\nimport { findNeighbour } from \"fumadocs-core/server\"\n\nimport { source } from \"@/lib/source\"\nimport { absoluteUrl } from \"@/lib/utils\"\nimport { DocsCopyPage } from \"@/components/docs-copy-page\"\nimport { DocsSidebarCta } from \"@/components/docs-sidebar-cta\"\nimport { DocsTableOfContents } from \"@/components/docs-toc\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/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: \"@creativetim\",\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  // @ts-expect-error - revisit fumadocs types.\n  const MDX = doc.body\n  const neighbours = await findNeighbour(source.pageTree, page.url)\n\n  // @ts-expect-error - revisit fumadocs types.\n  const links = doc.links\n\n  return (\n    <div\n      data-slot=\"docs\"\n      className=\"flex items-stretch 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-2xl min-w-0 flex-1 flex-col gap-8 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-start justify-between\">\n                <h1 className=\"scroll-m-20 text-4xl font-semibold tracking-tight sm:text-3xl xl:text-4xl\">\n                  {doc.title}\n                </h1>\n                <div className=\"docs-nav bg-background/80 border-border/50 fixed inset-x-0 bottom-0 isolate z-50 flex items-center gap-2 border-t px-6 py-4 backdrop-blur-sm sm:static sm:z-0 sm:border-t-0 sm:bg-transparent sm:px-0 sm:pt-1.5 sm:backdrop-blur-none\">\n                  <DocsCopyPage\n                    // @ts-expect-error - revisit fumadocs types.\n                    page={doc.content}\n                    url={absoluteUrl(page.url)}\n                  />\n                  {neighbours.previous && (\n                    <Button\n                      variant=\"secondary\"\n                      size=\"icon\"\n                      className=\"extend-touch-target ml-auto 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              {doc.description && (\n                <p className=\"text-muted-foreground text-[1.05rem] text-balance sm:text-base\">\n                  {doc.description}\n                </p>\n              )}\n            </div>\n            {links ? (\n              <div className=\"flex items-center space-x-2 pt-4\">\n                {links?.doc && (\n                  <Badge asChild variant=\"secondary\">\n                    <Link href={links.doc} target=\"_blank\" rel=\"noreferrer\">\n                      Docs <IconArrowUpRight />\n                    </Link>\n                  </Badge>\n                )}\n                {links?.api && (\n                  <Badge asChild variant=\"secondary\">\n                    <Link href={links.api} target=\"_blank\" rel=\"noreferrer\">\n                      API Reference <IconArrowUpRight />\n                    </Link>\n                  </Badge>\n                )}\n              </div>\n            ) : null}\n          </div>\n          <div className=\"w-full flex-1 *:data-[slot=alert]:first:mt-0\">\n            <MDX components={mdxComponents} />\n          </div>\n        </div>\n        <div className=\"mx-auto hidden h-16 w-full max-w-2xl items-center gap-2 px-4 sm:flex md: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 className=\"sticky top-[calc(var(--header-height)+1px)] z-30 ml-auto hidden h-[calc(100svh-var(--footer-height)+2rem)] w-72 flex-col gap-4 overflow-hidden overscroll-none pb-8 xl:flex\">\n        <div className=\"h-(--top-spacing) shrink-0\" />\n        {/* @ts-expect-error - revisit fumadocs types. */}\n        {doc.toc?.length ? (\n          <div className=\"no-scrollbar overflow-y-auto px-8\">\n            {/* @ts-expect-error - revisit fumadocs types. */}\n            <DocsTableOfContents toc={doc.toc} />\n            <div className=\"h-12\" />\n          </div>\n        ) : null}\n        <div className=\"flex flex-1 flex-col gap-12 px-6\">\n          <DocsSidebarCta />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/docs/layout.tsx",
    "content": "import { source } from \"@/lib/source\"\nimport { DocsSidebar } from \"@/components/docs-sidebar\"\nimport { SidebarProvider } from \"@/components/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 className=\"3xl:fixed:container 3xl:fixed:px-3 min-h-min flex-1 items-start px-0 [--sidebar-width:220px] [--top-spacing:0] lg:grid lg:grid-cols-[var(--sidebar-width)_minmax(0,1fr)] lg:[--sidebar-width:240px] lg:[--top-spacing:calc(var(--spacing)*4)]\">\n        <DocsSidebar tree={source.pageTree} />\n        <div className=\"h-full w-full\">{children}</div>\n      </SidebarProvider>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 className=\"bg-background relative z-10 flex min-h-svh flex-col\">\n      <SiteHeader />\n      <main className=\"flex flex-1 flex-col\">{children}</main>\n      <SiteFooter />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/(app)/llm/[[...slug]]/route.ts",
    "content": "import { notFound } from \"next/navigation\"\nimport { NextResponse, type NextRequest } from \"next/server\"\n\nimport { source } from \"@/lib/source\"\n\nexport const revalidate = false\n\nexport async function GET(\n  _req: NextRequest,\n  { params }: { params: Promise<{ slug: string[] }> }\n) {\n  const slug = (await params).slug\n  const page = source.getPage(slug)\n\n  if (!page) {\n    notFound()\n  }\n\n  // @ts-expect-error - revisit fumadocs types.\n  return new NextResponse(page.data.content, {\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/www/app/(view)/view/[name]/page.tsx",
    "content": "import * as React from \"react\"\nimport { Metadata } from \"next\"\nimport { notFound } from \"next/navigation\"\nimport { registryItemSchema } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { getRegistryComponent, getRegistryItem } from \"@/lib/registry\"\nimport { absoluteUrl, cn } from \"@/lib/utils\"\n\nexport const revalidate = false\nexport const dynamic = \"force-static\"\nexport const dynamicParams = false\n\nconst getCachedRegistryItem = React.cache(async (name: string) => {\n  return await getRegistryItem(name)\n})\n\nexport async function generateMetadata({\n  params,\n}: {\n  params: Promise<{\n    name: string\n  }>\n}): Promise<Metadata> {\n  const { name } = await params\n  const item = await getCachedRegistryItem(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.description,\n    description,\n    openGraph: {\n      title,\n      description,\n      type: \"article\",\n      url: absoluteUrl(`/view/${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: \"@creativetim\",\n    },\n  }\n}\n\nexport async function generateStaticParams() {\n  const { Index } = await import(\"@/registry/__index__\")\n  const index = z.record(registryItemSchema).parse(Index)\n\n  return Object.values(index)\n    .filter((block) =>\n      [\n        \"registry:block\",\n        \"registry:component\",\n        \"registry:example\",\n        \"registry:internal\",\n      ].includes(block.type)\n    )\n    .map((block) => ({\n      name: block.name,\n    }))\n}\n\nexport default async function BlockPage({\n  params,\n}: {\n  params: Promise<{\n    name: string\n  }>\n}) {\n  const { name } = await params\n  const item = await getCachedRegistryItem(name)\n  const Component = getRegistryComponent(name)\n\n  if (!item || !Component) {\n    return notFound()\n  }\n\n  return (\n    <>\n      <div className={cn(\"bg-background\", item.meta?.container)}>\n        <Component />\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/api/r/[name]/route.ts",
    "content": "import { existsSync, readFileSync } from \"fs\"\nimport path from \"path\"\nimport { NextRequest, NextResponse } from \"next/server\"\n\nconst PRIVATE_COMPONENTS = [\"testimonials-03\", \"testimonials-04\"]\n\nexport async function GET(\n  request: NextRequest,\n  { params }: { params: Promise<{ name: string }> }\n) {\n  const { name: componentName } = await params\n\n  if (!PRIVATE_COMPONENTS.includes(componentName)) {\n    return NextResponse.json(\n      { error: \"Component not found or not private\" },\n      { status: 404 }\n    )\n  }\n\n  const authHeader = request.headers.get(\"authorization\")\n  const token = authHeader?.replace(\"Bearer \", \"\")\n\n  const queryToken = request.nextUrl.searchParams.get(\"token\")\n  const apiKey = request.headers.get(\"x-api-key\")\n\n  const providedToken = token || queryToken || apiKey\n\n  if (!isValidToken(providedToken)) {\n    return NextResponse.json(\n      {\n        error: \"Unauthorized\",\n        message:\n          \"Authentication required for private components. Set API_KEY in your .env.local file or provide it via Authorization header, X-API-Key header, or ?token= query parameter.\",\n      },\n      { status: 401 }\n    )\n  }\n\n  try {\n    const componentPath = path.join(\n      process.cwd(),\n      \"public\",\n      \"r\",\n      `${componentName}.json`\n    )\n\n    if (!existsSync(componentPath)) {\n      return NextResponse.json(\n        { error: \"Component not found\" },\n        { status: 404 }\n      )\n    }\n\n    const componentData = readFileSync(componentPath, \"utf-8\")\n    const component = JSON.parse(componentData)\n\n    return NextResponse.json(component, {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"Cache-Control\": \"private, max-age=3600\",\n      },\n    })\n  } catch (error) {\n    console.error(`Error serving private component ${componentName}:`, error)\n    return NextResponse.json(\n      { error: \"Internal server error\" },\n      { status: 500 }\n    )\n  }\n}\n\nfunction isValidToken(token: string | null): boolean {\n  if (!token) {\n    return false\n  }\n\n  const validApiKey = process.env.API_KEY\n\n  if (!validApiKey) {\n    console.warn(\n      \"API_KEY not set in environment variables. Private components will be inaccessible.\"\n    )\n    return false\n  }\n\n  return token === validApiKey\n}\n"
  },
  {
    "path": "apps/www/app/layout.tsx",
    "content": "import type { Metadata } from \"next\"\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 { Toaster } from \"@/components/ui/sonner\"\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: [\"Creative Tim\", \"UI\", \"shadcn\", \"Components\", \"agents\"],\n  authors: [\n    {\n      name: \"Creative Tim\",\n      url: \"https://creative-tim.com\",\n    },\n  ],\n  creator: \"creative-tim\",\n  openGraph: {\n    type: \"website\",\n    locale: \"en_US\",\n    url:\n      process.env.NEXT_PUBLIC_APP_URL! + process.env.NEXT_PUBLIC_ASSET_PREFIX,\n    title: siteConfig.name,\n    description: siteConfig.description,\n    siteName: siteConfig.name,\n    images: [\n      {\n        url: `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/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: [\n      `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/opengraph-image.png`,\n    ],\n    creator: \"@creativetim\",\n  },\n  icons: {\n    icon: `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/favicon.ico`,\n    shortcut: `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/favicon-16x16.png`,\n    apple: `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/apple-touch-icon.png`,\n  },\n  manifest: `${process.env.NEXT_PUBLIC_APP_URL}${process.env.NEXT_PUBLIC_ASSET_PREFIX}/site.webmanifest`,\n}\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html lang=\"en\" suppressHydrationWarning>\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          \"text-foreground group/body overscroll-none font-sans antialiased [--footer-height:calc(var(--spacing)*14)] [--header-height:calc(var(--spacing)*14)] xl:[--footer-height:calc(var(--spacing)*24)]\",\n          fontVariables\n        )}\n      >\n        <ThemeProvider>\n          <LayoutProvider>\n            <ActiveThemeProvider>\n              {children}\n              <TailwindIndicator />\n              <Toaster position=\"top-center\" />\n              <Analytics />\n            </ActiveThemeProvider>\n          </LayoutProvider>\n        </ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "apps/www/app/llms.txt/route.ts",
    "content": "import { registryCategories } from \"@/registry/registry-categories\"\nimport { registryCollections } from \"@/registry/registry-collections\"\nimport blocksMetadata from \"@/registry/__blocks__.json\"\n\nconst BASE_URL = \"https://www.creative-tim.com/ui\"\n\ntype BlockMeta = {\n  name: string\n  description: string\n  categories: string[]\n}\n\nexport async function GET() {\n  const blocks = blocksMetadata as BlockMeta[]\n\n  // Group blocks by category slug\n  const byCategory: Record<string, BlockMeta[]> = {}\n  for (const block of blocks) {\n    for (const cat of block.categories) {\n      if (!byCategory[cat]) byCategory[cat] = []\n      byCategory[cat].push(block)\n    }\n  }\n\n  const lines: string[] = []\n\n  lines.push(\"# Creative Tim UI — Blocks & Components Library\")\n  lines.push(\n    \"> 390+ ready-to-use React/Next.js UI blocks built on shadcn/ui and Tailwind CSS.\"\n  )\n  lines.push(\n    \"> Built by Creative Tim — 300+ open source UI products used by 2.8 million developers over the last decade.\"\n  )\n  lines.push(\n    \"> Docs: https://www.creative-tim.com/ui/docs\"\n  )\n  lines.push(\n    \"> API key required for PRO blocks — get one at: https://www.creative-tim.com/ui/pricing\"\n  )\n  lines.push(\"\")\n\n  lines.push(\"## Installation\")\n  lines.push(\"\")\n  lines.push(\"### Option 1 — Creative Tim CLI (recommended)\")\n  lines.push(\"```bash\")\n  lines.push(\"# Add a block by name\")\n  lines.push(\"npx @creative-tim/ui@latest add banner-01\")\n  lines.push(\"\")\n  lines.push(\"# Add multiple blocks\")\n  lines.push(\"npx @creative-tim/ui@latest add banner-01 hero-01 navbar-with-search\")\n  lines.push(\"```\")\n  lines.push(\"\")\n  lines.push(\"### Option 2 — shadcn CLI with full registry URL\")\n  lines.push(\"```bash\")\n  lines.push(\"# Add a block via the shadcn CLI\")\n  lines.push(\n    \"npx shadcn@latest add https://www.creative-tim.com/ui/r/banner-01.json\"\n  )\n  lines.push(\"```\")\n  lines.push(\"\")\n  lines.push(\n    \"Replace `banner-01` with any block name listed below.\"\n  )\n  lines.push(\"\")\n\n  lines.push(\"## AI Agent Skill\")\n  lines.push(\"\")\n  lines.push(\n    \"An agent skill is available for Claude Code, Cursor, Cline, and 40+ other AI coding agents.\"\n  )\n  lines.push(\n    \"It encodes Creative Tim's design philosophy, all install commands, PRO API key setup, and design rules — so agents generate blocks consistently without being told each time.\"\n  )\n  lines.push(\"\")\n  lines.push(\"```bash\")\n  lines.push(\"npx skills add creativetimofficial/ui\")\n  lines.push(\"```\")\n  lines.push(\"\")\n  lines.push(\n    \"Skill source: https://github.com/creativetimofficial/ui/tree/main/skills/creative-tim-ui\"\n  )\n  lines.push(\n    \"Skill page: https://skills.sh/creativetimofficial/ui/creative-tim-ui\"\n  )\n  lines.push(\"\")\n\n  lines.push(\"## Collections\")\n  lines.push(\"\")\n  for (const collection of registryCollections) {\n    lines.push(\n      `- [${collection.name}](${BASE_URL}/blocks/${collection.slug}): ${collection.description}`\n    )\n  }\n  lines.push(\"\")\n\n  lines.push(\"## Categories & Blocks\")\n  lines.push(\"\")\n\n  const visibleCategories = registryCategories.filter((c) => !c.hidden)\n\n  for (const category of visibleCategories) {\n    const categoryBlocks = byCategory[category.slug] ?? []\n    if (categoryBlocks.length === 0) continue\n\n    // Find which collection this category belongs to\n    const collection = registryCollections.find((col) =>\n      col.categories.includes(category.slug)\n    )\n    const browsePath = collection\n      ? `${BASE_URL}/blocks/${collection.slug}/${category.slug}`\n      : `${BASE_URL}/blocks`\n\n    lines.push(`### ${category.name}`)\n    lines.push(`> ${category.description}`)\n    lines.push(`> Browse: ${browsePath}`)\n    lines.push(\"\")\n\n    for (const block of categoryBlocks) {\n      lines.push(\n        `- [${block.name}](${BASE_URL}/r/${block.name}.json): ${block.description}`\n      )\n    }\n    lines.push(\"\")\n  }\n\n  lines.push(\"## Full Registry\")\n  lines.push(\"\")\n  lines.push(\n    `Machine-readable registry JSON: ${BASE_URL}/r/registry.json`\n  )\n\n  const text = lines.join(\"\\n\")\n\n  return new Response(text, {\n    headers: {\n      \"Content-Type\": \"text/plain; charset=utf-8\",\n      \"Cache-Control\": \"public, max-age=3600, stale-while-revalidate=86400\",\n    },\n  })\n}\n"
  },
  {
    "path": "apps/www/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+BwcAPgNAAC8DQAAvA5IAMQJuACgCUQAjAi4AOwNEADECWgAxAloAMQN6AFwBjAAvAPwALwF3AC8BCABcAQgAXAI7AFwCOwBcBEQAXAJYAE8DWQAxAlgANAIpAC8CSwAxAokAOwLgADsCogA7AtEALgKoAFwDBwBcAmgAOwJ3ABUCOgAvAjoALwHnAC8COgAvApQAXAI6AC8CKQAxAiUALwI6AC8COgAvAjoALwIaAC8CGgAvAeUALwGSAC8DSQAvAXsAAAKMABUCaAAZAhIAGwJjABYCVQAvAlIAWgMCAC8ESAAvAtAAMQJ2ADEDKAAxAnYAMQLQADECdgAxAygAMQJ2ADEEFgAx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Ai4CLwHIAjACJwGcAZ0BoAJdAlcCWQJbAl8CYAJeAlgCWgJcAlECPwJHAkYCMwIxAnoCfgJ7An8CfAKAAn0CgQJ5AncCeAG6AcoB+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+wECAVABZQF7AYUBjgGTAZoBpgGwAbMBwwHLAdUB3QHkAeoCBAIQAisCRAJWAmUCcAJ4AoECjwKWAp8CpwKtArICwwLOAtsC6wLwAwYD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AAAAAAAAAAD/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/sAAAAAAAA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AAEBugABAAQAAQCOAB8ABAAAAAEACAABCo4ADAADCqgAmgACABcAAgAMAAAADwAiAAsAJAAlAB8AJwAtACEALwAvACgAMQBGACkASABMAD8ATgBWAEQAWgBgAE0AYgBlAFQAZwB2AFgAeAB8AGgAfgCrAG0ArgC5AJsAuwDAAKcAxQDRAK0A0wEFALoBCQEOAO0BEAETAPMBFQEkAPcBJgEqAQcBLAFkAQwBaQFqAUUBRwqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAqECooAAAAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAAB6wHsgAAB7gHvgAAB6wHsgAAB7gHvgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgg2CDwIQgAAB8QAAAAAB8QAAAAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAACJwIogAAB8oAAAAAB8oAAAhICE4IVAhIB9AIVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAhICE4IVAAAB9YAAAAAB9YAAAAAB9YAAAAAB9wH6AAAB9wH6AAAB9wH6AAACE4IGAAACE4IGAAACE4IGAAACE4IGAAAB+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/www/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/JABkA9ABBiAAAJcAAAAAAhYCxgAAACAABAAAABUBAgADAAEECQABABwAAAADAAEECQACAA4AHAADAAEECQADADIAKgADAAEECQAEABwAAAADAAEECQAFAD4AXAAD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AAAAAAAAAAAD6AAAAAAAAAAAAAAD4AAAA+AAAAAAAAAD3APeA+AD4gPkAAAAAAAAAAAD4APyAAAD9gAAAAAAAAABAkMCegJLApoCuQKGAnsCXAJdAkkCogI/AlcCPgJMAkACQQKpAqYCqAJFAoUAAgAOAA8AFQAZACQAJQAtADAAOgA9AEAARQBGAEwAVgBYAFkAXQBkAGkAdAB1AHoAewCBAmACTQJhArACWgL9AKwAuAC5AL8AwwDOAM8A1wDaAOUA6QDsAPEA8gD4AQIBBAEFAQkBEAEVASABIQEmAScBLQJeApACXwKuAjoCRAKYAqACmQKhApECiAL7AokBZQJ2Aq8CigMFAo0CrAIyAjMC/gK4AocCRwMGAjEBZgJ3Ah8CHAIgAkYACAADAAYADAAHAAsADQASAB8AGgAcAB0ANgAyADMANAAYAEoAUABNAE4AVABPAqQAUwBuAGoAbABtAHwAVwEPALIArQCwALYAsQC1ALcAvADJAMQAxgDHAOAA3ADdAN4AwgD2APwA+QD6AQAA+wKlAP8BGgEWARgBGQEoAQMBKgAJALMABACuAAoAtAAQALoAEwC9ABQAvgARALsAFgDAABcAwQAgAMoAHgDIACEAywAbAMUAKADSACYA0AAqANQAKQDTAC8A2QAuANgAOQDjADcA4QA4AOIANQDbADEA5AA8AOgAPwDrAEEA7QBDAO8AQgDuAEQA8ABHAPMASQD1AEgA9ABLAPcAUgD+AFEA/QBVAQEAWgEGAFwBCABbAQcAXgEKAGEBDQBgAQwAXwELAGcBEwBmARIAZQERAHMBHwBwARwAawEXAHIBHgBvARsAcQEdAHcBIwB9ASkAfgCCAS4AhAEwAIMBLwAFAK8ALADWACcA0QA+AOoAYgEOAGgBFAMAAwEDDAMCAvwDAwMHAwQC/wLpAuoC7QLxAvIC7wLoAucC8ALrAu4BcAFxAZcBawGPAY4BkQGSAZMBjAGNAZQBdwGBAYgBZwFoAWkBagFuAW8BcgFzAXQBdQF2AYIBgwGFAYQBhgGHAYsBigGJAZABlQGWAbABsQG5AcUBxgHIAccByQHKAc4BzQHMAdMB2AHZAbIBswHaAa0B0gHRAdQB1QHWAc8B0AHXAboBuAHEAcsBmAHbAZkB3AGaAd0BmwHeAWwBrgFtAa8BnAHfAZ0B4AGeAeEBnwHi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aHVuZ2FydW1sYXV0VW1hY3JvblVvZ29uZWtVcmluZ1V0aWxkZVdhY3V0ZVdjaXJjdW1mbGV4V2RpZXJlc2lzV2dyYXZlWWNpcmN1bWZsZXhZZ3JhdmV1bmkxRUY4WmFjdXRlWmRvdGFjY2VudHVuaUE3OEJ1bmkwMTNCLmxvY2xNQUh1bmkwMTQ1LmxvY2xNQUhSLnNzMDRSYWN1dGUuc3MwNFJjYXJvbi5zczA0dW5pMDE1Ni5zczA0SS5zczA1SWFjdXRlLnNzMDVJY2lyY3VtZmxleC5zczA1SWRpZXJlc2lzLnNzMDVJZG90YWNjZW50LnNzMDVJZ3JhdmUuc3MwNUltYWNyb24uc3MwNUlvZ29uZWsuc3MwNUl0aWxkZS5zczA1Ry5zczA2R2JyZXZlLnNzMDZHY2lyY3VtZmxleC5zczA2dW5pMDEyMi5zczA2R2RvdGFjY2VudC5zczA2dW5pMUUyMC5zczA2QWRpZXJlc2lzLnNzMDhDZG90YWNjZW50LnNzMDhFZGllcmVzaXMuc3MwOEVkb3RhY2NlbnQuc3MwOEdkb3RhY2NlbnQuc3MwOElkaWVyZXNpcy5zczA4SWRvdGFjY2VudC5zczA4T2RpZXJlc2lzLnNzMDhVZGllcmVzaXMuc3MwOFdkaWVyZXNpcy5zczA4WWRpZXJlc2lzLnNzMDhaZG90YWNjZW50LnNzMDhJZGllcmVzaXMuc3MwNS5zczA4SWRvdGFjY2VudC5zczA1LnNzMDhHZG90YWNjZW50LnNzMDYuc3MwOEFfSS5kbGlnVV9JLmRsaWdhYnJldmV1bmkwMUNFYW1hY3JvbmFvZ29uZWtjYWN1dGVjY2Fyb25jY2lyY3VtZmxleGNkb3RhY2NlbnRkY2Fyb25kY3JvYXRlY2Fyb25lZG90YWNjZW50ZW1hY3JvbmVvZ29uZWt1bmkxRUJEdW5pMDI1OWdicmV2ZWdjYXJvbmdjaXJjdW1mbGV4dW5pMDEyM2dkb3RhY2NlbnR1bmkxRTIxdW5pMDFFNWhiYXJoY2lyY3VtZmxleGkubG9jbFRSS2ltYWNyb25pb2dvbmVraXRpbGRlaWp1bmkwMjM3dW5pMDA2QTAzMDFqY2lyY3VtZmxleHVuaTAxRTl1bmkwMTM3bGFjdXRlbGNhcm9udW5pMDEzQ25hY3V0ZW5jYXJvbnVuaTAxNDZlbmdvaHVuZ2FydW1sYXV0b21hY3JvbnJhY3V0ZXJjYXJvbnVuaTAxNTdzYWN1dGVzY2VkaWxsYXNjaXJjdW1mbGV4dW5pMDIxOXRiYXJ0Y2Fyb251bmkwMTYzdW5pMDIxQnVicmV2ZXVodW5nYXJ1bWxhdXR1bWFjcm9udW9nb25la3VyaW5ndXRpbGRld2FjdXRld2NpcmN1bWZsZXh3ZGllcmVzaXN3Z3JhdmV5Y2lyY3VtZmxleHlncmF2ZXVuaTFFRjl6YWN1dGV6ZG90YWNjZW50dW5pQTc4Q3VuaTAxM0MubG9jbE1BSHVuaTAxNDYubG9jbE1BSGEuc3MwMWFhY3V0ZS5zczAxYWJyZXZlLnNzMDF1bmkwMUNFLnNzMDFhY2lyY3VtZmxleC5zczAxYWRpZXJlc2lzLnNzMDFhZ3JhdmUuc3MwMWFtYWNyb24uc3MwMWFvZ29uZWsuc3MwMWFyaW5nLnNzMDFhdGlsZGUuc3MwMWEuc3MwMmFhY3V0ZS5zczAyYWJyZXZlLnNzMDJ1bmkwMUNFLnNzMDJhY2lyY3VtZmxleC5zczAyYWRpZXJlc2lzLnNzMDJhZ3JhdmUuc3MwMmFtYWNyb24uc3MwMmFvZ29uZWsuc3MwMmFyaW5nLnNzMDJhdGlsZGUuc3MwMmwuc3MwM2xhY3V0ZS5zczAzbGNhcm9uLnNzMDN1bmkwMTNDLnNzMDNsc2xhc2guc3MwM2FkaWVyZXNpcy5zczA4Y2RvdGFjY2VudC5zczA4ZWRpZXJlc2lzLnNzMDhlZG90YWNjZW50LnNzMDhnZG90YWNjZW50LnNzMDhpLnNzMDhpZGllcmVzaXMuc3MwOGkubG9jbFRSSy5zczA4aW9nb25lay5zczA4aWouc3MwOGouc3MwOG9kaWVyZXNpcy5zczA4dWRpZXJlc2lzLnNzMDh3ZGllcmVzaXMuc3MwOHlkaWVyZXNpcy5zczA4emRvdGFjY2VudC5zczA4YWRpZXJlc2lzLnNzMDEuc3MwOGFkaWVyZXNpcy5zczAyLnNzMDhmX2YubGlnYXRfdC5saWdhdW5pMDQxMHVuaTA0MTF1bmkwNDEydW5pMDQxM3VuaTA0MDN1bmkwNDkwdW5pMDQ5MnVuaTA0MTR1bmkwNDE1dW5pMDQwMHVuaTA0MDF1bmkwNDE2dW5pMDQxN3VuaTA0MTh1bmkwNDE5dW5pMDQxQXVuaTA0MEN1bmkwNDFCdW5pMDQxQ3VuaTA0MUR1bmkwNDFFdW5pMDQxRnVuaTA0MjB1bmkwNDIxdW5pMDQyMnVuaTA0MjN1bmkwNDBFdW5pMDQyNHVuaTA0MjV1bmkwNDI3dW5pMDQyNnVuaTA0Mjh1bmkwNDI5dW5pMDQwRnVuaTA0MkN1bmkwNDJCdW5pMDQyQXVuaTA0MDl1bmkwNDBBdW5pMDQwNXVuaTA0MDR1bmkwNDJEdW5pMDQwNnVuaTA0MDd1bmkwNDA4dW5pMDQwQnVuaTA0MkV1bmkwNDJGdW5pMDQwMnVuaTA0NjJ1bmkwNDZBdW5pMDQ3MnVuaTA0NzR1bmkwNDk2dW5pMDQ5QXVuaTA0QTJ1bmkwNEFFdW5pMDRCMHVuaTA0QjJ1bmkwNEI2dW5pMDRCQXVuaTA0QzB1bmkwNEQ4dW5pMDRFMnVuaTA0RTh1bmkwNEVFdW5pMDQzMHVuaTA0MzF1bmkwNDMydW5pMDQzM3VuaTA0NTN1bmkwNDkxdW5pMDQ5M3VuaTA0MzR1bmkwNDM1dW5pMDQ1MHVuaTA0NTF1bmkwNDM2dW5pMDQzN3VuaTA0Mzh1bmkwNDM5dW5pMDQ1RHVuaTA0M0F1bmkwNDVDdW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ1RXVuaTA0NDR1bmkwNDQ1dW5pMDQ0N3VuaTA0NDZ1bmkwNDQ4dW5pMDQ0OXVuaTA0NUZ1bmkwNDRDdW5pMDQ0QnVuaTA0NEF1bmkwNDU5dW5pMDQ1QXVuaTA0NTV1bmkwNDU0dW5pMDQ0RHVuaTA0NTZ1bmkwNDU3dW5pMDQ1OHVuaTA0NUJ1bmkwNDRFdW5pMDQ0RnVuaTA0NTJ1bmkwNDYzdW5pMDQ2QnVuaTA0NzN1bmkwNDc1dW5pMDQ5N3VuaTA0OUJ1bmkwNEEzdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNENGdW5pMDREOXVuaTA0RTN1bmkwNEU5dW5pMDRFRkxhbWJkYXVuaTAzQTlsYW1iZGFwaXVuaTIxMDd1bmkyNEZGdW5pMjc3NnVuaTI3Nzd1bmkyNzc4dW5pMjc3OXVuaTI3N0F1bmkyNzdCdW5pMjc3Q3VuaTI3N0R1bmkyNzdFdW5pMjRFQXVuaTI0NjB1bmkyNDYxdW5pMjQ2MnVuaTI0NjN1bmkyNDY0dW5pMjQ2NXVuaTI0NjZ1bmkyNDY3dW5pMjQ2OHplcm8uc3MwOW9uZS5zczA5emVyby50Zm9uZS50ZnR3by50ZnRocmVlLnRmZm91ci50ZmZpdmUudGZzaXgudGZzZXZlbi50ZmVpZ2h0LnRmbmluZS50ZnVuaTIxNTN1bmkyMTU0dW5pMjE1NXVuaTIwODB1bmkyMDgxdW5pMjA4MnVuaTIwODN1bmkyMDg0dW5pMjA4NXVuaTIwODZ1bmkyMDg3dW5pMjA4OHVuaTIwODl1bmkyMDcwdW5pMDBCOXVuaTAwQjJ1bmkwMEIzdW5pMjA3NHVuaTIwNzV1bmkyMDc2dW5pMjA3N3VuaTIwNzh1bmkyMDc5dW5pMDBBMGh5cGhlbl9oeXBoZW5faHlwaGVuX2dyZWF0ZXIubGlnYWh5cGhlbl9oeXBoZW5fZ3JlYXRlci5saWdhaHlwaGVuX2dyZWF0ZXIubGlnYXVuaTMwMDNwZXJpb2Quc3MwOGNvbG9uLnNzMDhzZW1pY29sb24uc3MwOGVsbGlwc2lzLnNzMDhleGNsYW0uc3MwOGV4Y2xhbWRvd24uc3MwOHF1ZXN0aW9uLnNzMDhxdWVzdGlvbmRvd24uc3MwOHBlcmlvZGNlbnRlcmVkLnNzMDh1bmkzMDFDdW5pMzAwOHVuaTMwMDl1bmkzMDEwdW5pMzAxMXVuaTMwMEN1bmkzMDBEdW5pMzAwQXVuaTMwMEJ1bmkzMDE0dW5pMzAxNXVuaTMwMEV1bmkzMDBGdW5pMzAxNnVuaTMwMTd1bmkwRTNGbGVzc19oeXBoZW4ubGlnYWxlc3NfaHlwaGVuX2h5cGhlbi5saWdhbGVzc19oeXBoZW5faHlwaGVuX2h5cGhlbi5saWdhbGVzc19oeXBoZW5fZ3JlYXRlci5saWdhdW5pMjYzOXNtaWxlZmFjZXVuaUY4RkZ1bmkyMTE3bWludXRlc2Vjb25kdW5pMjExNnVuaTI0MEN1bmkyM0NFdW5pMjQwQkV1cm91bmkyMEI0dW5pMjBCRHVuaTIwQjl1bmkyMEFBbm90ZXF1YWxncmVhdGVyZXF1YWxsZXNzZXF1YWxhcHByb3hlcXVhbGluZmluaXR5aW50ZWdyYWx1bmkyMjA2cHJvZHVjdHN1bW1hdGlvbnJhZGljYWxwYXJ0aWFsZGlmZnVuaTAwQjVhcnJvd3VwdW5pMjE5N2Fycm93cmlnaHR1bmkyMTk4YXJyb3dkb3dudW5pMjE5OWFycm93bGVmdHVuaTIxOTZhcnJvd2JvdGhhcnJvd3VwZG51bmkyMTlEdW5pMjFFNHVuaTIxRTV1bmkyMUE5dW5pMjFBQXVuaTIxQjB1bmkyMUIxdW5pMjFCM3VuaTIxQjRjYXJyaWFnZXJldHVybnVuaTIxRTdhcnJvd3VwLnNzMDd1bmkyMTk3LnNzMDdhcnJvd3JpZ2h0LnNzMDd1bmkyMTk4LnNzMDdhcnJvd2Rvd24uc3MwN3VuaTIxOTkuc3MwN2Fycm93bGVmdC5zczA3dW5pMjE5Ni5zczA3YXJyb3dib3RoLnNzMDdhcnJvd3VwZG4uc3MwN3VuaTI1Q0ZjaXJjbGV1bmkyNUNDbG96ZW5nZXRyaWFndXB1bmkyNUI2dHJpYWdkbnVuaTI1QzB1bmkyNUIzdW5pMjVCN3VuaTI1QkR1bmkyNUMxdW5pMDMwNi5jeXVuaTAzMDh1bmkwMzA3Z3JhdmVjb21iYWN1dGVjb21idW5pMDMwQnVuaTAzMEMuYWx0dW5pMDMwMnVuaTAzMEN1bmkwMzA2dW5pMDMwQXRpbGRlY29tYnVuaTAzMDR1bmkwMzEydW5pMDMyNnVuaTAzMjYubG9jbE1BSHVuaTAzMjd1bmkwMzI4dW5pMDMzNXVuaTAzMDguc3MwOHVuaTAzMDcuc3MwOGRpZXJlc2lzLnNzMDhkb3RhY2NlbnQuc3MwOHVuaTAyQkN1bmkwMkI5dW5pMDJDOGJsYWNrQ2lyY2xlZGJsYWNrQ2lyY2xlZFN0cm9rZTAwMS4yMDBjb3B5cmlnaHQgbWlzc2luZ0dlaXN0IFNlbWlCb2xkU2VtaUJvbGQA6QIAAQAMABEAFgAcADEAPABEAEgATgB1AH4AgQCHAIwAkQCUAJkAngC0ALgAwwEMARMBGwEgASgBMAFcAWABdQGCAYoBkQGYAaIBqwH2AhUCLwJFAk8CVAJbAmECkAKpAsAC0QLcAuYC7QL0AwADBgMlAysDLwNBA04D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AAUBlwGXAAUBmgGaAAQBpQGlAAQBpwGnAAQB7AHsAAMB7gHuAAMB8AHwAAIB8QHxAAQB8wHzAAkB9AH0AAgB9QH1AAYB9gH2AAoB9wH3AAQB+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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AO0AzwDvAQ4A1gEQATAA9gEyAUsBFwFNAWEBMQFkAWQBRgFnAWoBRwFsAXYBSwF4AYQBVgGGAYYBYwGJAZIBZAGVAZ0BbgGfAZ8BdwGhAaEBeAGkAacBeQGpAbkBfQG7AcoBjgHNAc0BngHRAdoBnwHcAekBqQHrAewBtwHuAe4BuQHwAfIBugH6AfoBvQIPAg8BvgJMAk0BvwJ8AnwBwQKGAoYBwgKJAokBwwKhAqEBxALPAs8BxQACAKcADQANAAMADgAOAAEADwAUAAIAFQAVAAcAGQAiAAMAIwAjAAcAJAAkAAQAJQAsAAUALQAwAA8AMQAxAAsAMgA5AA8AOgA8AAsAPQA/AA0AQABEAAYARQBLAA8ATABUAAcAVQBVAAMAVgBWAAgAWABYAAcAWQBcAAkAXQBiAAcAZABoAAoAaQBzAAsAdAB5AAwAegB6AA0AewCAAAwAgQCEAA4AhgCGAAYAhwCHAA8AiACLAAkAlQCaAAUAnACcAAIAnQCeAAMAnwCfAAUAoAChAA8AogCiAAcAowCjAAsApAClAAwApgCmAA4AqQCpAAUArAC2ABIAtwC+ABQAvwC/AA8AwgDNABQAzgDOABEAzwDWABcA1wDZABMA2gDlAA8A5wDoAA8A6QDrABkA7ADtABIA7wDwABIA8QD3ABMA+AEDABQBBAEEABcBBQEIABUBCQEOABQBEAEUABYBFQEfABcBIAElABgBJgEmABkBJwEsABgBLQEwABoBMgEyABIBMwE+ABMBPwFJABcBSgFLAA8BTQFOAA8BTwFPABIBUAFSABQBUwFTABcBVAFZAA8BWgFaABQBWwFbABcBXAFdABgBXgFeABoBXwFfABMBYAFgABcBYQFhABEBZAFkABYBaAFpAAEBagFqAAoBbAFtAAoBbwFxAAMBcgFyAA0BcwFzAAEBdAF1AA8BdgF2AA0BeAF6AA8BewF7AAcBfAF8AA8BfQF9AAgBfgF+AAIBfwF/AAoBgAGBAAwBggGCAAcBgwGDAA0BhAGEABsBhgGGAA8BiQGJAAEBigGKABsBiwGNAAEBjgGOAAcBjwGPAAIBkAGQAAcBkQGSABsBlQGVAAcBlgGWABsBlwGYAAEBmQGZAA0BmgGaAAcBmwGbAAwBnAGdAA0BnwGfAAwBoQGhAA0BpAGkABsBpQGlAAcBpgGmAA8BpwGnAAcBqQGpABIBqgGrABQBrAGvABUBsAGzABQBtAG0ABkBtQG1ABQBtgG4ABcBuQG5ABkBuwG9ABcBvgG+ABQBvwG/ABMBwAHBABQBwgHCABUBwwHEABgBxQHFABQBxgHGABkBxwHKABcBzQHNABcB0QHTABQB1AHVABcB1gHWAA8B1wHXABMB2AHYABQB2QHZABcB2gHaABMB3AHcABkB3QHdABQB3gHeABgB3wHgABkB4QHhAA8B4gHjABgB5AHkABkB5QHlABcB5gHmABMB5wHnAA8B6AHoABQB6QHpABcB6wHrABgB8AHwAAIB8QHxAAcB8gHyABsB+gH6AAcCDwIPAAcCTAJMAAwCfAJ8ABEChgKGABACiQKJAAcCoQKhABsAAgCxAAIADQATAA4ADgAYAA8AFAADABUAFgAYABcAGAADABkAIgAYACMAIwADACQAJAABACUALAADAC0AOQAYADoAPAACAD0AQgABAEMAQwAYAEQARAAWAEUASwAYAEwAVQADAFYAVwAYAFgAWAADAFkAXAAYAF0AYgADAGQAaAAEAGkAcwAFAHQAeQAHAHoAegAXAHsAgAAHAIYAiwAYAJUAmgADAJsAmwATAJwAnAADAJ0AngAYAJ8AnwADAKAAoQAYAKIAogADAKMAowAFAKQApQAHAKkAqQADAKoAqgATAKsAqwAFAKwAtwAIALgAuAAYALkAzQANAM4AzgAKAM8A1gANANcA5AAYAOUA5QAUAOcA6AAUAOkA6wAMAOwA8AALAPEA9wAMAPgBAQANAQIBAwAMAQQBBAANAQUBCAAMAQkBDgANARABFAAPARUBHwARASABJQASASYBJgAVAScBLAASAS0BMAAgATIBMgALATMBMwAMATQBPgAIAT8BSQANAUoBSwAYAU0BTgAYAU8BTwAIAVABUwANAVQBWQAYAVoBWgANAVsBWwARAVwBXQASAV4BXgAgAV8BXwAIAWABYAANAWEBYQAKAWQBZAAPAWUBZgAJAWcBZwATAWgBawAYAWwBbQABAW4BbgATAW8BcQAYAXIBcgAXAXMBcwAQAXQBdwAYAXgBeAAfAXkBegAYAXsBewADAXwBfQAYAX4BfgADAX8BfwAEAYABgQAGAYIBggADAYMBgwAXAYUBigAYAYwBjAACAY0BjQABAY4BkAADAZEBkgABAZQBlAAE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BawFsgWsBWQF9AX6BfQF+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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\"}"
  },
  {
    "path": "apps/www/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+sD88P7xABECEQQRBgEH4QnBC6ENcQ9BELESYRQBFYEWYRfRGUEasRuhHQEdsR6BH9EgkSHhIqEj4SUhJkEnIS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+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//ABEAAAABAAIAAwAH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\"}"
  },
  {
    "path": "apps/www/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            viewBox=\"0 0 876 876\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            width={80}\n            height={80}\n          >\n            <path d=\"M468 292H528V584H468V292Z\" fill=\"currentColor\" />\n            <path d=\"M348 292H408V584H348V292Z\" fill=\"currentColor\" />\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/www/components/active-theme.tsx",
    "content": "\"use client\"\n\nimport {\n  createContext,\n  ReactNode,\n  useContext,\n  useEffect,\n  useState,\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/www/components/analytics.tsx",
    "content": "\"use client\"\n\nimport React, { useEffect, useState } from \"react\"\nimport Script from \"next/script\"\n\n// import { Analytics as VercelAnalytics } from \"@vercel/analytics/react\"\n\nexport function Analytics() {\n  const gtmId = process.env.NEXT_PUBLIC_GTM_ID\n\n  // GA measurement ID: prefer env var, fallback to the ID you provided\n  const gaId = process.env.NEXT_PUBLIC_GA_AI_ID\n\n  // Mode: 'ga' | 'gtm' | null (not decided yet)\n  const [mode, setMode] = useState<null | \"ga\" | \"gtm\">(null)\n\n  useEffect(() => {\n    try {\n      const path = window.location.pathname || \"\"\n      const isR = path.includes(\"/r/\")\n      const isUiView = path.startsWith(\"/ui/view\")\n\n      if (isUiView) {\n        // Disable analytics for /ui/view routes\n        setMode(null)\n        return\n      }\n\n      if (isR) {\n        setMode(\"ga\")\n      } else {\n        setMode(\"gtm\")\n      }\n    } catch {\n      // noop\n      setMode(\"gtm\")\n    }\n  }, [])\n\n  // Not ready yet\n  if (!mode) return null\n\n  return (\n    <>\n      {mode === \"gtm\" && gtmId && (\n        <>\n          <Script\n            id=\"gtm-script\"\n            strategy=\"afterInteractive\"\n            dangerouslySetInnerHTML={{\n              __html: `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','${gtmId}');`,\n            }}\n          />\n\n          <noscript\n            dangerouslySetInnerHTML={{\n              __html: `<iframe src=\"https://www.googletagmanager.com/ns.html?id=${gtmId}\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>`,\n            }}\n          />\n        </>\n      )}\n\n      {mode === \"ga\" && gaId && (\n        <>\n          <Script\n            src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`}\n            strategy=\"afterInteractive\"\n            data-ga\n          />\n          <Script id=\"gtag-init\" strategy=\"afterInteractive\">\n            {`window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${gaId}');`}\n          </Script>\n        </>\n      )}\n\n      {/* If you also want Vercel Analytics, uncomment the import above and\n          add <VercelAnalytics /> here. */}\n    </>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/announcement.tsx",
    "content": "import Link from \"next/link\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\n\nexport function Announcement() {\n  return (\n    <Badge asChild variant=\"secondary\" className=\"rounded-full\">\n      <Link href=\"/docs/changelog\">\n        Insert Announcement here <ArrowRightIcon />\n      </Link>\n    </Badge>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/block-display.tsx",
    "content": "import * as React from \"react\"\nimport { registryItemFileSchema } from \"shadcn/schema\"\nimport { 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\"\n\nexport async function BlockDisplay({ name }: { name: string }) {\n  const item = await getCachedRegistryItem(name)\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 item={item} tree={tree} highlightedFiles={highlightedFiles}>\n      <ComponentPreview\n        name={item.name}\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(async (name: string) => {\n  return await getRegistryItem(name)\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/www/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/${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/${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/www/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 { ImperativePanelHandle } from \"react-resizable-panels\"\nimport { registryItemFileSchema, registryItemSchema } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { trackEvent } from \"@/lib/events\"\nimport { createFileTreeForRegistryItemFiles, FileTree } 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 { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from \"@/components/ui/resizable\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n  Sidebar,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  SidebarMenuSub,\n  SidebarProvider,\n} from \"@/components/ui/sidebar\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport {\n  ToggleGroup,\n  ToggleGroupItem,\n} from \"@/components/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<ImperativePanelHandle | 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<ImperativePanelHandle>(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\nfunction BlockViewerToolbar() {\n  const { setView, view, item, resizablePanelRef, setIframeKey } =\n    useBlockViewer()\n  const { copyToClipboard, isCopied } = useCopyToClipboard()\n  // const viewPath = process.env.NEXT_PUBLIC_VIEW_PATH || \"/view\"\n\n  return (\n    <div className=\"hidden w-full flex-col gap-4 pl-2 md:pr-6 lg:flex\">\n      {/* Title and Description Section */}\n      <div className=\"flex flex-col gap-2\">\n        <div className=\"flex items-center gap-2\">\n          <h2 className=\"text-2xl font-semibold tracking-tight\">\n            <a\n              href={`#${item.name}`}\n              className=\"underline-offset-2 hover:underline\"\n            >\n            {item.description?.replace(/\\.$/, \"\")}\n          </a>\n        </h2>\n      </div>\n        {item.meta?.details && (\n          <p className=\"text-muted-foreground text-sm leading-relaxed max-w-2xl\">\n            {item.meta.details}\n          </p>\n        )}\n      </div>\n\n      {/* Controllers Section */}\n      <div className=\"flex w-full items-center gap-2\">\n          {/* {isPro && !hasAccess ? (\n              <Button\n                variant=\"outline\"\n                className=\"w-fit cursor-not-allowed gap-1 px-2 opacity-50 shadow-none\"\n                size=\"sm\"\n                disabled\n                title=\"Upgrade to PRO to access this component\"\n              >\n                <Terminal />\n                <span>\n                  npx @creative-tim/ui@latest add {item.name}\n                </span>\n              </Button>\n            ) : ( */}\n              <Button\n                variant=\"outline\"\n                className=\"w-fit gap-1 px-2 shadow-none\"\n                size=\"sm\"\n                onClick={() => {\n                  copyToClipboard(\n                    `npx @creative-tim/ui@latest add ${item.name}`\n                  )\n                }}\n              >\n                {isCopied ? <Check /> : <Terminal />}\n                <span>\n                  npx @creative-tim/ui@latest add {item.name}\n                </span>\n              </Button>\n            {/* )} */}\n            \n        \n        \n        <div className=\"ml-auto flex items-center gap-2\">\n          <div className=\"h-8 items-center gap-1.5 rounded-md border p-1 shadow-none\">\n            <ToggleGroup\n              type=\"single\"\n              defaultValue=\"100\"\n              onValueChange={(value) => {\n                setView(\"preview\")\n                if (resizablePanelRef?.current) {\n                  resizablePanelRef.current.resize(parseInt(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/${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          <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-md 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\" disabled={isPro && !hasAccess}> */}\n              <TabsTrigger value=\"code\">\n                Code\n              </TabsTrigger>\n            </TabsList>\n          </Tabs>\n         \n          <Separator orientation=\"vertical\" className=\"mx-1 !h-4\" />\n          <OpenInV0Button name={item.name} />\n        </div>\n      </div>\n    </div>\n  )\n}\n\nfunction BlockViewerIframe({ className }: { className?: string }) {\n  const { item, iframeKey } = useBlockViewer()\n  const viewPath = process.env.NEXT_PUBLIC_VIEW_PATH || \"/view\"\n\n  return (\n    <iframe\n      key={iframeKey}\n      src={`${viewPath}/${item.name}`}\n      height={item.meta?.iframeHeight ?? 930}\n      loading=\"lazy\"\n      className={cn(\n        \"bg-background no-scrollbar relative z-20 w-full\",\n        className\n      )}\n    />\n  )\n}\n\nfunction BlockViewerView() {\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          direction=\"horizontal\"\n          className=\"after:bg-surface/50 relative z-10 after:absolute after:inset-0 after:right-3 after:z-0 after:rounded-xl\"\n        >\n          <ResizablePanel\n            ref={resizablePanelRef}\n            className=\"bg-background relative aspect-[4/2.5] overflow-hidden rounded-lg border md:aspect-auto md:rounded-xl\"\n            defaultSize={100}\n            minSize={30}\n          >\n            <BlockViewerIframe />\n          </ResizablePanel>\n          <ResizableHandle className=\"after:bg-border 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: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=\"text-muted-foreground ml-auto shrink-0 font-mono text-xs\">\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/${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/${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  // All components are accessible in open source version\n  if (false) {\n    return (\n      <div className=\"bg-code text-code-foreground mr-[14px] flex overflow-hidden rounded-xl border group-data-[view=preview]/block-view-wrapper:hidden md:h-(--height)\">\n        <div className=\"flex flex-1 flex-col items-center justify-center gap-4 p-8\">\n          <Badge\n            variant=\"default\"\n            className=\"border-0 bg-gradient-to-r from-amber-500 to-orange-500 px-4 py-2 text-lg text-white\"\n          >\n            PRO\n          </Badge>\n          <p className=\"text-muted-foreground max-w-md text-center\">\n            This is a PRO component. Upgrade your account to access the source\n            code and install this component.\n          </p>\n          <Button variant=\"default\" className=\"mt-2\">\n            Upgrade to PRO\n          </Button>\n        </div>\n      </div>\n    )\n  }\n\n  return (\n    <div className=\"bg-code text-code-foreground mr-[14px] flex overflow-hidden rounded-xl border 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=\"text-code-foreground [&_svg]:text-code-foreground flex h-12 shrink-0 items-center gap-2 border-b px-4 py-2 [&_svg]:size-4 [&_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=\"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 rounded-none pl-(--index) whitespace-nowrap\"\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=\"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 rounded-none pl-(--index) whitespace-nowrap\"\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  ...props\n}: Pick<BlockViewerContext, \"item\" | \"tree\" | \"highlightedFiles\"> & {\n  children: React.ReactNode\n}) {\n  return (\n    <BlockViewerProvider\n      item={item}\n      tree={tree}\n      highlightedFiles={highlightedFiles}\n      {...props}\n    >\n      <BlockViewerToolbar />\n      <BlockViewerView />\n      <BlockViewerCode />\n      <BlockViewerMobile>{children}</BlockViewerMobile>\n    </BlockViewerProvider>\n  )\n}\n\nexport { BlockViewer }\n"
  },
  {
    "path": "apps/www/components/blocks-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport {\n  ScrollArea,\n  ScrollBar,\n} from \"@/components/ui/scroll-area\"\nimport { registryCategories } from \"@/registry/registry-categories\"\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=\"text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 items-center justify-center px-4 text-center text-base font-medium transition-colors\"\n      data-active={isActive}\n    >\n      {category.name}\n    </Link>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/blur-vignette.tsx",
    "content": "\"use client\"\n\nimport React, { useState } from \"react\"\n\nimport { Switch } from \"@/components/ui/switch\"\n\ninterface BlurVignetteProps {\n  children: React.ReactNode\n  className?: string\n  radius?: string\n  inset?: string\n  transitionLength?: string\n  blur?: string\n  switchView?: boolean\n}\n\nconst BlurVignette = ({\n  children,\n  switchView,\n  className = \"\",\n  radius = \"24px\",\n  inset = \"16px\",\n  transitionLength = \"32px\",\n  blur = \"21px\",\n}: BlurVignetteProps) => {\n  const [isEnabled, setIsEnabled] = useState(true)\n  const shouldShowBlur = switchView ? isEnabled : true\n\n  const blurStyles: React.CSSProperties = {\n    position: \"absolute\",\n    inset: 0,\n    zIndex: 10,\n    pointerEvents: \"none\",\n    WebkitBackdropFilter: `blur(${blur})`,\n    backdropFilter: `blur(${blur})`,\n    opacity: shouldShowBlur ? 1 : 0,\n    transition: \"opacity 0.3s ease\",\n    [\"--radius\" as string]: radius,\n    [\"--inset\" as string]: inset,\n    [\"--transition-length\" as string]: transitionLength,\n    [\"--blur\" as string]: blur,\n    [\"--r\" as string]: `max(${transitionLength}, calc(${radius} - ${inset}))`,\n    [\"--corner-size\" as string]: `calc(var(--r) + ${inset}) calc(var(--r) + ${inset})`,\n    [\"--corner-gradient\" as string]: `transparent 0px, transparent calc(var(--r) - ${transitionLength}), black var(--r)`,\n    [\"--fill-gradient\" as string]: `black, black ${inset}, transparent calc(${inset} + ${transitionLength}), transparent calc(100% - ${transitionLength} - ${inset}), black calc(100% - ${inset})`,\n    [\"--fill-narrow-size\" as string]: `calc(100% - (${inset} + var(--r)) * 2)`,\n    [\"--fill-farther-position\" as string]: `calc(${inset} + var(--r))`,\n    WebkitMaskImage: `linear-gradient(to right, var(--fill-gradient)),\n      linear-gradient(to bottom, var(--fill-gradient)),\n      radial-gradient(at bottom right, var(--corner-gradient)),\n      radial-gradient(at bottom left, var(--corner-gradient)),\n      radial-gradient(at top left, var(--corner-gradient)),\n      radial-gradient(at top right, var(--corner-gradient))`,\n    maskImage: `linear-gradient(to right, var(--fill-gradient)),\n      linear-gradient(to bottom, var(--fill-gradient)),\n      radial-gradient(at bottom right, var(--corner-gradient)),\n      radial-gradient(at bottom left, var(--corner-gradient)),\n      radial-gradient(at top left, var(--corner-gradient)),\n      radial-gradient(at top right, var(--corner-gradient))`,\n    WebkitMaskSize: `100% var(--fill-narrow-size),\n      var(--fill-narrow-size) 100%,\n      var(--corner-size),\n      var(--corner-size),\n      var(--corner-size),\n      var(--corner-size)`,\n    maskSize: `100% var(--fill-narrow-size),\n      var(--fill-narrow-size) 100%,\n      var(--corner-size),\n      var(--corner-size),\n      var(--corner-size),\n      var(--corner-size)`,\n    WebkitMaskPosition: `0 var(--fill-farther-position),\n      var(--fill-farther-position) 0,\n      0 0,\n      100% 0,\n      100% 100%,\n      0 100%`,\n    maskPosition: `0 var(--fill-farther-position),\n      var(--fill-farther-position) 0,\n      0 0,\n      100% 0,\n      100% 100%,\n      0 100%`,\n    WebkitMaskRepeat: \"no-repeat\",\n    maskRepeat: \"no-repeat\",\n  } as React.CSSProperties\n\n  return (\n    <div className={`relative overflow-hidden ${className}`}>\n      <div style={blurStyles} />\n      {children}\n      {switchView && (\n        <div className=\"absolute top-4 right-4 z-20 flex items-center gap-2\">\n          <Switch checked={isEnabled} onCheckedChange={setIsEnabled} />\n        </div>\n      )}\n    </div>\n  )\n}\n\nexport default BlurVignette\n"
  },
  {
    "path": "apps/www/components/callout.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/components/ui/alert\"\n\nexport function Callout({\n  title,\n  children,\n  icon,\n  className,\n  ...props\n}: React.ComponentProps<typeof Alert> & { icon?: React.ReactNode }) {\n  return (\n    <Alert\n      className={cn(\n        \"bg-surface text-surface-foreground mt-6 w-auto border-none md:-mx-1\",\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/www/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 \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport {\n  ChartConfig,\n  ChartContainer,\n} from \"@/components/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-muted-foreground text-xs 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/www/components/cards/calendar.tsx",
    "content": "\"use client\"\n\nimport { addDays } from \"date-fns\"\n\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Card, CardContent } from \"@/components/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/www/components/cards/cookie-settings.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/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        <div className=\"flex items-center justify-between gap-4\">\n          <Label htmlFor=\"necessary\" className=\"flex flex-col items-start\">\n            <span>Strictly Necessary</span>\n            <span className=\"text-muted-foreground leading-snug font-normal\">\n              These cookies are essential in order to use the website and use\n              its features.\n            </span>\n          </Label>\n          <Switch id=\"necessary\" defaultChecked aria-label=\"Necessary\" />\n        </div>\n        <div className=\"flex items-center justify-between gap-4\">\n          <Label htmlFor=\"functional\" className=\"flex flex-col items-start\">\n            <span>Functional Cookies</span>\n            <span className=\"text-muted-foreground leading-snug font-normal\">\n              These cookies allow the website to provide personalized\n              functionality.\n            </span>\n          </Label>\n          <Switch id=\"functional\" aria-label=\"Functional\" />\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\" className=\"w-full\">\n          Save preferences\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/create-account.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\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 className=\"flex flex-col gap-4\">\n        <div 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        </div>\n        <div className=\"relative\">\n          <div className=\"absolute inset-0 flex items-center\">\n            <span className=\"w-full border-t\" />\n          </div>\n          <div className=\"relative flex justify-center text-xs uppercase\">\n            <span className=\"bg-card text-muted-foreground px-2\">\n              Or continue with\n            </span>\n          </div>\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor=\"email-create-account\">Email</Label>\n          <Input\n            id=\"email-create-account\"\n            type=\"email\"\n            placeholder=\"m@example.com\"\n          />\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor=\"password-create-account\">Password</Label>\n          <Input id=\"password-create-account\" type=\"password\" />\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Create account</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/forms.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/components/ui/radio-group\"\nimport { Textarea } from \"@/components/ui/textarea\"\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: \"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        <div className=\"flex flex-col gap-6\">\n          <div className=\"flex flex-col gap-3 md:flex-row\">\n            <div className=\"flex flex-1 flex-col gap-2\">\n              <Label htmlFor=\"name\">Name</Label>\n              <Input id=\"name\" placeholder=\"Evil Rabbit\" />\n            </div>\n            <div className=\"flex flex-1 flex-col gap-2\">\n              <Label htmlFor=\"email\">Email</Label>\n              <Input id=\"email\" placeholder=\"example@acme.com\" />\n            </div>\n          </div>\n          <div className=\"flex flex-col gap-2\">\n            <Label htmlFor=\"card-number\">Card Number</Label>\n            <div className=\"grid grid-cols-2 gap-3 md:grid-cols-[1fr_80px_60px]\">\n              <Input\n                id=\"card-number\"\n                placeholder=\"1234 1234 1234 1234\"\n                className=\"col-span-2 md:col-span-1\"\n              />\n              <Input id=\"card-number-expiry\" placeholder=\"MM/YY\" />\n              <Input id=\"card-number-cvc\" placeholder=\"CVC\" />\n            </div>\n          </div>\n          <fieldset className=\"flex flex-col gap-3\">\n            <legend className=\"text-sm font-medium\">Plan</legend>\n            <p className=\"text-muted-foreground text-sm\">\n              Select the plan that best fits your needs.\n            </p>\n            <RadioGroup\n              defaultValue=\"starter\"\n              className=\"grid gap-3 md:grid-cols-2\"\n            >\n              {plans.map((plan) => (\n                <Label\n                  className=\"has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-input/20 flex items-start gap-3 rounded-lg border p-3\"\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=\"text-muted-foreground text-xs leading-snug text-balance\">\n                      {plan.description}\n                    </div>\n                  </div>\n                </Label>\n              ))}\n            </RadioGroup>\n          </fieldset>\n          <div className=\"flex flex-col gap-2\">\n            <Label htmlFor=\"notes\">Notes</Label>\n            <Textarea id=\"notes\" placeholder=\"Enter notes\" />\n          </div>\n          <div className=\"flex flex-col gap-3\">\n            <div className=\"flex items-center gap-2\">\n              <Checkbox id=\"terms\" />\n              <Label htmlFor=\"terms\" className=\"font-normal\">\n                I agree to the terms and conditions\n              </Label>\n            </div>\n            <div className=\"flex items-center gap-2\">\n              <Checkbox id=\"newsletter\" defaultChecked />\n              <Label htmlFor=\"newsletter\" className=\"font-normal\">\n                Allow us to send you emails\n              </Label>\n            </div>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"flex justify-between\">\n        <Button variant=\"outline\" size=\"sm\">\n          Cancel\n        </Button>\n        <Button size=\"sm\">Upgrade Plan</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/index.tsx",
    "content": "import { CardsActivityGoal } from \"@/components/cards/activity-goal\"\nimport SoftwarePurchase01 from \"@/registry/creative-tim/blocks/software-purchase-01/page\"\n\nexport function CardsDemo() {\n  return (\n    <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n      <div className=\"flex flex-col gap-4\">\n        <CardsActivityGoal />\n      </div>\n      <div className=\"flex flex-col gap-4 md:col-span-2 lg:col-span-2\">\n        <SoftwarePurchase01 />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/payment-method.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  RadioGroup,\n  RadioGroupItem,\n} from \"@/components/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/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-muted-foreground text-sm\">\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=\"has-[[data-state=checked]]:border-ring has-[[data-state=checked]]:bg-primary/5 flex items-start gap-3 rounded-lg border p-3\"\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=\"text-muted-foreground pr-2 text-xs leading-snug text-balance\">\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/www/components/cards/payments.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  ColumnDef,\n  ColumnFiltersState,\n  flexRender,\n  getCoreRowModel,\n  getFilteredRowModel,\n  getPaginationRowModel,\n  getSortedRowModel,\n  SortingState,\n  useReactTable,\n  VisibilityState,\n} from \"@tanstack/react-table\"\nimport { MoreHorizontalIcon } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/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=\"text-muted-foreground flex-1 text-sm\">\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/www/components/cards/report-issue.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Textarea } from \"@/components/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 className=\"flex flex-col gap-6\">\n        <div className=\"grid gap-4 sm:grid-cols-2\">\n          <div className=\"flex flex-col gap-3\">\n            <Label htmlFor={`area-${id}`}>Area</Label>\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          </div>\n          <div className=\"flex flex-col gap-3\">\n            <Label htmlFor={`security-level-${id}`}>Security Level</Label>\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          </div>\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor={`subject-${id}`}>Subject</Label>\n          <Input id={`subject-${id}`} placeholder=\"I need help with...\" />\n        </div>\n        <div className=\"flex flex-col gap-3\">\n          <Label htmlFor={`description-${id}`}>Description</Label>\n          <Textarea\n            id={`description-${id}`}\n            placeholder=\"Please include all information relevant to your issue.\"\n            className=\"min-h-28\"\n          />\n        </div>\n      </CardContent>\n      <CardFooter className=\"justify-end gap-2\">\n        <Button variant=\"ghost\" size=\"sm\">\n          Cancel\n        </Button>\n        <Button size=\"sm\">Submit</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/share.tsx",
    "content": "\"use client\"\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from \"@/components/ui/avatar\"\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\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Separator } from \"@/components/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          <div className=\"grid gap-6\">\n            {people.map((person) => (\n              <div\n                key={person.email}\n                className=\"flex items-center justify-between gap-4\"\n              >\n                <div className=\"flex items-center gap-4\">\n                  <Avatar>\n                    <AvatarImage src={person.avatar} alt=\"Image\" />\n                    <AvatarFallback>{person.name.charAt(0)}</AvatarFallback>\n                  </Avatar>\n                  <div>\n                    <p className=\"text-sm leading-none font-medium\">\n                      {person.name}\n                    </p>\n                    <p className=\"text-muted-foreground text-sm\">\n                      {person.email}\n                    </p>\n                  </div>\n                </div>\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              </div>\n            ))}\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/cards/software-purchase.tsx",
    "content": "\"use client\"\n\nimport { Calendar, CreditCard, DollarSign, Users } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport interface SoftwarePurchaseCardProps {\n  softwareName?: string\n  startDate?: string\n  seats?: number\n  pricingType?: \"per-seat\" | \"flat-rate\" | \"usage-based\"\n  price?: string\n  onApprove?: () => void\n  onDiscard?: () => void\n}\n\nexport function SoftwarePurchaseCard({\n  softwareName = \"Enterprise Cloud Suite\",\n  startDate = \"2025-01-15\",\n  seats = 50,\n  pricingType = \"per-seat\",\n  price = \"$2,500\",\n  onApprove,\n  onDiscard,\n}: SoftwarePurchaseCardProps) {\n  const pricingTypeLabel = {\n    \"per-seat\": \"Per Seat\",\n    \"flat-rate\": \"Flat Rate\",\n    \"usage-based\": \"Usage Based\",\n  }[pricingType]\n\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle className=\"flex items-center justify-between\">\n          {softwareName}\n          <Badge variant=\"secondary\">{pricingTypeLabel}</Badge>\n        </CardTitle>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Calendar className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Start Date</span>\n            <span className=\"font-medium\">\n              {new Date(startDate).toLocaleDateString(\"en-US\", {\n                month: \"long\",\n                day: \"numeric\",\n                year: \"numeric\",\n              })}\n            </span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Users className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Seats</span>\n            <span className=\"font-medium\">{seats} users</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <CreditCard className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Pricing Type</span>\n            <span className=\"font-medium\">{pricingTypeLabel}</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <DollarSign className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">\n              {pricingType === \"per-seat\" ? \"Monthly Cost\" : \"Price\"}\n            </span>\n            <span className=\"text-lg font-semibold\">{price}</span>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"flex gap-3\">\n        <Button variant=\"outline\" className=\"flex-1\" onClick={onDiscard}>\n          Discard\n        </Button>\n        <Button className=\"flex-1\" onClick={onApprove}>\n          Approve\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 { Chart } from \"@/components/chart-display\"\nimport { getIconForLanguageExtension } from \"@/components/icons\"\nimport { OpenInV0Button } from \"@/components/open-in-v0-button\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Drawer,\n  DrawerContent,\n  DrawerDescription,\n  DrawerHeader,\n  DrawerTitle,\n  DrawerTrigger,\n} from \"@/components/ui/drawer\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n} from \"@/components/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=\"text-foreground hover:bg-muted dark:text-foreground h-6 rounded-[6px] border bg-transparent px-2 text-xs shadow-none\"\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 theme-container hidden 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=\"text-foreground [&>svg]:text-foreground flex h-12 shrink-0 items-center gap-2 border-b py-2 pr-2 pl-4 [&>svg]:size-4 [&>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/www/components/chart-copy-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ClipboardIcon } from \"lucide-react\"\n\nimport { Event, trackEvent } from \"@/lib/events\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/components/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 ? <CheckIcon /> : <ClipboardIcon />}\n        </Button>\n      </TooltipTrigger>\n      <TooltipContent className=\"bg-black text-white\">Copy code</TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/chart-display.tsx",
    "content": "import * as React from \"react\"\nimport { registryItemSchema } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { highlightCode } from \"@/lib/highlight-code\"\nimport { getRegistryItem } from \"@/lib/registry\"\nimport { cn } from \"@/lib/utils\"\nimport { ChartToolbar } from \"@/components/chart-toolbar\"\n\nexport type Chart = z.infer<typeof registryItemSchema> & {\n  highlightedCode: string\n}\n\nexport async function ChartDisplay({\n  name,\n  children,\n  className,\n}: { name: string } & React.ComponentProps<\"div\">) {\n  const chart = await getCachedRegistryItem(name)\n  const highlightedCode = await getChartHighlightedCode(\n    chart?.files?.[0]?.content ?? \"\"\n  )\n\n  if (!chart || !highlightedCode) {\n    return null\n  }\n\n  return (\n    <div\n      className={cn(\n        \"themes-wrapper group relative flex flex-col overflow-hidden rounded-xl border transition-all duration-200 ease-in-out hover:z-30\",\n        className\n      )}\n    >\n      <ChartToolbar\n        chart={{ ...chart, highlightedCode }}\n        className=\"bg-card text-card-foreground relative z-20 flex justify-end border-b px-3 py-2.5\"\n      >\n        {children}\n      </ChartToolbar>\n      <div className=\"relative z-10 [&>div]:rounded-none [&>div]:border-none [&>div]:shadow-none\">\n        {children}\n      </div>\n    </div>\n  )\n}\n\nconst getCachedRegistryItem = React.cache(async (name: string) => {\n  return await getRegistryItem(name)\n})\n\nconst getChartHighlightedCode = React.cache(async (content: string) => {\n  return await highlightCode(content)\n})\n"
  },
  {
    "path": "apps/www/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 { Chart } from \"@/components/chart-display\"\nimport { Separator } from \"@/components/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=\"text-muted-foreground flex items-center gap-1.5 pl-1 text-[13px] [&>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 text-foreground hover:bg-muted dark:text-foreground h-6 w-6 rounded-[6px] bg-transparent shadow-none [&_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(\"charts-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/www/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 {\n  ScrollArea,\n  ScrollBar,\n} from \"@/components/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                \"text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 shrink-0 items-center justify-center px-4 text-center text-base font-medium transition-colors\"\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/www/components/code-block-command.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ClipboardIcon, TerminalIcon } from \"lucide-react\"\n\nimport { useConfig } from \"@/hooks/use-config\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/components/ui/tabs\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/components/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=\"border-border/50 flex items-center gap-2 border-b px-3 py-1\">\n          <div className=\"bg-foreground flex size-4 items-center justify-center rounded-[1px] opacity-70\">\n            <TerminalIcon className=\"text-code size-3\" />\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=\"data-[state=active]:bg-accent data-[state=active]:border-input h-7 border border-transparent pt-0.5 data-[state=active]:shadow-none\"\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      <Tooltip>\n        <TooltipTrigger asChild>\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 ? <CheckIcon /> : <ClipboardIcon />}\n          </Button>\n        </TooltipTrigger>\n        <TooltipContent>\n          {hasCopied ? \"Copied\" : \"Copy to Clipboard\"}\n        </TooltipContent>\n      </Tooltip>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/code-collapsible-wrapper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\nimport { Separator } from \"@/components/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=\"text-muted-foreground h-7 rounded-md px-2\"\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 [&>figure]:mt-0 [&>figure]:md:!mx-0\"\n      >\n        {children}\n      </CollapsibleContent>\n      <CollapsibleTrigger className=\"from-code/70 to-code text-muted-foreground absolute inset-x-0 -bottom-2 flex h-20 items-center justify-center rounded-b-lg bg-gradient-to-b text-sm group-data-[state=open]/collapsible:hidden\">\n        {isOpened ? \"Collapse\" : \"Expand\"}\n      </CollapsibleTrigger>\n    </Collapsible>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/code-tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useConfig } from \"@/hooks/use-config\"\nimport { Tabs } from \"@/components/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\"\n    >\n      {children}\n    </Tabs>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/command-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { IconArrowRight } from \"@tabler/icons-react\"\nimport { CornerDownLeftIcon, SquareDashedIcon } from \"lucide-react\"\n\nimport { source } from \"@/lib/source\"\nimport { cn } from \"@/lib/utils\"\nimport { useConfig } from \"@/hooks/use-config\"\nimport { useIsMac } from \"@/hooks/use-is-mac\"\nimport { useMutationObserver } from \"@/hooks/use-mutation-observer\"\nimport { copyToClipboardWithMeta } from \"@/components/copy-button\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"@/components/ui/command\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Separator } from \"@/components/ui/separator\"\n\nexport function CommandMenu({\n  tree,\n  blocks,\n  navItems,\n  ...props\n}: DialogProps & {\n  tree: typeof source.pageTree\n  blocks?: { name: string; description: string; categories: string[] }[]\n  navItems?: { href: string; label: string }[]\n}) {\n  const router = useRouter()\n  const isMac = useIsMac()\n  const [config] = useConfig()\n  const [open, setOpen] = React.useState(false)\n  const [selectedType, setSelectedType] = React.useState<\n    \"page\" | \"component\" | \"block\" | null\n  >(null)\n  const [copyPayload, setCopyPayload] = React.useState(\"\")\n  const packageManager = config.packageManager || \"pnpm\"\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 @creative-tim/ui@latest add ${componentName}`\n        )\n      } else {\n        setSelectedType(\"page\")\n        setCopyPayload(\"\")\n      }\n    },\n    [packageManager, setSelectedType, setCopyPayload]\n  )\n\n  const handleBlockHighlight = React.useCallback(\n    (block: { name: string; description: string; categories: string[] }) => {\n      setSelectedType(\"block\")\n      setCopyPayload(\n        `${packageManager} dlx @creative-tim/ui@latest add ${block.name}`\n      )\n    },\n    [setSelectedType, setCopyPayload, packageManager]\n  )\n\n  const runCommand = React.useCallback((command: () => unknown) => {\n    setOpen(false)\n    command()\n  }, [])\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 === \"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=\"ghost\"\n          className={cn(\n            \"relative h-8 w-full justify-start rounded-full border border-white/20 pl-2.5 font-normal text-white/70 shadow-none hover:bg-white/10 hover:text-white sm:pr-12 md:w-40 lg:w-56\"\n          )}\n          onClick={() => setOpen(true)}\n          {...props}\n        >\n          <span className=\"hidden lg:inline-flex\">Search doc...</span>\n          <span className=\"inline-flex lg:hidden\">Search...</span>\n          <div className=\"absolute top-1.5 right-1.5 hidden gap-1 sm:flex mt-[-1px]\">\n            <CommandMenuKbd>{isMac ? \"⌘\" : \"Ctrl\"}</CommandMenuKbd>\n            <CommandMenuKbd className=\"aspect-square\">K</CommandMenuKbd>\n          </div>\n        </Button>\n      </DialogTrigger>\n      <DialogContent\n        showCloseButton={false}\n        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      >\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=\"**:data-[slot=command-input-wrapper]:bg-input/50 **:data-[slot=command-input-wrapper]:border-input 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\"\n          filter={(value, search, keywords) => {\n            const extendValue = value + \" \" + (keywords?.join(\" \") || \"\")\n            if (extendValue.toLowerCase().includes(search.toLowerCase())) {\n              return 1\n            }\n            return 0\n          }}\n        >\n          <CommandInput placeholder=\"Search documentation...\" />\n          <CommandList className=\"no-scrollbar min-h-80 scroll-pt-2 scroll-pb-1.5\">\n            <CommandEmpty className=\"text-muted-foreground py-12 text-center text-sm\">\n              No results found.\n            </CommandEmpty>\n            {navItems && navItems.length > 0 && (\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            {tree.children.map((group) => (\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                {group.type === \"folder\" &&\n                  group.children.map((item) => {\n                    if (item.type === \"page\") {\n                      const isComponent = item.url.includes(\"/components/\")\n\n                      return (\n                        <CommandMenuItem\n                          key={item.url}\n                          value={\n                            item.name?.toString()\n                              ? `${group.name} ${item.name}`\n                              : \"\"\n                          }\n                          keywords={isComponent ? [\"component\"] : undefined}\n                          onHighlight={() =>\n                            handlePageHighlight(isComponent, item)\n                          }\n                          onSelect={() => {\n                            runCommand(() => router.push(item.url))\n                          }}\n                        >\n                          {isComponent ? (\n                            <div className=\"border-muted-foreground aspect-square size-4 rounded-full border border-dashed\" />\n                          ) : (\n                            <IconArrowRight />\n                          )}\n                          {item.name}\n                        </CommandMenuItem>\n                      )\n                    }\n                    return null\n                  })}\n              </CommandGroup>\n            ))}\n\n            {blocks?.length ? (\n              <CommandGroup\n                heading=\"Examples\"\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(\n                          `/blocks/${block.categories[0]}#${block.name}`\n                        )\n                      )\n                    }}\n                  >\n                    <SquareDashedIcon />\n                    {block.description}\n                    <span className=\"text-muted-foreground ml-auto font-mono text-xs font-normal tabular-nums\">\n                      {block.name}\n                    </span>\n                  </CommandMenuItem>\n                ))}\n              </CommandGroup>\n            ) : null}\n          </CommandList>\n        </Command>\n        <div className=\"text-muted-foreground 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 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          </div>\n          {copyPayload && (\n            <>\n              <Separator orientation=\"vertical\" className=\"!h-4\" />\n              <div className=\"flex items-center gap-1\">\n                <CommandMenuKbd>{isMac ? \"⌘\" : \"Ctrl\"}</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        \"data-[selected=true]:border-input data-[selected=true]:bg-input/50 h-9 rounded-md border border-transparent !px-3 font-medium\",\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-full border border-white/20 bg-white/10 px-1 font-sans text-[0.7rem] font-medium text-white/70 select-none [&_svg:not([class*='size-'])]:size-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/www/components/component-preview-tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\n\nexport function ComponentPreviewTabs({\n  className,\n  align = \"center\",\n  hideCode = false,\n  component,\n  source,\n  marginOff = false,\n  defaultTab = \"preview\",\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  align?: \"center\" | \"start\" | \"end\"\n  hideCode?: boolean\n  component: React.ReactNode\n  source: React.ReactNode\n  marginOff?: boolean\n  defaultTab?: \"preview\" | \"code\"\n}) {\n  const [tab, setTab] = React.useState<\"preview\" | \"code\">(defaultTab)\n\n  return (\n    <div\n      className={cn(\"group relative mt-4 mb-12 flex flex-col gap-2\", className)}\n      {...props}\n    >\n      <Tabs\n        className=\"relative mr-auto w-full\"\n        value={tab}\n        onValueChange={(value) => setTab(value as \"preview\" | \"code\")}\n      >\n        <div className=\"flex items-center justify-between\">\n          {!hideCode && (\n            <TabsList className=\"justify-start gap-4 rounded-none bg-transparent px-2 md:px-0\">\n              <TabsTrigger\n                value=\"preview\"\n                className=\"text-muted-foreground data-[state=active]:text-foreground px-0 text-base data-[state=active]:shadow-none dark:data-[state=active]:border-transparent dark:data-[state=active]:bg-transparent\"\n              >\n                Preview\n              </TabsTrigger>\n              <TabsTrigger\n                value=\"code\"\n                className=\"text-muted-foreground data-[state=active]:text-foreground px-0 text-base data-[state=active]:shadow-none dark:data-[state=active]:border-transparent dark:data-[state=active]:bg-transparent\"\n              >\n                Code\n              </TabsTrigger>\n            </TabsList>\n          )}\n        </div>\n      </Tabs>\n      <div\n        data-tab={tab}\n        className=\"data-[tab=code]:border-code relative rounded-lg border md:-mx-1\"\n      >\n        <div\n          data-slot=\"preview\"\n          data-active={tab === \"preview\"}\n          className=\"invisible data-[active=true]:visible\"\n        >\n          <div\n            data-align={align}\n            className={cn(\n              \"preview flex h-[450px] w-full justify-center data-[align=center]:items-center data-[align=end]:items-end data-[align=start]:items-start\",\n              marginOff ? \"p-0\" : \"p-10\"\n            )}\n          >\n            {component}\n          </div>\n        </div>\n        <div\n          data-slot=\"code\"\n          data-active={tab === \"code\"}\n          className=\"absolute inset-0 hidden overflow-hidden data-[active=true]:block **:[figure]:!m-0 **:[pre]:h-[450px]\"\n        >\n          {source}\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/component-preview.tsx",
    "content": "import Image from \"next/image\"\n\nimport { ComponentPreviewTabs } from \"@/components/component-preview-tabs\"\nimport { ComponentSource } from \"@/components/component-source\"\nimport { Index } from \"@/registry/__index__\"\n\nexport function ComponentPreview({\n  name,\n  type,\n  className,\n  align = \"center\",\n  hideCode = false,\n  marginOff = false,\n  defaultTab = \"preview\",\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  name: string\n  align?: \"center\" | \"start\" | \"end\"\n  description?: string\n  hideCode?: boolean\n  type?: \"block\" | \"component\" | \"example\"\n  marginOff?: boolean\n  defaultTab?: \"preview\" | \"code\"\n}) {\n  const Component = Index[name]?.component\n\n  if (!Component) {\n    return (\n      <p className=\"text-muted-foreground text-sm\">\n        Component{\" \"}\n        <code className=\"bg-muted relative rounded 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  if (type === \"block\") {\n    return (\n      <div className=\"relative aspect-[4/2.5] w-full overflow-hidden rounded-md border md:-mx-1\">\n        <Image\n          src={`/r/${name}-light.png`}\n          alt={name}\n          width={1440}\n          height={900}\n          className=\"bg-background absolute top-0 left-0 z-20 w-[970px] max-w-none sm:w-[1280px] md:hidden dark:hidden md:dark:hidden\"\n        />\n        <Image\n          src={`/r/${name}-dark.png`}\n          alt={name}\n          width={1440}\n          height={900}\n          className=\"bg-background absolute top-0 left-0 z-20 hidden w-[970px] max-w-none sm:w-[1280px] md:hidden dark:block md:dark:hidden\"\n        />\n        <div className=\"bg-background absolute inset-0 hidden w-[1600px] md:block\">\n          <iframe src={`/view/${name}`} className=\"size-full\" />\n        </div>\n      </div>\n    )\n  }\n\n  return (\n    <ComponentPreviewTabs\n      className={className}\n      align={align}\n      hideCode={hideCode}\n      component={<Component />}\n      source={<ComponentSource name={name} collapsible={false} />}\n      marginOff={marginOff}\n      defaultTab={defaultTab}\n      {...props}\n    />\n  )\n}\n"
  },
  {
    "path": "apps/www/components/component-source.tsx",
    "content": "import fs from \"node:fs/promises\"\nimport path from \"node:path\"\nimport * as React from \"react\"\n\nimport { highlightCode } from \"@/lib/highlight-code\"\nimport { 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}: React.ComponentProps<\"div\"> & {\n  name?: string\n  src?: string\n  title?: string\n  language?: string\n  collapsible?: boolean\n}) {\n  if (!name && !src) {\n    return null\n  }\n\n  let code: string | undefined\n\n  if (name) {\n    const item = await getRegistryItem(name)\n    code = item?.files?.[0]?.content\n  }\n\n  if (src) {\n    const file = await fs.readFile(path.join(process.cwd(), src), \"utf-8\")\n    code = file\n  }\n\n  if (!code) {\n    return null\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=\"text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_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/www/components/component-wrapper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/registry/creative-tim/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/www/components/components-list.tsx",
    "content": "import Link from \"next/link\"\n\nimport { source } from \"@/lib/source\"\n\nexport function ComponentsList() {\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 (\n    <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 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=\"text-lg font-medium underline-offset-4 hover:underline md:text-base\"\n        >\n          {component.name}\n        </Link>\n      ))}\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/copy-button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ClipboardIcon } from \"lucide-react\"\n\nimport { Event, trackEvent } from \"@/lib/events\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\nexport function copyToClipboardWithMeta(value: string, event?: Event) {\n  navigator.clipboard.writeText(value)\n  if (event) {\n    trackEvent(event)\n  }\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}) {\n  const [hasCopied, setHasCopied] = React.useState(false)\n\n  React.useEffect(() => {\n    setTimeout(() => {\n      setHasCopied(false)\n    }, 2000)\n  }, [])\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <Button\n          data-slot=\"copy-button\"\n          size=\"icon\"\n          variant={variant}\n          className={cn(\n            \"bg-code absolute top-3 right-2 z-10 size-7 hover:opacity-100 focus-visible:opacity-100\",\n            className\n          )}\n          onClick={() => {\n            copyToClipboardWithMeta(\n              value,\n              event\n                ? {\n                    name: event,\n                    properties: {\n                      code: value,\n                    },\n                  }\n                : undefined\n            )\n            setHasCopied(true)\n          }}\n          {...props}\n        >\n          <span className=\"sr-only\">Copy</span>\n          {hasCopied ? <CheckIcon /> : <ClipboardIcon />}\n        </Button>\n      </TooltipTrigger>\n      <TooltipContent>\n        {hasCopied ? \"Copied\" : \"Copy to Clipboard\"}\n      </TooltipContent>\n    </Tooltip>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 { PageTree } from \"fumadocs-core/server\"\n\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\"\n\nexport function DocsBreadcrumb({\n  tree,\n  className,\n}: {\n  tree: PageTree.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=\"hover:text-accent-foreground truncate\"\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/www/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 \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n  Popover,\n  PopoverAnchor,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction getPromptUrl(baseURL: string, url: string) {\n  return `${baseURL}?q=${encodeURIComponent(\n    `I’m looking at this @creative-tim/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.app\", 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}\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=\"bg-secondary group/buttons relative flex rounded-lg *:[[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 align=\"end\" className=\"shadow-none\">\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=\"!bg-foreground/10 absolute top-0 right-8 z-0 !h-8 peer-focus-visible:opacity-0 sm:right-7 sm:!h-7\"\n        />\n        <PopoverTrigger asChild className=\"flex sm:hidden\">\n          {trigger}\n        </PopoverTrigger>\n        <PopoverContent\n          className=\"bg-background/70 dark:bg-background/60 w-52 !origin-center rounded-lg p-1 shadow-sm backdrop-blur-sm\"\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=\"*:[svg]:text-muted-foreground w-full justify-start text-base font-normal\"\n            >\n              {value(url)}\n            </Button>\n          ))}\n        </PopoverContent>\n      </div>\n    </Popover>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/docs-sidebar-cta.tsx",
    "content": "import Link from \"next/link\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nexport function DocsSidebarCta({ className }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      className={cn(\n        \"group bg-surface text-surface-foreground relative flex flex-col gap-2 overflow-hidden rounded-lg p-6 text-sm\",\n        className\n      )}\n    >\n      <div className=\"bg-surface/80 absolute inset-0\" />\n\n      <div className=\"relative z-10 text-base leading-tight font-semibold text-balance group-hover:underline\">\n        Integrate the blocks in your application or use them in v0, Lovable, Claude, etc.\n      </div>\n      <div className=\"text-muted-foreground relative z-10\">\n        Speed up your workflow with modular, open-source components and blocksthat\n        integrate effortlessly through Registries and MCPs.\n      </div>\n      <Button size=\"sm\" className=\"relative z-10 mt-2 w-fit\">\n        View Blocks\n      </Button>\n      <Link\n        href={siteConfig.utm.blocks}\n        target=\"_blank\"\n        rel=\"noreferrer\"\n        className=\"absolute inset-0 z-20\"\n      >\n        <span className=\"sr-only\">Talk to an expert</span>\n      </Link>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/docs-sidebar.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\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 \"@/components/ui/sidebar\"\n\nconst TOP_LEVEL_SECTIONS = [\n  { name: \"Introduction\", href: \"/docs\" },\n  { name: \"Registry\", href: \"/docs/registry\" },\n  { name: \"Components\", href: \"/docs/components\" },\n  { name: \"How It Works\", href: \"/docs/how-it-works\" },\n  { name: \"Debug Logs\", href: \"/docs/debug-logs\" },\n]\n\nconst BLOCKS_SECTIONS = [\n  { name: \"Account\", href: \"/blocks/account\" },\n  { name: \"AI Agents\", href: \"/blocks/ai-agents\" },\n  { name: \"Billing\", href: \"/blocks/billing\" },\n  { name: \"Blog\", href: \"/blocks/blog\" },\n  { name: \"Contact\", href: \"/blocks/contact\" },\n  { name: \"CRUDs\", href: \"/blocks/cruds\" },\n  { name: \"Ecommerce\", href: \"/blocks/ecommerce\" },\n  { name: \"FAQs\", href: \"/blocks/faqs\" },\n  { name: \"Footers\", href: \"/blocks/footers\" },\n  { name: \"Modals\", href: \"/blocks/modals\" },\n  { name: \"Testimonials\", href: \"/blocks/testimonials\" },\n  { name: \"Web3\", href: \"/blocks/web3\" },\n]\n\nconst EXCLUDED_SECTIONS = [\"installation\", \"dark-mode\", \"(root)\"]\nconst EXCLUDED_PAGES: string[] = []\n\nexport function DocsSidebar({\n  tree,\n  ...props\n}: React.ComponentProps<typeof Sidebar> & { tree: typeof source.pageTree }) {\n  const pathname = usePathname()\n\n  return (\n    <Sidebar\n      className=\"sticky top-[calc(var(--header-height)+1px)] z-30 hidden h-[calc(100svh-var(--footer-height)+2rem)] bg-transparent lg:flex\"\n      collapsible=\"none\"\n      {...props}\n    >\n      <SidebarContent className=\"no-scrollbar overflow-x-hidden px-2 pb-12\">\n        <div className=\"h-(--top-spacing) shrink-0\" />\n        <SidebarGroup>\n          <SidebarGroupLabel className=\"text-muted-foreground font-medium\">\n            Getting Started\n          </SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {TOP_LEVEL_SECTIONS.map(({ name, href }) => {\n                return (\n                  <SidebarMenuItem key={name}>\n                    <SidebarMenuButton\n                      asChild\n                      isActive={\n                        href === \"/docs\" || href === \"/docs/components\"\n                          ? pathname === href\n                          : pathname.startsWith(href)\n                      }\n                      className=\"data-[active=true]:bg-accent data-[active=true]:border-accent 3xl:fixed:w-full 3xl:fixed:max-w-48 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\"\n                    >\n                      <Link href={href}>\n                        <span className=\"absolute inset-0 flex w-(--sidebar-width) bg-transparent\" />\n                        {name}\n                      </Link>\n                    </SidebarMenuButton>\n                  </SidebarMenuItem>\n                )\n              })}\n            </SidebarMenu>\n          </SidebarGroupContent>\n        </SidebarGroup>\n        <SidebarGroup>\n          <SidebarGroupLabel className=\"text-muted-foreground font-medium\">\n            Blocks\n          </SidebarGroupLabel>\n          <SidebarGroupContent>\n            <SidebarMenu>\n              {BLOCKS_SECTIONS.map(({ name, href }) => {  \n                return (\n                  <SidebarMenuItem key={name}>\n                    <SidebarMenuButton\n                      asChild\n                      isActive={\n                        href === \"/blocks\" || href === \"/blocks/featured\"\n                          ? pathname === href\n                          : pathname.startsWith(href)\n                      }\n                      className=\"data-[active=true]:bg-accent data-[active=true]:border-accent 3xl:fixed:w-full 3xl:fixed:max-w-48 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\"\n                    >\n                      <Link href={href}>\n                        <span className=\"absolute inset-0 flex w-(--sidebar-width) bg-transparent\" />\n                        {name}\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=\"text-muted-foreground font-medium\">\n                {item.name}\n              </SidebarGroupLabel>\n              <SidebarGroupContent>\n                {item.type === \"folder\" && (\n                  <SidebarMenu className=\"gap-0.5\">\n                    {item.children.map((item) => {\n                      return (\n                        item.type === \"page\" &&\n                        !EXCLUDED_PAGES.includes(item.url) && (\n                          <SidebarMenuItem key={item.url}>\n                            <SidebarMenuButton\n                              asChild\n                              isActive={item.url === pathname}\n                              className=\"data-[active=true]:bg-accent data-[active=true]:border-accent 3xl:fixed:w-full 3xl:fixed:max-w-48 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\"\n                            >\n                              <Link href={item.url}>\n                                <span className=\"absolute inset-0 flex w-(--sidebar-width) bg-transparent\" />\n                                {item.name}\n                              </Link>\n                            </SidebarMenuButton>\n                          </SidebarMenuItem>\n                        )\n                      )\n                    })}\n                  </SidebarMenu>\n                )}\n              </SidebarGroupContent>\n            </SidebarGroup>\n          )\n        })}\n      </SidebarContent>\n    </Sidebar>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 \"@/components/ui/button\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/components/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=\"text-muted-foreground bg-background sticky top-0 h-6 text-xs\">\n        On This Page\n      </p>\n      {toc.map((item) => (\n        <a\n          key={item.url}\n          href={item.url}\n          className=\"text-muted-foreground hover:text-foreground data-[active=true]:text-foreground text-[0.8rem] no-underline transition-colors 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/www/components/examples-nav.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  ScrollArea,\n  ScrollBar,\n} from \"@/components/ui/scroll-area\"\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\"></div>\n        <ScrollBar orientation=\"horizontal\" className=\"invisible\" />\n      </ScrollArea>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/examples-preview.tsx",
    "content": "import Link from \"next/link\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Card } from \"@/components/ui/card\"\n\ninterface ExampleCategory {\n  id: string\n  title: string\n  description: string\n  examples: {\n    name: string\n    blockCount: number\n    category: string\n    thumbnail?: string\n    comingSoon?: boolean\n  }[]\n}\n\nconst categories: ExampleCategory[] = [\n  {\n    id: \"web3\",\n    title: \"Web 3.0\",\n    description:\n      \"Innovative sections built for decentralized applications, blockchain projects, and crypto platforms.\",\n    examples: [\n      {\n        name: \"Web 3.0 Login\",\n        blockCount: 5,\n        category: \"web3\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/login-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Web 3.0 Charts\",\n        blockCount: 5,\n        category: \"web3\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/web3-charts-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Web 3.0 Cards\",\n        blockCount: 5,\n        category: \"web3\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/collections-thumbnail.jpg\",\n      },\n    ],\n  },\n  {\n    id: \"application-ui\",\n    title: \"Application & Admin UI\",\n    description:\n      \"Fully coded interface for stunning dashboards, admin panels, and web apps.\",\n    examples: [\n      {\n        name: \"Widgets\",\n        blockCount: 7,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/widgets-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Charts\",\n        blockCount: 6,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/charts-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Tables\",\n        blockCount: 10,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/tables-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Modals\",\n        blockCount: 5,\n        category: \"modals\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/modals-thumbnail.jpg\",\n      },\n      {\n        name: \"Account\",\n        blockCount: 7,\n        category: \"account\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/account-thumbnail.jpg\",\n      },\n      {\n        name: \"Billing\",\n        blockCount: 5,\n        category: \"billing\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/billing-thumbnail.jpg\",\n      },\n      {\n        name: \"Tables Headers\",\n        blockCount: 6,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/table-headers-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Tables Footers\",\n        blockCount: 6,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/table-footers-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"KPI Cards\",\n        blockCount: 7,\n        category: \"cruds\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/kpi-cards-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Sidebars\",\n        blockCount: 9,\n        category: \"sidebars\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/sidebar-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Dropdowns\",\n        blockCount: 6,\n        category: \"dropdowns\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/dropdown-filter-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"User Profile\",\n        blockCount: 5,\n        category: \"user-profile\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/user-profile-thumbnail.jpg\",\n        comingSoon: true,\n      },\n    ],\n  },\n  {\n    id: \"marketing\",\n    title: \"Marketing & Presentation\",\n    description:\n      \"Optimized for showcasing products and services, perfect for landing pages and marketing websites.\",\n    examples: [\n      {\n        name: \"Hero Sections\",\n        blockCount: 18,\n        category: \"hero-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/headers-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Testimonial Sections\",\n        blockCount: 17,\n        category: \"testimonials\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/testimonial-thumbnail.jpg\",\n      },\n      {\n        name: \"Popup Sections\",\n        blockCount: 7,\n        category: \"popups\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/popup-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Authentication\",\n        blockCount: 6,\n        category: \"authentication\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/authentication-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Onboarding Sections\",\n        blockCount: 5,\n        category: \"onboarding\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/onboarding-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Navbars\",\n        blockCount: 10,\n        category: \"navbars\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/navbars-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Contact Sections\",\n        blockCount: 15,\n        category: \"contact\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/contact-us-thumbnail.jpg\",\n      },\n      {\n        name: \"Team Sections\",\n        blockCount: 17,\n        category: \"team-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/team-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Newsletter\",\n        blockCount: 17,\n        category: \"newsletter\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/newsletter-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Footers\",\n        blockCount: 16,\n        category: \"footers\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/footer-thumbnail.jpg\",\n      },\n      {\n        name: \"Coming Soon Sections\",\n        blockCount: 4,\n        category: \"coming-soon\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/coming-soon-thumbnail.jpg\",\n        comingSoon: true,\n      },\n    ],\n  },\n  {\n    id: \"content-ui\",\n    title: \"Content UI\",\n    description:\n      \"Versatile UI sections for blogs, articles, and multimedia-rich content.\",\n    examples: [\n      {\n        name: \"FAQs\",\n        blockCount: 6,\n        category: \"faqs\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/faq-thumbnail.jpg\",\n      },\n      {\n        name: \"Feature Sections\",\n        blockCount: 18,\n        category: \"feature-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/features-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Stats Sections\",\n        blockCount: 10,\n        category: \"stats-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/stats-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Content Sections\",\n        blockCount: 16,\n        category: \"content-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/content-section-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Cards\",\n        blockCount: 5,\n        category: \"cards\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/cards-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Error Sections\",\n        blockCount: 7,\n        category: \"error-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/Error404-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Maintenance Sections\",\n        blockCount: 4,\n        category: \"maintenance-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/Error500-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Blog\",\n        blockCount: 15,\n        category: \"blog\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/blog-posts-thumbnail.jpg\",\n      },\n      {\n        name: \"Logo Sections\",\n        blockCount: 7,\n        category: \"logo-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/logo-areas-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Calendar Sections\",\n        blockCount: 3,\n        category: \"calendar-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/calendar-thumbnail.jpg\",\n        comingSoon: true,\n      },\n    ],\n  },\n  {\n    id: \"ecommerce\",\n    title: \"Ecommerce UI\",\n    description:\n      \"Ready-to-use blocks for product listings, shopping carts, and checkout flows.\",\n    examples: [\n      {\n        name: \"Banner Sections\",\n        blockCount: 7,\n        category: \"banner-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/banner-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Ecommerce Sections\",\n        blockCount: 14,\n        category: \"ecommerce\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/ecommerce-thumbnail.jpg\",\n      },\n      {\n        name: \"Product List Sections\",\n        blockCount: 5,\n        category: \"product-list\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/product-list-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Customer Overview Sections\",\n        blockCount: 3,\n        category: \"customer-overview\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/customer-overview-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Pricing Sections\",\n        blockCount: 12,\n        category: \"pricing\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/pricing-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Categories\",\n        blockCount: 5,\n        category: \"categories\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/categories-thumbnail.jpg\",\n        comingSoon: true,\n      },\n      {\n        name: \"Order Sections\",\n        blockCount: 7,\n        category: \"order-sections\",\n        thumbnail:\n          \"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/order-tracking-thumbnail.jpg\",\n        comingSoon: true,\n      },\n    ],\n  },\n]\n\nexport function ExamplesPreview() {\n  return (\n    <section className=\"container space-y-16 py-12 md:py-20\">\n      {categories.map((category) => (\n        <div key={category.id} className=\"space-y-6\">\n          <div>\n            <h3 className=\"mb-2 text-2xl font-bold tracking-tight\">\n              {category.title}\n            </h3>\n            <p className=\"text-muted-foreground max-w-4xl text-sm sm:text-base\">\n              {category.description}\n            </p>\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n            {category.examples.map((example) => {\n              const CardContent = (\n                <Card className=\"bg-card overflow-hidden border transition-all hover:shadow-md py-0 gap-4\">\n                  <div className=\"bg-muted/30 relative aspect-[16/10] overflow-hidden\">\n                    {example.thumbnail ? (\n                      <img\n                        src={example.thumbnail}\n                        alt={example.name}\n                        className=\"object-cover\"\n                      />\n                    ) : (\n                      <div className=\"from-muted/80 to-muted/40 absolute inset-0 bg-gradient-to-br\" />\n                    )}\n                    {example.comingSoon && (\n                      <div className=\"absolute inset-0 flex items-center justify-center bg-black/40\">\n                        <Badge\n                          variant=\"secondary\"\n                          className=\"text-foreground bg-white px-4 py-1.5 font-medium dark:bg-black\"\n                        >\n                          Soon\n                        </Badge>\n                      </div>\n                    )}\n                  </div>\n                  <div className=\"px-4 pb-4\">\n                    <div className=\"flex items-center justify-between\">\n                      <h4 className=\"text-sm font-medium\">{example.name}</h4>\n                      <span className=\"text-muted-foreground text-xs\">\n                        {example.blockCount} Blocks\n                      </span>\n                    </div>\n                  </div>\n                </Card>\n              )\n\n              if (example.comingSoon) {\n                return (\n                  <div key={example.name} className=\"cursor-not-allowed\">\n                    {CardContent}\n                  </div>\n                )\n              }\n\n              return (\n                <Link\n                  key={example.name}\n                  href={`/blocks/${example.category}`}\n                  className=\"group\"\n                >\n                  {CardContent}\n                </Link>\n              )\n            })}\n          </div>\n        </div>\n      ))}\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/github-link.tsx",
    "content": "import Link from \"next/link\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { Icons } from \"@/components/icons\"\nimport { Button } from \"@/components/ui/button\"\n\nexport function GitHubLink() {\n  return (\n    <Button\n      asChild\n      size=\"sm\"\n      variant=\"ghost\"\n      className=\"h-8 text-white/70 shadow-none hover:bg-white/10 hover:text-white\"\n    >\n      <Link href={siteConfig.links.github} target=\"_blank\" rel=\"noreferrer\">\n        <Icons.gitHub />\n        {/* <React.Suspense fallback={<Skeleton className=\"h-4 w-8\" />}>\n          <StarsCount />\n        </React.Suspense> */}\n      </Link>\n    </Button>\n  )\n}\n\nexport async function StarsCount() {\n  const data = await fetch(\n    \"https://api.github.com/repos/creativetimofficial/ui\",\n    {\n      next: { revalidate: 86400 }, // Cache for 1 day (86400 seconds)\n    }\n  )\n  const json = await data.json()\n\n  return (\n    <span className=\"text-muted-foreground w-8 text-xs tabular-nums\">\n      {json.stargazers_count >= 1000\n        ? `${(json.stargazers_count / 1000).toFixed(1)}k`\n        : json.stargazers_count.toLocaleString()}\n    </span>\n  )\n}\n"
  },
  {
    "path": "apps/www/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\n      viewBox=\"0 0 876 876\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path d=\"M468 292H528V584H468V292Z\" fill=\"currentColor\" />\n      <path d=\"M348 292H408V584H348V292Z\" fill=\"currentColor\" />\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  orb: (props: IconProps) => (\n    <svg\n      width=\"20px\"\n      height=\"20px\"\n      viewBox=\"0 0 20 20\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      color=\"currentColor\"\n      {...props}\n    >\n      <circle\n        cx=\"10.2612\"\n        cy=\"10.0003\"\n        r=\"5.55024\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.3\"\n      ></circle>\n      <path\n        d=\"M5.69092 12.9584C10.8447 12.9584 10.261 7.93345 15.5893 8.31403\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.3\"\n      ></path>\n      <path\n        d=\"M14.0162 14.1629C10.5909 14.5435 9.11942 9.83637 4.59829 9.83636\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.3\"\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/www/components/main-nav.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\n\nimport { cn } from \"@/lib/utils\"\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(\"flex items-center gap-6\", className)} {...props}>\n      {items.map((item) => (\n        <Link\n          key={item.href}\n          href={item.href}\n          className={cn(\n            \"text-sm font-medium transition-colors hover:text-white\",\n            pathname === item.href ? \"text-white\" : \"text-white/70\"\n          )}\n        >\n          {item.label}\n        </Link>\n      ))}\n    </nav>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/mobile-nav.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link, { LinkProps } from \"next/link\"\nimport { useRouter } from \"next/navigation\"\n\nimport { source } from \"@/lib/source\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\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\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 pr-2 pl-0 hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 active:bg-transparent dark:hover:bg-transparent\",\n            className\n          )}\n        >\n          <span className=\"flex h-8 items-center text-base leading-none font-medium text-white\">\n            Menu\n          </span>\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-white 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-white 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        </Button>\n      </PopoverTrigger>\n      <PopoverContent\n        className=\"bg-background/90 no-scrollbar h-(--radix-popper-available-height) w-(--radix-popper-available-width) overflow-y-auto rounded-none border-none p-0 shadow-none backdrop-blur duration-100\"\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-muted-foreground text-sm font-medium\">\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\n          <div className=\"flex flex-col gap-8\">\n            {tree?.children?.map((group, index) => {\n              if (group.type === \"folder\") {\n                return (\n                  <div key={index} className=\"flex flex-col gap-4\">\n                    <div className=\"text-muted-foreground text-sm font-medium\">\n                      {group.name}\n                    </div>\n                    <div className=\"flex flex-col gap-3\">\n                      {group.children.map((item) => {\n                        if (item.type === \"page\") {\n                          return (\n                            <MobileLink\n                              key={`${item.url}-${index}`}\n                              href={item.url}\n                              onOpenChange={setOpen}\n                            >\n                              {item.name}\n                            </MobileLink>\n                          )\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(\"text-2xl font-medium\", className)}\n      {...props}\n    >\n      {children}\n    </Link>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/mode-switcher.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useTheme } from \"next-themes\"\n\nimport { useMetaColor } from \"@/hooks/use-meta-color\"\nimport { Button } from \"@/components/ui/button\"\n\nexport function ModeSwitcher() {\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=\"ghost\"\n      size=\"icon\"\n      className=\"group/toggle extend-touch-target size-8 text-white/70 hover:bg-white/10 hover:text-white\"\n      onClick={toggleTheme}\n      title=\"Toggle theme\"\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"
  },
  {
    "path": "apps/www/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 \"@/components/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/www/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 \"@/components/ui/avatar\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport {\n  SidebarMenu,\n  SidebarMenuButton,\n  SidebarMenuItem,\n  useSidebar,\n} from \"@/components/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/www/components/open-in-v0-button.tsx",
    "content": "import { cn } from \"@/lib/utils\"\nimport { Icons } from \"@/components/icons\"\nimport { Button } from \"@/components/ui/button\"\n\nexport function OpenInV0Button({\n  name,\n  className,\n  ...props\n}: React.ComponentProps<typeof Button> & {\n  name: string\n}) {\n  return (\n    <Button\n      variant=\"secondary\"\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}/ui/r/${name}.json`}\n        target=\"_blank\"\n      >\n        Open in <Icons.v0 className=\"size-5\" />\n      </a>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 pt-20 pb-4 text-center md:pt-32 md:pb-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        \"text-primary leading-tighter max-w-2xl text-4xl font-semibold tracking-tight text-balance 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        \"text-foreground max-w-3xl text-base text-balance 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/www/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/www/components/showcase-masonry.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport {\n  Archive,\n  Briefcase,\n  CalendarIcon,\n  CheckCircle,\n  ChevronDown,\n  ChevronUp,\n  Github,\n  Heart,\n  Home,\n  Mail,\n  Phone,\n  Quote,\n  Shield,\n  ShoppingBag,\n  Star,\n  User,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { Switch } from \"@/components/ui/switch\"\n\nexport function ShowcaseMasonry() {\n  const [date, setDate] = React.useState<Date>(new Date(2024, 9, 10))\n  const [isFavorite, setIsFavorite] = React.useState(false)\n  const [isGithubActive, setIsGithubActive] = React.useState(false)\n\n  return (\n    <section className=\"container py-12 md:py-20\">\n      <div className=\"columns-1 gap-4 space-y-4 md:columns-2 lg:columns-3\">\n        {/* Order Summary Card */}\n        <div className=\"break-inside-avoid\">\n          <div className=\"bg-muted/30 rounded-xl border p-6\">\n            <div className=\"mb-6 flex items-center gap-3\">\n              <div className=\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\">\n                <ShoppingBag className=\"text-primary h-5 w-5\" />\n              </div>\n              <h2 className=\"text-xl font-bold\">Order Summary</h2>\n            </div>\n\n            <div className=\"space-y-4\">\n              <div className=\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\">\n                <div className=\"relative h-20 w-20 overflow-hidden rounded-md border\">\n                  <img\n                    src=\"https://v3.material-tailwind.com/coat-1.png\"\n                    alt=\"Classic Suit\"\n                    className=\"h-full w-full object-cover p-1\"\n                  />\n                </div>\n                <div className=\"flex-1 space-y-1\">\n                  <p className=\"leading-tight font-semibold\">Classic Suit</p>\n                  <p className=\"text-muted-foreground text-sm\">Silk · Size M</p>\n                  <p className=\"text-muted-foreground text-xs\">Qty: 1</p>\n                </div>\n                <p className=\"font-semibold\">$1,300</p>\n              </div>\n              <div className=\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\">\n                <div className=\"relative h-20 w-20 overflow-hidden rounded-md border\">\n                  <img\n                    src=\"https://v3.material-tailwind.com/coat-2.png\"\n                    alt=\"Premium Suit\"\n                    className=\"h-full w-full object-cover p-1\"\n                  />\n                </div>\n                <div className=\"flex-1 space-y-1\">\n                  <p className=\"leading-tight font-semibold\">Premium Suit</p>\n                  <p className=\"text-muted-foreground text-sm\">\n                    Linen · Size M\n                  </p>\n                  <p className=\"text-muted-foreground text-xs\">Qty: 1</p>\n                </div>\n                <p className=\"font-semibold\">$790</p>\n              </div>\n            </div>\n\n            <Separator className=\"my-6\" />\n\n            <div className=\"space-y-3\">\n              <div className=\"flex justify-between text-sm\">\n                <span className=\"text-muted-foreground\">Subtotal</span>\n                <span className=\"font-medium\">$2,090</span>\n              </div>\n              <div className=\"flex justify-between text-sm\">\n                <span className=\"text-muted-foreground\">Shipping estimate</span>\n                <span className=\"font-medium\">$0</span>\n              </div>\n              <div className=\"flex justify-between text-sm\">\n                <span className=\"text-muted-foreground\">Tax estimate</span>\n                <span className=\"font-medium\">$5</span>\n              </div>\n            </div>\n\n            <Separator className=\"my-4\" />\n\n            <div className=\"flex items-center justify-between\">\n              <span className=\"text-lg font-bold\">Total</span>\n              <span className=\"text-2xl font-bold\">$2,095</span>\n            </div>\n          </div>\n        </div>\n\n        {/* Transaction History Card */}\n        <div className=\"break-inside-avoid\">\n          <div className=\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\">\n            <div className=\"mb-6 flex items-start justify-between gap-3\">\n              <div className=\"min-w-0 flex-1\">\n                <h2 className=\"font-semibold\">History Transactions</h2>\n                <p className=\"text-muted-foreground mt-1 text-xs sm:text-sm\">\n                  Track and monitor your financial activity.\n                </p>\n              </div>\n              <Popover>\n                <PopoverTrigger asChild>\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    className={cn(\n                      \"shrink-0 text-xs sm:text-sm\",\n                      !date && \"text-muted-foreground\"\n                    )}\n                  >\n                    <CalendarIcon className=\"mr-1.5 h-3.5 w-3.5 sm:h-4 sm:w-4\" />\n                    <span className=\"hidden sm:inline\">\n                      {date ? format(date, \"MMM d, yyyy\") : \"Select\"}\n                    </span>\n                    <span className=\"sm:hidden\">\n                      {date ? format(date, \"M/d\") : \"Date\"}\n                    </span>\n                  </Button>\n                </PopoverTrigger>\n                <PopoverContent className=\"w-auto p-0\" align=\"end\">\n                  <Calendar\n                    mode=\"single\"\n                    selected={date}\n                    onSelect={(day) => day && setDate(day)}\n                    initialFocus\n                  />\n                </PopoverContent>\n              </Popover>\n            </div>\n            <div>\n              <p className=\"text-muted-foreground mb-3 text-xs font-semibold sm:text-sm\">\n                March 2023\n              </p>\n              <div className=\"space-y-2\">\n                <div className=\"flex items-center gap-2 rounded-lg border p-3 sm:gap-4 sm:p-4\">\n                  <div className=\"bg-card text-card-foreground hidden h-10 w-10 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex sm:h-12 sm:w-12\">\n                    <ChevronDown className=\"h-4 w-4 text-red-600 sm:h-5 sm:w-5\" />\n                  </div>\n                  <div className=\"min-w-0 flex-1 space-y-0.5\">\n                    <p className=\"text-sm font-semibold sm:text-base\">\n                      Netflix\n                    </p>\n                    <p className=\"text-muted-foreground truncate text-xs sm:text-sm\">\n                      27 March 2026, at 12:30 PM\n                    </p>\n                  </div>\n                  <p className=\"shrink-0 text-xs font-semibold text-red-600 sm:text-sm\">\n                    - $2,500.00\n                  </p>\n                </div>\n                <div className=\"flex items-center gap-2 rounded-lg border p-3 sm:gap-4 sm:p-4\">\n                  <div className=\"bg-card text-card-foreground hidden h-10 w-10 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex sm:h-12 sm:w-12\">\n                    <ChevronUp className=\"h-4 w-4 text-green-600 sm:h-5 sm:w-5\" />\n                  </div>\n                  <div className=\"min-w-0 flex-1 space-y-0.5\">\n                    <p className=\"text-sm font-semibold sm:text-base\">Apple</p>\n                    <p className=\"text-muted-foreground truncate text-xs sm:text-sm\">\n                      27 March 2026, at 04:30 AM\n                    </p>\n                  </div>\n                  <p className=\"shrink-0 text-xs font-semibold text-green-600 sm:text-sm\">\n                    + $2,000.00\n                  </p>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* Product Card */}\n        <div className=\"break-inside-avoid\">\n          <div className=\"group bg-card relative overflow-hidden rounded-lg border transition-all hover:shadow-lg\">\n            <Badge\n              variant=\"secondary\"\n              className=\"absolute top-3 left-3 z-10 bg-white dark:bg-gray-900\"\n            >\n              Exclusive\n            </Badge>\n            <button\n              onClick={() => setIsFavorite(!isFavorite)}\n              className=\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/90 backdrop-blur-sm transition-colors hover:bg-white dark:bg-gray-900/90 dark:hover:bg-gray-900\"\n            >\n              <Heart\n                className={`h-4 w-4 transition-colors ${\n                  isFavorite\n                    ? \"fill-red-500 text-red-500\"\n                    : \"text-gray-600 dark:text-gray-400\"\n                }`}\n              />\n            </button>\n\n            <div className=\"bg-muted/30 aspect-square overflow-hidden\">\n              <img\n                src=\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\"\n                alt=\"Cable-knit cashmere cardigan\"\n                className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n              />\n            </div>\n\n            <div className=\"border-t p-4\">\n              <div className=\"mb-2 flex items-start justify-between gap-2\">\n                <div className=\"flex-1\">\n                  <p className=\"text-sm font-semibold\">Zegna</p>\n                  <p className=\"text-muted-foreground mt-1 text-sm leading-tight\">\n                    Cable-knit cashmere cardigan\n                  </p>\n                </div>\n              </div>\n              <p className=\"mt-2 font-semibold\">€3,450</p>\n            </div>\n          </div>\n        </div>\n\n        {/* Account Integration Card */}\n        <div className=\"break-inside-avoid\">\n          <Card className=\"bg-card border p-6\">\n            <div className=\"mb-6 border-b pb-6\">\n              <div className=\"flex items-center gap-3\">\n                <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n                  <Shield className=\"text-primary h-6 w-6\" />\n                </div>\n                <div>\n                  <h2 className=\"text-xl font-semibold tracking-tight\">\n                    Third-Party Integrations\n                  </h2>\n                  <p className=\"text-muted-foreground mt-1 text-sm\">\n                    Manage and configure connections to external services\n                  </p>\n                </div>\n              </div>\n            </div>\n\n            <Accordion type=\"single\" collapsible defaultValue=\"github\">\n              <AccordionItem\n                value=\"github\"\n                className=\"border-border rounded-lg border\"\n              >\n                <div className=\"flex flex-col gap-3 px-4 py-3 sm:flex-row sm:items-center sm:justify-between\">\n                  <div className=\"flex flex-1 items-center gap-3\">\n                    <div className=\"bg-muted/50 flex h-10 w-10 shrink-0 items-center justify-center rounded-lg\">\n                      <Github\n                        className={`h-5 w-5 ${isGithubActive ? \"text-primary\" : \"text-muted-foreground\"}`}\n                      />\n                    </div>\n                    <div className=\"min-w-0 flex-1 text-left\">\n                      <div className=\"mb-1 flex flex-wrap items-center gap-2\">\n                        <h3 className=\"text-sm font-semibold\">GitHub</h3>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"text-muted-foreground text-xs\"\n                        >\n                          Development\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground line-clamp-1 text-xs\">\n                        Connect your GitHub account to sync repositories\n                      </p>\n                    </div>\n                  </div>\n                  <div className=\"flex items-center gap-3\">\n                    <div className=\"flex items-center gap-2\">\n                      <Switch\n                        id=\"github-toggle\"\n                        checked={isGithubActive}\n                        onCheckedChange={setIsGithubActive}\n                      />\n                      <Label\n                        htmlFor=\"github-toggle\"\n                        className=\"cursor-pointer text-xs\"\n                      >\n                        {isGithubActive ? \"Enabled\" : \"Enable\"}\n                      </Label>\n                    </div>\n                    <AccordionTrigger className=\"hover:bg-muted/50 rounded p-2\">\n                      <span className=\"sr-only\">Toggle details</span>\n                    </AccordionTrigger>\n                  </div>\n                </div>\n                <AccordionContent className=\"border-t px-4 pt-4 pb-4\">\n                  <div className=\"space-y-3\">\n                    <p className=\"text-muted-foreground text-xs leading-relaxed\">\n                      You haven&apos;t added your GitHub account or you\n                      aren&apos;t authorized. Connect your account to enable\n                      repository syncing and collaboration features.\n                    </p>\n                    <Button size=\"sm\" variant=\"outline\" className=\"w-full\">\n                      <Github className=\"mr-2 h-4 w-4\" />\n                      Connect GitHub Account\n                    </Button>\n                  </div>\n                </AccordionContent>\n              </AccordionItem>\n            </Accordion>\n          </Card>\n        </div>\n\n        {/* Order Timeline Card */}\n        <div className=\"break-inside-avoid\">\n          <div className=\"bg-card rounded-xl border p-6\">\n            <h3 className=\"mb-6 text-lg font-semibold\">Order Timeline</h3>\n            <div className=\"space-y-6\">\n              <div className=\"flex gap-4\">\n                <div className=\"flex flex-col items-center\">\n                  <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                    <Home className=\"h-5 w-5 text-white\" />\n                  </div>\n                  <div className=\"bg-primary my-2 w-0.5 flex-1\" />\n                </div>\n                <div className=\"pb-6\">\n                  <div className=\"mb-1 flex items-center gap-2\">\n                    <p className=\"font-semibold\">Order Placed</p>\n                    <Badge\n                      variant=\"outline\"\n                      className=\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\"\n                    >\n                      Complete\n                    </Badge>\n                  </div>\n                  <p className=\"text-muted-foreground text-sm\">\n                    Your order was placed on April 1, 2024\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"flex gap-4\">\n                <div className=\"flex flex-col items-center\">\n                  <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                    <CheckCircle className=\"h-5 w-5 text-white\" />\n                  </div>\n                  <div className=\"bg-primary my-2 w-0.5 flex-1\" />\n                </div>\n                <div className=\"pb-6\">\n                  <div className=\"mb-1 flex items-center gap-2\">\n                    <p className=\"font-semibold\">Order Confirmed</p>\n                    <Badge\n                      variant=\"outline\"\n                      className=\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\"\n                    >\n                      Complete\n                    </Badge>\n                  </div>\n                  <p className=\"text-muted-foreground text-sm\">\n                    Your order has been confirmed on April 2, 2024\n                  </p>\n                </div>\n              </div>\n\n              <div className=\"flex gap-4\">\n                <div className=\"flex flex-col items-center\">\n                  <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                    <Archive className=\"h-5 w-5 text-white\" />\n                  </div>\n                </div>\n                <div>\n                  <div className=\"mb-1 flex items-center gap-2\">\n                    <p className=\"font-semibold\">Order Shipped</p>\n                    <Badge\n                      variant=\"outline\"\n                      className=\"border-blue-500/30 bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400\"\n                    >\n                      In Progress\n                    </Badge>\n                  </div>\n                  <p className=\"text-muted-foreground text-sm\">\n                    Your order has been shipped on April 3, 2024\n                  </p>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* Personal Information Card */}\n        <div className=\"break-inside-avoid\">\n          <Card className=\"bg-card border p-6\">\n            <div className=\"mb-6 border-b pb-4\">\n              <h3 className=\"text-lg font-semibold tracking-tight\">\n                Personal Information\n              </h3>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Manage your personal details\n              </p>\n            </div>\n            <div className=\"space-y-4\">\n              <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"firstName\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <User className=\"text-muted-foreground h-4 w-4\" />\n                    First Name\n                  </Label>\n                  <Input\n                    id=\"firstName\"\n                    placeholder=\"Emma\"\n                    defaultValue=\"Emma\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"lastName\" className=\"flex items-center gap-2\">\n                    <User className=\"text-muted-foreground h-4 w-4\" />\n                    Last Name\n                  </Label>\n                  <Input\n                    id=\"lastName\"\n                    placeholder=\"Roberts\"\n                    defaultValue=\"Roberts\"\n                  />\n                </div>\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"email\" className=\"flex items-center gap-2\">\n                  <Mail className=\"text-muted-foreground h-4 w-4\" />\n                  Email Address\n                </Label>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"emma@mail.com\"\n                  defaultValue=\"emma@mail.com\"\n                />\n              </div>\n              <div className=\"grid grid-cols-2 gap-4\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"phone\" className=\"flex items-center gap-2\">\n                    <Phone className=\"text-muted-foreground h-4 w-4\" />\n                    Phone Number\n                  </Label>\n                  <Input\n                    id=\"phone\"\n                    placeholder=\"+1 (555) 123-4567\"\n                    defaultValue=\"+1 (555) 123-4567\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"profession\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <Briefcase className=\"text-muted-foreground h-4 w-4\" />\n                    Profession\n                  </Label>\n                  <Select defaultValue=\"ui-ux\">\n                    <SelectTrigger id=\"profession\">\n                      <SelectValue placeholder=\"Select Profession\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"ui-ux\">UI/UX Designer</SelectItem>\n                      <SelectItem value=\"frontend\">\n                        Frontend Developer\n                      </SelectItem>\n                      <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                      <SelectItem value=\"fullstack\">\n                        Fullstack Developer\n                      </SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n              </div>\n            </div>\n          </Card>\n        </div>\n\n        {/* Testimonial Card */}\n        <div className=\"break-inside-avoid\">\n          <Card className=\"group border-border/50 hover:border-border transition-all hover:shadow-lg\">\n            <CardContent className=\"p-6\">\n              <div className=\"mb-4 flex items-center gap-4\">\n                <div className=\"relative shrink-0\">\n                  <img\n                    src=\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\"\n                    alt=\"Sarah Johnson profile\"\n                    className=\"border-border h-14 w-14 rounded-full border-2 object-cover transition-transform group-hover:scale-105\"\n                  />\n                  <div className=\"bg-background absolute -right-1 -bottom-1 rounded-full p-1 shadow-md\">\n                    <Quote className=\"text-primary h-3 w-3\" />\n                  </div>\n                </div>\n                <div className=\"min-w-0 flex-1 text-left\">\n                  <h3 className=\"font-semibold\">Sarah Johnson</h3>\n                  <p className=\"text-muted-foreground text-sm\">\n                    Product Designer\n                  </p>\n                </div>\n                <div className=\"flex shrink-0 gap-0.5\">\n                  {Array.from({ length: 5 }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className=\"h-3.5 w-3.5 fill-yellow-400 text-yellow-400\"\n                    />\n                  ))}\n                </div>\n              </div>\n\n              <blockquote className=\"text-muted-foreground text-left text-sm leading-relaxed\">\n                &quot;The attention to detail and component quality is\n                outstanding. These UI blocks have significantly accelerated our\n                design workflow.&quot;\n              </blockquote>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/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 \"@/components/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/www/components/site-footer.tsx",
    "content": "import Link from \"next/link\"\nimport { Heart } from \"lucide-react\"\n\nimport { siteConfig } from \"@/lib/config\"\n\nexport function SiteFooter() {\n  return (\n    <footer className=\"group-has-[.section-soft]/body:bg-surface/40 3xl:fixed:bg-transparent group-has-[.docs-nav]/body:pb-20 group-has-[.docs-nav]/body:sm:pb-0 dark: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=\"text-muted-foreground flex w-full items-center justify-center gap-1 px-1 text-center text-xs leading-loose sm:text-sm\">\n            Made with{\" \"}\n            <Heart className=\"h-3 w-3 fill-red-500 text-red-500 sm:h-4 sm:w-4\" />{\" \"}\n            by{\" \"}\n            <Link\n              href={siteConfig.utm.main}\n              rel=\"noreferrer\"\n              className=\"font-medium underline underline-offset-4\"\n            >\n              Creative Tim\n            </Link>\n            . Open source 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/www/components/site-header.tsx",
    "content": "import Link from \"next/link\"\nimport { ArrowRight } from \"lucide-react\"\n\nimport { siteConfig } from \"@/lib/config\"\nimport { source } from \"@/lib/source\"\nimport { CommandMenu } from \"@/components/command-menu\"\nimport { GitHubLink } from \"@/components/github-link\"\nimport { MainNav } from \"@/components/main-nav\"\nimport { MobileNav } from \"@/components/mobile-nav\"\nimport { ModeSwitcher } from \"@/components/mode-switcher\"\nimport blocks from \"@/registry/__blocks__.json\"\nimport { Button } from \"@/components/ui/button\"\n\nexport function SiteHeader() {\n  const pageTree = source.pageTree\n  const assetPrefix = process.env.NEXT_PUBLIC_ASSET_PREFIX\n\n  return (\n    <header className=\"sticky top-0 z-50 w-full pt-4\">\n      <div className=\"container px-6\">\n        <div className=\"mx-auto rounded-full border border-white/10 bg-black/80 backdrop-blur-sm\">\n          <div className=\"flex h-12 items-center justify-between px-2\">\n            {/* Left: Logo + Brand + Nav */}\n            <div className=\"flex items-center gap-3\">\n              <Link href=\"/\" className=\"flex items-center gap-2\">\n                <img\n                  src={`${assetPrefix}/apple-touch-icon-square.jpg`}\n                  alt=\"Creative Tim UI\"\n                  className=\"h-8 w-8 rounded-full\"\n                />\n                <span className=\"inline-block text-sm font-semibold text-white md:text-base\">\n                  {siteConfig.name}\n                </span>\n              </Link>\n\n              {/* Vertical Line Separator */}\n              <div className=\"hidden h-6 w-px bg-white/20 lg:block\" />\n\n              {/* Navigation Links */}\n              <MainNav items={siteConfig.navItems} className=\"hidden lg:flex\" />\n            </div>\n\n            {/* Right: Actions */}\n            <div className=\"flex items-center gap-2\">\n              <div className=\"hidden md:flex\">\n                <CommandMenu\n                  tree={pageTree}\n                  navItems={siteConfig.navItems}\n                  blocks={blocks}\n                />\n              </div>\n              <GitHubLink />\n              <ModeSwitcher />\n              <Button\n                asChild\n                size=\"sm\"\n                className=\"hidden rounded-full bg-white text-black hover:bg-white/90 sm:inline-flex\"\n              >\n                <Link href=\"/docs\" className=\"flex items-center gap-1\">\n                  Get Started\n                  <ArrowRight className=\"h-4 w-4\" />\n                </Link>\n              </Button>\n              <MobileNav\n                tree={pageTree}\n                items={siteConfig.navItems}\n                className=\"flex lg:hidden\"\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/tailwind-indicator.tsx",
    "content": "const SHOW = true\n\nexport function TailwindIndicator() {\n  if (process.env.NODE_ENV === \"production\" || !SHOW) {\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/www/components/testimonials-section.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { ChevronLeft, ChevronRight, Quote } from \"lucide-react\"\nimport { AnimatePresence, motion } from \"motion/react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst testimonials = [\n  {\n    name: \"Eugen Tudorache\",\n    role: \"CTO\",\n    company: \"Updivision\",\n    image: \"/ui/eugen.jpg\",\n    quote:\n      \"Creative Tim UI has completely transformed how we build interfaces. The components are beautifully designed and incredibly easy to customize.\",\n  },\n  {\n    name: \"Robert Tatoi\",\n    role: \"Founder\",\n    company: \"PlayVertical\",\n    image: \"/ui/robert.jpg\",\n    quote:\n      \"The quality of these components is outstanding. They've saved us countless hours and our product looks better than ever.\",\n  },\n  {\n    name: \"Fredy Andrei\",\n    role: \"CEO\",\n    company: \"Simmmple\",\n    image: \"/ui/freddy.jpg\",\n    quote:\n      \"Finally, a component library that doesn't compromise on design or flexibility. The attention to detail is exceptional.\",\n  },\n  {\n    name: \"Rares Toma\",\n    role: \"CEO\",\n    company: \"Loopple\",\n    image: \"/ui/rares.jpg\",\n    quote:\n      \"Our development velocity has increased significantly. The documentation is clear and the components are production-ready.\",\n  },\n]\n\nexport function TestimonialsSection() {\n  const [currentIndex, setCurrentIndex] = useState(0)\n\n  useEffect(() => {\n    const timer = setInterval(() => {\n      setCurrentIndex((prev) => (prev + 1) % testimonials.length)\n    }, 5000)\n\n    return () => clearInterval(timer)\n  }, [])\n\n  const goToPrevious = () => {\n    setCurrentIndex(\n      (prev) => (prev - 1 + testimonials.length) % testimonials.length\n    )\n  }\n\n  const goToNext = () => {\n    setCurrentIndex((prev) => (prev + 1) % testimonials.length)\n  }\n\n  const currentTestimonial = testimonials[currentIndex]\n\n  return (\n    <section className=\"container py-12 md:py-20\">\n      <div className=\"mx-auto max-w-5xl\">\n        <div className=\"mb-12 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold tracking-tight sm:text-4xl\">\n            Loved by Developers & Designers\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-3xl text-base sm:text-lg\">\n            Join thousands of professionals who trust Creative Tim UI to build\n            beautiful, modern interfaces faster.\n          </p>\n        </div>\n\n        <div className=\"relative\">\n          <div className=\"border-border/50 bg-muted/30 relative overflow-hidden rounded-3xl border backdrop-blur-sm\">\n            <div className=\"from-primary/5 to-primary/5 absolute inset-0 bg-gradient-to-br via-transparent\" />\n\n            <div className=\"relative px-8 py-12 md:px-16 md:py-20\">\n              <AnimatePresence mode=\"wait\">\n                <motion.div\n                  key={currentIndex}\n                  initial={{ opacity: 0, y: 20 }}\n                  animate={{ opacity: 1, y: 0 }}\n                  exit={{ opacity: 0, y: -20 }}\n                  transition={{ duration: 0.5 }}\n                  className=\"flex flex-col items-center text-center\"\n                >\n                  <motion.div\n                    initial={{ scale: 0 }}\n                    animate={{ scale: 1 }}\n                    transition={{ delay: 0.2, type: \"spring\", stiffness: 200 }}\n                    className=\"bg-primary/10 mb-8 rounded-full p-4\"\n                  >\n                    <Quote className=\"text-primary h-8 w-8 md:h-10 md:w-10\" />\n                  </motion.div>\n\n                  <motion.blockquote\n                    initial={{ opacity: 0 }}\n                    animate={{ opacity: 1 }}\n                    transition={{ delay: 0.3 }}\n                    className=\"mb-10 text-2xl leading-normal font-medium md:text-3xl lg:text-4xl\"\n                  >\n                    {currentTestimonial.quote}\n                  </motion.blockquote>\n\n                  <motion.div\n                    initial={{ opacity: 0, scale: 0.8 }}\n                    animate={{ opacity: 1, scale: 1 }}\n                    transition={{ delay: 0.4 }}\n                    className=\"flex flex-col items-center gap-4 sm:flex-row\"\n                  >\n                    <img\n                      src={currentTestimonial.image}\n                      alt={currentTestimonial.name}\n                      className=\"border-border h-16 w-16 rounded-full border-2 object-cover\"\n                    />\n                    <div className=\"text-center sm:text-left\">\n                      <div className=\"text-lg font-semibold\">\n                        {currentTestimonial.name}\n                      </div>\n                      <div className=\"text-muted-foreground text-sm\">\n                        {currentTestimonial.role} at{\" \"}\n                        {currentTestimonial.company}\n                      </div>\n                    </div>\n                  </motion.div>\n                </motion.div>\n              </AnimatePresence>\n            </div>\n          </div>\n\n          {/* Navigation Buttons */}\n          <div className=\"mt-8 flex items-center justify-center gap-4\">\n            <Button\n              variant=\"outline\"\n              size=\"icon\"\n              onClick={goToPrevious}\n              className=\"hover:bg-primary/10 h-10 w-10 rounded-full\"\n            >\n              <ChevronLeft className=\"h-5 w-5\" />\n            </Button>\n\n            {/* Dots Indicator */}\n            <div className=\"flex gap-2\">\n              {testimonials.map((_, index) => (\n                <button\n                  key={index}\n                  onClick={() => setCurrentIndex(index)}\n                  className={`h-2 rounded-full transition-all ${\n                    index === currentIndex\n                      ? \"bg-primary w-8\"\n                      : \"bg-muted-foreground/30 hover:bg-muted-foreground/50 w-2\"\n                  }`}\n                  aria-label={`Go to testimonial ${index + 1}`}\n                />\n              ))}\n            </div>\n\n            <Button\n              variant=\"outline\"\n              size=\"icon\"\n              onClick={goToNext}\n              className=\"hover:bg-primary/10 h-10 w-10 rounded-full\"\n            >\n              <ChevronRight className=\"h-5 w-5\" />\n            </Button>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/theme-provider.tsx",
    "content": "\"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 (\n    <NextThemesProvider\n      attribute=\"class\"\n      defaultTheme=\"system\"\n      enableSystem\n      disableTransitionOnChange\n      enableColorScheme\n      {...props}\n    >\n      {children}\n    </NextThemesProvider>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/theme-selector.tsx",
    "content": "\"use client\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useThemeConfig } from \"@/components/active-theme\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst DEFAULT_THEMES = [\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\nconst COLOR_THEMES = [\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\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=\"bg-secondary text-secondary-foreground border-secondary justify-start shadow-none *:data-[slot=select-value]:w-12\"\n        >\n          <span className=\"font-medium\">Theme:</span>\n          <SelectValue placeholder=\"Select a theme\" />\n        </SelectTrigger>\n        <SelectContent align=\"end\">\n          <SelectGroup>\n            {DEFAULT_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          <SelectSeparator />\n          <SelectGroup>\n            <SelectLabel>Colors</SelectLabel>\n            {COLOR_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        </SelectContent>\n      </Select>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\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          \"focus-visible:border-ring focus-visible:ring-ring/50 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:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 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=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\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/www/components/ui/alert-dialog.tsx",
    "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 \"@/components/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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        className={cn(\n          \"bg-background 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 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 p-6 shadow-lg duration-200 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(\"flex flex-col gap-2 text-center sm:text-left\", 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        \"flex flex-col-reverse gap-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(\"text-lg font-semibold\", 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(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n  return (\n    <AlertDialogPrimitive.Action\n      className={cn(buttonVariants(), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n  return (\n    <AlertDialogPrimitive.Cancel\n      className={cn(buttonVariants({ variant: \"outline\" }), className)}\n      {...props}\n    />\n  )\n}\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"
  },
  {
    "path": "apps/www/components/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 w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>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          \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\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        \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "apps/www/components/ui/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\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/www/components/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      className={cn(\n        \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\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        \"bg-muted flex size-full items-center justify-center rounded-full\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"
  },
  {
    "path": "apps/www/components/ui/badge.tsx",
    "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 badgeVariants = cva(\n  \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n        destructive:\n          \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/www/components/ui/breadcrumb.tsx",
    "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\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        \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words 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 : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"hover:text-foreground transition-colors\", 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(\"text-foreground font-normal\", 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/www/components/ui/button.tsx",
    "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-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\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:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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        sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/www/components/ui/calendar.tsx",
    "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 \"@/components/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:--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          \"flex gap-4 flex-col md:flex-row relative\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute bg-popover inset-0 opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"select-none font-medium\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>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 rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n        week_number_header: cn(\n          \"select-none w-(--cell-size)\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] select-none text-muted-foreground\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\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          \"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.toISOString().split(\"T\")[0]}\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 dark:hover:text-accent-foreground 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:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/www/components/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        \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 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-muted-foreground text-sm\", 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/www/components/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 \"@/components/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/www/components/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          \"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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        \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border 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                  \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\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=\"text-foreground font-mono font-medium 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                \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\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/www/components/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\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 border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex items-center justify-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/www/components/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\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/www/components/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 \"@/components/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        \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\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=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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          \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden 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        \"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        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(\"bg-border -mx-1 h-px\", 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        \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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/www/components/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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          \"bg-popover 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 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 p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"text-foreground px-2 py-1.5 text-sm font-medium 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(\"bg-border -mx-1 my-1 h-px\", 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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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/www/components/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\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          \"bg-background 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 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 p-6 shadow-lg duration-200 sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_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({ className, ...props }: React.ComponentProps<\"div\">) {\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  )\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-muted-foreground text-sm\", 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/www/components/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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\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 bg-background fixed z-50 flex h-auto flex-col\",\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=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full 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(\"text-foreground font-semibold\", 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-muted-foreground text-sm\", 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/www/components/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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          \"bg-popover 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 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 p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\"bg-border -mx-1 my-1 h-px\", 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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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/www/components/ui/form.tsx",
    "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  useFormState,\n  type ControllerProps,\n  type FieldPath,\n  type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/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>) {\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n  return (\n    <Slot\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-muted-foreground text-sm\", 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-destructive text-sm\", 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/www/components/ui/hover-card.tsx",
    "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\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          \"bg-popover 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/www/components/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        \"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 dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center 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]:z-10 data-[active=true]:ring-[3px]\",\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=\"animate-caret-blink bg-foreground h-4 w-px 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/www/components/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        \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 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 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n        \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/www/components/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\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/www/components/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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        \"bg-background 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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium 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          \"bg-popover text-popover-foreground 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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\"bg-border -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(\n        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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/www/components/ui/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\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 hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\"\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        \"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 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n        \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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: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\",\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 bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow 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        \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_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        \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm 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/www/components/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 { Button, buttonVariants } from \"@/components/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/www/components/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\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          \"bg-popover 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md 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\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n"
  },
  {
    "path": "apps/www/components/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\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        \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"bg-primary h-full w-full flex-1 transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/www/components/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\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        \"border-input text-primary 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:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\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=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/www/components/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\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}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n  return (\n    <ResizablePrimitive.PanelGroup\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.PanelResizeHandle\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center 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-offset-1 focus-visible:outline-hidden 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-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n          <GripVerticalIcon className=\"size-2.5\" />\n        </div>\n      )}\n    </ResizablePrimitive.PanelResizeHandle>\n  )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n"
  },
  {
    "path": "apps/www/components/ui/scroll-area.tsx",
    "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\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=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] 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=\"bg-border relative flex-1 rounded-full\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/www/components/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\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        \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 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 [&_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=\"size-4 opacity-50\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"popper\",\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          \"bg-popover 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 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 shadow-md\",\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)] 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(\"text-muted-foreground px-2 py-1.5 text-xs\", 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        \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[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=\"absolute right-2 flex size-3.5 items-center justify-center\">\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(\"bg-border pointer-events-none -mx-1 my-1 h-px\", 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/www/components/ui/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\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        \"bg-border shrink-0 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/www/components/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        className={cn(\n          \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n          side === \"right\" &&\n            \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n          side === \"left\" &&\n            \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n          side === \"top\" &&\n            \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n          side === \"bottom\" &&\n            \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n          <XIcon className=\"size-4\" />\n          <span className=\"sr-only\">Close</span>\n        </SheetPrimitive.Close>\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(\"text-foreground font-semibold\", 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-muted-foreground text-sm\", 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/www/components/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/registry/creative-tim/hooks/use-mobile\"\nimport { cn } from \"@/registry/creative-tim/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/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 has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\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          \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\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=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>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 text-sidebar-foreground hidden 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=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]: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        \"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]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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        \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\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        \"bg-background relative flex w-full flex-1 flex-col\",\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(\"bg-background h-8 w-full 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(\"bg-sidebar-border mx-2 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        \"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 : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium 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 : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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 outline-hidden 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\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 : \"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 : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"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 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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          \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 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        \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium 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        \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l 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 : \"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        \"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 flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 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\",\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/www/components/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(\"bg-accent animate-pulse rounded-md\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/www/components/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\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          \"bg-muted relative grow overflow-hidden rounded-full 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            \"bg-primary absolute 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=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm 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/www/components/ui/software-purchase-card.tsx",
    "content": "\"use client\"\n\nimport { Calendar, CreditCard, DollarSign, Users } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport interface SoftwarePurchaseCardProps {\n  softwareName?: string\n  startDate?: string\n  seats?: number\n  pricingType?: \"per-seat\" | \"flat-rate\" | \"usage-based\"\n  price?: string\n  onApprove?: () => void\n  onDiscard?: () => void\n}\n\nexport function SoftwarePurchaseCard({\n  softwareName = \"Enterprise Cloud Suite\",\n  startDate = \"2025-01-15\",\n  seats = 50,\n  pricingType = \"per-seat\",\n  price = \"$2,500\",\n  onApprove,\n  onDiscard,\n}: SoftwarePurchaseCardProps) {\n  const pricingTypeLabel = {\n    \"per-seat\": \"Per Seat\",\n    \"flat-rate\": \"Flat Rate\",\n    \"usage-based\": \"Usage Based\",\n  }[pricingType]\n\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle className=\"flex items-center justify-between\">\n          {softwareName}\n          <Badge variant=\"secondary\">{pricingTypeLabel}</Badge>\n        </CardTitle>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Calendar className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Start Date</span>\n            <span className=\"font-medium\">\n              {new Date(startDate).toLocaleDateString(\"en-US\", {\n                month: \"long\",\n                day: \"numeric\",\n                year: \"numeric\",\n              })}\n            </span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Users className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Seats</span>\n            <span className=\"font-medium\">{seats} users</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <CreditCard className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Pricing Type</span>\n            <span className=\"font-medium\">{pricingTypeLabel}</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <DollarSign className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">\n              {pricingType === \"per-seat\" ? \"Monthly Cost\" : \"Price\"}\n            </span>\n            <span className=\"text-lg font-semibold\">{price}</span>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"flex gap-3\">\n        <Button variant=\"outline\" className=\"flex-1\" onClick={onDiscard}>\n          Discard\n        </Button>\n        <Button className=\"flex-1\" onClick={onApprove}>\n          Approve\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/components/ui/sonner.tsx",
    "content": "\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, 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      style={\n        {\n          \"--normal-bg\": \"var(--popover)\",\n          \"--normal-text\": \"var(--popover-foreground)\",\n          \"--normal-border\": \"var(--border)\",\n        } as React.CSSProperties\n      }\n      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/www/components/ui/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n  className,\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      className={cn(\n        \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className={cn(\n          \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n        )}\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/www/components/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        \"bg-muted/50 border-t 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        \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\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        \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&: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(\"text-muted-foreground mt-4 text-sm\", 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/www/components/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsList({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      className={cn(\n        \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n        className\n      )}\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        \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground 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 transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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 }\n"
  },
  {
    "path": "apps/www/components/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        \"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/www/components/ui/toggle-group.tsx",
    "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 \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants>\n>({\n  size: \"default\",\n  variant: \"default\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(\n        \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider value={{ variant, size }}>\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      className={cn(\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-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/www/components/ui/toggle.tsx",
    "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 hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\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 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\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/www/components/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\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 (\n    <TooltipProvider>\n      <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n    </TooltipProvider>\n  )\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          \"bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/www/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}\n"
  },
  {
    "path": "apps/www/content/docs/(root)/components.mdx",
    "content": "---\ntitle: Components\ndescription: Getting started with Creative Tim UI\n---\n\nInstalling Creative Tim UI components is straightforward and can be done in a couple of ways. You can use the dedicated CLI command for the fastest setup, or integrate via the standard shadcn/ui CLI if you've already adopted shadcn's workflow.\n\n<Tabs defaultValue=\"creative-tim\">\n\n<TabsList>\n  <TabsTrigger value=\"creative-tim\">Creative Tim CLI</TabsTrigger>\n  <TabsTrigger value=\"shadcn\">shadcn</TabsTrigger>\n</TabsList>\n\n<TabsContent value=\"creative-tim\">\n\n```bash\nnpx @creative-tim/ui@latest add button\n```\n\n</TabsContent>\n\n<TabsContent value=\"shadcn\">\n\n```bash\nnpx shadcn@latest add https://creative-tim.com/ui/r/button.json\n```\n\n</TabsContent>\n\n</Tabs>\n\n## Prerequisites\n\nBefore installing Creative Tim UI, make sure your environment meets the following requirements:\n\n- [Node.js](https://nodejs.org/) version 18 or later\n- A [Next.js](https://nextjs.org/) project\n- [shadcn/ui](https://ui.shadcn.com/) setup in your project. If you don't have it setup, running any install command will set it up for you.\n\n## Installing components\n\nYou can install Creative Tim UI components using either the `@creative-tim/ui` CLI or the `shadcn/ui` CLI. Both achieve the same result: adding the selected component’s code and any needed dependencies to your project.\n\nThe CLI will download the component's code and integrate it into your project's directory (usually under your components folder).\n\nAfter running the command, you should see a confirmation in your terminal that the files were added. You can then proceed to use the component in your code.\n"
  },
  {
    "path": "apps/www/content/docs/(root)/debug-logs.mdx",
    "content": "---\ntitle: Debug Logs\ndescription: Common issues and debugging steps for Creative Tim UI components.\n---\n\n## Components appear unstyled\n\nVerify your project has the correct Tailwind CSS configuration for shadcn/ui. Your `globals.css` file should import Tailwind and include shadcn/ui base styles for proper component rendering.\n\n---\n\n## CLI installation completes but no files appear\n\nCheck these common issues:\n\n- Confirm you're running the command from your project root directory (where `package.json` is located).\n- Verify your `components.json` configuration file has the correct settings if you're using shadcn-style setup.\n- Use the latest CLI version to ensure compatibility:\n\n```bash\nnpx @creative-tim/ui@latest add card\n```\n\n## Theme toggle stuck on light mode\n\nYour application needs to use the same theme system as shadcn/ui. The components expect a `data-theme` attribute on the `<html>` element. Check your `tailwind.config.js` to ensure it's configured with the appropriate class or data selectors for theme switching.\n\n## Import errors showing \"module not found\"\n\nConfirm the component file exists in your project. If it does, check your `tsconfig.json` has the correct path mapping for the `@/` alias:\n\n```json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  }\n}\n```\n\n---\n\n## Need additional help?\n\nIf you're still experiencing issues, open a support ticket on [GitHub](https://github.com/creativetimofficial/ui/issues) with details about your setup and the problem you're encountering.\n"
  },
  {
    "path": "apps/www/content/docs/(root)/how-it-works.mdx",
    "content": "---\ntitle: How It Works\ndescription: Learn how Creative Tim UI components work within your application.\n---\n\nCreative Tim UI components integrate directly into your project as source code, not as dependencies locked in external packages. This means each component lives in your codebase, giving you complete control to customize, extend, or modify them to match your exact requirements.\n\n---\n\n## Example\n\nOnce you've installed a component, simply import it like any other React component in your application. Here's a practical example showing a form card with inputs:\n\n<ComponentPreview\n  name=\"form-card-demo\"\n  title=\"Form Card Example\"\n  defaultTab=\"code\"\n  description=\"A card component with form inputs for user registration.\"\n/>\n\nYou can use the installed components throughout your application with full flexibility to adapt them to your needs.\n\n---\n\n## Block Example\n\nBlocks are larger, pre-built sections that combine multiple components together. Here's a testimonial block that showcases customer stories with rich typography and layout:\n\n<ComponentPreview\n  name=\"testimonials-09\"\n  align=\"start\"\n  marginOff={true}\n  title=\"Testimonials Block\"\n  description=\"A customer story section with large heading, blockquote, and avatar details.\"\n/>\n"
  },
  {
    "path": "apps/www/content/docs/(root)/index.mdx",
    "content": "---\ntitle: Introduction\ndescription: Introduction\n---\n\nCreative Tim UI is a comprehensive component library and custom registry built on top of [shadcn/ui](https://ui.shadcn.com/) to help you build beautiful, modern web applications faster. It provides pre-built, customizable React components and blocks designed for production-ready applications.\n\n## Installation\n\nComponents are available via the `@creative-tim/ui` command.\n\n```bash\nnpx @creative-tim/ui@latest add <component>\n```\n\nFor example, to install a button component, you can run:\n\n```bash\nnpx @creative-tim/ui@latest add button\n```\n\nAlternatively, you can use the standard shadcn CLI:\n\n```bash\nnpx shadcn@latest add https://creative-tim.com/ui/r/<component>.json\n```\n\n## Copyrights and Licenses\n\nCreative Tim UI is built upon the incredible work of the open source community:\n\n- **[shadcn/ui](https://ui.shadcn.com/)** - The documentation structure, registry system, and foundational (atomic) components are from the open source work in shadcn/ui. [MIT License](https://github.com/shadcn-ui/ui/blob/main/LICENSE.md) \n- **[Material Tailwind](https://material-tailwind.com/v3)** by Creative Tim - The blocks and component designs are inspired by and based on Material Tailwind Framework. [MIT License](https://github.com/creativetimofficial/material-tailwind/blob/main/LICENSE.md) \n- **[Eleven Labs UI](https://github.com/elevenlabs/elevenlabs-ui)** - General inspiration for the documentation structure and approach of blocks. [MIT License](https://github.com/elevenlabs/ui/blob/main/LICENSE.md)\n- **[Geist Font](https://vercel.com/font)** by Vercel - The beautiful typeface used throughout the interface.  [SIL Open Font License 1.1](https://github.com/vercel/geist-font/blob/main/LICENSE.txt)\n\nWe are grateful to these projects for making their work available under open source licenses.\n\n## Featured Components\n\nHere are some examples of what you can build with Creative Tim UI components:\n\n### Cards\n\nVersatile card components for displaying content in various formats - from simple content cards to blog posts and e-commerce products.\n\n<ComponentPreview\n  name=\"card-plain\"\n  title=\"Plain Card\"\n  hideCode={true}\n  description=\"A simple card with basic content.\"\n/>\n\n<ComponentPreview\n  name=\"card-with-button\"\n  title=\"Card with Button\"\n  hideCode={true}\n  description=\"Card with header, description, and action button.\"\n/>\n\n<ComponentPreview\n  name=\"card-blog\"\n  title=\"Blog Card\"\n  hideCode={true}\n  description=\"Card optimized for blog posts with image and metadata.\"\n/>\n\n<ComponentPreview\n  name=\"card-ecommerce\"\n  title=\"E-commerce Card\"\n  hideCode={true}\n  description=\"Product card with ratings, price, and cart actions.\"\n/>\n\n[View Card Documentation](/docs/components/card)\n\n## Resources\n\nYou can explore all available blocks [here](/blocks), view the [full component library](/docs/components), or check out the [source code](https://github.com/creativetimofficial/ui) on GitHub.\n"
  },
  {
    "path": "apps/www/content/docs/(root)/meta.json",
    "content": "{\n  \"title\": \"Get Started\",\n  \"pages\": [\n    \"index\",\n    \"registry\",\n    \"components\",\n    \"how-it-works\",\n    \"debug-logs\"\n  ]\n}\n"
  },
  {
    "path": "apps/www/content/docs/(root)/registry.mdx",
    "content": "---\ntitle: Registry\ndescription: Learn about the Creative Tim UI component registry system.\n---\n\n## What is the Registry?\n\nThe Creative Tim UI registry is a centralized catalog system that enables CLI-based component installation based on shadcn/ui. Unlike traditional npm packages where components are locked in external dependencies, our registry delivers components as source code directly into your project.\n\n## How the Registry Works\n\nWhen you run the installation command, the CLI:\n\n1. **Fetches Component Metadata**: Retrieves the component definition from our registry endpoint\n2. **Downloads Dependencies**: Identifies and installs required npm packages\n3. **Copies Source Files**: Places component files directly into your codebase\n4. **Manages Imports**: Automatically configures path aliases and imports\n\n## Registry Structure\n\nEach component in the registry includes:\n\n- **Component Source Code**: The actual React component files\n- **Type Definitions**: Full TypeScript support with strict types\n- **Dependencies**: List of required npm packages (Radix UI, etc.)\n- **Files Metadata**: Information about where files should be placed\n- **Registry Dependencies**: Other registry components it depends on\n\n## Installation Endpoints\n\nComponents are available through JSON endpoints:\n\n```bash\n# Base UI Components\n/r/button.json\n/r/card.json\n/r/avatar.json\n\n# Custom Blocks\n/r/testimonials-09.json\n```\n\nThese endpoints return structured JSON that the CLI uses to install components.\n\n## Registry vs NPM\n\n| Feature | Registry (Source Code) | NPM Package |\n|---------|----------------------|-------------|\n| **Customization** | Full control, edit directly | Limited to props/config |\n| **Updates** | Manual, opt-in | Automatic via package manager |\n| **Bundle Size** | Only what you use | Entire package included |\n| **Version Control** | Part of your codebase | External dependency |\n| **Flexibility** | Modify, extend freely | Constrained by package API |\n\n## Registry Components\n\nThe Creative Tim UI registry currently includes:\n\n- **47 Base UI Components**: All shadcn/ui components (button, card, avatar, etc.)\n- **100+ Custom Blocks**: Pre-built sections like testimonials, forms, and more\n- **Full TypeScript Support**: Type-safe component definitions\n- **Dark Mode Ready**: Built-in theme support with CSS variables\n\n## Private Components\n\nThe registry supports private components with API key authentication for PRO features:\n\n- Access control via Bearer tokens or API keys\n- Gated installation for premium components\n- Environment variable support for CI/CD workflows\n\n\n\n## Best Practices\n\n1. **Install Only What You Need**: Each component is standalone, no bloat\n2. **Customize After Install**: Treat installed components as your own code\n3. **Version Control**: Commit installed components to your repository\n4. **Update Selectively**: Re-run install commands to update specific components\n"
  },
  {
    "path": "apps/www/content/docs/components/card.mdx",
    "content": "---\ntitle: Card\ndescription: Versatile card components for displaying content in a structured, visually appealing format.\nfeatured: true\ncomponent: true\n---\n\n<ComponentPreview\n  name=\"card-demo\"\n  description=\"A collection of card variations.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">CLI</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx @creative-tim/ui@latest add card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps>\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install lucide-react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource name=\"card\" title=\"components/ui/card.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  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n```\n\n## Examples\n\n### Plain Card\n\nA simple card with just content.\n\n<ComponentPreview\n  name=\"card-plain\"\n  description=\"A plain card with basic content.\"\n/>\n\n```tsx showLineNumbers {3-9}\n<Card>\n  <CardContent className=\"pt-6\">\n    <p>\n      This is a plain card with simple content. Perfect for displaying basic\n      information.\n    </p>\n  </CardContent>\n</Card>\n```\n\n### Card with Title, Description, and Button\n\nA card with header elements and a call-to-action button.\n\n<ComponentPreview\n  name=\"card-with-button\"\n  description=\"A card with title, description, and action button.\"\n/>\n\n```tsx showLineNumbers {3-16}\n<Card>\n  <CardHeader>\n    <CardTitle>Card Title</CardTitle>\n    <CardDescription>\n      This is a brief description of the card content.\n    </CardDescription>\n  </CardHeader>\n  <CardContent>\n    <p>More detailed information goes here in the card content area.</p>\n  </CardContent>\n  <CardFooter>\n    <Button>Learn More</Button>\n  </CardFooter>\n</Card>\n```\n\n### Blog Card\n\nA card designed for blog post previews with image, title, excerpt, and metadata.\n\n<ComponentPreview\n  name=\"card-blog\"\n  description=\"A blog post card with image and metadata.\"\n/>\n\n```tsx showLineNumbers {3-24}\n<Card className=\"overflow-hidden\">\n  <img\n    src=\"/blog-image.jpg\"\n    alt=\"Blog post\"\n    className=\"h-48 w-full object-cover\"\n  />\n  <CardHeader>\n    <div className=\"text-muted-foreground flex items-center gap-2 text-sm\">\n      <Calendar className=\"h-4 w-4\" />\n      <span>March 15, 2025</span>\n      <span>•</span>\n      <span>5 min read</span>\n    </div>\n    <CardTitle>Getting Started with Next.js</CardTitle>\n    <CardDescription>\n      Learn how to build modern web applications with Next.js, React, and\n      TypeScript.\n    </CardDescription>\n  </CardHeader>\n  <CardFooter>\n    <Button variant=\"ghost\">Read More</Button>\n  </CardFooter>\n</Card>\n```\n\n### E-commerce Product Card\n\nA card designed for product listings with image, pricing, and add to cart functionality.\n\n<ComponentPreview\n  name=\"card-ecommerce\"\n  description=\"An e-commerce product card with pricing and actions.\"\n/>\n\n```tsx showLineNumbers {3-39}\n<Card className=\"overflow-hidden\">\n  <div className=\"relative\">\n    <img\n      src=\"/product-image.jpg\"\n      alt=\"Product\"\n      className=\"h-64 w-full object-cover\"\n    />\n    <Badge className=\"absolute top-2 right-2\">New</Badge>\n  </div>\n  <CardHeader>\n    <CardTitle>Premium Wireless Headphones</CardTitle>\n    <CardDescription>\n      High-quality audio with active noise cancellation\n    </CardDescription>\n  </CardHeader>\n  <CardContent>\n    <div className=\"flex items-center justify-between\">\n      <div className=\"flex items-center gap-1\">\n        <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n        <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n        <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n        <Star className=\"h-4 w-4 fill-yellow-400 text-yellow-400\" />\n        <Star className=\"h-4 w-4\" />\n        <span className=\"text-muted-foreground text-sm\">(128)</span>\n      </div>\n      <div className=\"text-2xl font-bold\">$299</div>\n    </div>\n  </CardContent>\n  <CardFooter className=\"gap-2\">\n    <Button className=\"flex-1\">\n      <ShoppingCart className=\"mr-2 h-4 w-4\" />\n      Add to Cart\n    </Button>\n    <Button variant=\"outline\" size=\"icon\">\n      <Heart className=\"h-4 w-4\" />\n    </Button>\n  </CardFooter>\n</Card>\n```\n\n## API Reference\n\n### Card\n\nThe root card container component.\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Card content           |\n\n### CardHeader\n\nContainer for card header content (title, description).\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Header content         |\n\n### CardTitle\n\nThe card title component.\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Title text             |\n\n### CardDescription\n\nThe card description component.\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Description text       |\n\n### CardContent\n\nContainer for the main card content.\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Card body content      |\n\n### CardFooter\n\nContainer for card footer content (buttons, actions).\n\n#### Props\n\n| Prop      | Type        | Default     | Description            |\n| --------- | ----------- | ----------- | ---------------------- |\n| className | `string`    | `undefined` | Additional CSS classes |\n| children  | `ReactNode` | `undefined` | Footer content         |\n\n## Notes\n\n- Cards are fully responsive and adapt to their container\n- Use `overflow-hidden` class on Card to clip images at rounded corners\n- Combine with other components like Button, Badge, and icons for rich layouts\n- Based on shadcn/ui Card component with Material Tailwind design enhancements\n"
  },
  {
    "path": "apps/www/content/docs/components/index.mdx",
    "content": "---\ntitle: Components\ndescription: Explore all the components available in the library.\n---\n\n<ComponentsList />\n"
  },
  {
    "path": "apps/www/content/docs/components/software-purchase-card.mdx",
    "content": "---\ntitle: Software Purchase Card\ndescription: A card component for displaying and approving software purchase requests with details like start date, seats, pricing type, and price.\nfeatured: true\ncomponent: true\n---\n\n<ComponentPreview\n  name=\"software-purchase-card-demo\"\n  description=\"A software purchase approval card.\"\n/>\n\n## Installation\n\n<CodeTabs>\n\n<TabsList>\n  <TabsTrigger value=\"cli\">CLI</TabsTrigger>\n  <TabsTrigger value=\"manual\">Manual</TabsTrigger>\n</TabsList>\n<TabsContent value=\"cli\">\n\n```bash\nnpx shadcn@latest add software-purchase-card\n```\n\n</TabsContent>\n\n<TabsContent value=\"manual\">\n\n<Steps>\n\n<Step>Install the following dependencies:</Step>\n\n```bash\nnpm install lucide-react\n```\n\n<Step>Copy and paste the following code into your project.</Step>\n\n<ComponentSource\n  name=\"software-purchase-card\"\n  title=\"components/cards/software-purchase.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 { SoftwarePurchaseCard } from \"@/components/cards/software-purchase\"\n```\n\n### Basic Usage\n\n```tsx showLineNumbers\n<SoftwarePurchaseCard\n  softwareName=\"Enterprise Cloud Suite\"\n  startDate=\"2025-01-15\"\n  seats={50}\n  pricingType=\"per-seat\"\n  price=\"$2,500\"\n  onApprove={() => console.log(\"Approved\")}\n  onDiscard={() => console.log(\"Discarded\")}\n/>\n```\n\n### Flat Rate Pricing\n\n```tsx showLineNumbers\n<SoftwarePurchaseCard\n  softwareName=\"Design Tools Pro\"\n  startDate=\"2025-02-01\"\n  seats={25}\n  pricingType=\"flat-rate\"\n  price=\"$999\"\n  onApprove={handleApprove}\n  onDiscard={handleDiscard}\n/>\n```\n\n### Usage-Based Pricing\n\n```tsx showLineNumbers\n<SoftwarePurchaseCard\n  softwareName=\"API Gateway Service\"\n  startDate=\"2025-01-20\"\n  seats={10}\n  pricingType=\"usage-based\"\n  price=\"$0.05/request\"\n  onApprove={handleApprove}\n  onDiscard={handleDiscard}\n/>\n```\n\n## API Reference\n\n### SoftwarePurchaseCard\n\nThe main card component for displaying software purchase details.\n\n#### Props\n\n| Prop         | Type                                         | Default                    | Description                                   |\n| ------------ | -------------------------------------------- | -------------------------- | --------------------------------------------- |\n| softwareName | `string`                                     | `\"Enterprise Cloud Suite\"` | Name of the software                          |\n| startDate    | `string`                                     | `\"2025-01-15\"`             | Start date in ISO format (YYYY-MM-DD)         |\n| seats        | `number`                                     | `50`                       | Number of user seats/licenses                 |\n| pricingType  | `\"per-seat\" \\| \"flat-rate\" \\| \"usage-based\"` | `\"per-seat\"`               | Type of pricing model                         |\n| price        | `string`                                     | `\"$2,500\"`                 | Price display string (can include formatting) |\n| onApprove    | `() => void`                                 | `undefined`                | Callback function when approve button clicked |\n| onDiscard    | `() => void`                                 | `undefined`                | Callback function when discard button clicked |\n\n## Examples\n\n### With State Management\n\n```tsx showLineNumbers\nfunction PurchaseApproval() {\n  const [status, setStatus] = useState<\"pending\" | \"approved\" | \"discarded\">(\n    \"pending\"\n  )\n\n  const handleApprove = () => {\n    setStatus(\"approved\")\n    // API call to approve purchase\n    approvePurchase(purchaseId)\n  }\n\n  const handleDiscard = () => {\n    setStatus(\"discarded\")\n    // API call to discard purchase\n    discardPurchase(purchaseId)\n  }\n\n  return (\n    <SoftwarePurchaseCard\n      softwareName=\"Marketing Automation Suite\"\n      startDate=\"2025-03-01\"\n      seats={75}\n      pricingType=\"per-seat\"\n      price=\"$3,750\"\n      onApprove={handleApprove}\n      onDiscard={handleDiscard}\n    />\n  )\n}\n```\n\n### With Loading State\n\n```tsx showLineNumbers\nfunction PurchaseApprovalWithLoading() {\n  const [loading, setLoading] = useState(false)\n\n  const handleApprove = async () => {\n    setLoading(true)\n    try {\n      await approvePurchaseRequest()\n      toast.success(\"Purchase approved successfully\")\n    } catch (error) {\n      toast.error(\"Failed to approve purchase\")\n    } finally {\n      setLoading(false)\n    }\n  }\n\n  return (\n    <SoftwarePurchaseCard\n      softwareName=\"Analytics Platform\"\n      startDate=\"2025-02-15\"\n      seats={100}\n      pricingType=\"flat-rate\"\n      price=\"$5,000\"\n      onApprove={handleApprove}\n      onDiscard={() => {}}\n    />\n  )\n}\n```\n\n### Multiple Cards in a List\n\n```tsx showLineNumbers\nfunction PurchaseRequestList() {\n  const requests = [\n    {\n      id: 1,\n      softwareName: \"CRM Software\",\n      startDate: \"2025-01-15\",\n      seats: 50,\n      pricingType: \"per-seat\" as const,\n      price: \"$2,500\",\n    },\n    {\n      id: 2,\n      softwareName: \"Project Management Tool\",\n      startDate: \"2025-02-01\",\n      seats: 30,\n      pricingType: \"flat-rate\" as const,\n      price: \"$999\",\n    },\n  ]\n\n  return (\n    <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n      {requests.map((request) => (\n        <SoftwarePurchaseCard\n          key={request.id}\n          {...request}\n          onApprove={() => handleApprove(request.id)}\n          onDiscard={() => handleDiscard(request.id)}\n        />\n      ))}\n    </div>\n  )\n}\n```\n\n## Block Example\n\nFor a full-page implementation with detailed purchase information, check out the [software-purchase-01](/blocks/software-purchase-01) block.\n\n## Notes\n\n- The date is automatically formatted using `toLocaleDateString` with US locale\n- The pricing type badge displays in a secondary variant for visual hierarchy\n- Icons from `lucide-react` are used for visual clarity (Calendar, Users, CreditCard, DollarSign)\n- The component uses the shadcn/ui Card, Button, and Badge components\n- The card is fully responsive with a max width of `md` (28rem)\n"
  },
  {
    "path": "apps/www/content/docs/meta.json",
    "content": "{\n  \"root\": true,\n  \"pages\": [\n    \"(root)\",\n    \"components\"\n  ]\n}\n"
  },
  {
    "path": "apps/www/docs/private-registry.md",
    "content": "# Private Registry Authentication\n\nThe Creative Tim UI registry supports private components that require API key authentication. This allows you to secure premium or internal components while maintaining the same installation experience.\n\n## Private Components\n\nThe following components are currently private and require authentication:\n\n- `testimonials-03` - Testimonial with statistics and metrics\n- `testimonials-04` - Three column testimonials with star ratings\n\n## Authentication Methods\n\nThe private registry supports multiple authentication methods:\n\n### 1. Environment Variable (Recommended)\n\nAdd your API key to `.env.local`:\n\n```bash\nAPI_KEY=your_api_key_here\n```\n\nThen install private components normally:\n\n```bash\nnpx @creative-tim/ui@latest add testimonials-03\n```\n\n### 2. Authorization Header\n\nUse Bearer token authentication:\n\n```bash\ncurl -H \"Authorization: Bearer your_api_key\" \\\n  https://ui.creative-tim.com/r/testimonials-03.json\n```\n\n### 3. X-API-Key Header\n\nUse custom API key header:\n\n```bash\ncurl -H \"X-API-Key: your_api_key\" \\\n  https://ui.creative-tim.com/r/testimonials-03.json\n```\n\n### 4. Query Parameter\n\nPass the token as a query parameter:\n\n```bash\ncurl https://ui.creative-tim.com/r/testimonials-03.json?token=your_api_key\n```\n\n## CLI Configuration\n\nTo use private components with the shadcn CLI, configure your `components.json`:\n\n```json\n{\n  \"registries\": {\n    \"@creative-tim\": {\n      \"url\": \"https://ui.creative-tim.com/r/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n## Error Handling\n\n### 401 Unauthorized\n\nIf you see this error, ensure your API key is set correctly:\n\n```\nAuthentication required for private components. Set API_KEY in your .env.local file \nor provide it via Authorization header, X-API-Key header, or ?token= query parameter.\n```\n\n**Solutions:**\n- Set `API_KEY` in your `.env.local` file\n- Check that your API key is valid\n- Ensure you're not committing your API key to version control\n\n### 403 Forbidden\n\nThis means your API key is valid but doesn't have access to the requested component.\n\n### 404 Not Found\n\nThe component either doesn't exist or is not a private component.\n\n## Security Best Practices\n\n1. **Never commit API keys to version control**\n   - Always use environment variables\n   - Add `.env.local` to your `.gitignore`\n\n2. **Use HTTPS**\n   - Always use HTTPS URLs to protect your API key in transit\n\n3. **Rotate keys regularly**\n   - Change your API key periodically for better security\n\n4. **Use different keys for different environments**\n   - Development, staging, and production should use separate keys\n\n## Getting Your API Key\n\nContact us to get your API key for accessing private components:\n- Email: support@creative-tim.com\n- Website: https://ui.creative-tim.com/contact\n\n## Example Usage\n\n```bash\n# Set your API key\nexport API_KEY=your_api_key_here\n\n# Install a private component\nnpx @creative-tim/ui@latest add testimonials-03\n\n# Or use curl to download directly\ncurl -H \"Authorization: Bearer $API_KEY\" \\\n  https://ui.creative-tim.com/r/testimonials-03.json -o testimonials-03.json\n```\n\n## Technical Details\n\nPrivate components are served through an authenticated API route (`/api/r/[name]`) that validates your API key before returning the component definition. The registry middleware automatically redirects requests for private components to this authenticated endpoint.\n\nPublic components continue to be served statically from `/r/*.json` without authentication.\n"
  },
  {
    "path": "apps/www/eslint.config.mjs",
    "content": "import { dirname } from \"path\"\nimport { fileURLToPath } from \"url\"\nimport { FlatCompat } from \"@eslint/eslintrc\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\n\nconst compat = new FlatCompat({\n  baseDirectory: __dirname,\n})\n\nconst eslintConfig = [\n  ...compat.config({\n    extends: [\"next/core-web-vitals\", \"next/typescript\"],\n    rules: {\n      \"@next/next/no-duplicate-head\": \"off\",\n    },\n  }),\n]\n\nexport default eslintConfig\n"
  },
  {
    "path": "apps/www/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/www/hooks/use-copy-to-clipboard.ts",
    "content": "\"use client\"\n\nimport * as React from \"react\"\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 = (value: string) => {\n    if (typeof window === \"undefined\" || !navigator.clipboard.writeText) {\n      return\n    }\n\n    if (!value) return\n\n    navigator.clipboard.writeText(value).then(() => {\n      setIsCopied(true)\n\n      if (onCopy) {\n        onCopy()\n      }\n\n      if (timeout !== 0) {\n        setTimeout(() => {\n          setIsCopied(false)\n        }, timeout)\n      }\n    }, console.error)\n  }\n\n  return { isCopied, copyToClipboard }\n}\n"
  },
  {
    "path": "apps/www/hooks/use-is-mac.ts",
    "content": "import { useEffect, useState } from \"react\"\n\nexport function useIsMac() {\n  const [isMac, setIsMac] = useState(true)\n\n  useEffect(() => {\n    setIsMac(navigator.platform.toUpperCase().includes(\"MAC\"))\n  }, [])\n\n  return isMac\n}\n"
  },
  {
    "path": "apps/www/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 = !value ? [\"layout-fixed\", \"layout-full\"] : Object.values(value)\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/www/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/www/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/www/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  }, [])\n\n  return !!isMobile\n}\n"
  },
  {
    "path": "apps/www/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/www/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/www/lib/analytics.ts",
    "content": "import { track } from \"@vercel/analytics\"\n\nexport function trackComponentInstall(\n  componentName: string,\n  metadata?: Record<string, unknown>\n) {\n  track(\"component_install\", {\n    component: componentName,\n    source: \"cli\",\n    timestamp: new Date().toISOString(),\n    ...metadata,\n  })\n}\n\nexport function trackComponentView(\n  componentName: string,\n  metadata?: Record<string, unknown>\n) {\n  track(\"component_view\", {\n    component: componentName,\n    source: \"web\",\n    timestamp: new Date().toISOString(),\n    ...metadata,\n  })\n}\n\nexport function trackComponentCopy(\n  componentName: string,\n  metadata?: Record<string, unknown>\n) {\n  track(\"component_copy\", {\n    component: componentName,\n    source: \"web\",\n    timestamp: new Date().toISOString(),\n    ...metadata,\n  })\n}\n"
  },
  {
    "path": "apps/www/lib/auth.ts",
    "content": "/**\n * Dummy authentication functions for PRO feature access\n * TODO: Replace with real authentication implementation\n */\n\n/**\n * Check if user is logged in\n * @returns boolean - true if user is authenticated\n */\nexport function isUserLoggedIn(): boolean {\n  // TODO: Implement real authentication check\n  // This should check for valid session/token\n  return false\n}\n\n/**\n * Check if user has PRO access\n * @returns boolean - true if user has PRO subscription\n */\nexport function hasProAccess(): boolean {\n  // TODO: Implement real PRO subscription check\n  // This should verify user's subscription status\n  return false\n}\n\n/**\n * Check if a component requires PRO access\n * @param componentName - Name of the component to check\n * @returns boolean - true if component requires PRO\n */\nexport function isProComponent(componentName: string): boolean {\n  const PRO_COMPONENTS = [\"testimonials-03\", \"testimonials-04\"]\n  return PRO_COMPONENTS.includes(componentName)\n}\n\n/**\n * Check if user can access a specific component\n * @param componentName - Name of the component\n * @returns boolean - true if user has access\n */\nexport function canAccessComponent(componentName: string): boolean {\n  // If component is not PRO, everyone can access\n  if (!isProComponent(componentName)) {\n    return true\n  }\n\n  // For PRO components, check authentication and subscription\n  return isUserLoggedIn() && hasProAccess()\n}\n"
  },
  {
    "path": "apps/www/lib/blocks.ts",
    "content": "\"use server\"\n\nimport { registryItemSchema } from \"shadcn/schema\"\nimport { 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  const index = z.record(registryItemSchema).parse(Index)\n\n  return Object.values(index).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/www/lib/config.ts",
    "content": "export const siteConfig = {\n  name: \"Creative Tim UI\",\n  url: \"https://creative-tim.com/ui\",\n  ogImage: \"https://creative-tim.com/ui/og.jpg\",\n  description:\n    \"A collection of Open Source agent and audio components that you can customize, extend, and build on.\",\n  links: {\n    twitter: \"https://x.com/creativetim\",\n    github: \"https://github.com/creativetimofficial/ui\",\n  },\n  navItems: [\n    {\n      href: \"/docs\",\n      label: \"Docs\",\n    },\n    {\n      href: \"/blocks\",\n      label: \"Blocks\",\n    },\n  ],\n  utm: {\n    main: \"https://creative-tim.com/ui?utm_source=creativetim_ui&utm_medium=web&utm_campaign=creative_tim_ui\",\n    blocks:\n      \"https://creative-tim.com/ui/blocks?utm_source=creativetim_ui&utm_medium=web&utm_campaign=creative_tim_ui\",\n    agents:\n      \"https://creative-tim.com/ui/agents?utm_source=creativetim_ui&utm_medium=web&utm_campaign=creative_tim_ui\",\n    sales:\n      \"https://creative-tim.com/contact?utm_source=creativetim_ui&utm_medium=web&utm_campaign=creative_tim_ui\",\n  },\n}\n\nexport const META_THEME_COLORS = {\n  light: \"#ffffff\",\n  dark: \"#09090b\",\n}\n"
  },
  {
    "path": "apps/www/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  ]),\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/www/lib/fonts.ts",
    "content": "import {\n  Geist_Mono as FontMono,\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\n// Using Geist as replacement for Waldenburg\nconst fontGeist = FontSans({\n  subsets: [\"latin\"],\n  variable: \"--font-geist\",\n})\n\nconst fontGeistBold = FontSans({\n  subsets: [\"latin\"],\n  variable: \"--font-geist-bold\",\n  weight: [\"700\"],\n})\n\nexport const fontVariables = cn(\n  fontSans.variable,\n  fontMono.variable,\n  fontInter.variable,\n  fontGeist.variable,\n  fontGeistBold.variable\n)\n"
  },
  {
    "path": "apps/www/lib/highlight-code.ts",
    "content": "import { codeToHtml } from \"shiki\"\nimport type { ShikiTransformer } from \"shiki\"\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  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 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  return html\n}\n"
  },
  {
    "path": "apps/www/lib/registry.ts",
    "content": "import { promises as fs } from \"fs\"\nimport { tmpdir } from \"os\"\nimport path from \"path\"\nimport { registryItemFileSchema, registryItemSchema } from \"shadcn/schema\"\nimport { Project, ScriptKind } from \"ts-morph\"\nimport { z } from \"zod\"\n\nimport { Index } from \"@/registry/__index__\"\n\nexport function getRegistryComponent(name: string) {\n  return Index[name]?.component\n}\n\nexport async function getRegistryItem(name: string) {\n  const item = Index[name]\n\n  if (!item) {\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    return null\n  }\n\n  // Build path mappings from all files for import rewriting\n  const pathMappings = buildPathMappings(item.files)\n\n  let files: typeof result.data.files = []\n  for (const file of item.files) {\n    const content = await getFileContent(file, pathMappings)\n    const relativePath = path.relative(process.cwd(), file.path)\n\n    files.push({\n      ...file,\n      path: relativePath,\n      content,\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    return null\n  }\n\n  return parsed.data\n}\n\nfunction buildPathMappings(\n  files: Array<{ path?: string; target?: string }>\n): Map<string, string> {\n  const mappings = new Map<string, string>()\n\n  files.forEach((file) => {\n    if (file.path && file.target) {\n      // Extract the source path relative to registry/creative-tim/\n      const match = file.path.match(/registry\\/creative-tim\\/(.+)$/)\n      if (match) {\n        mappings.set(match[1], file.target)\n      }\n    }\n  })\n\n  return mappings\n}\n\nasync function getFileContent(\n  file: z.infer<typeof registryItemFileSchema>,\n  pathMappings: Map<string, string>\n) {\n  const raw = await fs.readFile(file.path, \"utf-8\")\n\n  const project = new Project({\n    compilerOptions: {},\n  })\n\n  const tempFile = await createTempSourceFile(file.path)\n  const sourceFile = project.createSourceFile(tempFile, raw, {\n    scriptKind: ScriptKind.TSX,\n  })\n\n  // Remove meta variables.\n  // removeVariable(sourceFile, \"iframeHeight\")\n  // removeVariable(sourceFile, \"containerClassName\")\n  // removeVariable(sourceFile, \"description\")\n\n  let code = sourceFile.getFullText()\n\n  // Some registry items uses default export.\n  // We want to use named export instead.\n  // TODO: do we really need this? - @shadcn.\n  if (file.type !== \"registry:page\") {\n    code = code.replaceAll(\"export default\", \"export\")\n  }\n\n  // Fix imports using path mappings.\n  code = fixImport(code, pathMappings)\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\nasync function createTempSourceFile(filename: string) {\n  const dir = await fs.mkdtemp(path.join(tmpdir(), \"shadcn-\"))\n  return path.join(dir, filename)\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, pathMappings: Map<string, string>) {\n  // Convert registry imports to their target paths using the provided mappings\n  // This ensures imports match the actual target locations\n\n  // Sort mappings by path length (longest first) to handle more specific paths first\n  const sortedMappings = Array.from(pathMappings.entries()).sort(\n    ([a], [b]) => b.length - a.length\n  )\n\n  // Handle block-specific imports using the exact path mappings\n  sortedMappings.forEach(([sourcePath, targetPath]) => {\n    if (sourcePath.startsWith(\"blocks/\")) {\n      // Remove the file extension from sourcePath to match import statements\n      const sourcePathNoExt = sourcePath.replace(/\\.(tsx?|jsx?)$/, \"\")\n\n      // Remove the file extension from targetPath\n      const targetPathNoExt = targetPath.replace(/\\.(tsx?|jsx?)$/, \"\")\n\n      // Create regex to match this specific import path\n      const escapedPath = sourcePathNoExt.replace(/\\//g, \"\\\\/\")\n      const importRegex = new RegExp(\n        `@\\\\/registry\\\\/creative-tim\\\\/${escapedPath}`,\n        \"g\"\n      )\n\n      content = content.replace(importRegex, `@/${targetPathNoExt}`)\n    }\n  })\n\n  // Fix UI component imports\n  content = content.replaceAll(\n    \"@/components/ui/\",\n    \"@/components/ui/\"\n  )\n\n  // Fix example imports\n  content = content.replaceAll(\n    \"@/registry/creative-tim/examples/\",\n    \"@/components/examples/\"\n  )\n\n  // Fix hook imports\n  content = content.replaceAll(\"@/registry/creative-tim/hooks/\", \"@/hooks/\")\n\n  // Fix lib imports\n  content = content.replaceAll(\"@/registry/creative-tim/lib/\", \"@/lib/\")\n\n  return content\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/www/lib/rehype.ts",
    "content": "import fs from \"fs\"\nimport path from \"path\"\nimport { u } from \"unist-builder\"\nimport { visit } from \"unist-util-visit\"\n\nimport { Index } from \"@/registry/__index__\"\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\nexport function rehypeComponent() {\n  return async (tree: UnistTree) => {\n    visit(tree, (node: UnistNode) => {\n      // src prop overrides both name and fileName.\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\n        if (!name && !srcPath) {\n          return null\n        }\n\n        try {\n          let src: string\n\n          if (srcPath) {\n            src = path.join(process.cwd(), srcPath)\n          } else {\n            const component = Index[name]\n            src = fileName\n              ? component.files.find((file: unknown) => {\n                  if (typeof file === \"string\") {\n                    return (\n                      file.endsWith(`${fileName}.tsx`) ||\n                      file.endsWith(`${fileName}.ts`)\n                    )\n                  }\n                  return false\n                }) || component.files[0]?.path\n              : component.files[0]?.path\n          }\n\n          // Read the source file.\n          const filePath = src\n          let source = fs.readFileSync(filePath, \"utf8\")\n\n          // Replace imports.\n          // TODO: Use @swc/core and a visitor to replace this.\n          // For now a simple regex should do.\n          source = source.replaceAll(\n            `@/registry/creative-tim/`,\n            \"@/components/\"\n          )\n          source = source.replaceAll(\"export default\", \"export\")\n\n          // Add code as children so that rehype can take over at build time.\n          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      if (node.name === \"ComponentPreview\") {\n        const name = getNodeAttributeByName(node, \"name\")?.value as string\n\n        if (!name) {\n          return null\n        }\n\n        try {\n          const component = Index[name]\n          const src = component.files[0]?.path\n\n          // Read the source file.\n          const filePath = src\n          let source = fs.readFileSync(filePath, \"utf8\")\n\n          // Replace imports.\n          // TODO: Use @swc/core and a visitor to replace this.\n          // For now a simple regex should do.\n          source = source.replaceAll(\n            `@/registry/creative-tim/`,\n            \"@/components/\"\n          )\n          source = source.replaceAll(\"export default\", \"export\")\n\n          // Add code as children so that rehype can take over at build time.\n          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"
  },
  {
    "path": "apps/www/lib/session.ts",
    "content": "let accessToken: string | null = null;\n\nexport function setAccessToken(token: string | null) {\n  accessToken = token;\n}\nexport function getAccessToken() {\n  return accessToken;\n}\nexport function clearAccessToken() {\n  accessToken = null;\n}\nexport function getAuthHeaders(): HeadersInit {\n  return accessToken ? { Authorization: `Bearer ${accessToken}` } : {};\n}"
  },
  {
    "path": "apps/www/lib/source.ts",
    "content": "import { docs } from \"@/.source\"\nimport { loader } from \"fumadocs-core/source\"\n\nexport const source: ReturnType<typeof loader> = loader({\n  baseUrl: \"/docs\",\n  source: docs.toFumadocsSource(),\n})\n"
  },
  {
    "path": "apps/www/lib/themes.ts",
    "content": "export const THEMES = [\n  {\n    name: \"Default\",\n    value: \"default\",\n  },\n  {\n    name: \"Neutral\",\n    value: \"neutral\",\n  },\n  {\n    name: \"Stone\",\n    value: \"stone\",\n  },\n  {\n    name: \"Zinc\",\n    value: \"zinc\",\n  },\n  {\n    name: \"Gray\",\n    value: \"gray\",\n  },\n  {\n    name: \"Slate\",\n    value: \"slate\",\n  },\n  {\n    name: \"Scaled\",\n    value: \"scaled\",\n  },\n]\nexport type Theme = (typeof THEMES)[number]\n"
  },
  {
    "path": "apps/www/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/www/mdx-components.tsx",
    "content": "import * as React from \"react\"\nimport Image from \"next/image\"\nimport Link from \"next/link\"\n\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 { getIconForLanguageExtension } from \"@/components/icons\"\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport {\n  Alert,\n  AlertDescription,\n  AlertTitle,\n} from \"@/components/ui/alert\"\nimport { AspectRatio } from \"@/components/ui/aspect-ratio\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n} from \"@/components/ui/tabs\"\n\nexport const mdxComponents = {\n  h1: ({ className, ...props }: React.ComponentProps<\"h1\">) => (\n    <h1\n      className={cn(\n        \"font-heading mt-2 scroll-m-28 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          \"font-heading mt-8 scroll-m-28 text-xl font-medium tracking-tight first:mt-0 lg:mt-8 [&+p]:!mt-4 *:[code]:text-xl\",\n          className\n        )}\n        {...props}\n      />\n    )\n  },\n  h3: ({ className, ...props }: React.ComponentProps<\"h3\">) => (\n    <h3\n      className={cn(\n        \"font-heading mt-8 scroll-m-28 text-lg font-medium tracking-tight *:[code]:text-xl\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  h4: ({ className, ...props }: React.ComponentProps<\"h4\">) => (\n    <h4\n      className={cn(\n        \"font-heading mt-8 scroll-m-28 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    // eslint-disable-next-line @next/next/no-img-element\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 w-full overflow-y-auto\">\n      <table\n        className={cn(\n          \"relative w-full overflow-hidden border-none text-sm\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  ),\n  tr: ({ className, ...props }: React.ComponentProps<\"tr\">) => (\n    <tr\n      className={cn(\"last:border-b-none m-0 border-b\", className)}\n      {...props}\n    />\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 [&[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 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          \"text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_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            \"bg-muted relative rounded-md 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        \"font-heading mt-8 scroll-m-32 text-xl font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  ),\n  Steps: ({ ...props }) => (\n    <div\n      className=\"[&>h3]:step steps mb-12 [counter-reset:step] *:[h3]:first:!mt-0\"\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 || \"\"}\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        \"text-muted-foreground data-[state=active]:text-foreground data-[state=active]:border-primary dark:data-[state=active]:border-primary hover:text-primary rounded-none border-0 border-b-2 border-transparent bg-transparent px-0 pb-3 text-base data-[state=active]:bg-transparent data-[state=active]:shadow-none 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,\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        \"bg-surface text-surface-foreground hover:bg-surface/80 flex w-full flex-col items-center rounded-xl p-6 transition-colors sm:p-10\",\n        className\n      )}\n      {...props}\n    />\n  ),\n}\n"
  },
  {
    "path": "apps/www/middleware.ts",
    "content": "import { NextResponse } from \"next/server\"\nimport type { NextRequest } from \"next/server\"\n//import { track } from \"@vercel/analytics/server\"\n\nconst PRIVATE_COMPONENTS = [\"testimonials-03\", \"testimonials-04\"]\n\nexport async function middleware(request: NextRequest) {\n  const { pathname } = request.nextUrl\n\n  if (pathname.startsWith(\"/r/\") && pathname.endsWith(\".json\")) {\n    const componentName = pathname.replace(\"/r/\", \"\").replace(\".json\", \"\")\n\n    const userAgent = request.headers.get(\"user-agent\") || \"unknown\"\n    const referer = request.headers.get(\"referer\") || \"direct\"\n\n    // await track(\"registry_component_request\", {\n    //   component: componentName,\n    //   path: pathname,\n    //   userAgent,\n    //   referer,\n    //   timestamp: new Date().toISOString(),\n    // })\n\n    if (PRIVATE_COMPONENTS.includes(componentName)) {\n      const url = request.nextUrl.clone()\n      url.pathname = `/api/r/${componentName}`\n\n      return NextResponse.rewrite(url)\n    }\n  }\n\n  return NextResponse.next()\n}\n\nexport const config = {\n  matcher: \"/r/:path*.json\",\n}\n"
  },
  {
    "path": "apps/www/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\n  // Serve the app under /ui — set a base path and ensure assets are served from the same prefix.\n  // You can override the asset prefix with NEXT_PUBLIC_ASSET_PREFIX if needed.\n  basePath: '/ui',\n  assetPrefix: process.env.NEXT_PUBLIC_ASSET_PREFIX || '/ui',\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: \"storage.googleapis.com\",\n      },\n      {\n        protocol: \"https\",\n        hostname: \"raw.githubusercontent.com\",\n      },\n    ],\n  },\n  redirects() {\n    return [\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: \"/docs/forms\",\n        destination: \"/docs/components/form\",\n        permanent: false,\n      },\n      {\n        source: \"/docs/forms/react-hook-form\",\n        destination: \"/docs/components/form\",\n        permanent: false,\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  },\n  async rewrites() {\n    return [\n      {\n        source: \"/docs/:path*.md\",\n        destination: \"/llm/:path*\",\n      },\n    ]\n  },\n}\n\nconst withMDX = createMDX({})\n\nexport default withMDX(nextConfig)\n"
  },
  {
    "path": "apps/www/package.json",
    "content": "{\n  \"name\": \"@creative-tim/ui\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"next dev -p 5001 -H 0.0.0.0\",\n    \"build\": \"next build\",\n    \"start\": \"next start -p 5001 -H 0.0.0.0\",\n    \"lint\": \"next lint\",\n    \"lint:fix\": \"next lint --fix\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"format:write\": \"prettier --write \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"format:check\": \"prettier --check \\\"**/*.{ts,tsx,mdx}\\\" --cache\",\n    \"registry:build\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/build-registry.mts && prettier --log-level silent --write \\\"registry/**/*.{ts,tsx,json,mdx}\\\" --cache\",\n    \"registry:capture\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/capture-registry.mts\",\n    \"validate:registries\": \"tsx --tsconfig ./tsconfig.scripts.json ./scripts/validate-registries.mts\",\n    \"postinstall\": \"fumadocs-mdx\"\n  },\n  \"dependencies\": {\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\": \"^8.2.0\",\n    \"@hookform/resolvers\": \"^3.10.0\",\n    \"@paddle/paddle-js\": \"^1.4.2\",\n    \"@radix-ui/react-accessible-icon\": \"^1.1.1\",\n    \"@radix-ui/react-accordion\": \"^1.2.2\",\n    \"@radix-ui/react-alert-dialog\": \"^1.1.5\",\n    \"@radix-ui/react-aspect-ratio\": \"^1.1.1\",\n    \"@radix-ui/react-avatar\": \"^1.1.2\",\n    \"@radix-ui/react-checkbox\": \"^1.1.3\",\n    \"@radix-ui/react-collapsible\": \"^1.1.2\",\n    \"@radix-ui/react-context-menu\": \"^2.2.5\",\n    \"@radix-ui/react-dialog\": \"^1.1.5\",\n    \"@radix-ui/react-dropdown-menu\": \"^2.1.5\",\n    \"@radix-ui/react-hover-card\": \"^1.1.5\",\n    \"@radix-ui/react-icons\": \"^1.3.2\",\n    \"@radix-ui/react-label\": \"^2.1.1\",\n    \"@radix-ui/react-menubar\": \"^1.1.5\",\n    \"@radix-ui/react-navigation-menu\": \"^1.2.4\",\n    \"@radix-ui/react-popover\": \"^1.1.5\",\n    \"@radix-ui/react-portal\": \"^1.1.3\",\n    \"@radix-ui/react-progress\": \"^1.1.1\",\n    \"@radix-ui/react-radio-group\": \"^1.2.2\",\n    \"@radix-ui/react-scroll-area\": \"^1.2.3\",\n    \"@radix-ui/react-select\": \"^2.1.5\",\n    \"@radix-ui/react-separator\": \"^1.1.1\",\n    \"@radix-ui/react-slider\": \"^1.3.5\",\n    \"@radix-ui/react-slot\": \"^1.2.3\",\n    \"@radix-ui/react-switch\": \"^1.2.5\",\n    \"@radix-ui/react-tabs\": \"^1.1.2\",\n    \"@radix-ui/react-toast\": \"^1.2.5\",\n    \"@radix-ui/react-toggle\": \"^1.1.1\",\n    \"@radix-ui/react-toggle-group\": \"^1.1.1\",\n    \"@radix-ui/react-tooltip\": \"^1.1.7\",\n    \"@react-three/drei\": \"^10.7.6\",\n    \"@react-three/fiber\": \"^9.3.0\",\n    \"@tabler/icons-react\": \"^3.31.0\",\n    \"@tailwindcss/postcss\": \"^4.1.11\",\n    \"@tanstack/react-table\": \"^8.9.1\",\n    \"@types/three\": \"^0.180.0\",\n    \"ai\": \"^5.0.59\",\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    \"embla-carousel-autoplay\": \"8.5.2\",\n    \"embla-carousel-react\": \"8.5.2\",\n    \"framer-motion\": \"^12.23.19\",\n    \"fumadocs-core\": \"15.3.1\",\n    \"fumadocs-docgen\": \"2.0.0\",\n    \"fumadocs-mdx\": \"11.6.3\",\n    \"fumadocs-ui\": \"15.3.1\",\n    \"input-otp\": \"^1.4.2\",\n    \"jotai\": \"^2.1.0\",\n    \"little-date\": \"^1.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"lucide-react\": \"0.474.0\",\n    \"maplibre-gl\": \"^5.15.0\",\n    \"motion\": \"^12.12.1\",\n    \"next\": \"15.3.6\",\n    \"next-themes\": \"0.4.6\",\n    \"postcss\": \"^8.5.1\",\n    \"react\": \"19.1.2\",\n    \"react-day-picker\": \"^9.7.0\",\n    \"react-dom\": \"19.1.2\",\n    \"react-hook-form\": \"^7.54.2\",\n    \"react-resizable-panels\": \"^2.1.7\",\n    \"recharts\": \"2.15.1\",\n    \"rehype-pretty-code\": \"^0.14.1\",\n    \"rimraf\": \"^6.0.1\",\n    \"shadcn\": \"3.3.1\",\n    \"shiki\": \"^3.13.0\",\n    \"sonner\": \"^2.0.0\",\n    \"streamdown\": \"^1.3.0\",\n    \"swiper\": \"^12.0.3\",\n    \"tailwind-merge\": \"^3.0.1\",\n    \"three\": \"^0.180.0\",\n    \"ts-morph\": \"18.0.0\",\n    \"use-stick-to-bottom\": \"^1.1.1\",\n    \"vaul\": \"1.1.2\",\n    \"zod\": \"^3.24.1\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"^3\",\n    \"@ianvs/prettier-plugin-sort-imports\": \"^4.4.1\",\n    \"@react-oauth/google\": \"0.12.2\",\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@tanstack/react-query\": \"5.90.5\",\n    \"@types/google.accounts\": \"^0.0.18\",\n    \"@types/lodash\": \"^4.17.7\",\n    \"@types/maplibre-gl\": \"^1.14.0\",\n    \"@types/mdx\": \"^2.0.13\",\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"19.1.2\",\n    \"@types/react-dom\": \"19.1.2\",\n    \"@typescript-eslint/parser\": \"^8.31.0\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"15.3.6\",\n    \"prettier\": \"^3.4.2\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.11\",\n    \"tailwindcss\": \"^4.1.11\",\n    \"tw-animate-css\": \"^1.2.4\",\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    \"plugins\": [\n      \"@ianvs/prettier-plugin-sort-imports\",\n      \"prettier-plugin-tailwindcss\"\n    ]\n  }\n}\n"
  },
  {
    "path": "apps/www/postcss.config.mjs",
    "content": "const config = {\n  plugins: {\n    \"@tailwindcss/postcss\": {},\n  },\n}\nexport default config\n"
  },
  {
    "path": "apps/www/public/r/accordion.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accordion\",\n  \"dependencies\": [\n    \"@radix-ui/react-accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/accordion.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AccordionPrimitive from \\\"@radix-ui/react-accordion\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\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          \\\"focus-visible:border-ring focus-visible:ring-ring/50 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:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <ChevronDownIcon className=\\\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 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=\\\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\\\"\\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/www/public/r/account-2fa-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-2fa-01\",\n  \"description\": \"Two-factor authentication setup\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-2fa-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  AlertCircle,\\n  CheckCircle2,\\n  KeyRound,\\n  MessageSquare,\\n  Shield,\\n  Smartphone,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst TwoFactorMethods = [\\n  {\\n    title: \\\"Security Keys\\\",\\n    description:\\n      \\\"Physical security keys provide the highest level of protection by requiring a hardware device for authentication.\\\",\\n    value: \\\"No security keys configured\\\",\\n    action: \\\"Add\\\",\\n    icon: KeyRound,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"Authenticator App\\\",\\n    description:\\n      \\\"Generate time-based one-time passwords (TOTP) using apps like Google Authenticator or Authy.\\\",\\n    value: \\\"Not configured\\\",\\n    action: \\\"Setup\\\",\\n    icon: Smartphone,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"SMS Number\\\",\\n    description:\\n      \\\"Receive verification codes via text message to your registered mobile number.\\\",\\n    value: \\\"+1 (555) 123-4567\\\",\\n    action: \\\"Edit\\\",\\n    icon: MessageSquare,\\n    isConfigured: true,\\n    recommended: false,\\n  },\\n]\\n\\nexport default function Account2FA01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4 border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Two-Factor Authentication\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Add an extra layer of security to your account\\n              </p>\\n            </div>\\n          </div>\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n          >\\n            <CheckCircle2 className=\\\"mr-1 h-3 w-3\\\" />\\n            Enabled\\n          </Badge>\\n        </div>\\n\\n        <div className=\\\"space-y-0\\\">\\n          {TwoFactorMethods.map((method, index) => {\\n            const Icon = method.icon\\n            return (\\n              <div\\n                key={method.title}\\n                className={`group flex flex-wrap items-center justify-between gap-6 py-6 ${\\n                  index !== TwoFactorMethods.length - 1\\n                    ? \\\"border-border border-b\\\"\\n                    : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-start gap-4\\\">\\n                  <div\\n                    className={`bg-muted flex h-12 w-12 shrink-0 items-center justify-center rounded-lg ${method.isConfigured ? \\\"bg-primary/10\\\" : \\\"\\\"}`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${method.isConfigured ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n                  <div className=\\\"flex-1 space-y-2\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <p className=\\\"font-semibold\\\">{method.title}</p>\\n                      {method.recommended && (\\n                        <span className=\\\"text-primary border-primary bg-primary/10 rounded-full border px-2 py-0.5 text-xs font-medium\\\">\\n                          Recommended\\n                        </span>\\n                      )}\\n                    </div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {method.description}\\n                    </p>\\n                    <p\\n                      className={`text-sm ${\\n                        method.isConfigured\\n                          ? \\\"font-semibold\\\"\\n                          : \\\"text-muted-foreground\\\"\\n                      }`}\\n                    >\\n                      {method.isConfigured && (\\n                        <CheckCircle2 className=\\\"mr-1 inline h-4 w-4 text-green-500\\\" />\\n                      )}\\n                      {method.value}\\n                    </p>\\n                  </div>\\n                </div>\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant={method.isConfigured ? \\\"outline\\\" : \\\"default\\\"}\\n                >\\n                  {method.action}\\n                </Button>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"mt-8 space-y-4\\\">\\n          <div className=\\\"bg-muted/50 flex items-start gap-3 rounded-lg border p-4\\\">\\n            <AlertCircle className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Recovery Codes</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Generate backup codes that can be used if you lose access to\\n                your 2FA methods. Store them securely in a safe place.\\n              </p>\\n              <Button variant=\\\"link\\\" className=\\\"mt-2 h-auto p-0 text-sm\\\">\\n                Generate Recovery Codes →\\n              </Button>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button variant=\\\"outline\\\">View Activity Log</Button>\\n            <Button>Save Settings</Button>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-2fa/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-avatar-upload-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-avatar-upload-01\",\n  \"description\": \"Profile avatar upload and management\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-avatar-upload-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  CheckCircle2,\\n  Pencil,\\n  Trash2,\\n  Upload,\\n  User,\\n  XCircle,\\n} from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nexport default function AccountAvatarUpload01() {\\n  const [status, setStatus] = React.useState(\\\"Online\\\")\\n  const [avatarPreview, setAvatarPreview] = React.useState<string | null>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onloadend = () => {\\n        setAvatarPreview(reader.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleRemoveAvatar = () => {\\n    setAvatarPreview(null)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <User className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Profile Picture\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your profile picture and personal information\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex flex-wrap items-center justify-between gap-6\\\">\\n          <div className=\\\"flex items-center gap-6\\\">\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"relative\\\">\\n                <Avatar className=\\\"border-border h-16 w-16 border-2\\\">\\n                  <AvatarImage\\n                    src={\\n                      avatarPreview ||\\n                      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                    }\\n                    alt=\\\"Profile Picture\\\"\\n                    className=\\\"object-cover\\\"\\n                  />\\n                  <AvatarFallback className=\\\"bg-muted-foreground/10 text-muted-foreground\\\">\\n                    <User className=\\\"h-8 w-8\\\" />\\n                  </AvatarFallback>\\n                </Avatar>\\n                <label\\n                  htmlFor=\\\"avatar-upload\\\"\\n                  className=\\\"absolute right-0 bottom-0 cursor-pointer\\\"\\n                >\\n                  <div className=\\\"bg-primary/10 text-primary hover:bg-primary/20 border-border rounded-full border p-1.5\\\">\\n                    <Pencil className=\\\"h-3.5 w-3.5\\\" />\\n                  </div>\\n                  <input\\n                    type=\\\"file\\\"\\n                    id=\\\"avatar-upload\\\"\\n                    accept=\\\"image/png,image/jpeg,image/svg+xml\\\"\\n                    className=\\\"hidden\\\"\\n                    onChange={handleFileUpload}\\n                  />\\n                </label>\\n              </div>\\n\\n              <div className=\\\"space-y-1\\\">\\n                <h3 className=\\\"font-semibold\\\">Select and Upload Image</h3>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  .svg, .png, .jpg (size 400x400px)\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Button>\\n                <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                Upload Avatar\\n              </Button>\\n              {avatarPreview && (\\n                <Button variant=\\\"destructive\\\" onClick={handleRemoveAvatar}>\\n                  <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n                  Remove\\n                </Button>\\n              )}\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Label className=\\\"mb-3 flex items-center gap-2\\\">\\n              <CheckCircle2 className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              Availability Status\\n            </Label>\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Switch\\n                id=\\\"status\\\"\\n                checked={status === \\\"Online\\\"}\\n                onCheckedChange={() =>\\n                  setStatus((cur) => (cur === \\\"Online\\\" ? \\\"Offline\\\" : \\\"Online\\\"))\\n                }\\n              />\\n              <Label\\n                htmlFor=\\\"status\\\"\\n                className=\\\"flex cursor-pointer items-center gap-2\\\"\\n              >\\n                {status === \\\"Online\\\" ? (\\n                  <CheckCircle2 className=\\\"h-4 w-4 text-green-500\\\" />\\n                ) : (\\n                  <XCircle className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                )}\\n                {status}\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Profile Picture Tips</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose a high-quality, professional image that clearly shows\\n                your face. Recommended image size is 400x400 pixels. Only .svg,\\n                .png, and .jpg formats are supported.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-avatar-upload/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-basic-info-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-basic-info-01\",\n  \"description\": \"Personal information management form\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"calendar\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-basic-info-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport {\\n  Briefcase,\\n  CalendarIcon,\\n  Globe,\\n  GraduationCap,\\n  Mail,\\n  MapPin,\\n  Phone,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function AccountBasicInfo01() {\\n  const [birthDate, setBirthDate] = React.useState<Date>()\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Personal Information\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Manage your personal details and profile information. This\\n            information will be visible to other users on the platform.\\n          </p>\\n        </div>\\n\\n        <form className=\\\"space-y-8\\\">\\n          {/* Basic Details Section */}\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Basic Details</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"firstName\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    First Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"firstName\\\"\\n                    placeholder=\\\"Emma\\\"\\n                    defaultValue=\\\"Emma\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"lastName\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Last Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"lastName\\\"\\n                    placeholder=\\\"Roberts\\\"\\n                    defaultValue=\\\"Roberts\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Professional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Professional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"gender\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Gender\\n                  </Label>\\n                  <Select defaultValue=\\\"female\\\">\\n                    <SelectTrigger id=\\\"gender\\\">\\n                      <SelectValue placeholder=\\\"Select Gender\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"male\\\">Male</SelectItem>\\n                      <SelectItem value=\\\"female\\\">Female</SelectItem>\\n                      <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      <SelectItem value=\\\"prefer-not-to-say\\\">\\n                        Prefer not to say\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label className=\\\"flex items-center gap-2\\\">\\n                    <CalendarIcon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Birth Date\\n                  </Label>\\n                  <Popover>\\n                    <PopoverTrigger asChild>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        className=\\\"w-full justify-start text-left font-normal\\\"\\n                      >\\n                        <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\n                        {birthDate ? format(birthDate, \\\"PPP\\\") : \\\"Select a date\\\"}\\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                        initialFocus\\n                      />\\n                    </PopoverContent>\\n                  </Popover>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"profession\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Briefcase className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Profession\\n                  </Label>\\n                  <Select defaultValue=\\\"ui-ux\\\">\\n                    <SelectTrigger id=\\\"profession\\\">\\n                      <SelectValue placeholder=\\\"Select Profession\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                      <SelectItem value=\\\"frontend\\\">\\n                        Frontend Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                      <SelectItem value=\\\"fullstack\\\">\\n                        Fullstack Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"product-manager\\\">\\n                        Product Manager\\n                      </SelectItem>\\n                      <SelectItem value=\\\"data-scientist\\\">\\n                        Data Scientist\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"education\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <GraduationCap className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Education\\n                  </Label>\\n                  <Select defaultValue=\\\"university\\\">\\n                    <SelectTrigger id=\\\"education\\\">\\n                      <SelectValue placeholder=\\\"Select Level\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"high-school\\\">High School</SelectItem>\\n                      <SelectItem value=\\\"college\\\">College</SelectItem>\\n                      <SelectItem value=\\\"university\\\">University</SelectItem>\\n                      <SelectItem value=\\\"masters\\\">\\n                        Master&apos;s Degree\\n                      </SelectItem>\\n                      <SelectItem value=\\\"phd\\\">Ph.D.</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Contact Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Contact Information</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Email Address\\n                  </Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"confirmEmail\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Confirm Email\\n                  </Label>\\n                  <Input\\n                    id=\\\"confirmEmail\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"phone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Phone className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Phone Number\\n                  </Label>\\n                  <Input\\n                    id=\\\"phone\\\"\\n                    placeholder=\\\"+1 (555) 123-4567\\\"\\n                    defaultValue=\\\"+1 (555) 123-4567\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"location\\\" className=\\\"flex items-center gap-2\\\">\\n                    <MapPin className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Location\\n                  </Label>\\n                  <Input\\n                    id=\\\"location\\\"\\n                    placeholder=\\\"City, Country\\\"\\n                    defaultValue=\\\"Florida, USA\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Additional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Additional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"language\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Preferred Language\\n                  </Label>\\n                  <Select defaultValue=\\\"english\\\">\\n                    <SelectTrigger id=\\\"language\\\">\\n                      <SelectValue placeholder=\\\"Select Language\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"english\\\">English</SelectItem>\\n                      <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                      <SelectItem value=\\\"french\\\">French</SelectItem>\\n                      <SelectItem value=\\\"german\\\">German</SelectItem>\\n                      <SelectItem value=\\\"chinese\\\">Chinese</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"timezone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Timezone\\n                  </Label>\\n                  <Select defaultValue=\\\"est\\\">\\n                    <SelectTrigger id=\\\"timezone\\\">\\n                      <SelectValue placeholder=\\\"Select Timezone\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"est\\\">Eastern Time (ET)</SelectItem>\\n                      <SelectItem value=\\\"cst\\\">Central Time (CT)</SelectItem>\\n                      <SelectItem value=\\\"mst\\\">Mountain Time (MT)</SelectItem>\\n                      <SelectItem value=\\\"pst\\\">Pacific Time (PT)</SelectItem>\\n                      <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Save Changes</Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-basic-info/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-change-password-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-change-password-01\",\n  \"description\": \"Change password form with validation\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-change-password-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckCircle2, Eye, EyeOff, Lock, Shield, XCircle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nfunction PasswordField({\\n  id,\\n  label,\\n  ...props\\n}: {\\n  id: string\\n  label: string\\n} & React.InputHTMLAttributes<HTMLInputElement>) {\\n  const [showPassword, setShowPassword] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"mb-6 space-y-2\\\">\\n      <Label htmlFor={id} className=\\\"flex items-center gap-2\\\">\\n        <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n        {label}\\n      </Label>\\n      <div className=\\\"relative\\\">\\n        <Input\\n          {...props}\\n          id={id}\\n          type={showPassword ? \\\"text\\\" : \\\"password\\\"}\\n          placeholder=\\\"••••••••\\\"\\n        />\\n        <Button\\n          type=\\\"button\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"sm\\\"\\n          className=\\\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\\\"\\n          onClick={() => setShowPassword(!showPassword)}\\n        >\\n          {showPassword ? (\\n            <EyeOff className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          ) : (\\n            <Eye className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          )}\\n          <span className=\\\"sr-only\\\">\\n            {showPassword ? \\\"Hide password\\\" : \\\"Show password\\\"}\\n          </span>\\n        </Button>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst PASSWORD_REQUIREMENTS = [\\n  {\\n    label: \\\"At least 8 characters long\\\",\\n    regex: /.{8,}/,\\n  },\\n  {\\n    label: \\\"One uppercase letter (A-Z)\\\",\\n    regex: /[A-Z]/,\\n  },\\n  {\\n    label: \\\"One lowercase letter (a-z)\\\",\\n    regex: /[a-z]/,\\n  },\\n  {\\n    label: \\\"One number (0-9)\\\",\\n    regex: /[0-9]/,\\n  },\\n  {\\n    label: \\\"One special character (!@#$%^&*)\\\",\\n    regex: /[!@#$%^&*()_+\\\\-=\\\\[\\\\]{};':\\\"\\\\\\\\|,.<>\\\\/?]/,\\n  },\\n]\\n\\nexport default function AccountChangePassword01() {\\n  const [newPassword, setNewPassword] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Change Password\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your password to keep your account secure\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2\\\">\\n          <div>\\n            <form onSubmit={(e) => e.preventDefault()}>\\n              <PasswordField id=\\\"current-password\\\" label=\\\"Current Password\\\" />\\n              <PasswordField\\n                id=\\\"new-password\\\"\\n                label=\\\"New Password\\\"\\n                onChange={(e) => setNewPassword(e.target.value)}\\n                value={newPassword}\\n              />\\n              <PasswordField\\n                id=\\\"confirm-password\\\"\\n                label=\\\"Confirm New Password\\\"\\n              />\\n              <div className=\\\"mt-8 flex gap-3\\\">\\n                <Button type=\\\"button\\\" variant=\\\"outline\\\" className=\\\"flex-1\\\">\\n                  Cancel\\n                </Button>\\n                <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n                  Update Password\\n                </Button>\\n              </div>\\n            </form>\\n          </div>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 flex items-center gap-2 font-semibold\\\">\\n                <Shield className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                Password Requirements\\n              </h3>\\n              <p className=\\\"text-muted-foreground mb-6 text-sm\\\">\\n                Your password must meet the following criteria for enhanced\\n                security:\\n              </p>\\n              <ul className=\\\"space-y-3\\\">\\n                {PASSWORD_REQUIREMENTS.map((req, index) => {\\n                  const meetsRequirement = req.regex.test(newPassword)\\n                  return (\\n                    <li key={index} className=\\\"flex items-start gap-3\\\">\\n                      {meetsRequirement ? (\\n                        <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 shrink-0 text-green-500\\\" />\\n                      ) : (\\n                        <XCircle className=\\\"text-muted-foreground mt-0.5 h-5 w-5 shrink-0\\\" />\\n                      )}\\n                      <span\\n                        className={`text-sm ${\\n                          meetsRequirement\\n                            ? \\\"text-foreground\\\"\\n                            : \\\"text-muted-foreground\\\"\\n                        }`}\\n                      >\\n                        {req.label}\\n                      </span>\\n                    </li>\\n                  )\\n                })}\\n              </ul>\\n            </div>\\n\\n            <div className=\\\"bg-muted/50 rounded-lg border p-4\\\">\\n              <h4 className=\\\"mb-2 text-sm font-medium\\\">\\n                Security Best Practices\\n              </h4>\\n              <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Change your password regularly (every 90 days)</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Never share your password with anyone</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Use a unique password for each account</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Consider using a password manager</span>\\n                </li>\\n              </ul>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-change-password/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-integrations-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-integrations-01\",\n  \"description\": \"Third-party integrations management\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-integrations-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Check,\\n  ChevronDown,\\n  Copy,\\n  ExternalLink,\\n  Github,\\n  MessageCircle,\\n  Shield,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst INTEGRATIONS = [\\n  {\\n    id: \\\"github\\\",\\n    name: \\\"GitHub\\\",\\n    icon: Github,\\n    category: \\\"Development\\\",\\n    description:\\n      \\\"Connect your GitHub account to sync repositories and track contributions.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n  {\\n    id: \\\"spotify\\\",\\n    name: \\\"Spotify\\\",\\n    icon: MessageCircle, // Replaced Spotify icon with MessageCircle\\n    category: \\\"Music\\\",\\n    description:\\n      \\\"Link your Spotify account to share playlists and sync listening activity.\\\",\\n    isConfigured: true,\\n    connectedEmail: \\\"emma@mail.com\\\",\\n    verificationCode: \\\"1172913\\\",\\n  },\\n  {\\n    id: \\\"discord\\\",\\n    name: \\\"Discord\\\",\\n    icon: MessageCircle,\\n    category: \\\"Communication\\\",\\n    description:\\n      \\\"Integrate your Discord account to manage server connections and notifications.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n]\\n\\nexport default function AccountIntegrations01() {\\n  const [activeIntegrations, setActiveIntegrations] = React.useState<\\n    Record<string, boolean>\\n  >(\\n    INTEGRATIONS.reduce(\\n      (acc, integration) => {\\n        acc[integration.id] = integration.isConfigured\\n        return acc\\n      },\\n      {} as Record<string, boolean>\\n    )\\n  )\\n  const [copiedCode, setCopiedCode] = React.useState<string | null>(null)\\n\\n  const toggleIntegration = (id: string) => {\\n    setActiveIntegrations((prev) => ({\\n      ...prev,\\n      [id]: !prev[id],\\n    }))\\n  }\\n\\n  const copyVerificationCode = (code: string) => {\\n    navigator.clipboard.writeText(code)\\n    setCopiedCode(code)\\n    setTimeout(() => setCopiedCode(null), 2000)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Third-Party Integrations\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and configure connections to external services and\\n                platforms\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <Accordion type=\\\"single\\\" collapsible className=\\\"space-y-4\\\">\\n          {INTEGRATIONS.map((integration) => {\\n            const Icon = integration.icon\\n            const isActive = activeIntegrations[integration.id]\\n\\n            return (\\n              <AccordionItem\\n                key={integration.id}\\n                value={integration.id}\\n                className=\\\"border-border rounded-lg border\\\"\\n              >\\n                <div className=\\\"flex items-center justify-between px-4 py-4\\\">\\n                  <div className=\\\"flex flex-1 items-center gap-4\\\">\\n                    <div className=\\\"bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n                      <Icon\\n                        className={`h-6 w-6 ${isActive ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                      />\\n                    </div>\\n                    <div className=\\\"flex-1 space-y-1 text-left\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <h3 className=\\\"font-semibold\\\">{integration.name}</h3>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          {integration.category}\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground line-clamp-1 text-sm\\\">\\n                        {integration.description}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  <div className=\\\"flex items-center gap-3\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Switch\\n                        id={`${integration.id}-toggle`}\\n                        checked={isActive}\\n                        onCheckedChange={() =>\\n                          toggleIntegration(integration.id)\\n                        }\\n                      />\\n                      <Label\\n                        htmlFor={`${integration.id}-toggle`}\\n                        className=\\\"cursor-pointer text-sm\\\"\\n                      >\\n                        {isActive ? \\\"Enabled\\\" : \\\"Enable\\\"}\\n                      </Label>\\n                    </div>\\n                    <AccordionTrigger className=\\\"hover:bg-muted/50 rounded px-3 py-2\\\">\\n                      <span className=\\\"text-sm font-medium\\\">View More</span>\\n                    </AccordionTrigger>\\n                  </div>\\n                </div>\\n                <AccordionContent className=\\\"px-4 pb-6\\\">\\n                  {!isActive ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        You haven&apos;t added your {integration.name} account\\n                        or you aren&apos;t authorized. Click &quot;Connect&quot;\\n                        to initiate the integration process.\\n                      </p>\\n                      <Button>\\n                        <ExternalLink className=\\\"mr-2 h-4 w-4\\\" />\\n                        Connect {integration.name}\\n                      </Button>\\n                    </div>\\n                  ) : integration.connectedEmail ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Verification Code</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Use this code to complete the integration\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <code className=\\\"bg-muted/50 rounded px-3 py-1 font-mono text-sm\\\">\\n                              {integration.verificationCode}\\n                            </code>\\n                            <Button\\n                              variant=\\\"outline\\\"\\n                              size=\\\"sm\\\"\\n                              onClick={() =>\\n                                copyVerificationCode(\\n                                  integration.verificationCode!\\n                                )\\n                              }\\n                            >\\n                              {copiedCode === integration.verificationCode ? (\\n                                <Check className=\\\"mr-2 h-4 w-4 text-green-500\\\" />\\n                              ) : (\\n                                <Copy className=\\\"mr-2 h-4 w-4\\\" />\\n                              )}\\n                              {copiedCode === integration.verificationCode\\n                                ? \\\"Copied\\\"\\n                                : \\\"Copy\\\"}\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Connected Account</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Manage your linked {integration.name} account\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <span className=\\\"text-sm font-medium\\\">\\n                              {integration.connectedEmail}\\n                            </span>\\n                            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                              Edit\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                    </div>\\n                  ) : null}\\n                </AccordionContent>\\n              </AccordionItem>\\n            )\\n          })}\\n        </Accordion>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Shield className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Integration Security</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Ensure you trust the applications you connect. Review and manage\\n                third-party access to your account regularly. You can revoke\\n                access at any time by disabling the integration.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-integrations/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-notifications-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-notifications-01\",\n  \"description\": \"Notification preferences management\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-notifications-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bell, Mail, MessageSquare, Smartphone } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst TABLE_HEAD = [\\n  { label: \\\"Activity\\\", icon: Bell },\\n  { label: \\\"Email\\\", icon: Mail },\\n  { label: \\\"Push\\\", icon: Smartphone },\\n  { label: \\\"SMS\\\", icon: MessageSquare },\\n]\\n\\nconst NOTIFICATIONS = [\\n  {\\n    title: \\\"Mentions\\\",\\n    description: \\\"Notify when another user mentions you in a comment\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Comments\\\",\\n    description: \\\"Notify when another user comments on your item\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"New Follower\\\",\\n    description: \\\"Notify when someone starts following you\\\",\\n    category: \\\"Social\\\",\\n    email: false,\\n    push: true,\\n    sms: false,\\n  },\\n  {\\n    title: \\\"Login Activity\\\",\\n    description: \\\"Alert when logging in from a new device or location\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Password Changed\\\",\\n    description: \\\"Immediate notification when password is updated\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Product Updates\\\",\\n    description: \\\"Get notified about new features and improvements\\\",\\n    category: \\\"Product\\\",\\n    email: true,\\n    push: false,\\n    sms: false,\\n  },\\n]\\n\\nexport default function AccountNotifications01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Notification Preferences\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Customize how you receive notifications. These settings apply to all\\n            activities you&apos;re monitoring across the platform.\\n          </p>\\n        </div>\\n\\n        <div className=\\\"overflow-x-auto\\\">\\n          <table className=\\\"w-full min-w-[40rem] table-auto text-left\\\">\\n            <thead>\\n              <tr className=\\\"border-b\\\">\\n                {TABLE_HEAD.map((head, i) => {\\n                  const Icon = head.icon\\n                  return (\\n                    <th\\n                      key={head.label}\\n                      className={`${\\n                        i === 0 ? \\\"py-4 pr-4\\\" : \\\"p-4 text-center\\\"\\n                      } font-semibold`}\\n                    >\\n                      <div\\n                        className={`flex items-center gap-2 ${\\n                          i !== 0 ? \\\"justify-center\\\" : \\\"\\\"\\n                        }`}\\n                      >\\n                        <Icon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                        <span className=\\\"text-sm\\\">{head.label}</span>\\n                      </div>\\n                    </th>\\n                  )\\n                })}\\n              </tr>\\n            </thead>\\n            <tbody>\\n              {NOTIFICATIONS.map((notification, index) => {\\n                const isLast = index === NOTIFICATIONS.length - 1\\n                const classes = isLast ? \\\"py-6\\\" : \\\"border-border border-b py-6\\\"\\n\\n                return (\\n                  <tr\\n                    key={notification.title}\\n                    className=\\\"group hover:bg-muted/50\\\"\\n                  >\\n                    <td className={`${classes} pr-4`}>\\n                      <div className=\\\"space-y-1\\\">\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{notification.title}</p>\\n                          <span className=\\\"text-muted-foreground rounded-full border px-2 py-0.5 text-xs\\\">\\n                            {notification.category}\\n                          </span>\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {notification.description}\\n                        </p>\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.email}\\n                          id={`email-${index}`}\\n                          aria-label={`Email notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.push}\\n                          id={`push-${index}`}\\n                          aria-label={`Push notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.sms}\\n                          id={`sms-${index}`}\\n                          aria-label={`SMS notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                  </tr>\\n                )\\n              })}\\n            </tbody>\\n          </table>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Bell className=\\\"text-muted-foreground mt-0.5 h-5 w-5\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">\\n                About Notification Delivery\\n              </h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Email notifications are sent instantly. Push notifications\\n                require the mobile app. SMS notifications may incur carrier\\n                charges. You can change these settings at any time.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-notifications/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/account-sessions-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"account-sessions-01\",\n  \"description\": \"Active sessions and devices management\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/account-sessions-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Clock,\\n  Computer,\\n  Globe,\\n  ShieldCheck,\\n  Smartphone,\\n  X,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst ACTIVE_SESSIONS = [\\n  {\\n    id: 1,\\n    type: \\\"Laptop\\\",\\n    icon: Computer,\\n    location: \\\"New York, USA\\\",\\n    coordinates: \\\"40.7128° N, 74.0060° W\\\",\\n    isCurrent: true,\\n    lastActive: \\\"2 hours ago\\\",\\n    browser: \\\"Chrome 114.0\\\",\\n    os: \\\"macOS 13.4\\\",\\n  },\\n  {\\n    id: 2,\\n    type: \\\"Smartphone\\\",\\n    icon: Smartphone,\\n    location: \\\"Florida, USA\\\",\\n    coordinates: \\\"27.9944° N, 81.7603° W\\\",\\n    isCurrent: false,\\n    lastActive: \\\"Yesterday at 3:45 PM\\\",\\n    browser: \\\"Safari 16.5\\\",\\n    os: \\\"iOS 16.5\\\",\\n  },\\n  {\\n    id: 3,\\n    type: \\\"Desktop\\\",\\n    icon: Computer,\\n    location: \\\"Tokyo, Japan\\\",\\n    coordinates: \\\"35.6895° N, 139.6917° E\\\",\\n    isCurrent: false,\\n    lastActive: \\\"3 days ago\\\",\\n    browser: \\\"Firefox 112.0\\\",\\n    os: \\\"Windows 11\\\",\\n  },\\n]\\n\\nexport default function AccountSessions01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <ShieldCheck className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Active Sessions\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and monitor devices that have access to your account\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"space-y-6\\\">\\n          {ACTIVE_SESSIONS.map((session, index) => {\\n            const Icon = session.icon\\n            const isLast = index === ACTIVE_SESSIONS.length - 1\\n\\n            return (\\n              <div\\n                key={session.id}\\n                className={`flex items-center justify-between gap-6 py-4 ${\\n                  !isLast ? \\\"border-border border-b\\\" : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-center gap-4\\\">\\n                  <div\\n                    className={`bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${session.isCurrent ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n\\n                  <div className=\\\"space-y-1\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <h4 className=\\\"font-semibold\\\">{session.type} Session</h4>\\n                      {session.isCurrent && (\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n                        >\\n                          Current Session\\n                        </Badge>\\n                      )}\\n                    </div>\\n\\n                    <div className=\\\"text-muted-foreground space-y-1 text-sm\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Globe className=\\\"h-4 w-4\\\" />\\n                        <span>{session.location}</span>\\n                      </div>\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Clock className=\\\"h-4 w-4\\\" />\\n                        <span>Last active: {session.lastActive}</span>\\n                      </div>\\n                      <div>\\n                        {session.browser} on {session.os}\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  {!session.isCurrent && (\\n                    <Button variant=\\\"destructive\\\" size=\\\"sm\\\">\\n                      <X className=\\\"mr-2 h-4 w-4\\\" />\\n                      Remove\\n                    </Button>\\n                  )}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <ShieldCheck className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Security Tip</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                If you notice any suspicious activity, immediately remove the\\n                session and change your account password. Enable two-factor\\n                authentication for additional security.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-sessions/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"account\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/ai-chat-streaming-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ai-chat-streaming-01\",\n  \"description\": \"AI chat with streaming responses and thinking process\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"scroll-area\",\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/ai-chat-streaming-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Brain, Loader2, Send } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { ScrollArea } from \\\"@/components/ui/scroll-area\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Gemini\\\" },\\n  { value: \\\"cohere\\\", label: \\\"Cohere\\\" },\\n  { value: \\\"mistral\\\", label: \\\"Mistral AI\\\" },\\n]\\n\\ninterface Message {\\n  id: string\\n  role: \\\"user\\\" | \\\"assistant\\\"\\n  content: string\\n  thinking?: string\\n  isStreaming?: boolean\\n}\\n\\nexport default function AIChatStreamingBlock() {\\n  const [messages, setMessages] = React.useState<Message[]>([\\n    {\\n      id: \\\"1\\\",\\n      role: \\\"assistant\\\",\\n      content:\\n        \\\"Hello! I'm your AI assistant with streaming and thinking capabilities. How can I help you today?\\\",\\n    },\\n  ])\\n  const [input, setInput] = React.useState(\\\"\\\")\\n  const [isLoading, setIsLoading] = React.useState(false)\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [showThinking, setShowThinking] = React.useState(false)\\n  const scrollAreaRef = React.useRef<HTMLDivElement>(null)\\n\\n  const simulateStreaming = async (text: string) => {\\n    const words = text.split(\\\" \\\")\\n    let currentText = \\\"\\\"\\n\\n    const messageId = Date.now().toString()\\n    setMessages((prev) => [\\n      ...prev,\\n      {\\n        id: messageId,\\n        role: \\\"assistant\\\",\\n        content: \\\"\\\",\\n        thinking: showThinking\\n          ? \\\"Analyzing your question and formulating a comprehensive response...\\\"\\n          : undefined,\\n        isStreaming: true,\\n      },\\n    ])\\n\\n    for (let i = 0; i < words.length; i++) {\\n      currentText += (i > 0 ? \\\" \\\" : \\\"\\\") + words[i]\\n      await new Promise((resolve) => setTimeout(resolve, 50))\\n\\n      setMessages((prev) =>\\n        prev.map((msg) =>\\n          msg.id === messageId\\n            ? {\\n                ...msg,\\n                content: currentText,\\n                isStreaming: i < words.length - 1,\\n              }\\n            : msg\\n        )\\n      )\\n    }\\n  }\\n\\n  const handleSend = async () => {\\n    if (!input.trim() || isLoading) return\\n\\n    const userMessage: Message = {\\n      id: Date.now().toString(),\\n      role: \\\"user\\\",\\n      content: input.trim(),\\n    }\\n\\n    setMessages((prev) => [...prev, userMessage])\\n    setInput(\\\"\\\")\\n    setIsLoading(true)\\n\\n    // Simulate AI response\\n    const responses = [\\n      \\\"That's an interesting question. Based on the AI provider you've selected, I can process this with advanced natural language understanding. Let me break this down for you with a detailed analysis.\\\",\\n      \\\"I understand what you're asking. Using the configured API, I can provide you with accurate information. The key aspects to consider are context, relevance, and accuracy in the response.\\\",\\n      \\\"Great question! With streaming enabled, you can see my response in real-time as I process your query. This creates a more interactive and engaging experience for users.\\\",\\n    ]\\n\\n    const randomResponse =\\n      responses[Math.floor(Math.random() * responses.length)]\\n    await simulateStreaming(randomResponse)\\n    setIsLoading(false)\\n  }\\n\\n  React.useEffect(() => {\\n    if (scrollAreaRef.current) {\\n      scrollAreaRef.current.scrollTop = scrollAreaRef.current.scrollHeight\\n    }\\n  }, [messages])\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-4xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Brain className=\\\"h-6 w-6\\\" />\\n            AI Chat with Streaming and Thinking\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n            <input\\n              type=\\\"checkbox\\\"\\n              id=\\\"showThinking\\\"\\n              checked={showThinking}\\n              onChange={(e) => setShowThinking(e.target.checked)}\\n              className=\\\"h-4 w-4 rounded border-gray-300\\\"\\n            />\\n            <Label htmlFor=\\\"showThinking\\\" className=\\\"cursor-pointer text-sm\\\">\\n              Show AI thinking process\\n            </Label>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"space-y-4\\\">\\n          <ScrollArea\\n            className=\\\"h-[400px] rounded-md border p-4\\\"\\n            ref={scrollAreaRef}\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              {messages.map((message) => (\\n                <div\\n                  key={message.id}\\n                  className={`flex gap-3 ${\\n                    message.role === \\\"user\\\" ? \\\"justify-end\\\" : \\\"justify-start\\\"\\n                  }`}\\n                >\\n                  {message.role === \\\"assistant\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                  <div\\n                    className={`max-w-[80%] space-y-2 ${\\n                      message.role === \\\"user\\\" ? \\\"order-first\\\" : \\\"\\\"\\n                    }`}\\n                  >\\n                    {message.thinking && (\\n                      <div className=\\\"bg-muted/50 mb-2 rounded-lg border border-dashed p-3\\\">\\n                        <p className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n                          <Brain className=\\\"h-4 w-4\\\" />\\n                          <span className=\\\"italic\\\">{message.thinking}</span>\\n                        </p>\\n                      </div>\\n                    )}\\n                    <div\\n                      className={`rounded-lg p-3 ${\\n                        message.role === \\\"user\\\"\\n                          ? \\\"bg-primary text-primary-foreground\\\"\\n                          : \\\"bg-muted\\\"\\n                      }`}\\n                    >\\n                      <p className=\\\"text-sm\\\">\\n                        {message.content}\\n                        {message.isStreaming && (\\n                          <span className=\\\"ml-1 inline-block h-4 w-1 animate-pulse bg-current\\\" />\\n                        )}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  {message.role === \\\"user\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback>U</AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                </div>\\n              ))}\\n              {isLoading &&\\n                messages[messages.length - 1]?.role !== \\\"assistant\\\" && (\\n                  <div className=\\\"flex gap-3\\\">\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"bg-muted flex items-center gap-2 rounded-lg p-3\\\">\\n                      <Loader2 className=\\\"h-4 w-4 animate-spin\\\" />\\n                      <span className=\\\"text-sm\\\">Thinking...</span>\\n                    </div>\\n                  </div>\\n                )}\\n            </div>\\n          </ScrollArea>\\n          <form\\n            onSubmit={(e) => {\\n              e.preventDefault()\\n              handleSend()\\n            }}\\n            className=\\\"flex gap-2\\\"\\n          >\\n            <Input\\n              placeholder=\\\"Type your message...\\\"\\n              value={input}\\n              onChange={(e) => setInput(e.target.value)}\\n              disabled={isLoading || !apiKey}\\n            />\\n            <Button\\n              type=\\\"submit\\\"\\n              disabled={isLoading || !apiKey || !input.trim()}\\n            >\\n              <Send className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </form>\\n          {!apiKey && (\\n            <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n              Please enter your API key to start chatting\\n            </p>\\n          )}\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-chat-streaming/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\"\n  },\n  \"categories\": [\n    \"ai-agents\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/ai-image-generator-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ai-image-generator-01\",\n  \"description\": \"AI image generator with upload and editor capabilities\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"slider\",\n    \"tabs\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/ai-image-generator-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Download,\\n  ImageIcon,\\n  Loader2,\\n  Move,\\n  RotateCw,\\n  Upload,\\n  Wand2,\\n  ZoomIn,\\n  ZoomOut,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Slider } from \\\"@/components/ui/slider\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI DALL-E\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI\\\" },\\n  { value: \\\"midjourney\\\", label: \\\"Midjourney\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Imagen\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n]\\n\\nconst IMAGE_SIZES = [\\n  { value: \\\"1024x1024\\\", label: \\\"Square (1024x1024)\\\" },\\n  { value: \\\"1024x1792\\\", label: \\\"Portrait (1024x1792)\\\" },\\n  { value: \\\"1792x1024\\\", label: \\\"Landscape (1792x1024)\\\" },\\n]\\n\\nexport default function AIImageGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [imageSize, setImageSize] = React.useState(\\\"1024x1024\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [uploadedImage, setUploadedImage] = React.useState<string | null>(null)\\n  const [generatedImage, setGeneratedImage] = React.useState<string | null>(\\n    null\\n  )\\n  const [brightness, setBrightness] = React.useState([100])\\n  const [contrast, setContrast] = React.useState([100])\\n  const [saturation, setSaturation] = React.useState([100])\\n  const fileInputRef = React.useRef<HTMLInputElement>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onload = (e) => {\\n        setUploadedImage(e.target?.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n\\n    // Simulate image generation\\n    await new Promise((resolve) => setTimeout(resolve, 3000))\\n\\n    // Use a placeholder image service\\n    const seed = Math.floor(Math.random() * 1000)\\n    const [width, height] = imageSize.split(\\\"x\\\")\\n    setGeneratedImage(`https://picsum.photos/seed/${seed}/${width}/${height}`)\\n\\n    setIsGenerating(false)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!generatedImage) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = generatedImage\\n    link.download = \\\"ai-generated-image.png\\\"\\n    link.click()\\n  }\\n\\n  const resetEditor = () => {\\n    setBrightness([100])\\n    setContrast([100])\\n    setSaturation([100])\\n  }\\n\\n  const imageStyle = {\\n    filter: `brightness(${brightness[0]}%) contrast(${contrast[0]}%) saturate(${saturation[0]}%)`,\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-6xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <ImageIcon className=\\\"h-6 w-6\\\" />\\n            AI Image Generator with Editor\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-3\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"size\\\">Image Size</Label>\\n              <Select value={imageSize} onValueChange={setImageSize}>\\n                <SelectTrigger id=\\\"size\\\">\\n                  <SelectValue placeholder=\\\"Select size\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {IMAGE_SIZES.map((size) => (\\n                    <SelectItem key={size.value} value={size.value}>\\n                      {size.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <Tabs defaultValue=\\\"generate\\\" className=\\\"w-full\\\">\\n            <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n              <TabsTrigger value=\\\"generate\\\">Generate</TabsTrigger>\\n              <TabsTrigger value=\\\"edit\\\">Edit & Upload</TabsTrigger>\\n            </TabsList>\\n\\n            <TabsContent value=\\\"generate\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Image Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the image you want to generate... (e.g., 'A serene landscape with mountains at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-4 w-4 animate-spin\\\" />\\n                    Generating Image...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Wand2 className=\\\"mr-2 h-4 w-4\\\" />\\n                    Generate Image\\n                  </>\\n                )}\\n              </Button>\\n\\n              {generatedImage && (\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                    <img\\n                      src={generatedImage}\\n                      alt=\\\"Generated\\\"\\n                      className=\\\"h-full w-full object-contain\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                      <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                      Download\\n                    </Button>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={handleGenerate}\\n                      disabled={isGenerating}\\n                    >\\n                      <RotateCw className=\\\"mr-2 h-4 w-4\\\" />\\n                      Regenerate\\n                    </Button>\\n                  </div>\\n                </div>\\n              )}\\n\\n              {!apiKey && (\\n                <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                  Please enter your API key to start generating images\\n                </p>\\n              )}\\n            </TabsContent>\\n\\n            <TabsContent value=\\\"edit\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label>Upload Image</Label>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Input\\n                      ref={fileInputRef}\\n                      type=\\\"file\\\"\\n                      accept=\\\"image/*\\\"\\n                      onChange={handleFileUpload}\\n                      className=\\\"flex-1\\\"\\n                    />\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={() => fileInputRef.current?.click()}\\n                    >\\n                      <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                      Browse\\n                    </Button>\\n                  </div>\\n                </div>\\n\\n                {(uploadedImage || generatedImage) && (\\n                  <div className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                      <img\\n                        src={uploadedImage || generatedImage || \\\"\\\"}\\n                        alt=\\\"Editing\\\"\\n                        className=\\\"h-full w-full object-contain\\\"\\n                        style={imageStyle}\\n                      />\\n                    </div>\\n\\n                    <Card>\\n                      <CardHeader>\\n                        <CardTitle className=\\\"text-sm\\\">Image Editor</CardTitle>\\n                      </CardHeader>\\n                      <CardContent className=\\\"space-y-6\\\">\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Brightness</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {brightness[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={brightness}\\n                            onValueChange={setBrightness}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Contrast</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {contrast[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={contrast}\\n                            onValueChange={setContrast}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Saturation</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {saturation[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={saturation}\\n                            onValueChange={setSaturation}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"flex gap-2\\\">\\n                          <Button\\n                            variant=\\\"outline\\\"\\n                            onClick={resetEditor}\\n                            className=\\\"flex-1\\\"\\n                          >\\n                            Reset\\n                          </Button>\\n                          <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                            <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                            Download\\n                          </Button>\\n                        </div>\\n                      </CardContent>\\n                    </Card>\\n                  </div>\\n                )}\\n\\n                {!uploadedImage && !generatedImage && (\\n                  <div className=\\\"border-muted-foreground/25 bg-muted/50 flex h-64 flex-col items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                    <ImageIcon className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Upload an image or generate one to start editing\\n                    </p>\\n                  </div>\\n                )}\\n              </div>\\n            </TabsContent>\\n          </Tabs>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-image-generator/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\"\n  },\n  \"categories\": [\n    \"ai-agents\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/ai-video-generator-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ai-video-generator-01\",\n  \"description\": \"AI video generation agent with preview\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"textarea\",\n    \"progress\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/ai-video-generator-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Clock,\\n  Download,\\n  FileVideo,\\n  Film,\\n  Loader2,\\n  Pause,\\n  Play,\\n  Sparkles,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Progress } from \\\"@/components/ui/progress\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"runway\\\", label: \\\"Runway Gen-3\\\" },\\n  { value: \\\"pika\\\", label: \\\"Pika Labs\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI Video\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Veo\\\" },\\n  { value: \\\"openai\\\", label: \\\"OpenAI Sora\\\" },\\n]\\n\\nconst VIDEO_DURATIONS = [\\n  { value: \\\"3\\\", label: \\\"3 seconds\\\" },\\n  { value: \\\"5\\\", label: \\\"5 seconds\\\" },\\n  { value: \\\"10\\\", label: \\\"10 seconds\\\" },\\n  { value: \\\"15\\\", label: \\\"15 seconds\\\" },\\n]\\n\\nconst VIDEO_STYLES = [\\n  { value: \\\"realistic\\\", label: \\\"Realistic\\\" },\\n  { value: \\\"cinematic\\\", label: \\\"Cinematic\\\" },\\n  { value: \\\"animated\\\", label: \\\"Animated\\\" },\\n  { value: \\\"artistic\\\", label: \\\"Artistic\\\" },\\n  { value: \\\"abstract\\\", label: \\\"Abstract\\\" },\\n]\\n\\ninterface GeneratedVideo {\\n  id: string\\n  prompt: string\\n  url: string\\n  thumbnail: string\\n  duration: string\\n  style: string\\n  timestamp: Date\\n}\\n\\nexport default function AIVideoGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"runway\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [duration, setDuration] = React.useState(\\\"5\\\")\\n  const [style, setStyle] = React.useState(\\\"realistic\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [progress, setProgress] = React.useState(0)\\n  const [generatedVideos, setGeneratedVideos] = React.useState<\\n    GeneratedVideo[]\\n  >([])\\n  const [selectedVideo, setSelectedVideo] =\\n    React.useState<GeneratedVideo | null>(null)\\n  const [isPlaying, setIsPlaying] = React.useState(false)\\n  const videoRef = React.useRef<HTMLVideoElement>(null)\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n    setProgress(0)\\n\\n    // Simulate video generation progress\\n    const interval = setInterval(() => {\\n      setProgress((prev) => {\\n        if (prev >= 100) {\\n          clearInterval(interval)\\n          return 100\\n        }\\n        return prev + 5\\n      })\\n    }, 300)\\n\\n    // Simulate video generation\\n    await new Promise((resolve) => setTimeout(resolve, 6000))\\n\\n    const newVideo: GeneratedVideo = {\\n      id: Date.now().toString(),\\n      prompt: prompt,\\n      url: \\\"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4\\\",\\n      thumbnail: `https://picsum.photos/seed/${Math.floor(Math.random() * 1000)}/640/360`,\\n      duration: duration,\\n      style: style,\\n      timestamp: new Date(),\\n    }\\n\\n    setGeneratedVideos((prev) => [newVideo, ...prev])\\n    setSelectedVideo(newVideo)\\n    setIsGenerating(false)\\n    setProgress(0)\\n  }\\n\\n  const togglePlayPause = () => {\\n    if (!videoRef.current) return\\n\\n    if (isPlaying) {\\n      videoRef.current.pause()\\n    } else {\\n      videoRef.current.play()\\n    }\\n    setIsPlaying(!isPlaying)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!selectedVideo) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = selectedVideo.url\\n    link.download = `ai-video-${selectedVideo.id}.mp4`\\n    link.click()\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-7xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Video className=\\\"h-6 w-6\\\" />\\n            AI Video Generation Agent\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"duration\\\">Duration</Label>\\n              <Select value={duration} onValueChange={setDuration}>\\n                <SelectTrigger id=\\\"duration\\\">\\n                  <SelectValue placeholder=\\\"Select duration\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_DURATIONS.map((d) => (\\n                    <SelectItem key={d.value} value={d.value}>\\n                      {d.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"style\\\">Style</Label>\\n              <Select value={style} onValueChange={setStyle}>\\n                <SelectTrigger id=\\\"style\\\">\\n                  <SelectValue placeholder=\\\"Select style\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_STYLES.map((s) => (\\n                    <SelectItem key={s.value} value={s.value}>\\n                      {s.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"grid gap-6 lg:grid-cols-3\\\">\\n            <div className=\\\"space-y-4 lg:col-span-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Video Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the video you want to generate... (e.g., 'A drone shot flying over a futuristic city at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey || isGenerating}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n                size=\\\"lg\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-5 w-5 animate-spin\\\" />\\n                    Generating Video...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Sparkles className=\\\"mr-2 h-5 w-5\\\" />\\n                    Generate Video\\n                  </>\\n                )}\\n              </Button>\\n\\n              {isGenerating && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"pt-6\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <div className=\\\"flex items-center justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          Processing video generation...\\n                        </span>\\n                        <span className=\\\"font-medium\\\">{progress}%</span>\\n                      </div>\\n                      <Progress value={progress} className=\\\"h-2\\\" />\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {selectedVideo && (\\n                <Card>\\n                  <CardHeader>\\n                    <div className=\\\"flex items-start justify-between\\\">\\n                      <div className=\\\"space-y-1\\\">\\n                        <CardTitle className=\\\"text-lg\\\">Preview</CardTitle>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {selectedVideo.prompt}\\n                        </p>\\n                      </div>\\n                      <div className=\\\"flex gap-2\\\">\\n                        <Badge variant=\\\"secondary\\\">\\n                          <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                          {selectedVideo.duration}s\\n                        </Badge>\\n                        <Badge variant=\\\"secondary\\\" className=\\\"capitalize\\\">\\n                          {selectedVideo.style}\\n                        </Badge>\\n                      </div>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\\\">\\n                      <video\\n                        ref={videoRef}\\n                        src={selectedVideo.url}\\n                        className=\\\"h-full w-full\\\"\\n                        onPlay={() => setIsPlaying(true)}\\n                        onPause={() => setIsPlaying(false)}\\n                      />\\n                      <div className=\\\"absolute inset-0 flex items-center justify-center\\\">\\n                        <Button\\n                          size=\\\"lg\\\"\\n                          variant=\\\"secondary\\\"\\n                          onClick={togglePlayPause}\\n                          className=\\\"h-16 w-16 rounded-full\\\"\\n                        >\\n                          {isPlaying ? (\\n                            <Pause className=\\\"h-6 w-6\\\" />\\n                          ) : (\\n                            <Play className=\\\"h-6 w-6\\\" />\\n                          )}\\n                        </Button>\\n                      </div>\\n                    </div>\\n                    <div className=\\\"flex gap-2\\\">\\n                      <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                        <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                        Download Video\\n                      </Button>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        onClick={handleGenerate}\\n                        disabled={isGenerating}\\n                        className=\\\"flex-1\\\"\\n                      >\\n                        <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n                        Generate New\\n                      </Button>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {!apiKey && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"flex flex-col items-center justify-center py-12\\\">\\n                    <FileVideo className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                      Please enter your API key to start generating videos\\n                    </p>\\n                  </CardContent>\\n                </Card>\\n              )}\\n            </div>\\n\\n            <div className=\\\"space-y-4\\\">\\n              <Card>\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-base\\\">Generated Videos</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"space-y-3\\\">\\n                  {generatedVideos.length === 0 ? (\\n                    <div className=\\\"text-muted-foreground py-8 text-center text-sm\\\">\\n                      No videos generated yet\\n                    </div>\\n                  ) : (\\n                    generatedVideos.map((video) => (\\n                      <Card\\n                        key={video.id}\\n                        className={`cursor-pointer transition-colors ${\\n                          selectedVideo?.id === video.id\\n                            ? \\\"border-primary\\\"\\n                            : \\\"hover:border-primary/50\\\"\\n                        }`}\\n                        onClick={() => setSelectedVideo(video)}\\n                      >\\n                        <CardContent className=\\\"p-3\\\">\\n                          <div className=\\\"relative mb-2 aspect-video overflow-hidden rounded\\\">\\n                            <img\\n                              src={video.thumbnail}\\n                              alt={video.prompt}\\n                              className=\\\"h-full w-full object-cover\\\"\\n                            />\\n                            <div className=\\\"absolute inset-0 flex items-center justify-center bg-black/30\\\">\\n                              <Play className=\\\"h-8 w-8 text-white\\\" />\\n                            </div>\\n                          </div>\\n                          <p className=\\\"line-clamp-2 text-xs\\\">{video.prompt}</p>\\n                          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n                            <Badge variant=\\\"secondary\\\" className=\\\"text-xs\\\">\\n                              <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                              {video.duration}s\\n                            </Badge>\\n                          </div>\\n                        </CardContent>\\n                      </Card>\\n                    ))\\n                  )}\\n                </CardContent>\\n              </Card>\\n\\n              <Card className=\\\"bg-muted/50\\\">\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-sm\\\">Tips</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"text-muted-foreground space-y-2 text-xs\\\">\\n                  <p>• Be specific and descriptive in your prompts</p>\\n                  <p>• Describe camera movements and angles</p>\\n                  <p>• Mention lighting and atmosphere</p>\\n                  <p>• Specify the mood and style you want</p>\\n                  <p>• Keep prompts under 500 characters</p>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-video-generator/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\"\n  },\n  \"categories\": [\n    \"ai-agents\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/alert-dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert-dialog\",\n  \"dependencies\": [\n    \"@radix-ui/react-alert-dialog\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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 \\\"@/components/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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        className={cn(\\n          \\\"bg-background 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 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 p-6 shadow-lg duration-200 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(\\\"flex flex-col gap-2 text-center sm:text-left\\\", 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        \\\"flex flex-col-reverse gap-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(\\\"text-lg font-semibold\\\", 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(\\\"text-muted-foreground text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\\n  return (\\n    <AlertDialogPrimitive.Action\\n      className={cn(buttonVariants(), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\\n  return (\\n    <AlertDialogPrimitive.Cancel\\n      className={cn(buttonVariants({ variant: \\\"outline\\\" }), className)}\\n      {...props}\\n    />\\n  )\\n}\\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    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alert\",\n  \"files\": [\n    {\n      \"path\": \"components/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 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>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          \\\"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\\\",\\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        \\\"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_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/www/public/r/all.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"all\",\n  \"type\": \"registry:all\",\n  \"description\": \"All components from Creative Tim UI (UI components, blocks, and agents)\",\n  \"dependencies\": [\n    \"@hookform/resolvers\",\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    \"class-variance-authority\",\n    \"cmdk\",\n    \"date-fns\",\n    \"embla-carousel-react\",\n    \"input-otp\",\n    \"lucide-react\",\n    \"react-day-picker\",\n    \"react-hook-form\",\n    \"react-resizable-panels\",\n    \"recharts\",\n    \"sonner\",\n    \"vaul\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"accordion\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"checkbox\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"slider\",\n    \"software-purchase-card\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\",\n    \"utils\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/accordion.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AccordionPrimitive from \\\"@radix-ui/react-accordion\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\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          \\\"focus-visible:border-ring focus-visible:ring-ring/50 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:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <ChevronDownIcon className=\\\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 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=\\\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\\\"\\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    },\n    {\n      \"path\": \"components/ui/alert.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>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          \\\"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\\\",\\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        \\\"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription }\\n\"\n    },\n    {\n      \"path\": \"components/ui/alert-dialog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        className={cn(\\n          \\\"bg-background 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 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 p-6 shadow-lg duration-200 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(\\\"flex flex-col gap-2 text-center sm:text-left\\\", 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        \\\"flex flex-col-reverse gap-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(\\\"text-lg font-semibold\\\", 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(\\\"text-muted-foreground text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\\n  return (\\n    <AlertDialogPrimitive.Action\\n      className={cn(buttonVariants(), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\\n  return (\\n    <AlertDialogPrimitive.Cancel\\n      className={cn(buttonVariants({ variant: \\\"outline\\\" }), className)}\\n      {...props}\\n    />\\n  )\\n}\\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    },\n    {\n      \"path\": \"components/ui/aspect-ratio.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as AspectRatioPrimitive from \\\"@radix-ui/react-aspect-ratio\\\"\\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    },\n    {\n      \"path\": \"components/ui/avatar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Avatar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 overflow-hidden rounded-full\\\",\\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        \\\"bg-muted flex size-full items-center justify-center rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Avatar, AvatarImage, AvatarFallback }\\n\"\n    },\n    {\n      \"path\": \"components/ui/badge.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 badgeVariants = cva(\\n  \\\"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\\\",\\n        secondary:\\n          \\\"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\\\",\\n        destructive:\\n          \\\"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\"\n    },\n    {\n      \"path\": \"components/ui/breadcrumb.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words 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 : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"hover:text-foreground transition-colors\\\", 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(\\\"text-foreground font-normal\\\", 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    },\n    {\n      \"path\": \"components/ui/button.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\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:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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        sm: \\\"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\\\",\\n        lg: \\\"h-10 rounded-md px-6 has-[>svg]:px-4\\\",\\n        icon: \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant,\\n  size,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\"\n    },\n    {\n      \"path\": \"components/ui/calendar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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:--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          \\\"flex gap-4 flex-col md:flex-row relative\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex flex-col w-full gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute bg-popover inset-0 opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"select-none font-medium\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>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 rounded-md flex-1 font-normal text-[0.8rem] select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"flex w-full mt-2\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"select-none w-(--cell-size)\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] select-none text-muted-foreground\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\\\",\\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          \\\"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.toISOString().split(\\\"T\\\")[0]}\\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 dark:hover:text-accent-foreground 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:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\"\n    },\n    {\n      \"path\": \"components/ui/card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/carousel.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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    },\n    {\n      \"path\": \"components/ui/chart.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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          \\\"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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        \\\"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border 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                  \\\"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\\\",\\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=\\\"text-foreground font-mono font-medium 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                \\\"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\\\"\\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    },\n    {\n      \"path\": \"components/ui/checkbox.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as CheckboxPrimitive from \\\"@radix-ui/react-checkbox\\\"\\nimport { CheckIcon } from \\\"lucide-react\\\"\\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 border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"flex items-center justify-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    },\n    {\n      \"path\": \"components/ui/collapsible.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as CollapsiblePrimitive from \\\"@radix-ui/react-collapsible\\\"\\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    },\n    {\n      \"path\": \"components/ui/command.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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        \\\"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\\\",\\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=\\\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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          \\\"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden 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        \\\"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        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(\\\"bg-border -mx-1 h-px\\\", 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        \\\"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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    },\n    {\n      \"path\": \"components/ui/context-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ContextMenuPrimitive from \\\"@radix-ui/react-context-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"text-foreground px-2 py-1.5 text-sm font-medium 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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    },\n    {\n      \"path\": \"components/ui/dialog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DialogPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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          \\\"bg-background 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 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 p-6 shadow-lg duration-200 sm:max-w-lg\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_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({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\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  )\\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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/drawer.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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 bg-background fixed z-50 flex h-auto flex-col\\\",\\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=\\\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full 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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/dropdown-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DropdownMenuPrimitive from \\\"@radix-ui/react-dropdown-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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    },\n    {\n      \"path\": \"components/ui/form.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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  useFormState,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/components/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>) {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot\\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-muted-foreground text-sm\\\", 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-destructive text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/hover-card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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          \\\"bg-popover 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\"\n    },\n    {\n      \"path\": \"components/ui/input.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 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 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        \\\"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\\\",\\n        \\\"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\"\n    },\n    {\n      \"path\": \"components/ui/input-otp.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"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 dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center 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]:z-10 data-[active=true]:ring-[3px]\\\",\\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=\\\"animate-caret-blink bg-foreground h-4 w-px 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    },\n    {\n      \"path\": \"components/ui/label.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\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    },\n    {\n      \"path\": \"components/ui/menubar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as MenubarPrimitive from \\\"@radix-ui/react-menubar\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"bg-background 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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium 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          \\\"bg-popover text-popover-foreground 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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -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(\\n        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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    },\n    {\n      \"path\": \"components/ui/navigation-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport * as NavigationMenuPrimitive from \\\"@radix-ui/react-navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\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 hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\\\"\\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        \\\"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 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\\\",\\n        \\\"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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: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\\\",\\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 bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow 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        \\\"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_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        \\\"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm 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    },\n    {\n      \"path\": \"components/ui/pagination.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 { Button, buttonVariants } from \\\"@/components/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    },\n    {\n      \"path\": \"components/ui/popover.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return (\\n    <PopoverPrimitive.Trigger\\n      data-slot=\\\"popover-trigger\\\"\\n      asChild={asChild}\\n      {...props}\\n    />\\n  )\\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          \\\"bg-popover 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md 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\\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\\n\"\n    },\n    {\n      \"path\": \"components/ui/progress.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"bg-primary h-full w-full flex-1 transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\"\n    },\n    {\n      \"path\": \"components/ui/radio-group.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RadioGroupPrimitive from \\\"@radix-ui/react-radio-group\\\"\\nimport { CircleIcon } from \\\"lucide-react\\\"\\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        \\\"border-input text-primary 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:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\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=\\\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\"\n    },\n    {\n      \"path\": \"components/ui/resizable.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\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}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\\n  return (\\n    <ResizablePrimitive.PanelGroup\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.PanelResizeHandle\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center 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-offset-1 focus-visible:outline-hidden 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-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\\\">\\n          <GripVerticalIcon className=\\\"size-2.5\\\" />\\n        </div>\\n      )}\\n    </ResizablePrimitive.PanelResizeHandle>\\n  )\\n}\\n\\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\\n\"\n    },\n    {\n      \"path\": \"components/ui/scroll-area.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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=\\\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] 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=\\\"bg-border relative flex-1 rounded-full\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\"\n    },\n    {\n      \"path\": \"components/ui/select.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SelectPrimitive from \\\"@radix-ui/react-select\\\"\\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \\\"lucide-react\\\"\\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        \\\"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 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 [&_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=\\\"size-4 opacity-50\\\" />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"popper\\\",\\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          \\\"bg-popover 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 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 shadow-md\\\",\\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)] 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(\\\"text-muted-foreground px-2 py-1.5 text-xs\\\", 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        \\\"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[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=\\\"absolute right-2 flex size-3.5 items-center justify-center\\\">\\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(\\\"bg-border pointer-events-none -mx-1 my-1 h-px\\\", 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    },\n    {\n      \"path\": \"components/ui/separator.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"bg-border shrink-0 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    },\n    {\n      \"path\": \"components/ui/sheet.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SheetPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        className={cn(\\n          \\\"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\\\",\\n          side === \\\"right\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\\\",\\n          side === \\\"left\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\\\",\\n          side === \\\"top\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\\\",\\n          side === \\\"bottom\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <SheetPrimitive.Close className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\\\">\\n          <XIcon className=\\\"size-4\\\" />\\n          <span className=\\\"sr-only\\\">Close</span>\\n        </SheetPrimitive.Close>\\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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/sidebar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeftIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/components/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/components/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\nimport { useIsMobile } from \\\"@/registry/creative-tim/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/lib/utils\\\"\\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 has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\\\",\\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          \\\"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\\\",\\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=\\\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>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 text-sidebar-foreground hidden 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=\\\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]: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        \\\"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]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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        \\\"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\\\",\\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        \\\"bg-background relative flex w-full flex-1 flex-col\\\",\\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(\\\"bg-background h-8 w-full 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(\\\"bg-sidebar-border mx-2 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        \\\"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 : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium 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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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 outline-hidden 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\\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 : \\\"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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"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 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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          \\\"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 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        \\\"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium 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        \\\"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l 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 : \\\"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        \\\"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 flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 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\\\",\\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    },\n    {\n      \"path\": \"components/ui/skeleton.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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(\\\"bg-accent animate-pulse rounded-md\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\"\n    },\n    {\n      \"path\": \"components/ui/slider.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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          \\\"bg-muted relative grow overflow-hidden rounded-full 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            \\\"bg-primary absolute 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=\\\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm 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    },\n    {\n      \"path\": \"components/ui/sonner.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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, ToasterProps } from \\\"sonner\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className={cn(\\n        \\\"toaster group [&>li]:flex [&>li]:items-start [&>li]:gap-3\\\"\\n      )}\\n      icons={{\\n        success: (\\n          <CircleCheckIcon className=\\\"mt-0.5 size-4 shrink-0 text-green-500\\\" />\\n        ),\\n        info: <InfoIcon className=\\\"mt-0.5 size-4 shrink-0 text-blue-500\\\" />,\\n        warning: (\\n          <TriangleAlertIcon className=\\\"mt-0.5 size-4 shrink-0 text-yellow-500\\\" />\\n        ),\\n        error: <OctagonXIcon className=\\\"mt-0.5 size-4 shrink-0 text-red-500\\\" />,\\n        loading: (\\n          <Loader2Icon className=\\\"mt-0.5 size-4 shrink-0 animate-spin\\\" />\\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      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\"\n    },\n    {\n      \"path\": \"components/ui/switch.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SwitchPrimitive from \\\"@radix-ui/react-switch\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      className={cn(\\n        \\\"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className={cn(\\n          \\\"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\\\"\\n        )}\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\"\n    },\n    {\n      \"path\": \"components/ui/table.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"bg-muted/50 border-t 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        \\\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\\\",\\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        \\\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&: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(\\\"text-muted-foreground mt-4 text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/tabs.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Tabs({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      className={cn(\\n        \\\"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\\\",\\n        className\\n      )}\\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        \\\"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground 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 transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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 }\\n\"\n    },\n    {\n      \"path\": \"components/ui/textarea.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\"\n    },\n    {\n      \"path\": \"components/ui/toggle.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\\\",\\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 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\\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    },\n    {\n      \"path\": \"components/ui/toggle-group.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants>\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider value={{ variant, size }}>\\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      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        \\\"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-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    },\n    {\n      \"path\": \"components/ui/tooltip.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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 (\\n    <TooltipProvider>\\n      <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n    </TooltipProvider>\\n  )\\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          \\\"bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\"\n    },\n    {\n      \"path\": \"components/ui/software-purchase-card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, CreditCard, DollarSign, Users } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport interface SoftwarePurchaseCardProps {\\n  softwareName?: string\\n  startDate?: string\\n  seats?: number\\n  pricingType?: \\\"per-seat\\\" | \\\"flat-rate\\\" | \\\"usage-based\\\"\\n  price?: string\\n  onApprove?: () => void\\n  onDiscard?: () => void\\n}\\n\\nexport function SoftwarePurchaseCard({\\n  softwareName = \\\"Enterprise Cloud Suite\\\",\\n  startDate = \\\"2025-01-15\\\",\\n  seats = 50,\\n  pricingType = \\\"per-seat\\\",\\n  price = \\\"$2,500\\\",\\n  onApprove,\\n  onDiscard,\\n}: SoftwarePurchaseCardProps) {\\n  const pricingTypeLabel = {\\n    \\\"per-seat\\\": \\\"Per Seat\\\",\\n    \\\"flat-rate\\\": \\\"Flat Rate\\\",\\n    \\\"usage-based\\\": \\\"Usage Based\\\",\\n  }[pricingType]\\n\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle className=\\\"flex items-center justify-between\\\">\\n          {softwareName}\\n          <Badge variant=\\\"secondary\\\">{pricingTypeLabel}</Badge>\\n        </CardTitle>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Calendar className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Start Date</span>\\n            <span className=\\\"font-medium\\\">\\n              {new Date(startDate).toLocaleDateString(\\\"en-US\\\", {\\n                month: \\\"long\\\",\\n                day: \\\"numeric\\\",\\n                year: \\\"numeric\\\",\\n              })}\\n            </span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Users className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Seats</span>\\n            <span className=\\\"font-medium\\\">{seats} users</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <CreditCard className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Pricing Type</span>\\n            <span className=\\\"font-medium\\\">{pricingTypeLabel}</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <DollarSign className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">\\n              {pricingType === \\\"per-seat\\\" ? \\\"Monthly Cost\\\" : \\\"Price\\\"}\\n            </span>\\n            <span className=\\\"text-lg font-semibold\\\">{price}</span>\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex gap-3\\\">\\n        <Button variant=\\\"outline\\\" className=\\\"flex-1\\\" onClick={onDiscard}>\\n          Discard\\n        </Button>\\n        <Button className=\\\"flex-1\\\" onClick={onApprove}>\\n          Approve\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-demo.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardDemo() {\\n  return (\\n    <div className=\\\"grid w-full gap-6 md:grid-cols-2 lg:grid-cols-4\\\">\\n      {/* Plain Card */}\\n      <Card>\\n        <CardContent className=\\\"pt-6\\\">\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            This is a plain card with simple content. Perfect for displaying\\n            basic information.\\n          </p>\\n        </CardContent>\\n      </Card>\\n\\n      {/* Card with Title, Description, and Button */}\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Card Title</CardTitle>\\n          <CardDescription>\\n            This is a brief description of the card content.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            More detailed information goes here in the card content area.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\">Learn More</Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* Blog Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n        <CardHeader>\\n          <div className=\\\"text-muted-foreground flex items-center gap-2 text-xs\\\">\\n            <Calendar className=\\\"h-3 w-3\\\" />\\n            <span>Mar 15, 2025</span>\\n            <span>•</span>\\n            <span>5 min read</span>\\n          </div>\\n          <CardTitle className=\\\"text-lg\\\">\\n            Getting Started with Next.js\\n          </CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            Learn how to build modern web applications with Next.js, React, and\\n            TypeScript.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            Read More\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* E-commerce Product Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"relative\\\">\\n          <div className=\\\"aspect-square w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n          <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n        </div>\\n        <CardHeader>\\n          <CardTitle className=\\\"text-lg\\\">Premium Wireless</CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            High-quality audio with noise cancellation\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex items-center justify-between\\\">\\n            <div className=\\\"flex items-center gap-0.5\\\">\\n              {[...Array(4)].map((_, i) => (\\n                <Star\\n                  key={i}\\n                  className=\\\"h-3 w-3 fill-yellow-400 text-yellow-400\\\"\\n                />\\n              ))}\\n              <Star className=\\\"text-muted-foreground h-3 w-3\\\" />\\n              <span className=\\\"text-muted-foreground ml-1 text-xs\\\">(128)</span>\\n            </div>\\n            <div className=\\\"text-xl font-bold\\\">$299</div>\\n          </div>\\n        </CardContent>\\n        <CardFooter className=\\\"gap-2\\\">\\n          <Button className=\\\"flex-1\\\" size=\\\"sm\\\">\\n            <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n            Add to Cart\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <Heart className=\\\"h-4 w-4\\\" />\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-plain.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function CardPlain() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardContent className=\\\"pt-6\\\">\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          This is a plain card with simple content. Perfect for displaying basic\\n          information.\\n        </p>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-with-button.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardWithButton() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Card Title</CardTitle>\\n        <CardDescription>\\n          This is a brief description of the card content.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          More detailed information goes here in the card content area.\\n        </p>\\n      </CardContent>\\n      <CardFooter>\\n        <Button>Learn More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-blog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardBlog() {\\n  return (\\n    <Card className=\\\"w-full max-w-md overflow-hidden\\\">\\n      <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n      <CardHeader>\\n        <div className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n          <Calendar className=\\\"h-4 w-4\\\" />\\n          <span>March 15, 2025</span>\\n          <span>•</span>\\n          <span>5 min read</span>\\n        </div>\\n        <CardTitle>Getting Started with Next.js</CardTitle>\\n        <CardDescription>\\n          Learn how to build modern web applications with Next.js, React, and\\n          TypeScript.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardFooter>\\n        <Button variant=\\\"ghost\\\">Read More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-ecommerce.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardEcommerce() {\\n  return (\\n    <Card className=\\\"w-full max-w-sm overflow-hidden\\\">\\n      <div className=\\\"relative\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n        <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n      </div>\\n      <CardHeader>\\n        <CardTitle>Premium Wireless Headphones</CardTitle>\\n        <CardDescription>\\n          High-quality audio with active noise cancellation\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <div className=\\\"flex items-center gap-1\\\">\\n            {[...Array(4)].map((_, i) => (\\n              <Star\\n                key={i}\\n                className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n              />\\n            ))}\\n            <Star className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"text-muted-foreground text-sm\\\">(128)</span>\\n          </div>\\n          <div className=\\\"text-2xl font-bold\\\">$299</div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"gap-2\\\">\\n        <Button className=\\\"flex-1\\\">\\n          <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n          Add to Cart\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Heart className=\\\"h-4 w-4\\\" />\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/form-card-demo.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\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 FormCardDemo() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Create Account</CardTitle>\\n        <CardDescription>\\n          Enter your information to get started with Creative Tim UI\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-4\\\">\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"name\\\">Full Name</Label>\\n          <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"email\\\">Email Address</Label>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"password\\\">Password</Label>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" placeholder=\\\"••••••••\\\" />\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">Sign Up</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/software-purchase-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/software-purchase/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport { SoftwarePurchaseCard } from \\\"@/components/ui/software-purchase-card\\\"\\n\\nexport default function Page() {\\n  const handleApprove = () => {\\n    console.log(\\\"Purchase approved\\\")\\n  }\\n\\n  const handleDiscard = () => {\\n    console.log(\\\"Purchase discarded\\\")\\n  }\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full items-center justify-center p-6\\\">\\n      <div className=\\\"flex w-full max-w-6xl flex-col gap-8 lg:flex-row\\\">\\n        {/* Left side - Purchase Details */}\\n        <div className=\\\"flex flex-1 flex-col gap-6\\\">\\n          <div className=\\\"flex flex-col gap-2\\\">\\n            <h1 className=\\\"text-3xl font-bold\\\">Software Purchase Request</h1>\\n            <p className=\\\"text-muted-foreground\\\">\\n              Review and approve the software purchase details below\\n            </p>\\n          </div>\\n\\n          <Separator />\\n\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">Purchase Details</h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Software Name</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Enterprise Cloud Suite\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Vendor</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    CloudTech Solutions Inc.\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">License Type</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Commercial License\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Contract Duration</span>\\n                  <span className=\\\"text-muted-foreground\\\">12 months</span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Billing Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Billing Cycle</span>\\n                  <span className=\\\"text-muted-foreground\\\">Monthly</span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Payment Method</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Corporate Credit Card\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Cost Center</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Engineering Department\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Annual Total</span>\\n                  <span className=\\\"text-muted-foreground font-semibold\\\">\\n                    $30,000\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Additional Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Requested By</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    John Smith (Engineering Manager)\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Request Date</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    December 28, 2024\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Status</span>\\n                  <Badge variant=\\\"secondary\\\" className=\\\"w-fit\\\">\\n                    Pending Approval\\n                  </Badge>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Justification</span>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    This software is critical for our cloud infrastructure\\n                    management and will enable the engineering team to scale\\n                    operations more efficiently. The per-seat pricing model\\n                    aligns with our team growth projections for Q1 2025.\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* Right side - Software Purchase Card */}\\n        <div className=\\\"flex items-start justify-center lg:sticky lg:top-6 lg:h-fit lg:w-[400px]\\\">\\n          <SoftwarePurchaseCard\\n            softwareName=\\\"Enterprise Cloud Suite\\\"\\n            startDate=\\\"2025-01-15\\\"\\n            seats={50}\\n            pricingType=\\\"per-seat\\\"\\n            price=\\\"$2,500\\\"\\n            onApprove={handleApprove}\\n            onDiscard={handleDiscard}\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/billing-information-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/billing-information/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Building2, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\ninterface BillingCardProps {\\n  company: string\\n  contact: string\\n  email: string\\n  vat: string\\n}\\n\\nfunction BillingCard({ company, contact, email, vat }: BillingCardProps) {\\n  return (\\n    <Card className=\\\"border\\\">\\n      <CardHeader>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <div className=\\\"bg-background grid h-12 w-12 shrink-0 place-items-center rounded border\\\">\\n            <Building2 className=\\\"h-6 w-6\\\" />\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <CardTitle className=\\\"text-sm\\\">{company}</CardTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Company</p>\\n          </div>\\n        </div>\\n        <CardAction>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n              <Pencil className=\\\"mr-2 h-4 w-4\\\" />\\n              Edit\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"text-destructive hover:text-destructive\\\"\\n            >\\n              <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n              Delete\\n            </Button>\\n          </div>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-2\\\">\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">Contact: </span>\\n          <span className=\\\"font-medium\\\">{contact}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            Email Address:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{email}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            VAT Number:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{vat}</span>\\n        </div>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\\nexport default function BillingInformation01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-3xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row\\\">\\n        <div>\\n          <h2 className=\\\"font-semibold\\\">Billing Information</h2>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            View and update your billing details quickly and easily.\\n          </p>\\n        </div>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Billing\\n        </Button>\\n      </div>\\n      <div className=\\\"mt-6 space-y-4\\\">\\n        <BillingCard\\n          company=\\\"Burrito Vikings\\\"\\n          contact=\\\"Emma Roberts\\\"\\n          email=\\\"emma@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Stone Tech Zone\\\"\\n          contact=\\\"Marcel Glock\\\"\\n          email=\\\"marcel@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Fiber Notion\\\"\\n          contact=\\\"Misha Stam\\\"\\n          email=\\\"misha@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/card-display-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/card-display/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Wifi } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\ninterface CreditCardProps {\\n  variant?: \\\"dark\\\" | \\\"light\\\"\\n  number: string\\n  holder: string\\n  expires: string\\n}\\n\\nfunction CreditCard({\\n  variant = \\\"light\\\",\\n  number,\\n  holder,\\n  expires,\\n}: CreditCardProps) {\\n  const isDark = variant === \\\"dark\\\"\\n\\n  return (\\n    <Card\\n      className={`group relative overflow-hidden transition-all duration-300 hover:scale-[1.02] hover:shadow-2xl ${\\n        isDark\\n          ? \\\"bg-black text-white\\\"\\n          : \\\"border-border/50 bg-white text-black shadow-lg\\\"\\n      }`}\\n    >\\n      <div className=\\\"absolute inset-0 bg-gradient-to-tr from-transparent via-white/5 to-white/10 opacity-0 transition-opacity duration-300 group-hover:opacity-100\\\" />\\n\\n      <div className=\\\"relative m-0 flex w-full items-center justify-between p-6\\\">\\n        <div\\n          className={`rounded-lg p-2 ${isDark ? \\\"bg-white/10\\\" : \\\"bg-gray-100\\\"}`}\\n        >\\n          <Wifi className=\\\"h-6 w-6\\\" />\\n        </div>\\n        <div\\n          className={`h-10 w-14 rounded ${isDark ? \\\"bg-gradient-to-br from-yellow-400 to-yellow-600\\\" : \\\"bg-gradient-to-br from-yellow-300 to-yellow-500\\\"}`}\\n        >\\n          <div className=\\\"h-full w-full rounded bg-gradient-to-tr from-transparent via-white/20 to-white/40\\\" />\\n        </div>\\n      </div>\\n\\n      <div className=\\\"relative px-6 py-4\\\">\\n        <p className=\\\"text-lg font-bold tracking-[0.2em]\\\">\\n          {String(number)\\n            .match(/.{1,4}/g)\\n            ?.join(\\\"  \\\")}\\n        </p>\\n      </div>\\n\\n      <div className=\\\"relative flex items-end justify-between gap-6 p-6 pt-2\\\">\\n        <div className=\\\"flex gap-6\\\">\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Card Holder\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{holder}</p>\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Expires\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{expires}</p>\\n          </div>\\n        </div>\\n        <div className=\\\"flex items-center\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n            alt=\\\"mastercard logo\\\"\\n            className=\\\"h-10 w-auto transition-transform group-hover:scale-110\\\"\\n          />\\n        </div>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function CardDisplay01() {\\n  return (\\n    <div className=\\\"mx-auto grid max-w-5xl grid-cols-1 gap-8 p-6 md:grid-cols-2\\\">\\n      <CreditCard\\n        variant=\\\"dark\\\"\\n        expires=\\\"10/25\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245947852\\\"\\n      />\\n      <CreditCard\\n        variant=\\\"light\\\"\\n        expires=\\\"10/26\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245948844\\\"\\n      />\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/payment-method-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/payment-method/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Check, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\n\\ninterface PaymentMethodProps {\\n  type: \\\"visa\\\" | \\\"mastercard\\\"\\n  number: string\\n  isDefault?: boolean\\n}\\n\\nfunction PaymentMethod({ type, number, isDefault }: PaymentMethodProps) {\\n  const cardImg =\\n    type === \\\"visa\\\"\\n      ? \\\"https://v3.material-tailwind.com/visa.webp\\\"\\n      : \\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n\\n  return (\\n    <Card className=\\\"group hover:border-primary/50 relative flex flex-col gap-4 border p-6 transition-all hover:shadow-md\\\">\\n      {isDefault && (\\n        <div className=\\\"bg-primary absolute -top-px -right-px rounded-tr-lg rounded-bl-lg px-3 py-1\\\">\\n          <div className=\\\"flex items-center gap-1.5 text-xs font-semibold text-white\\\">\\n            <Check className=\\\"h-3 w-3\\\" />\\n            Default\\n          </div>\\n        </div>\\n      )}\\n\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <div className=\\\"flex h-12 w-16 items-center justify-center rounded-lg bg-gray-50 p-2\\\">\\n          <img\\n            src={cardImg}\\n            alt={type}\\n            className=\\\"h-full w-auto object-contain\\\"\\n          />\\n        </div>\\n\\n        <div className=\\\"flex flex-1 flex-col gap-1\\\">\\n          <p className=\\\"text-base font-bold tracking-wider\\\">\\n            **** **** **** {number}\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm capitalize\\\">\\n            {type} Card\\n          </p>\\n        </div>\\n      </div>\\n\\n      <div className=\\\"flex items-center gap-1\\\">\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-9 w-9\\\">\\n                <Pencil className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Edit Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button\\n                size=\\\"icon\\\"\\n                variant=\\\"ghost\\\"\\n                className=\\\"text-destructive hover:bg-destructive/10 hover:text-destructive h-9 w-9\\\"\\n              >\\n                <Trash2 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Remove Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function PaymentMethod01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-4xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center\\\">\\n        <div>\\n          <h2 className=\\\"text-2xl font-bold\\\">Payment Methods</h2>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage your preferred payment methods securely and conveniently.\\n          </p>\\n        </div>\\n        <Button className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Card\\n        </Button>\\n      </div>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-4 md:grid-cols-2\\\">\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"7852\\\" isDefault />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"9831\\\" />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"8362\\\" />\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"0098\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/transaction-history-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/transaction-history/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon, ChevronDown, ChevronUp, Clock } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\n\\nconst DATA = {\\n  \\\"March 2023\\\": [\\n    {\\n      name: \\\"Netflix\\\",\\n      date: \\\"27 March 2026, at 12:30 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Apple\\\",\\n      date: \\\"27 March 2026, at 04:30 AM\\\",\\n      value: 2000,\\n      status: \\\"increasing\\\" as const,\\n    },\\n  ],\\n  \\\"February 2023\\\": [\\n    {\\n      name: \\\"Stripe\\\",\\n      date: \\\"26 March 2026, at 13:45 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"HubSpot\\\",\\n      date: \\\"26 March 2023, at 12:30 PM\\\",\\n      value: 750,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Figma\\\",\\n      date: \\\"26 March 2023, at 08:30 AM\\\",\\n      value: 1400,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Webflow\\\",\\n      date: \\\"26 March 2023, at 05:00 AM\\\",\\n      value: 0,\\n      status: \\\"pending\\\" as const,\\n    },\\n  ],\\n}\\n\\nconst ICONS = {\\n  increasing: ChevronUp,\\n  decreasing: ChevronDown,\\n  pending: Clock,\\n}\\n\\nconst COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-muted-foreground\\\",\\n}\\n\\nconst ICON_COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-black dark:text-white\\\",\\n}\\n\\nconst PREFIX = {\\n  increasing: \\\"+\\\",\\n  decreasing: \\\"-\\\",\\n  pending: \\\"\\\",\\n}\\n\\nexport default function TransactionHistory01() {\\n  const [date, setDate] = React.useState<Date>(new Date(2024, 9, 10))\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">History Transactions</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className={cn(\\n                  \\\"w-full justify-start text-left font-normal sm:w-48\\\",\\n                  !date && \\\"text-muted-foreground\\\"\\n                )}\\n              >\\n                <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\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={(day) => day && setDate(day)}\\n                initialFocus\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {(Object.keys(DATA) as Array<keyof typeof DATA>).map((month, key) => {\\n            return (\\n              <div key={key} className=\\\"mb-6 last:mb-0\\\">\\n                <p className=\\\"text-muted-foreground mb-2 ml-2.5 font-semibold\\\">\\n                  {month}\\n                </p>\\n                <div className=\\\"space-y-2\\\">\\n                  {DATA[month].map(({ name, value, date, status }) => {\\n                    const Icon = ICONS[status]\\n\\n                    return (\\n                      <div\\n                        key={name}\\n                        className=\\\"flex items-center gap-4 rounded-lg border p-4\\\"\\n                      >\\n                        <div className=\\\"bg-card text-card-foreground hidden h-12 w-12 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex\\\">\\n                          <Icon\\n                            className={cn(\\\"h-5 w-5\\\", ICON_COLORS[status])}\\n                          />\\n                        </div>\\n                        <div className=\\\"mx-0 space-y-0.5 sm:mx-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {date}\\n                          </p>\\n                        </div>\\n                        <p\\n                          className={cn(\\n                            \\\"mx-2 ml-auto text-sm font-semibold\\\",\\n                            COLORS[status]\\n                          )}\\n                        >\\n                          {PREFIX[status]}{\\\" \\\"}\\n                          {value\\n                            ? new Intl.NumberFormat(\\\"en-US\\\", {\\n                                style: \\\"currency\\\",\\n                                currency: \\\"USD\\\",\\n                              }).format(value)\\n                            : \\\"Pending\\\"}\\n                        </p>\\n                      </div>\\n                    )\\n                  })}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/invoices-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/invoices/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Download } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst DATA = [\\n  {\\n    name: \\\"INV-24 #MS-415646\\\",\\n    date: \\\"October 15, 2024\\\",\\n    amount: 2500,\\n    badge: \\\"24 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-23 #MS-415740\\\",\\n    date: \\\"October 10, 2024\\\",\\n    amount: 1750,\\n    badge: \\\"20 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-22 #MS-946285\\\",\\n    date: \\\"September 15, 2024\\\",\\n    amount: 1500,\\n    badge: \\\"18 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-21 #MS-739734\\\",\\n    date: \\\"September 10, 2024\\\",\\n    amount: 2990,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n  {\\n    name: \\\"INV-20 #MS-848649\\\",\\n    date: \\\"August 15, 2024\\\",\\n    amount: 3500,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n]\\n\\nexport default function Invoices01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">Invoices</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Export\\n          </Button>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {DATA.map(({ name, date, amount, badge, isOverdue }, index) => (\\n            <div key={name}>\\n              <div className=\\\"flex flex-wrap items-center justify-between gap-6 py-6\\\">\\n                <div className=\\\"basis-full space-y-0.5 sm:basis-auto\\\">\\n                  <p className=\\\"text-lg font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n                </div>\\n                <Badge\\n                  variant={isOverdue ? \\\"destructive\\\" : \\\"default\\\"}\\n                  className={\\n                    isOverdue\\n                      ? \\\"w-max sm:ml-auto\\\"\\n                      : \\\"w-max bg-green-100 text-green-800 hover:bg-green-100 sm:ml-auto\\\"\\n                  }\\n                >\\n                  {badge}\\n                </Badge>\\n                <p className=\\\"text-end text-sm font-semibold\\\">\\n                  {new Intl.NumberFormat(\\\"en-US\\\", {\\n                    style: \\\"currency\\\",\\n                    currency: \\\"USD\\\",\\n                  }).format(amount)}\\n                </p>\\n                <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-8 w-8\\\">\\n                  <Download className=\\\"h-5 w-5\\\" />\\n                </Button>\\n              </div>\\n              {index < DATA.length - 1 && <Separator />}\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-blog-content-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-blog-content/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"House\\\",\\n    title: \\\"Shared Coworking\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 26 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Office\\\",\\n    title: \\\"Really Housekeeping\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 03 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Chriss Smahos\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Hub\\\",\\n    title: \\\"Coworking Office\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 12 April\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Elijah Miller\\\",\\n    },\\n  },\\n]\\n\\nexport default function SimpleBlogContent01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-4 pb-0\\\">\\n              <div className=\\\"relative h-60 w-full overflow-hidden rounded-lg\\\">\\n                <img\\n                  src={img}\\n                  alt={title}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar>\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"space-y-0.5\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-cards-layout-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-cards-layout/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDown } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk and Figma looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Bolt launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape view\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366412874-3415097a27e7?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"22 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogCardsLayout01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-12 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Blog Posts</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-3 pb-0\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-56 w-full rounded-lg object-cover object-center\\\"\\n              />\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar className=\\\"h-8 w-8\\\">\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"flex flex-col\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-12 text-center\\\">\\n        <Button variant=\\\"ghost\\\">\\n          <ArrowDown className=\\\"mr-2 h-4 w-4\\\" />\\n          View More\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-post-preview-tags-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-post-preview-tags/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Otto Gonzalez\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Ryan Samuel\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Nora Hazel\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n]\\n\\nexport default function BlogPostPreviewTags01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-16 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Explore Our Places</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, category, title, desc, tags }) => (\\n          <div key={title} className=\\\"space-y-6\\\">\\n            <div className=\\\"relative h-56 w-full overflow-hidden rounded-lg shadow-lg\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4\\\">\\n              <p className=\\\"text-primary text-sm font-semibold\\\">{category}</p>\\n              <h3 className=\\\"text-2xl font-bold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              {tags.map((tag) => (\\n                <Badge key={tag} variant=\\\"secondary\\\">\\n                  {tag}\\n                </Badge>\\n              ))}\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-24 text-center\\\">\\n        <Button>View More</Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/highlighted-blog-posts-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/highlighted-blog-posts/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Globe, Heart, Mic, Puzzle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&auto=format&fit=crop\\\",\\n    icon: Heart,\\n    title: \\\"Cultural\\\",\\n    desc: \\\"257 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1511593358241-7eea1f3c84e5?w=800&auto=format&fit=crop\\\",\\n    icon: Puzzle,\\n    title: \\\"Modern Life\\\",\\n    desc: \\\"117 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&auto=format&fit=crop\\\",\\n    icon: Globe,\\n    title: \\\"Popularity\\\",\\n    desc: \\\"363 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=800&auto=format&fit=crop\\\",\\n    icon: Mic,\\n    title: \\\"Good Vibes\\\",\\n    desc: \\\"215 spots\\\",\\n  },\\n]\\n\\nexport default function HighlightedBlogPosts01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <div className=\\\"mb-16 grid place-items-center text-center\\\">\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Check out what&apos;s new</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-xl\\\">\\n          We get insulted by others, lose trust for those others. We get back\\n          freezes every winter\\n        </p>\\n      </div>\\n      <div className=\\\"grid grid-cols-1 gap-x-0 gap-y-6 md:grid-cols-3 md:gap-x-6\\\">\\n        <Card className=\\\"bg-primary text-primary-foreground flex flex-col justify-between py-0\\\">\\n          <CardHeader className=\\\"p-6 sm:p-8\\\">\\n            <p className=\\\"block text-center font-semibold opacity-80\\\">\\n              Landscape\\n            </p>\\n          </CardHeader>\\n          <CardContent className=\\\"p-6 sm:p-8\\\">\\n            <CardTitle className=\\\"text-center text-2xl\\\">\\n              Nature&apos;s Light\\n            </CardTitle>\\n            <CardDescription className=\\\"py-6 text-center opacity-80\\\">\\n              It really matters and then like it really doesn&apos;t matter.\\n              What matters is the people who are sparked by it.\\n            </CardDescription>\\n          </CardContent>\\n          <CardFooter className=\\\"p-6 text-center sm:p-8\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"secondary\\\"\\n              className=\\\"bg-background text-foreground hover:bg-background/90\\\"\\n            >\\n              Read More\\n            </Button>\\n          </CardFooter>\\n        </Card>\\n        <div className=\\\"col-span-2 grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n          {POSTS.map(({ img, icon: Icon, title, desc }) => (\\n            <Card\\n              key={title}\\n              className=\\\"relative grid min-h-48 w-full overflow-hidden border-0 py-0\\\"\\n            >\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n              />\\n              <div className=\\\"absolute inset-0 h-full w-full bg-black/60\\\" />\\n              <CardContent className=\\\"relative flex h-full flex-col justify-between p-6\\\">\\n                <Icon className=\\\"h-8 w-8 stroke-2 text-white\\\" />\\n                <div className=\\\"space-y-0.5\\\">\\n                  <CardTitle className=\\\"text-xl text-white\\\">{title}</CardTitle>\\n                  <CardDescription className=\\\"text-sm text-white/80\\\">\\n                    {desc}\\n                  </CardDescription>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-rectangular-images-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-rectangular-images/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogRectangularImages01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container my-auto grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <div key={title} className=\\\"grid items-center gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"h-full max-h-72 overflow-hidden rounded-lg lg:max-h-full\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4 p-2\\\">\\n              <Badge variant=\\\"secondary\\\">{tag}</Badge>\\n              <h3 className=\\\"text-xl font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n              <div className=\\\"mt-6 flex items-center gap-3 md:mt-8\\\">\\n                <Avatar>\\n                  <AvatarImage src={author.img} alt={author.name} />\\n                  <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex flex-col\\\">\\n                  <p className=\\\"mb-1 text-sm font-semibold\\\">{author.name}</p>\\n                  <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/large-blog-preview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/large-blog-preview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nexport default function LargeBlogPreview01() {\\n  return (\\n    <div className=\\\"container mx-auto grid h-full w-full grid-cols-1 items-center gap-x-16 gap-y-6 py-16 lg:grid-cols-2\\\">\\n      <img\\n        alt=\\\"blog preview\\\"\\n        src=\\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop\\\"\\n        className=\\\"h-full w-full rounded-lg object-cover object-center shadow-lg\\\"\\n      />\\n      <div>\\n        <p className=\\\"text-primary block font-semibold\\\">Business</p>\\n        <h2 className=\\\"my-4 text-3xl font-bold lg:text-4xl\\\">\\n          Autodesk looks to future of 3D with Project Escher\\n        </h2>\\n        <p className=\\\"text-muted-foreground mb-6 w-full max-w-lg text-lg\\\">\\n          Warner Music Group announced today it&apos;s acquiring the selected\\n          assets of the music platform Songkick, including its app for finding\\n          concerts and the company&apos;s trademark. Songkick has been involved\\n          in a lawsuit against the major…{\\\" \\\"}\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"text-foreground ml-2 inline-block font-semibold hover:underline\\\"\\n          >\\n            Read More\\n          </a>\\n        </p>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <Avatar>\\n            <AvatarImage\\n              src=\\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\"\\n              alt=\\\"Otto Gonzalez\\\"\\n            />\\n            <AvatarFallback>OG</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-0.5\\\">\\n            <p className=\\\"text-sm font-semibold\\\">Otto Gonzalez</p>\\n            <p className=\\\"text-muted-foreground text-xs\\\">10 October 2024</p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-product-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-product-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"]\\n\\nconst SIMILAR_ITEMS = [\\n  {\\n    name: \\\"Black Bustier Top\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 5 size\\\",\\n  },\\n  {\\n    name: \\\"Black High-Waist Jeans\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1578508637199-240a8f25eff6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 8 taille\\\",\\n  },\\n]\\n\\nexport default function SimpleProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        {/* Main Product Section */}\\n        <div className=\\\"mb-16 grid grid-cols-1 items-start gap-x-8 gap-y-10 md:grid-cols-2\\\">\\n          <div className=\\\"bg-muted/30 h-full max-h-[32rem] w-full overflow-hidden rounded-xl border\\\">\\n            <img\\n              alt=\\\"Pink Blouse\\\"\\n              src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n              className=\\\"h-full w-full object-cover\\\"\\n            />\\n          </div>\\n          <div className=\\\"md:p-2\\\">\\n            <h3 className=\\\"text-3xl font-bold\\\">Pink Blouse</h3>\\n            <p className=\\\"text-primary my-4 text-3xl font-bold\\\">$1,490</p>\\n            <p className=\\\"text-muted-foreground leading-relaxed [text-wrap:_balance]\\\">\\n              Whether you're closing deals or attending formal events, its\\n              breathable lining and natural stretch keep you comfortable and\\n              sharp from day to night.\\n            </p>\\n\\n            <div className=\\\"my-6 flex items-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <p className=\\\"text-sm font-semibold\\\">100 Reviews</p>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Size</h4>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <Button\\n                    key={size}\\n                    variant={selectedSize === size ? \\\"default\\\" : \\\"outline\\\"}\\n                    size=\\\"sm\\\"\\n                    className=\\\"min-w-[3rem]\\\"\\n                    onClick={() => setSelectedSize(size)}\\n                  >\\n                    {size}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Color</h4>\\n              <div className=\\\"flex gap-2\\\">\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-black transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-white transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-gray-200 transition-transform hover:scale-110\\\" />\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mt-8 flex items-center gap-3\\\">\\n              <Button className=\\\"w-full max-w-sm\\\" size=\\\"lg\\\">\\n                Add to Cart\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className={`h-11 w-11 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-muted-foreground hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* More Info & Similar Items Section */}\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n          {/* More Info Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">More Info</h3>\\n            <Accordion\\n              type=\\\"single\\\"\\n              collapsible\\n              defaultValue=\\\"description\\\"\\n              className=\\\"w-full\\\"\\n            >\\n              <AccordionItem value=\\\"description\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Description\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    Whether you're navigating city streets or embarking on\\n                    outdoor adventures, this puffer jacket ensures you stay cozy\\n                    and comfortable wherever you go. The versatile black hue\\n                    effortlessly complements any outfit, making it a go-to\\n                    choice for everyday wear.\\n                  </p>\\n                  <p>\\n                    Equipped with practical features, including a front zipper\\n                    closure and zippered pockets, the MidnightShield Jacket\\n                    offers convenient storage for your essentials while on the\\n                    move. Its adjustable cuffs and hem allow for a customizable\\n                    fit, ensuring maximum comfort and versatility.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"delivery\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Delivery & Returns\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Free Standard Delivery:</strong> Orders over $100\\n                    qualify for free standard shipping. Delivery typically takes\\n                    3-5 business days.\\n                  </p>\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Express Shipping:</strong> Available at checkout for\\n                    faster delivery (1-2 business days).\\n                  </p>\\n                  <p>\\n                    <strong>Returns:</strong> We offer a 30-day return policy.\\n                    Items must be in original condition with tags attached. Free\\n                    returns for defective items.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"contact\\\" className=\\\"border-b-0\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Contact Us\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    Have questions about this product? We're here to help!\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Email:</strong> support@example.com\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Phone:</strong> +1 (555) 123-4567\\n                  </p>\\n                  <p>\\n                    <strong>Hours:</strong> Mon-Fri, 9AM-6PM EST\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n            </Accordion>\\n          </div>\\n\\n          {/* Similar Items Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Similar Items</h3>\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              {SIMILAR_ITEMS.map((item, index) => (\\n                <Card\\n                  key={index}\\n                  className=\\\"group cursor-pointer overflow-hidden transition-shadow hover:shadow-lg py-0\\\"\\n                >\\n                  <CardContent className=\\\"p-0\\\">\\n                    <div className=\\\"bg-muted aspect-[4/5] overflow-hidden\\\">\\n                      <img\\n                        src={item.image}\\n                        alt={item.name}\\n                        className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"p-4\\\">\\n                      <h4 className=\\\"font-semibold tracking-wide uppercase\\\">\\n                        {item.name}\\n                      </h4>\\n                      <p className=\\\"mt-2 text-lg font-bold\\\">{item.price}</p>\\n                      <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                        {item.sizes}\\n                      </p>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/grid-ecommerce-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/grid-ecommerce/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst CARDS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    title: \\\"New\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"Shop Sales\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1535220459927-c8428851fd45?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"50% off\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n]\\n\\nexport default function GridEcommerce01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <p className=\\\"mb-8 font-semibold\\\">\\n          Gear Up and Enjoy Savings | Get up to 50% off on select items\\n        </p>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {CARDS.map(({ image, title, subtitle }, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"group relative h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\"\\n            >\\n              <img\\n                src={image}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n              <div className=\\\"absolute inset-x-0 bottom-0 p-6 text-white\\\">\\n                <p className=\\\"mb-2 text-sm font-semibold tracking-wider text-white/90 uppercase\\\">\\n                  {title}\\n                </p>\\n                <h3 className=\\\"mb-4 text-2xl font-bold\\\">{subtitle}</h3>\\n                <Button variant=\\\"link\\\" className=\\\"p-0 text-white\\\">\\n                  Read More\\n                </Button>\\n              </div>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"group relative mt-6 h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\"\\n            alt=\\\"Formal Elegance\\\"\\n            className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n          <div className=\\\"absolute inset-0 flex items-center justify-center p-8 text-white\\\">\\n            <div className=\\\"text-center\\\">\\n              <p className=\\\"mb-3 text-lg font-bold tracking-wider uppercase\\\">\\n                UP TO 70%\\n              </p>\\n              <h3 className=\\\"mb-6 text-3xl font-bold md:text-4xl\\\">\\n                Formal Elegance Series\\n              </h3>\\n              <Button variant=\\\"link\\\" size=\\\"lg\\\" className=\\\"p-0 text-white\\\">\\n                Discover\\n              </Button>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/promotional-cards-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/promotional-cards/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    name: \\\"Active toning essence\\\",\\n    price: \\\"$59.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1620916566398-39f1143ab7be?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Hydrating face serum\\\",\\n    price: \\\"$49.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1571781926291-c477ebfd024b?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Vitamin C moisturizer\\\",\\n    price: \\\"$65.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1608571423902-eed4a5ad8108?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n]\\n\\nexport default function PromotionalCards01() {\\n  const [currentProduct, setCurrentProduct] = useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 overflow-hidden rounded-2xl shadow-xl lg:grid-cols-2\\\">\\n          {/* Left: Product Showcase */}\\n          <div className=\\\"flex flex-col items-center justify-center bg-[#e8e3dc] p-16\\\">\\n            <div className=\\\"mb-8 flex h-80 w-80 items-center justify-center\\\">\\n              <img\\n                src={PRODUCTS[currentProduct].image}\\n                alt={PRODUCTS[currentProduct].name}\\n                className=\\\"h-full w-full object-contain drop-shadow-2xl transition-all duration-500\\\"\\n              />\\n            </div>\\n            <h3 className=\\\"mb-2 text-center text-lg font-medium text-gray-800\\\">\\n              {PRODUCTS[currentProduct].name}\\n            </h3>\\n            <p className=\\\"mb-6 text-center text-xl font-semibold text-gray-900\\\">\\n              {PRODUCTS[currentProduct].price}\\n            </p>\\n            <div className=\\\"flex gap-2\\\">\\n              {PRODUCTS.map((_, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setCurrentProduct(index)}\\n                  className={`h-2.5 w-2.5 rounded-full transition-all ${\\n                    currentProduct === index\\n                      ? \\\"w-8 bg-gray-800\\\"\\n                      : \\\"bg-gray-400 hover:bg-gray-600\\\"\\n                  }`}\\n                  aria-label={`View product ${index + 1}`}\\n                />\\n              ))}\\n            </div>\\n          </div>\\n\\n          {/* Right: Hero Image with Text */}\\n          <div className=\\\"relative flex min-h-[500px] items-center justify-center lg:min-h-[600px]\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1581182815808-b6eb627a8798?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1065\\\"\\n              alt=\\\"Beauty model\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n            />\\n            <div className=\\\"relative z-10 px-8 text-center lg:px-16\\\">\\n              <h2 className=\\\"font-serif text-5xl leading-tight font-light text-white drop-shadow-lg lg:text-6xl\\\">\\n                Glow up with\\n                <br />\\n                nature\\n              </h2>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/order-history-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-history/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/components/ui/table\\\"\\n\\nconst OPTIONS = [\\n  {\\n    data: \\\"Order ID\\\",\\n    value: \\\"1234\\\",\\n  },\\n  {\\n    data: \\\"Date of Placement\\\",\\n    value: \\\"April 3, 2024\\\",\\n  },\\n  {\\n    data: \\\"Amount\\\",\\n    value: \\\"$2,570\\\",\\n  },\\n]\\n\\nconst TABLE_ROW = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    product: \\\"Premium Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    product: \\\"Linen Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n    product: \\\"Tweed Suit\\\",\\n    amount: \\\"$990\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n]\\n\\nconst TABLE_HEAD = [\\\"Product\\\", \\\"Amount\\\", \\\"Status\\\", \\\"Date\\\", \\\"Details\\\"]\\n\\nexport default function OrderHistory01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"text-lg font-semibold\\\">Order History</h2>\\n        <p className=\\\"text-muted-foreground mt-2\\\">\\n          See your recent orders, download your invoices.\\n        </p>\\n        <Card className=\\\"mt-8 mb-4 py-0\\\">\\n          <CardContent className=\\\"flex flex-wrap items-center justify-between gap-4 p-4\\\">\\n            <div className=\\\"flex gap-10\\\">\\n              {OPTIONS.map((option, i) => (\\n                <div key={i}>\\n                  <p className=\\\"text-muted-foreground mb-0.5 text-sm\\\">\\n                    {option.data}\\n                  </p>\\n                  <p className=\\\"font-semibold\\\">{option.value}</p>\\n                </div>\\n              ))}\\n            </div>\\n            <Button>View Invoice</Button>\\n          </CardContent>\\n        </Card>\\n        <Card>\\n          <div className=\\\"overflow-x-auto\\\">\\n            <Table>\\n              <TableHeader>\\n                <TableRow>\\n                  {TABLE_HEAD.map((head) => (\\n                    <TableHead key={head}>{head}</TableHead>\\n                  ))}\\n                </TableRow>\\n              </TableHeader>\\n              <TableBody>\\n                {TABLE_ROW.map(({ img, product, amount, date }) => (\\n                  <TableRow key={product}>\\n                    <TableCell>\\n                      <div className=\\\"flex items-center gap-3\\\">\\n                        <img src={img} alt={product} className=\\\"h-16\\\" />\\n                        <span className=\\\"text-sm font-semibold\\\">{product}</span>\\n                      </div>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {amount}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Badge\\n                        variant=\\\"secondary\\\"\\n                        className=\\\"bg-green-100 text-green-700\\\"\\n                      >\\n                        Delivered\\n                      </Badge>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {date}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                        View\\n                      </Button>\\n                    </TableCell>\\n                  </TableRow>\\n                ))}\\n              </TableBody>\\n            </Table>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/empty-shopping-cart-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/empty-shopping-cart/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EmptyShoppingCart01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center justify-center\\\">\\n      <div className=\\\"container mx-auto py-16\\\">\\n        <div className=\\\"text-center\\\">\\n          <p className=\\\"text-primary font-semibold\\\">Store</p>\\n          <h2 className=\\\"mt-4 text-2xl font-bold\\\">\\n            Your Shopping Cart is Empty\\n          </h2>\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/cart-illustration.png\\\"\\n            alt=\\\"Empty cart\\\"\\n            className=\\\"mx-auto my-8 max-h-[30rem]\\\"\\n          />\\n          <Button>Back to Store</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/digital-product-overview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/digital-product-overview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Eye, Lock, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\n\\nconst data = [\\n  {\\n    name: \\\"HTML Version\\\",\\n    desc: \\\"Pure HTML/CSS with Tailwind, perfect for static websites.\\\",\\n    price: \\\"$39\\\",\\n    popular: false,\\n  },\\n  {\\n    name: \\\"React Version\\\",\\n    desc: \\\"React components with TypeScript support included.\\\",\\n    price: \\\"$49\\\",\\n    popular: true,\\n  },\\n  {\\n    name: \\\"Angular Version\\\",\\n    desc: \\\"Angular components with full type definitions.\\\",\\n    price: \\\"$99\\\",\\n    popular: false,\\n  },\\n]\\n\\nexport default function DigitalProductOverview01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <nav className=\\\"mb-8 flex items-center gap-2 text-sm\\\">\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Home\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Templates\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <span className=\\\"text-foreground font-medium\\\">Digital Product</span>\\n      </nav>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n        <div className=\\\"group bg-muted/30 relative overflow-hidden rounded-2xl border p-4 shadow-xl transition-all hover:shadow-2xl\\\">\\n          <img\\n            src=\\\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/headers-thumbnail.jpg\\\"\\n            alt=\\\"Digital product preview\\\"\\n            className=\\\"h-full w-full object-contain transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n        </div>\\n\\n        <div className=\\\"flex flex-col\\\">\\n          <div className=\\\"mb-6\\\">\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold tracking-tight\\\">\\n                Premium UI Kit\\n              </h2>\\n              <Badge\\n                variant=\\\"secondary\\\"\\n                className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\"\\n              >\\n                Best Seller\\n              </Badge>\\n            </div>\\n            <p className=\\\"text-muted-foreground text-base leading-relaxed\\\">\\n              A comprehensive collection of beautifully crafted components and\\n              templates. Built with modern web technologies and best practices\\n              for seamless integration.\\n            </p>\\n          </div>\\n\\n          <div className=\\\"bg-muted/50 mb-6 flex items-center gap-6 rounded-lg p-4\\\">\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Star className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\" />\\n              <span className=\\\"text-sm font-semibold\\\">4.9/5</span>\\n              <span className=\\\"text-muted-foreground text-sm\\\">\\n                (127 reviews)\\n              </span>\\n            </div>\\n            <div className=\\\"bg-border h-4 w-px\\\" />\\n            <div className=\\\"flex items-center gap-2 text-sm\\\">\\n              <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              <span className=\\\"font-semibold\\\">1,234</span>\\n              <span className=\\\"text-muted-foreground\\\">sales</span>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"mb-6\\\">\\n            <p className=\\\"mb-4 text-lg font-semibold\\\">Choose your version</p>\\n            <RadioGroup defaultValue=\\\"React Version\\\" className=\\\"gap-3\\\">\\n              {data.map(({ name, desc, price, popular }) => (\\n                <div\\n                  key={name}\\n                  className=\\\"group/item bg-card hover:border-primary rounded-lg border transition-all hover:shadow-md\\\"\\n                >\\n                  <Label\\n                    htmlFor={name}\\n                    className=\\\"flex cursor-pointer items-start gap-4 p-4\\\"\\n                  >\\n                    <RadioGroupItem value={name} id={name} className=\\\"mt-1\\\" />\\n                    <div className=\\\"flex flex-1 items-center justify-between gap-4\\\">\\n                      <div className=\\\"flex-1\\\">\\n                        <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          {popular && (\\n                            <Badge className=\\\"bg-primary text-primary-foreground\\\">\\n                              Popular\\n                            </Badge>\\n                          )}\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                      </div>\\n                      <div className=\\\"text-right\\\">\\n                        <p className=\\\"text-2xl font-bold\\\">{price}</p>\\n                        <p className=\\\"text-muted-foreground text-xs\\\">\\n                          one-time\\n                        </p>\\n                      </div>\\n                    </div>\\n                  </Label>\\n                </div>\\n              ))}\\n            </RadioGroup>\\n          </div>\\n\\n          <div className=\\\"mt-auto flex flex-col gap-3 sm:flex-row\\\">\\n            <Button size=\\\"lg\\\" className=\\\"flex-1 gap-2\\\">\\n              <ShoppingCart className=\\\"h-4 w-4\\\" />\\n              Buy Now\\n            </Button>\\n            <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"flex-1 gap-2\\\">\\n              <Eye className=\\\"h-4 w-4\\\" />\\n              Live Preview\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-description-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-description/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronRight,\\n  Heart,\\n  RotateCcw,\\n  Shield,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst IMAGES = [\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-1.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-2.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-3.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-4.png\\\" },\\n]\\n\\nconst SIZES = [\\\"32\\\", \\\"34\\\", \\\"36\\\", \\\"38\\\", \\\"40\\\", \\\"42\\\", \\\"44\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n  { name: \\\"Navy\\\", hex: \\\"#1e3a8a\\\" },\\n  { name: \\\"Brown\\\", hex: \\\"#92400e\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Truck, text: \\\"Free shipping over $150\\\" },\\n  { icon: RotateCcw, text: \\\"Easy 30-day returns\\\" },\\n  { icon: Shield, text: \\\"1-year warranty\\\" },\\n]\\n\\nexport default function ProductDescription01() {\\n  const [active, setActive] = useState(\\n    \\\"https://v3.material-tailwind.com/coat-1.png\\\"\\n  )\\n  const [selectedSize, setSelectedSize] = useState(\\\"36\\\")\\n  const [selectedColor, setSelectedColor] = useState(\\\"Black\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <nav className=\\\"mb-8 flex items-center gap-2 text-sm text-neutral-500\\\">\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Home\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Women\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Outerwear\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <span className=\\\"text-neutral-900\\\">Premium Winter Coat</span>\\n        </nav>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <div className=\\\"overflow-hidden rounded-2xl bg-white\\\">\\n              <img\\n                src={active}\\n                alt=\\\"Product\\\"\\n                className=\\\"h-[500px] w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"mt-4 flex justify-center gap-3\\\">\\n              {IMAGES.map(({ imgelink }, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setActive(imgelink)}\\n                  className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                    active === imgelink\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={imgelink}\\n                    alt={`Gallery ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover object-center\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"mt-8 space-y-6\\\">\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Product Description\\n                </h3>\\n                <p className=\\\"leading-relaxed text-neutral-600\\\">\\n                  Experience luxury and comfort with this premium winter coat.\\n                  Crafted from high-quality materials with meticulous attention\\n                  to detail, this coat features a modern silhouette that\\n                  flatters all body types. The water-resistant outer shell keeps\\n                  you dry in light rain, while the insulated lining provides\\n                  warmth without bulk.\\n                </p>\\n              </div>\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Key Features\\n                </h3>\\n                <ul className=\\\"space-y-2 text-neutral-600\\\">\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Water-resistant fabric with breathable membrane technology\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Premium insulation for optimal warmth in cold weather\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>Adjustable cuffs and hem for personalized fit</span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Multiple interior and exterior pockets for storage\\n                    </span>\\n                  </li>\\n                </ul>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Limited Edition\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,290.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Elevate your winter wardrobe with this sophisticated coat that\\n              seamlessly blends style and functionality. Perfect for both\\n              professional settings and casual outings.\\n            </p>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Color\\n                </p>\\n                <Select value={selectedColor} onValueChange={setSelectedColor}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {COLORS.map((color) => (\\n                      <SelectItem key={color.name} value={color.name}>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <div\\n                            className=\\\"h-4 w-4 rounded-full border border-neutral-200\\\"\\n                            style={{ backgroundColor: color.hex }}\\n                          />\\n                          <span>{color.name}</span>\\n                        </div>\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Size\\n                </p>\\n                <Select value={selectedSize} onValueChange={setSelectedSize}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {SIZES.map((size) => (\\n                      <SelectItem key={size} value={size}>\\n                        {size}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-3\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex flex-col items-center gap-2 rounded-lg border border-neutral-200 bg-white p-4 text-center\\\"\\n                >\\n                  <feature.icon className=\\\"h-5 w-5 flex-shrink-0 text-neutral-900\\\" />\\n                  <span className=\\\"text-xs text-neutral-600\\\">\\n                    {feature.text}\\n                  </span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/dark-product-overview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dark-product-overview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, Shield, ShoppingCart, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"Features\\\",\\n    icon: Package,\\n    desc: `Premium cashmere blend with cable-knit pattern. Features a classic V-neck design, \\n    ribbed cuffs and hem for a perfect fit. Made with sustainable materials and ethically sourced \\n    fibers. Temperature-regulating properties keep you comfortable in any season.`,\\n  },\\n  {\\n    title: \\\"Product Care\\\",\\n    icon: Shield,\\n    desc: `Hand wash in cold water with mild detergent or dry clean for best results. \\n    Lay flat to dry, do not wring or twist. Store folded in a cool, dry place. \\n    Use a fabric shaver to remove any pilling. Steam gently to refresh between wears.`,\\n  },\\n  {\\n    title: \\\"Shipping\\\",\\n    icon: Truck,\\n    desc: `Free standard shipping on all orders over $100. Express shipping available at checkout. \\n    Orders are processed within 1-2 business days. International shipping available to select countries. \\n    30-day hassle-free returns and exchanges.`,\\n  },\\n]\\n\\nexport default function DarkProductOverview01() {\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"bg-primary container mx-auto rounded-2xl\\\">\\n      <div className=\\\"mx-auto max-w-6xl px-6 py-20 md:px-12\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"mb-4 border-white/30 bg-white/10 text-white\\\"\\n          >\\n            Shop Previewer\\n          </Badge>\\n          <h2 className=\\\"my-4 text-4xl font-bold tracking-tight text-white\\\">\\n            New Collection\\n          </h2>\\n          <p className=\\\"mx-auto max-w-3xl text-lg leading-relaxed text-white/80\\\">\\n            Easily preview furniture, decor, and more in your space, ensuring\\n            everything fits perfectly and looks just right. It&apos;s the\\n            ultimate tool for hassle-free home customization and design!\\n          </p>\\n        </div>\\n\\n        <div className=\\\"flex flex-col items-center justify-between gap-x-12 gap-y-12 lg:flex-row\\\">\\n          <div className=\\\"flex-1\\\">\\n            <div className=\\\"mb-4 flex items-center gap-3\\\">\\n              <h3 className=\\\"text-2xl font-bold text-white\\\">Elegant Suite</h3>\\n              <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex items-center gap-2\\\">\\n              <div className=\\\"flex items-center gap-1\\\">\\n                {[1, 2, 3, 4, 5].map((star) => (\\n                  <Star\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\"\\n                  />\\n                ))}\\n              </div>\\n              <span className=\\\"text-sm text-white/70\\\">(127 reviews)</span>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex items-baseline gap-3\\\">\\n              <p className=\\\"text-4xl font-bold text-white\\\">$449.90</p>\\n              <span className=\\\"text-lg text-white/50 line-through\\\">\\n                $599.90\\n              </span>\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-green-500/30 bg-green-500/10 text-green-400\\\"\\n              >\\n                25% OFF\\n              </Badge>\\n            </div>\\n\\n            <p className=\\\"mb-8 max-w-xl text-lg leading-relaxed text-white/80\\\">\\n              Add a touch of sophistication to your home with our handcrafted\\n              ceramic vase. Each piece is uniquely made, blending seamlessly\\n              into both modern and classic decors.\\n            </p>\\n\\n            <div className=\\\"mb-8 flex items-center gap-2 rounded-lg bg-white/10 p-4\\\">\\n              <Truck className=\\\"h-5 w-5 shrink-0 text-white\\\" />\\n              <span className=\\\"text-sm text-white\\\">\\n                Free shipping on orders over $100\\n              </span>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex w-full items-center gap-3\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 gap-2 bg-white text-black hover:bg-white/90 sm:w-64 sm:flex-none\\\"\\n              >\\n                <ShoppingCart className=\\\"h-5 w-5\\\" />\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"ghost\\\"\\n                className={`shrink-0 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-white/80 hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mt-12 max-w-2xl\\\">\\n              <Tabs defaultValue=\\\"Features\\\" className=\\\"w-full\\\">\\n                <TabsList className=\\\"h-auto w-full justify-start rounded-none border-b border-white/20 bg-transparent p-0\\\">\\n                  {DATA.map(({ title, icon: Icon }) => (\\n                    <TabsTrigger\\n                      key={title}\\n                      value={title}\\n                      className=\\\"gap-2 rounded-none px-4 py-3 text-white data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:bg-transparent data-[state=active]:shadow-none\\\"\\n                    >\\n                      <Icon className=\\\"h-4 w-4\\\" />\\n                      {title}\\n                    </TabsTrigger>\\n                  ))}\\n                </TabsList>\\n                {DATA.map(({ title, desc }) => (\\n                  <TabsContent\\n                    key={title}\\n                    value={title}\\n                    className=\\\"mt-6 text-white/80\\\"\\n                  >\\n                    <p className=\\\"leading-relaxed\\\">{desc}</p>\\n                  </TabsContent>\\n                ))}\\n              </Tabs>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"w-full lg:w-auto lg:max-w-lg\\\">\\n            <div className=\\\"group relative overflow-hidden rounded-2xl border-2 border-white/20 bg-white/5 p-4 shadow-2xl backdrop-blur-sm\\\">\\n              <img\\n                src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n                alt=\\\"Elegant Suite\\\"\\n                className=\\\"w-full rounded-xl transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/shopping-cart-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/shopping-cart/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Lock, Package, ShoppingBag, Tag, Truck, X } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst CHECKOUT_PRODUCTS = [\\n  {\\n    name: \\\"Wool Suit\\\",\\n    price: \\\"$1,300\\\",\\n    product: \\\"Silk\\\",\\n    size: \\\"XS\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n  {\\n    name: \\\"Premium Suit\\\",\\n    price: \\\"$700\\\",\\n    product: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n]\\n\\nexport default function ShoppingCart01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <Card className=\\\"rounded-2xl shadow-lg\\\">\\n          <CardHeader className=\\\"text-center\\\">\\n            <div className=\\\"mb-4 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"bg-primary/10 flex h-14 w-14 items-center justify-center rounded-full\\\">\\n                <ShoppingBag className=\\\"text-primary h-7 w-7\\\" />\\n              </div>\\n            </div>\\n            <CardTitle className=\\\"text-4xl\\\">Shopping Cart</CardTitle>\\n            <div className=\\\"mt-4 inline-flex items-center gap-2 rounded-full bg-green-50 px-5 py-2.5\\\">\\n              <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n              <p className=\\\"text-sm font-semibold text-green-700\\\">\\n                You are eligible for Free Shipping\\n              </p>\\n            </div>\\n          </CardHeader>\\n          <CardContent>\\n\\n            <div className=\\\"grid w-full grid-cols-1 gap-8 lg:grid-cols-3\\\">\\n              <div className=\\\"col-span-2\\\">\\n                <Card className=\\\"border-2\\\">\\n                  <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Package className=\\\"text-primary h-5 w-5\\\" />\\n                      <CardTitle className=\\\"text-xl\\\">\\n                        Cart Items ({CHECKOUT_PRODUCTS.length})\\n                      </CardTitle>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"p-0\\\">\\n                    {CHECKOUT_PRODUCTS.map(\\n                      ({ name, price, img, product, size, stock }, index) => (\\n                        <div key={index}>\\n                          <div className=\\\"p-6\\\">\\n                            <div className=\\\"flex flex-col items-stretch gap-6 sm:flex-row\\\">\\n                              <div className=\\\"bg-muted/50 h-36 w-36 shrink-0 overflow-hidden rounded-xl p-3\\\">\\n                                <img\\n                                  src={img}\\n                                  alt={name}\\n                                  className=\\\"h-full w-full object-cover\\\"\\n                                />\\n                              </div>\\n                              <div className=\\\"flex h-auto flex-1 flex-col gap-4\\\">\\n                                <div className=\\\"flex items-start justify-between gap-4\\\">\\n                                  <div className=\\\"flex-1\\\">\\n                                    <h4 className=\\\"text-xl font-bold\\\">\\n                                      {name}\\n                                    </h4>\\n                                    <p className=\\\"text-muted-foreground mt-1.5 text-sm\\\">\\n                                      {product}\\n                                    </p>\\n                                  </div>\\n                                  <Button\\n                                    size=\\\"icon\\\"\\n                                    variant=\\\"ghost\\\"\\n                                    className=\\\"text-muted-foreground hover:bg-destructive/10 hover:text-destructive h-9 w-9 rounded-full\\\"\\n                                  >\\n                                    <X className=\\\"h-5 w-5\\\" />\\n                                  </Button>\\n                                </div>\\n\\n                                <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n                                  <Badge\\n                                    variant=\\\"outline\\\"\\n                                    className=\\\"gap-1.5 px-3 py-1\\\"\\n                                  >\\n                                    <span className=\\\"text-xs\\\">Size:</span>\\n                                    <span className=\\\"font-semibold\\\">\\n                                      {size}\\n                                    </span>\\n                                  </Badge>\\n                                  <Badge className=\\\"gap-1.5 border-green-200 bg-green-50 px-3 py-1 text-green-700 hover:bg-green-100\\\">\\n                                    {stock}\\n                                  </Badge>\\n                                </div>\\n\\n                                <div className=\\\"mt-auto flex items-center justify-between\\\">\\n                                  <div className=\\\"flex items-center gap-3\\\">\\n                                    <span className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                                      Quantity:\\n                                    </span>\\n                                    <Select defaultValue=\\\"1\\\">\\n                                      <SelectTrigger className=\\\"h-10 w-28\\\">\\n                                        <SelectValue placeholder=\\\"Qty\\\" />\\n                                      </SelectTrigger>\\n                                      <SelectContent>\\n                                        <SelectItem value=\\\"1\\\">1</SelectItem>\\n                                        <SelectItem value=\\\"2\\\">2</SelectItem>\\n                                        <SelectItem value=\\\"3\\\">3</SelectItem>\\n                                        <SelectItem value=\\\"4\\\">4</SelectItem>\\n                                        <SelectItem value=\\\"5\\\">5</SelectItem>\\n                                      </SelectContent>\\n                                    </Select>\\n                                  </div>\\n                                  <p className=\\\"text-primary text-2xl font-bold\\\">\\n                                    {price}\\n                                  </p>\\n                                </div>\\n                              </div>\\n                            </div>\\n                          </div>\\n                          {index < CHECKOUT_PRODUCTS.length - 1 && (\\n                            <Separator />\\n                          )}\\n                        </div>\\n                      )\\n                    )}\\n                  </CardContent>\\n                </Card>\\n              </div>\\n\\n              <div className=\\\"col-span-1\\\">\\n                <div className=\\\"sticky top-4\\\">\\n                  <Card className=\\\"border-2\\\">\\n                    <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                      <CardTitle className=\\\"text-xl\\\">Order Summary</CardTitle>\\n                    </CardHeader>\\n                    <CardContent className=\\\"p-0\\\">\\n                      <div className=\\\"space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Subtotal\\n                          </span>\\n                          <span className=\\\"font-semibold\\\">$2,090</span>\\n                        </div>\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Shipping Tax\\n                          </span>\\n                          <span className=\\\"font-semibold text-green-600\\\">\\n                            $0\\n                          </span>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"p-6\\\">\\n                        <div className=\\\"mb-3 flex items-center gap-2\\\">\\n                          <Tag className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                          <label className=\\\"text-sm font-semibold\\\">\\n                            Promo Code\\n                          </label>\\n                        </div>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <Input\\n                            type=\\\"text\\\"\\n                            placeholder=\\\"Enter code\\\"\\n                            className=\\\"flex-1\\\"\\n                          />\\n                          <Button variant=\\\"outline\\\" className=\\\"shrink-0\\\">\\n                            Apply\\n                          </Button>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"bg-muted/30 space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                          <span className=\\\"text-primary text-3xl font-bold\\\">\\n                            $2,090\\n                          </span>\\n                        </div>\\n                        <Button className=\\\"w-full gap-2\\\" size=\\\"lg\\\">\\n                          <Lock className=\\\"h-5 w-5\\\" />\\n                          Proceed to Checkout\\n                        </Button>\\n                      </div>\\n                    </CardContent>\\n                    <CardFooter className=\\\"bg-green-50\\\">\\n                      <div className=\\\"flex items-start gap-3\\\">\\n                        <div className=\\\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-green-100\\\">\\n                          <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n                        </div>\\n                        <div>\\n                          <p className=\\\"font-semibold text-green-900\\\">\\n                            Free Shipping Applied\\n                          </p>\\n                          <p className=\\\"mt-1 text-sm text-green-700\\\">\\n                            Estimated delivery: 3-5 business days\\n                          </p>\\n                        </div>\\n                      </div>\\n                    </CardFooter>\\n                  </Card>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/checkout-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/checkout/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CreditCard,\\n  Lock,\\n  Mail,\\n  MapPin,\\n  Package,\\n  ShoppingBag,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    title: \\\"Classic Suit\\\",\\n    description: \\\"Silk\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$1,300\\\",\\n    quantity: 1,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    title: \\\"Premium Suit\\\",\\n    description: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$790\\\",\\n    quantity: 1,\\n  },\\n]\\n\\nconst PRICE_OPTIONS = [\\n  { value: \\\"Subtotal\\\", price: \\\"$2,090\\\" },\\n  { value: \\\"Shipping estimate\\\", price: \\\"$0\\\" },\\n  { value: \\\"Tax estimate\\\", price: \\\"$5\\\" },\\n]\\n\\nexport default function Checkout01() {\\n  return (\\n    <section className=\\\"container mx-auto px-4 py-12\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"mb-8\\\">\\n          <h1 className=\\\"text-3xl font-bold\\\">Checkout</h1>\\n          <p className=\\\"text-muted-foreground mt-2\\\">\\n            Complete your order by providing your payment details\\n          </p>\\n        </div>\\n\\n        <div className=\\\"rounded-2xl border bg-white p-6 shadow-lg md:p-8 lg:p-12 dark:bg-gray-950\\\">\\n          <div className=\\\"grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n            <div className=\\\"space-y-8\\\">\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Contact</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      We'll send order updates here\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\">Email Address</Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"you@example.com\\\"\\n                    className=\\\"h-11\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex items-start gap-2\\\">\\n                  <Checkbox id=\\\"terms\\\" className=\\\"mt-1\\\" />\\n                  <Label\\n                    htmlFor=\\\"terms\\\"\\n                    className=\\\"text-muted-foreground text-sm leading-relaxed\\\"\\n                  >\\n                    I agree to the{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Terms & Conditions\\n                    </a>{\\\" \\\"}\\n                    and{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Privacy Policy\\n                    </a>\\n                  </Label>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Shipping Address</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Where should we deliver your order?\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"address\\\">Street Address</Label>\\n                    <Input\\n                      id=\\\"address\\\"\\n                      placeholder=\\\"123 Main Street\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-3\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"city\\\">City</Label>\\n                      <Input\\n                        id=\\\"city\\\"\\n                        placeholder=\\\"New York\\\"\\n                        className=\\\"h-11\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"postal\\\">Postal Code</Label>\\n                      <Input id=\\\"postal\\\" placeholder=\\\"10001\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"country\\\">Country</Label>\\n                      <Input id=\\\"country\\\" placeholder=\\\"USA\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <CreditCard className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"flex-1\\\">\\n                    <h3 className=\\\"text-lg font-semibold\\\">Payment Details</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Your payment information is secure\\n                    </p>\\n                  </div>\\n                  <Badge\\n                    variant=\\\"outline\\\"\\n                    className=\\\"gap-1 border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                  >\\n                    <Lock className=\\\"h-3 w-3\\\" />\\n                    Secure\\n                  </Badge>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"card\\\">Card Number</Label>\\n                    <Input\\n                      id=\\\"card\\\"\\n                      placeholder=\\\"1234 5678 9012 3456\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"expiry\\\">Expiration Date</Label>\\n                      <Input id=\\\"expiry\\\" placeholder=\\\"MM/YY\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"cvv\\\">CVV</Label>\\n                      <Input id=\\\"cvv\\\" placeholder=\\\"123\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Button className=\\\"mt-4 h-12 w-full text-base\\\" size=\\\"lg\\\">\\n                <Lock className=\\\"mr-2 h-4 w-4\\\" />\\n                Place Order - $2,095\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"lg:sticky lg:top-8 lg:h-fit\\\">\\n              <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <ShoppingBag className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <h2 className=\\\"text-xl font-bold\\\">Order Summary</h2>\\n                </div>\\n\\n                <div className=\\\"space-y-4\\\">\\n                  {OPTIONS.map(\\n                    (\\n                      { image, title, description, size, price, quantity },\\n                      index\\n                    ) => (\\n                      <div\\n                        key={index}\\n                        className=\\\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\\\"\\n                      >\\n                        <div className=\\\"relative h-20 w-20 overflow-hidden rounded-md border\\\">\\n                          <img\\n                            src={image}\\n                            alt={title}\\n                            className=\\\"h-full w-full object-cover p-1\\\"\\n                          />\\n                        </div>\\n                        <div className=\\\"flex-1 space-y-1\\\">\\n                          <p className=\\\"leading-tight font-semibold\\\">{title}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {description} · Size {size}\\n                          </p>\\n                          <p className=\\\"text-muted-foreground text-xs\\\">\\n                            Qty: {quantity}\\n                          </p>\\n                        </div>\\n                        <p className=\\\"font-semibold\\\">{price}</p>\\n                      </div>\\n                    )\\n                  )}\\n                </div>\\n\\n                <Separator className=\\\"my-6\\\" />\\n\\n                <div className=\\\"space-y-3\\\">\\n                  {PRICE_OPTIONS.map(({ value, price }) => (\\n                    <div key={value} className=\\\"flex justify-between text-sm\\\">\\n                      <span className=\\\"text-muted-foreground\\\">{value}</span>\\n                      <span className=\\\"font-medium\\\">{price}</span>\\n                    </div>\\n                  ))}\\n                </div>\\n\\n                <Separator className=\\\"my-4\\\" />\\n\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <span className=\\\"text-lg font-bold\\\">Total</span>\\n                  <span className=\\\"text-2xl font-bold\\\">$2,095</span>\\n                </div>\\n\\n                <div className=\\\"bg-muted/50 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                  <Package className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                  <div className=\\\"space-y-1\\\">\\n                    <p className=\\\"text-sm font-medium\\\">Free Shipping</p>\\n                    <p className=\\\"text-muted-foreground text-xs\\\">\\n                      Your order qualifies for free standard shipping\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/complex-product-description-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/complex-product-description/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, RefreshCw, Shield, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-4.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Package, text: \\\"Premium quality materials\\\" },\\n  { icon: Truck, text: \\\"Free shipping on orders $100+\\\" },\\n  { icon: RefreshCw, text: \\\"30-day return policy\\\" },\\n  { icon: Shield, text: \\\"2-year warranty included\\\" },\\n]\\n\\nconst ACCORDION_DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"Features\\\",\\n    desc: \\\"This premium coat is crafted from weather-resistant fabric with advanced Gore-Tex technology, ensuring you stay dry and comfortable in all conditions. Features include adjustable cuffs, reinforced seams, and breathable lining.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"Product Care\\\",\\n    desc: \\\"Machine wash cold with like colors. Use mild detergent and avoid bleach. Tumble dry on low heat or hang to dry. For best results, store in a cool, dry place and avoid direct sunlight to maintain color and fabric integrity.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"Shipping & Returns\\\",\\n    desc: \\\"Free standard shipping on orders over $100. Express shipping available at checkout. We offer a 30-day return policy with free returns. Items must be unworn, unwashed, and in original packaging with tags attached.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Warranty\\\",\\n    desc: \\\"All our products come with a comprehensive 2-year warranty covering manufacturing defects. This includes issues with stitching, zippers, and fabric quality. Contact our customer service for warranty claims and support.\\\",\\n  },\\n]\\n\\nexport default function ComplexProductDescription01() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(0)\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div className=\\\"flex flex-col-reverse lg:flex-row lg:gap-4\\\">\\n            <div className=\\\"mt-4 flex gap-2 lg:mt-0 lg:flex-col\\\">\\n              {IMAGES.map((img, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setSelectedImage(index)}\\n                  className={`h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg border-2 transition-all ${\\n                    selectedImage === index\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={img}\\n                    alt={`Product view ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex-1\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={IMAGES[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              New Arrival\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,490.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Experience unparalleled comfort and style with our premium winter\\n              coat. Meticulously crafted with attention to detail, this coat\\n              features weather-resistant fabric and a timeless design that\\n              complements any wardrobe. Perfect for both casual and formal\\n              occasions.\\n            </p>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {COLORS[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {COLORS.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Size: <span className=\\\"font-normal\\\">{selectedSize}</span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <button\\n                    key={size}\\n                    onClick={() => setSelectedSize(size)}\\n                    className={`flex h-10 w-12 items-center justify-center rounded-md border-2 text-sm font-medium transition-all ${\\n                      selectedSize === size\\n                        ? \\\"border-neutral-900 bg-neutral-900 text-white\\\"\\n                        : \\\"border-neutral-200 bg-white text-neutral-900 hover:border-neutral-400\\\"\\n                    }`}\\n                  >\\n                    {size}\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-3 sm:grid-cols-2\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4 flex-shrink-0\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <Accordion\\n              type=\\\"single\\\"\\n              defaultValue=\\\"one\\\"\\n              collapsible\\n              className=\\\"w-full border-t border-neutral-200\\\"\\n            >\\n              {ACCORDION_DATA.map(({ value, title, desc }) => (\\n                <AccordionItem key={value} value={value}>\\n                  <AccordionTrigger className=\\\"text-sm font-medium text-neutral-900 hover:text-neutral-600\\\">\\n                    {title}\\n                  </AccordionTrigger>\\n                  <AccordionContent className=\\\"text-sm leading-relaxed text-neutral-600\\\">\\n                    {desc}\\n                  </AccordionContent>\\n                </AccordionItem>\\n              ))}\\n            </Accordion>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/interactive-product-preview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/interactive-product-preview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Eye,\\n  Heart,\\n  Minus,\\n  Plus,\\n  ShoppingCart,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function InteractiveProductPreview01() {\\n  const [quantity, setQuantity] = useState(1)\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Badge\\n          variant=\\\"outline\\\"\\n          className=\\\"border-primary/30 bg-primary/10 text-primary mb-4\\\"\\n        >\\n          Room Previewer\\n        </Badge>\\n        <h2 className=\\\"my-4 text-4xl font-bold tracking-tight\\\">\\n          Visualize Your Space\\n        </h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg leading-relaxed\\\">\\n          Easily preview furniture, decor, and more in your space, ensuring\\n          everything fits perfectly and looks just right. It&apos;s the ultimate\\n          tool for hassle-free home customization and design!\\n        </p>\\n      </div>\\n\\n      <div className=\\\"container mx-auto mt-14\\\">\\n        <div className=\\\"relative\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/room.png\\\"\\n            alt=\\\"Room preview\\\"\\n            className=\\\"h-[680px] w-full rounded-2xl object-cover object-center shadow-2xl\\\"\\n          />\\n          <div className=\\\"absolute inset-0 h-full w-full rounded-2xl bg-gradient-to-tr from-black/30 via-black/10 to-transparent\\\" />\\n\\n          <div className=\\\"absolute top-6 right-6 bottom-6 left-6 !ml-auto flex max-w-[26rem] flex-col justify-between rounded-2xl border border-white/30 bg-white/90 px-6 py-6 shadow-2xl backdrop-blur-xl dark:bg-gray-900/90\\\">\\n            <div>\\n              <div className=\\\"mb-4 flex items-start justify-between\\\">\\n                <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  className={`h-9 w-9 transition-colors ${\\n                    isFavorite\\n                      ? \\\"text-red-500 hover:text-red-600\\\"\\n                      : \\\"text-muted-foreground hover:text-red-500\\\"\\n                  }`}\\n                  onClick={() => setIsFavorite(!isFavorite)}\\n                >\\n                  <Heart\\n                    className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                  />\\n                </Button>\\n              </div>\\n\\n              <div className=\\\"mx-auto mb-6 grid place-items-center\\\">\\n                <div className=\\\"bg-muted/50 mb-4 rounded-xl p-6\\\">\\n                  <img\\n                    src=\\\"https://v3.material-tailwind.com/vase.svg\\\"\\n                    alt=\\\"Vase\\\"\\n                    className=\\\"h-32 w-32\\\"\\n                  />\\n                </div>\\n                <h3 className=\\\"text-2xl font-bold\\\">Elegant Ceramic Vase</h3>\\n\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {[1, 2, 3, 4, 5].map((star) => (\\n                      <Star\\n                        key={star}\\n                        className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                      />\\n                    ))}\\n                  </div>\\n                  <span className=\\\"text-muted-foreground text-sm\\\">\\n                    (127 reviews)\\n                  </span>\\n                </div>\\n\\n                <div className=\\\"mt-4 flex items-baseline gap-2\\\">\\n                  <p className=\\\"text-3xl font-bold\\\">$149.90</p>\\n                  <span className=\\\"text-muted-foreground text-sm line-through\\\">\\n                    $199.90\\n                  </span>\\n                </div>\\n              </div>\\n\\n              <p className=\\\"text-muted-foreground mx-auto max-w-xs text-center text-sm leading-relaxed\\\">\\n                Add a touch of sophistication to your home with our handcrafted\\n                ceramic vase.\\n              </p>\\n\\n              <div className=\\\"bg-muted/50 mb-2 flex items-center justify-center gap-2 rounded-lg py-3\\\">\\n                <Truck className=\\\"h-4 w-4 text-green-600 dark:text-green-400\\\" />\\n                <span className=\\\"text-sm font-medium\\\">\\n                  Free shipping on orders over $100\\n                </span>\\n              </div>\\n\\n              <div className=\\\"mb-4 flex items-center justify-center gap-3\\\">\\n                <span className=\\\"text-sm font-medium\\\">Quantity:</span>\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(Math.max(1, quantity - 1))}\\n                  >\\n                    <Minus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                  <span className=\\\"w-8 text-center font-semibold\\\">\\n                    {quantity}\\n                  </span>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(quantity + 1)}\\n                  >\\n                    <Plus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <Button className=\\\"flex-1 gap-2\\\" size=\\\"lg\\\">\\n                  <ShoppingCart className=\\\"h-4 w-4\\\" />\\n                  Add to Cart\\n                </Button>\\n                <Button variant=\\\"outline\\\" size=\\\"lg\\\" className=\\\"shrink-0 gap-2\\\">\\n                  <Eye className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"absolute hidden lg:flex\\\">\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[17rem] -translate-y-[30rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Ceramic Vase\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[26rem] -translate-y-[26rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Wall Art\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[5rem] -translate-y-[21rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Table Lamp\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/order-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useState } from \\\"react\\\"\\nimport {\\n  Archive,\\n  CheckCircle,\\n  Clock,\\n  FileText,\\n  Home,\\n  Mail,\\n  MapPin,\\n  Package,\\n  Phone,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  { title: \\\"Subtotal\\\", value: \\\"$1,780.00\\\" },\\n  { title: \\\"Shipping estimate\\\", value: \\\"$0\\\" },\\n  { title: \\\"Tax estimate\\\", value: \\\"$5\\\" },\\n]\\n\\nexport default function OrderDetails01() {\\n  const [step, setStep] = useState(\\\"3\\\")\\n  const [isVertical, setIsVertical] = useState(false)\\n\\n  useEffect(() => {\\n    const handleResize = () => {\\n      setIsVertical(window.innerWidth <= 768)\\n    }\\n    handleResize()\\n    window.addEventListener(\\\"resize\\\", handleResize)\\n    return () => window.removeEventListener(\\\"resize\\\", handleResize)\\n  }, [])\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold\\\">Order #1234</h2>\\n              <Badge className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\">\\n                In Transit\\n              </Badge>\\n            </div>\\n            <div className=\\\"flex items-center gap-4 text-sm\\\">\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Clock className=\\\"h-4 w-4\\\" />\\n                <span>\\n                  Placed on <span className=\\\"font-semibold\\\">April 1, 2024</span>\\n                </span>\\n              </div>\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Package className=\\\"h-4 w-4\\\" />\\n                <span className=\\\"font-semibold\\\">1 item</span>\\n              </div>\\n            </div>\\n          </div>\\n          <Button className=\\\"gap-2\\\">\\n            <FileText className=\\\"h-4 w-4\\\" />\\n            View Invoice\\n          </Button>\\n        </div>\\n\\n        <Card className=\\\"shadow-lg\\\">\\n          <CardHeader className=\\\"grid w-full grid-cols-1 gap-8 border-b p-6 md:grid-cols-2\\\">\\n            <div className=\\\"flex gap-4\\\">\\n              <div className=\\\"bg-muted/30 relative h-32 w-32 overflow-hidden rounded-xl border p-2 md:h-40 md:w-40\\\">\\n                <img\\n                  src=\\\"https://v3.material-tailwind.com/coat-2.png\\\"\\n                  alt=\\\"Premium Suit\\\"\\n                  className=\\\"h-full w-full object-contain\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-1 flex-col justify-between\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Premium Suit</h3>\\n                  <p className=\\\"text-2xl font-bold\\\">$790</p>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    The time is now for it to be okay to be great. People in\\n                    this world shun people for being great.\\n                  </p>\\n                </div>\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <Badge variant=\\\"outline\\\">Size: M</Badge>\\n                  <Badge variant=\\\"outline\\\">Qty: 1</Badge>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Delivery Address</p>\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                  362 Ridgewood Avenue\\n                  <br />\\n                  Alaska 99669, USA\\n                </p>\\n              </div>\\n\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Shipping Updates</p>\\n                </div>\\n                <div className=\\\"space-y-1 text-sm\\\">\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Mail className=\\\"h-3.5 w-3.5\\\" />\\n                    michael@email.com\\n                  </p>\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Phone className=\\\"h-3.5 w-3.5\\\" />\\n                    (307) 682-8835\\n                  </p>\\n                </div>\\n                <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"mt-2\\\">\\n                  Edit Contact\\n                </Button>\\n              </div>\\n            </div>\\n          </CardHeader>\\n\\n          <CardContent className=\\\"w-full p-6 sm:p-8\\\">\\n            <div className=\\\"flex flex-col gap-8 lg:flex-row\\\">\\n              <div className=\\\"flex-1\\\">\\n                <h3 className=\\\"mb-6 text-lg font-semibold\\\">Order Timeline</h3>\\n                <div className=\\\"space-y-6\\\">\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Home className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Placed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order was placed on April 1, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <CheckCircle className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Confirmed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been confirmed on April 2, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Archive className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-border my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Shipped</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-blue-500/30 bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400\\\"\\n                        >\\n                          In Progress\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been shipped on April 3, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-muted flex h-10 w-10 items-center justify-center rounded-full border-2 border-dashed\\\">\\n                        <Truck className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                      </div>\\n                    </div>\\n                    <div>\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"text-muted-foreground font-semibold\\\">\\n                          Order Delivered\\n                        </p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          Pending\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Expected delivery on April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator className=\\\"lg:hidden\\\" />\\n\\n              <div className=\\\"w-full lg:w-80\\\">\\n                <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                  <h3 className=\\\"mb-4 text-lg font-semibold\\\">Order Summary</h3>\\n                  <div className=\\\"space-y-3\\\">\\n                    {OPTIONS.map(({ title, value }) => (\\n                      <div key={title} className=\\\"flex justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">{title}</span>\\n                        <span className=\\\"font-medium\\\">{value}</span>\\n                      </div>\\n                    ))}\\n                  </div>\\n                  <Separator className=\\\"my-4\\\" />\\n                  <div className=\\\"flex items-center justify-between\\\">\\n                    <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                    <span className=\\\"text-2xl font-bold\\\">$1,785.00</span>\\n                  </div>\\n\\n                  <div className=\\\"bg-primary/10 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                    <Truck className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                    <div className=\\\"space-y-1\\\">\\n                      <p className=\\\"text-sm font-medium\\\">Track Your Order</p>\\n                      <p className=\\\"text-muted-foreground text-xs\\\">\\n                        Estimated delivery: April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Heart } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\"]\\n\\nexport default function ProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"S\\\")\\n  const [currentIndex, setCurrentIndex] = useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentIndex((prev) => (prev + 1) % IMAGES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentIndex((prev) => (prev - 1 + IMAGES.length) % IMAGES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <nav className=\\\"mb-4 flex text-sm\\\">\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Store\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Designers\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <span className=\\\"text-foreground\\\">Pink Blouse</span>\\n        </nav>\\n        <div className=\\\"mt-4 grid grid-cols-1 items-center gap-10 md:grid-cols-2\\\">\\n          <div>\\n            <Card className=\\\"py-10\\\">\\n              <CardContent className=\\\"relative p-0\\\">\\n                <div className=\\\"overflow-hidden\\\">\\n                  <img\\n                    src={IMAGES[currentIndex]}\\n                    alt={`Product ${currentIndex + 1}`}\\n                    className=\\\"mx-auto h-[30rem] object-cover transition-transform duration-300\\\"\\n                  />\\n                </div>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={prevSlide}\\n                  className=\\\"absolute top-1/2 left-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronLeft className=\\\"h-7 w-7\\\" />\\n                </Button>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={nextSlide}\\n                  className=\\\"absolute top-1/2 right-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronRight className=\\\"h-7 w-7\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          </div>\\n          <div className=\\\"text-center\\\">\\n            <h2 className=\\\"mb-6 text-2xl font-bold\\\">Pink Blouse</h2>\\n            <p className=\\\"text-primary text-2xl font-semibold\\\">$1,290</p>\\n            <div className=\\\"my-8 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <span className=\\\"text-sm font-semibold\\\">100 Reviews</span>\\n            </div>\\n            <p className=\\\"text-muted-foreground [text-wrap:_balance]\\\">\\n              There&apos;s nothing I really wanted to do in life that I\\n              wasn&apos;t able to get good at. That&apos;s my skill. I&apos;m\\n              not really specifically talented at anything except for the\\n              ability to learn.\\n            </p>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Color\\n            </h3>\\n            <div className=\\\"flex justify-center gap-2\\\">\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded bg-black\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-white\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-gray-200\\\" />\\n            </div>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Size\\n            </h3>\\n            <div className=\\\"flex items-center justify-center gap-4\\\">\\n              {SIZES.map((size) => (\\n                <Button\\n                  key={size}\\n                  onClick={() => setSelectedSize(size)}\\n                  variant={size === selectedSize ? \\\"default\\\" : \\\"outline\\\"}\\n                >\\n                  {size}\\n                </Button>\\n              ))}\\n            </div>\\n            <div className=\\\"my-6 flex items-center justify-center gap-2\\\">\\n              <Button size=\\\"lg\\\" className=\\\"w-full max-w-60\\\">\\n                Add to Cart\\n              </Button>\\n              <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"text-red-500\\\">\\n                <Heart className=\\\"h-5 w-5\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-listing-filters-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-listing-filters/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst FILTERS = [\\n  {\\n    id: \\\"categories\\\",\\n    label: \\\"Categories\\\",\\n    options: [\\\"All\\\", \\\"Shirts\\\", \\\"Pants\\\", \\\"Sweaters\\\", \\\"Jackets\\\"],\\n  },\\n  {\\n    id: \\\"size\\\",\\n    label: \\\"Size\\\",\\n    options: [\\\"All Sizes\\\", \\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"],\\n  },\\n  {\\n    id: \\\"material\\\",\\n    label: \\\"Material\\\",\\n    options: [\\\"All Materials\\\", \\\"Cotton\\\", \\\"Cashmere\\\", \\\"Wool\\\", \\\"Silk\\\", \\\"Linen\\\"],\\n  },\\n  {\\n    id: \\\"color\\\",\\n    label: \\\"Color\\\",\\n    options: [\\\"All Colors\\\", \\\"Black\\\", \\\"Blue\\\", \\\"Gray\\\", \\\"Brown\\\", \\\"White\\\", \\\"Navy\\\"],\\n  },\\n  {\\n    id: \\\"pattern\\\",\\n    label: \\\"Pattern\\\",\\n    options: [\\\"All Patterns\\\", \\\"Solid\\\", \\\"Striped\\\", \\\"Cable-knit\\\", \\\"Printed\\\"],\\n  },\\n]\\n\\nconst PRODUCTS = [\\n  {\\n    id: 1,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cable-knit cashmere cardigan\\\",\\n    price: \\\"€3,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 2,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cotton and cashmere shirt\\\",\\n    price: \\\"€675\\\",\\n    badge: null,\\n  },\\n  {\\n    id: 3,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1737608734653-d1eaad541d46?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1027\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Wool straight pants\\\",\\n    price: \\\"€1,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 4,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cashmere sweater\\\",\\n    price: \\\"€1,950\\\",\\n    badge: \\\"New Arrival\\\",\\n  },\\n]\\n\\nexport default function ProductListingFilters01() {\\n  const [favorites, setFavorites] = useState<number[]>([])\\n  const [selectedFilters, setSelectedFilters] = useState<\\n    Record<string, string>\\n  >({})\\n\\n  const toggleFavorite = (productId: number) => {\\n    setFavorites((prev) =>\\n      prev.includes(productId)\\n        ? prev.filter((id) => id !== productId)\\n        : [...prev, productId]\\n    )\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-center justify-between gap-4\\\">\\n          <div className=\\\"flex flex-wrap gap-2\\\">\\n            {FILTERS.map((filter) => (\\n              <Select\\n                key={filter.id}\\n                value={selectedFilters[filter.id] || filter.options[0]}\\n                onValueChange={(value) =>\\n                  setSelectedFilters((prev) => ({\\n                    ...prev,\\n                    [filter.id]: value,\\n                  }))\\n                }\\n              >\\n                <SelectTrigger className=\\\"w-[140px]\\\">\\n                  <SelectValue placeholder={filter.label} />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {filter.options.map((option) => (\\n                    <SelectItem key={option} value={option}>\\n                      {option}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            ))}\\n          </div>\\n          <div className=\\\"flex items-center gap-4\\\">\\n            <span className=\\\"text-muted-foreground text-sm\\\">462 Products</span>\\n            <Select defaultValue=\\\"featured\\\">\\n              <SelectTrigger className=\\\"w-[180px]\\\">\\n                <SelectValue placeholder=\\\"Sort by\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"featured\\\">Featured</SelectItem>\\n                <SelectItem value=\\\"price-low\\\">Price: Low to High</SelectItem>\\n                <SelectItem value=\\\"price-high\\\">Price: High to Low</SelectItem>\\n                <SelectItem value=\\\"newest\\\">Newest</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {PRODUCTS.map((product) => (\\n            <div\\n              key={product.id}\\n              className=\\\"group bg-card relative overflow-hidden rounded-lg border transition-all hover:shadow-lg\\\"\\n            >\\n              {product.badge && (\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute top-3 left-3 z-10 bg-white dark:bg-gray-900\\\"\\n                >\\n                  {product.badge}\\n                </Badge>\\n              )}\\n              <button\\n                onClick={() => toggleFavorite(product.id)}\\n                className=\\\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/90 backdrop-blur-sm transition-colors hover:bg-white dark:bg-gray-900/90 dark:hover:bg-gray-900\\\"\\n              >\\n                <Heart\\n                  className={`h-4 w-4 transition-colors ${\\n                    favorites.includes(product.id)\\n                      ? \\\"fill-red-500 text-red-500\\\"\\n                      : \\\"text-gray-600 dark:text-gray-400\\\"\\n                  }`}\\n                />\\n              </button>\\n\\n              <div className=\\\"bg-muted/30 aspect-square overflow-hidden\\\">\\n                <img\\n                  src={product.image}\\n                  alt={product.name}\\n                  className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                />\\n              </div>\\n\\n              <div className=\\\"border-t p-4\\\">\\n                <div className=\\\"mb-2 flex items-start justify-between gap-2\\\">\\n                  <div className=\\\"flex-1\\\">\\n                    <p className=\\\"text-sm font-semibold\\\">{product.brand}</p>\\n                    <p className=\\\"text-muted-foreground mt-1 text-sm leading-tight\\\">\\n                      {product.name}\\n                    </p>\\n                  </div>\\n                </div>\\n                <p className=\\\"mt-2 font-semibold\\\">{product.price}</p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ecommerce-sections-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useRef, useState } from \\\"react\\\"\\nimport { Pause, Play, ShoppingBag, Shuffle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    id: \\\"card-1\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1595777457583-95e059d581b8?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Satin Wrap Dress product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Maison Aurore\\\",\\n    title: \\\"Satin Wrap Dress\\\",\\n    description: \\\"Fluid silhouette with tie waist and soft sheen.\\\",\\n    price: \\\"$215.00\\\",\\n  },\\n  {\\n    id: \\\"card-2\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1591369822096-ffd140ec948f?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Structured Blazer product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Atelier No. 9\\\",\\n    title: \\\"Structured Blazer\\\",\\n    description: \\\"Sharp shoulders, single-breasted, polished finish.\\\",\\n    price: \\\"$329.00\\\",\\n  },\\n  {\\n    id: \\\"card-3\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1543163521-1bf539c55dd2?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Chunky Chelsea Boots product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Linea Forte\\\",\\n    title: \\\"Chunky Chelsea Boots\\\",\\n    description: \\\"Elevated lug sole with elastic side panels.\\\",\\n    price: \\\"From $180.00\\\",\\n  },\\n]\\n\\nexport default function EcommerceSectionsBlock() {\\n  const [isPlaying, setIsPlaying] = useState(true)\\n  const playerRef = useRef<any>(null)\\n  const [playerReady, setPlayerReady] = useState(false)\\n\\n  useEffect(() => {\\n    const tag = document.createElement(\\\"script\\\")\\n    tag.src = \\\"https://www.youtube.com/iframe_api\\\"\\n    const firstScriptTag = document.getElementsByTagName(\\\"script\\\")[0]\\n    firstScriptTag.parentNode?.insertBefore(tag, firstScriptTag)\\n    ;(window as any).onYouTubeIframeAPIReady = () => {\\n      playerRef.current = new (window as any).YT.Player(\\\"youtube-player\\\", {\\n        videoId: \\\"YCIuEU2y8XI\\\",\\n        playerVars: {\\n          autoplay: 1,\\n          mute: 1,\\n          loop: 1,\\n          playlist: \\\"YCIuEU2y8XI\\\",\\n          controls: 0,\\n          showinfo: 0,\\n          modestbranding: 1,\\n          playsinline: 1,\\n        },\\n        events: {\\n          onReady: () => {\\n            setPlayerReady(true)\\n          },\\n        },\\n      })\\n    }\\n\\n    return () => {\\n      if (playerRef.current) {\\n        playerRef.current.destroy()\\n      }\\n    }\\n  }, [])\\n\\n  const togglePlay = () => {\\n    if (playerRef.current && playerReady) {\\n      if (isPlaying) {\\n        playerRef.current.pauseVideo()\\n      } else {\\n        playerRef.current.playVideo()\\n      }\\n      setIsPlaying(!isPlaying)\\n    }\\n  }\\n\\n  return (\\n    <section className=\\\"relative w-full overflow-hidden rounded-xl\\\">\\n      <div className=\\\"relative aspect-[16/9] w-full lg:aspect-[16/9]\\\">\\n        <div\\n          id=\\\"youtube-player\\\"\\n          className=\\\"absolute inset-0 h-full w-full rounded-xl\\\"\\n          style={{\\n            pointerEvents: \\\"none\\\",\\n          }}\\n        />\\n\\n        <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\\\" />\\n\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"absolute top-4 left-4 rounded-full bg-black/50 text-white backdrop-blur-sm hover:bg-black/70 hover:text-white lg:top-6 lg:left-6\\\"\\n          onClick={togglePlay}\\n        >\\n          {isPlaying ? (\\n            <Pause className=\\\"h-4 w-4\\\" />\\n          ) : (\\n            <Play className=\\\"h-4 w-4\\\" />\\n          )}\\n        </Button>\\n\\n        <div className=\\\"absolute inset-x-0 bottom-0 space-y-6 p-4 lg:p-8\\\">\\n          <div className=\\\"mx-auto grid max-w-6xl gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {PRODUCTS.map((product) => (\\n              <div\\n                key={product.id}\\n                className=\\\"flex items-center gap-4 rounded-2xl bg-white p-4 shadow-lg dark:bg-white/95\\\"\\n              >\\n                <div className=\\\"h-16 w-16 flex-shrink-0 overflow-hidden rounded-lg\\\">\\n                  <img\\n                    src={product.media.src}\\n                    alt={product.media.alt}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </div>\\n\\n                <div className=\\\"min-w-0 flex-1\\\">\\n                  <p className=\\\"text-xs font-medium tracking-wide text-gray-500 uppercase\\\">\\n                    {product.eyebrow}\\n                  </p>\\n                  <h3 className=\\\"truncate font-semibold text-gray-900\\\">\\n                    {product.title}\\n                  </h3>\\n                  <p className=\\\"font-semibold text-gray-900\\\">{product.price}</p>\\n                </div>\\n\\n                <div className=\\\"flex flex-shrink-0 items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <ShoppingBag className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <Shuffle className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex justify-center\\\">\\n            <Button\\n              variant=\\\"outline\\\"\\n              size=\\\"lg\\\"\\n              className=\\\"rounded-full border-white/80 bg-white/10 px-8 text-white backdrop-blur-sm hover:bg-white/20 hover:text-white\\\"\\n            >\\n              VIEW ALL PRODUCTS\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ecommerce-sections-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronDown,\\n  MapPin,\\n  Package,\\n  Ruler,\\n  ShoppingBag,\\n  Star,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EcommerceSections02() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(1)\\n  const [isInfoOpen, setIsInfoOpen] = useState(false)\\n\\n  const thumbnails = [\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+1`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+2`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Detail`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Inside`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Model`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Lifestyle`,\\n  ]\\n\\n  const colors = [\\n    { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n    { name: \\\"Cream\\\", hex: \\\"#f5f0e8\\\" },\\n    { name: \\\"Forest Green\\\", hex: \\\"#7d9488\\\" },\\n    { name: \\\"Gray\\\", hex: \\\"#9ca3af\\\" },\\n    { name: \\\"Navy Blue\\\", hex: \\\"#0f172a\\\" },\\n    { name: \\\"Brown\\\", hex: \\\"#a0522d\\\" },\\n  ]\\n\\n  const features = [\\n    { icon: ShoppingBag, text: \\\"Crossbody style\\\" },\\n    { icon: Package, text: \\\"Premium leather\\\" },\\n    { icon: Ruler, text: \\\"Adjustable strap\\\" },\\n    { icon: MapPin, text: \\\"Crafted in France\\\" },\\n  ]\\n\\n  return (\\n    <div className=\\\"min-h-screen bg-neutral-50 p-4 sm:p-8\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"grid gap-8 lg:grid-cols-[auto_1fr_1fr] lg:gap-12\\\">\\n          <div className=\\\"hidden lg:flex lg:flex-col lg:gap-3\\\">\\n            {thumbnails.map((thumb, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setSelectedImage(index)}\\n                className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                  selectedImage === index\\n                    ? \\\"border-neutral-900\\\"\\n                    : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                }`}\\n              >\\n                <img\\n                  src={thumb}\\n                  alt={`Product view ${index + 1}`}\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </button>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex items-start justify-center\\\">\\n            <div className=\\\"w-full max-w-lg\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={thumbnails[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </div>\\n              <div className=\\\"mt-4 flex gap-2 lg:hidden\\\">\\n                {thumbnails.slice(0, 4).map((thumb, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedImage(index)}\\n                    className={`h-16 w-16 overflow-hidden rounded-lg border-2 ${\\n                      selectedImage === index\\n                        ? \\\"border-neutral-900\\\"\\n                        : \\\"border-neutral-200\\\"\\n                    }`}\\n                  >\\n                    <img\\n                      src={thumb}\\n                      alt={`Thumbnail ${index + 1}`}\\n                      className=\\\"h-full w-full object-cover\\\"\\n                    />\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Trending Now\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Artisan Leather Crossbody\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $385.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-900 text-neutral-900\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(4.7)</span>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {colors[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {colors.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-4 text-sm leading-relaxed text-neutral-600\\\">\\n              Elegant crossbody bag crafted from premium vegetable-tanned\\n              leather with a minimalist silhouette. Features a secure magnetic\\n              clasp closure, interior zip compartment, and an adjustable\\n              shoulder strap for versatile wear.\\n            </p>\\n\\n            <p className=\\\"mb-6 text-sm text-neutral-600\\\">\\n              This is a demo store. To buy this product, visit{\\\" \\\"}\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"font-medium text-neutral-900 underline underline-offset-2 hover:text-neutral-700\\\"\\n              >\\n                Maison Atelier\\n              </a>{\\\" \\\"}\\n              official store.\\n            </p>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 border-neutral-900 text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Buy it Now\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-2 gap-3\\\">\\n              {features.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"border-t border-neutral-200\\\">\\n              <button\\n                onClick={() => setIsInfoOpen(!isInfoOpen)}\\n                className=\\\"flex w-full items-center justify-between py-4 text-sm font-medium text-neutral-900 hover:text-neutral-600\\\"\\n              >\\n                More Information\\n                <ChevronDown\\n                  className={`h-4 w-4 transition-transform ${\\n                    isInfoOpen ? \\\"rotate-180\\\" : \\\"\\\"\\n                  }`}\\n                />\\n              </button>\\n              {isInfoOpen && (\\n                <div className=\\\"pb-4 text-sm leading-relaxed text-neutral-600\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Materials & Care:</strong> This bag is made from\\n                    100% full-grain vegetable-tanned leather that develops a\\n                    beautiful patina over time. Clean with a soft, dry cloth and\\n                    condition regularly with leather cream.\\n                  </p>\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Dimensions:</strong> 9.5\\\" W x 7\\\" H x 3\\\" D. Strap\\n                    drop adjustable from 20\\\" to 24\\\". Weight: 1.2 lbs.\\n                  </p>\\n                  <p>\\n                    <strong>Shipping & Returns:</strong> Free standard shipping\\n                    on orders over $200. 30-day return policy with original\\n                    receipt and tags attached.\\n                  </p>\\n                </div>\\n              )}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-faq-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-faq/page.tsx\",\n      \"content\": \"export default function SimpleFaq01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How do I order?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            We&apos;re not always in the position that we want to be at.\\n            We&apos;re constantly growing. We&apos;re constantly making\\n            mistakes. We&apos;re constantly trying to express ourselves and\\n            actualize our dreams. If you have the opportunity to play this game\\n            of life you need to appreciate every moment. A lot of people\\n            don&apos;t appreciate the moment until it&apos;s passed.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How can i make the payment?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            It really matters and then like it really doesn&apos;t matter. What\\n            matters is the people who are sparked by it. And the people who are\\n            like offended by it, it doesn&apos;t matter. Because it&apos;s about\\n            motivating the doers. Because I&apos;m here to follow my dreams and\\n            inspire other people to follow their dreams, too. We&apos;re not\\n            always in the position that we want to be at. We&apos;re constantly\\n            growing. We&apos;re constantly making mistakes. We&apos;re\\n            constantly trying to express ourselves and actualize our dreams. If\\n            you have the opportunity to play this game of life you need to\\n            appreciate every moment. A lot of people don&apos;t appreciate the\\n            moment until it&apos;s passed.\\n          </p>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-list-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-list/page.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\n\\nconst DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it? If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything. If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"five\\\",\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment. I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqsList01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <Accordion type=\\\"single\\\" collapsible>\\n          {DATA.map(({ title, desc, value }, key) => (\\n            <AccordionItem key={key} value={value}>\\n              <AccordionTrigger>\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </AccordionTrigger>\\n              <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                {desc}\\n              </AccordionContent>\\n            </AccordionItem>\\n          ))}\\n        </Accordion>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faq-left-title-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faq-left-title/page.tsx\",\n      \"content\": \"import { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqLeftTitle01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto grid justify-between gap-6 lg:grid-cols-5\\\">\\n        <div className=\\\"col-span-2\\\">\\n          <h2 className=\\\"mb-4 text-3xl leading-snug font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground max-w-sm text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"col-span-3 grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key} className=\\\"border-none shadow-none\\\">\\n              <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-grid-cta-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid-cta/page.tsx\",\n      \"content\": \"import { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n  {\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment.\\\",\\n  },\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n]\\n\\nexport default function FaqsGridCta01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b px-6 gap-0\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"mt-20 text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-cards-icons-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-cards-icons/page.tsx\",\n      \"content\": \"import { CreditCard, ShoppingCart, Users } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    icon: Users,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n]\\n\\nexport default function FaqsCardsIcons01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"my-20 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b gap-0\\\">\\n                <div className=\\\"bg-primary mb-6 grid h-12 w-12 place-items-center rounded-lg\\\">\\n                  <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-base font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-grid-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid/page.tsx\",\n      \"content\": \"import {\\n  CreditCard,\\n  Package,\\n  RefreshCw,\\n  ShoppingCart,\\n  Store,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"Browse our collection, add items to your cart, and proceed to checkout. We accept multiple payment methods including credit cards, PayPal, and digital wallets for your convenience.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can I make the payment?\\\",\\n    desc: \\\"We accept all major credit cards, debit cards, PayPal, Apple Pay, and Google Pay. All transactions are secured with industry-standard encryption to protect your information.\\\",\\n  },\\n  {\\n    icon: Truck,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"Standard shipping takes 3-5 business days. Express shipping is available for 1-2 day delivery. International orders typically arrive within 7-14 business days depending on your location.\\\",\\n  },\\n  {\\n    icon: Store,\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"Products purchased for personal use cannot be resold without authorization. For wholesale or reseller inquiries, please contact our business development team at business@example.com.\\\",\\n  },\\n  {\\n    icon: Package,\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"Shipping information is available in your account under 'Order History'. You'll receive tracking details via email once your order ships, allowing you to monitor delivery progress.\\\",\\n  },\\n  {\\n    icon: RefreshCw,\\n    title: \\\"What is your return policy?\\\",\\n    desc: \\\"We offer a 30-day return policy on most items. Products must be in original condition with tags attached. Refunds are processed within 5-7 business days after we receive your return.\\\",\\n  },\\n]\\n\\nexport default function FaqsGrid01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n            Frequently Asked Questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Find answers to common questions about our products, shipping, and\\n            policies. Can't find what you're looking for? Contact our support\\n            team.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group hover:border-primary/50 transition-all hover:shadow-lg\\\"\\n            >\\n              <CardHeader className=\\\"px-6\\\">\\n                <div className=\\\"bg-primary/10 mb-3 flex h-12 w-12 items-center justify-center rounded-full\\\">\\n                  <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-xl leading-tight\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent>\\n                <p className=\\\"text-muted-foreground leading-relaxed\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone, Ticket } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto lg:max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get in Touch</h2>\\n          <p className=\\\"text-muted-foreground text-lg lg:max-w-lg\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          <div className=\\\"mt-14 space-y-4\\\">\\n            {OPTIONS.map(({ icon: Icon, info }, key) => (\\n              <div key={key} className=\\\"flex items-center gap-4\\\">\\n                <Icon className=\\\"h-5 w-5\\\" />\\n                <span>{info}</span>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections02() {\\n  return (\\n    <section className=\\\"grid min-h-screen w-full grid-cols-1 items-center md:grid-cols-2\\\">\\n      <div className=\\\"p-6 sm:p-12 lg:p-16\\\">\\n        <div className=\\\"mb-10\\\">\\n          <h2 className=\\\"my-4 text-3xl font-bold\\\">Contact us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            Whether you have questions or you would just like to say hello,\\n            contact us.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n              <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n              <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Email Address</Label>\\n            <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"someone@example.com\\\" />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n            <Input\\n              id=\\\"phone\\\"\\n              type=\\\"tel\\\"\\n              maxLength={16}\\n              placeholder=\\\"e.g., +1 123-456-7890\\\"\\n              pattern=\\\"^\\\\+\\\\d{1,3}\\\\s\\\\d{1,4}-\\\\d{1,4}-\\\\d{4}$\\\"\\n            />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Something about your request.\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Checkbox id=\\\"privacy-policy\\\" />\\n            <Label\\n              htmlFor=\\\"privacy-policy\\\"\\n              className=\\\"cursor-pointer text-sm font-normal\\\"\\n            >\\n              You agree to your friendly{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                Privacy Policy\\n              </a>\\n            </Label>\\n          </div>\\n          <Button className=\\\"w-full\\\">Send Message</Button>\\n        </form>\\n      </div>\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1658246944389-9e9ac0a85dda?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1064\\\"\\n        alt=\\\"contact\\\"\\n        className=\\\"hidden h-full w-full object-cover object-center md:block\\\"\\n      />\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections03() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-4xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-8 shadow-xl lg:grid-cols-2 lg:p-10\\\">\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\" className=\\\"text-base\\\">\\n                  First Name\\n                </Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" className=\\\"h-11\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\" className=\\\"text-base\\\">\\n                  Last Name\\n                </Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" className=\\\"h-11\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\" className=\\\"text-base\\\">\\n                Email Address\\n              </Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"h-11\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-base\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n                rows={5}\\n                className=\\\"resize-none\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full sm:w-auto sm:min-w-[150px]\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"flex flex-col justify-between rounded-xl bg-gradient-to-br from-gray-900 to-black p-8 lg:p-12\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h3>\\n              <p className=\\\"mb-12 max-w-lg text-gray-300\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              <div className=\\\"space-y-6\\\">\\n                {DATA.map(({ icon: Icon, info }, key) => (\\n                  <div key={key} className=\\\"flex items-center gap-4\\\">\\n                    <div className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10\\\">\\n                      <Icon className=\\\"h-5 w-5 text-white\\\" />\\n                    </div>\\n                    <span className=\\\"text-gray-200\\\">{info}</span>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"mt-12 flex items-center gap-6\\\">\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Linkedin className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Dribbble className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Facebook className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone, User } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: User,\\n    title: \\\"Contact\\\",\\n    description: \\\"Andrew Samian\\\",\\n  },\\n]\\n\\nexport default function ContactSections04() {\\n  return (\\n    <section className=\\\"relative min-h-[70vh] w-full bg-cover bg-center\\\">\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1635700193352-80564c35434c?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2532\\\"\\n        alt=\\\"Background\\\"\\n        className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n      />\\n      <div className=\\\"absolute inset-0 bg-black/50\\\" />\\n      <div className=\\\"relative flex min-h-[70vh] flex-col items-center justify-center px-4 py-16 text-center\\\">\\n        <h2 className=\\\"mb-6 text-5xl font-bold text-white\\\">Got a Question?</h2>\\n        <p className=\\\"mx-auto mb-12 max-w-xl text-xl text-white/80\\\">\\n          We'd like to talk more about what you need\\n        </p>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-12 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {OPTIONS.map(({ icon: Icon, title, description }, key) => (\\n            <div\\n              key={key}\\n              className=\\\"group text-center transition-transform hover:scale-105\\\"\\n            >\\n              <div className=\\\"mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-xl bg-white/10 shadow-lg transition-all group-hover:bg-white/20 group-hover:shadow-xl\\\">\\n                <Icon className=\\\"h-8 w-8 text-white\\\" />\\n              </div>\\n              <p className=\\\"mb-2 text-xl font-bold text-white\\\">{title}</p>\\n              <p className=\\\"text-base text-gray-300\\\">{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\\"General Inquiry\\\", \\\"Product Support\\\"]\\n\\nexport default function ContactSections05() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"bg-white py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"secondary\\\">Customer Care</Badge>\\n          <h2 className=\\\"mt-8 mb-4 text-3xl font-bold\\\">\\n            We&apos;re Here to Help\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether it&apos;s a question about our services, a request for\\n            technical assistance, or suggestions for improvement, our team is\\n            eager to hear from you.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-x-16 gap-y-10 lg:grid-cols-2\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070\\\"\\n            alt=\\\"Contact\\\"\\n            className=\\\"h-full min-h-[400px] w-full rounded-2xl object-cover\\\"\\n          />\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"mx-auto max-w-lg space-y-6 lg:mx-0 lg:py-2\\\"\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              <Label>Select Options for Business Engagement</Label>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {OPTIONS.map((option) => (\\n                  <Button\\n                    key={option}\\n                    type=\\\"button\\\"\\n                    variant={selectedOption === option ? \\\"default\\\" : \\\"outline\\\"}\\n                    onClick={() =>\\n                      setSelectedOption((cur) => (cur === option ? \\\"\\\" : option))\\n                    }\\n                  >\\n                    {option}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    subTitle: \\\"Find us at the office\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    subTitle: \\\"Send us your feedback\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    subTitle: \\\"Give us a ring\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n]\\n\\nexport default function ContactSections06() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <span className=\\\"text-primary block text-sm font-semibold\\\">\\n            Contact Us\\n          </span>\\n          <h2 className=\\\"my-4 text-center text-3xl font-bold\\\">\\n            Got a Question?\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            We&apos;d like to talk more about what you need\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {OPTIONS.map(({ icon: Icon, title, subTitle, description }, key) => (\\n            <div key={key} className=\\\"text-center\\\">\\n              <div className=\\\"bg-primary mx-auto mb-6 grid h-14 w-14 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n              </div>\\n              <p className=\\\"text-lg font-semibold\\\">{title}</p>\\n              <p className=\\\"text-muted-foreground my-3 block\\\">{subTitle}</p>\\n              <p>{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections07() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-2 text-2xl font-semibold\\\">Contact us</h3>\\n          <p className=\\\"text-muted-foreground mb-6\\\">\\n            We'd love to hear from you.\\n          </p>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto space-y-10 lg:max-w-lg\\\">\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"flex gap-4\\\">\\n              <div className=\\\"shrink-0\\\">\\n                <Icon className=\\\"h-6 w-6\\\" />\\n              </div>\\n              <div>\\n                <h4 className=\\\"mb-2 font-semibold\\\">{title}</h4>\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-muted-foreground\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nconst OPTIONS = [\\\"Design\\\", \\\"Development\\\", \\\"Support\\\", \\\"Other\\\"]\\n\\nexport default function ContactSections08() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-4 lg:grid-cols-2 lg:p-6\\\">\\n          <div className=\\\"grid rounded-lg bg-black p-8 lg:place-items-center lg:p-16\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h2>\\n              <p className=\\\"mb-16 max-w-lg text-gray-400\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              {DATA.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"mb-4 flex items-center gap-4\\\">\\n                  <Icon className=\\\"h-5 w-5 text-gray-400\\\" />\\n                  <span className=\\\"text-gray-400\\\">{info}</span>\\n                </div>\\n              ))}\\n              <div className=\\\"mt-12 flex items-center gap-6\\\">\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Twitter className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Linkedin className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Dribbble className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Facebook className=\\\"h-6 w-6\\\" />\\n                </a>\\n              </div>\\n            </div>\\n          </div>\\n          <form action=\\\"#\\\" className=\\\"space-y-6 px-2 py-0 lg:py-2\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label>Area of Interest</Label>\\n              <RadioGroup\\n                value={selectedOption}\\n                onValueChange={setSelectedOption}\\n              >\\n                <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                  {OPTIONS.map((option) => (\\n                    <div key={option} className=\\\"flex items-center space-x-2\\\">\\n                      <RadioGroupItem value={option} id={option} />\\n                      <Label\\n                        htmlFor={option}\\n                        className=\\\"cursor-pointer font-normal\\\"\\n                      >\\n                        {option}\\n                      </Label>\\n                    </div>\\n                  ))}\\n                </div>\\n              </RadioGroup>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"ml-auto flex max-w-fit\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections09() {\\n  return (\\n    <section className=\\\"p-6\\\">\\n      <div className=\\\"grid items-center gap-6 rounded-xl bg-black p-4 lg:grid-cols-2 lg:p-8\\\">\\n        <div className=\\\"p-8 lg:mx-auto lg:max-w-lg lg:p-0\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white\\\">Get in Touch</h2>\\n          <p className=\\\"text-lg text-white lg:max-w-xl\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"mt-12\\\">\\n              <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                <Icon className=\\\"h-7 w-7 text-white\\\" />\\n                <h4 className=\\\"text-lg font-semibold text-white\\\">{title}</h4>\\n              </div>\\n              <div className=\\\"ml-10 space-y-2\\\">\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-white\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n        <Card className=\\\"p-6 lg:p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    info: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n]\\n\\nexport default function ContactSections10() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"mb-16 text-center text-3xl font-bold\\\">Contact Us</h2>\\n        <div className=\\\"grid grid-cols-1 gap-10 lg:grid-cols-2\\\">\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Send us a message</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                  <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                  <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n                </div>\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 123-456-7890\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"message\\\">Message</Label>\\n                <Textarea\\n                  id=\\\"message\\\"\\n                  placeholder=\\\"Write your message here...\\\"\\n                />\\n              </div>\\n              <Button className=\\\"w-full\\\">Send Message</Button>\\n            </form>\\n          </Card>\\n          <div className=\\\"space-y-8\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-semibold\\\">Get in touch</h3>\\n              <p className=\\\"text-muted-foreground\\\">\\n                We&apos;re here to help and answer any question you might have.\\n                We look forward to hearing from you.\\n              </p>\\n            </div>\\n            <div className=\\\"space-y-6\\\">\\n              {OPTIONS.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"flex items-start gap-4\\\">\\n                  <div className=\\\"bg-primary/10 grid h-10 w-10 shrink-0 place-items-center rounded-lg\\\">\\n                    <Icon className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"pt-2\\\">\\n                    <p className=\\\"font-medium\\\">{info}</p>\\n                  </div>\\n                </div>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections11() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-gradient-to-br from-stone-900 to-stone-800 py-16 text-white\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get In Touch</h2>\\n          <p className=\\\"mx-auto max-w-2xl text-stone-300\\\">\\n            Have a question or want to work together? Leave your details and\\n            we'll get back to you as soon as possible.\\n          </p>\\n        </div>\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"space-y-6 rounded-2xl bg-white/10 p-8 backdrop-blur-sm\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-white\\\">\\n                  Name\\n                </Label>\\n                <Input\\n                  id=\\\"name\\\"\\n                  placeholder=\\\"Your name\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\" className=\\\"text-white\\\">\\n                  Email\\n                </Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"your@email.com\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\" className=\\\"text-white\\\">\\n                Subject\\n              </Label>\\n              <Input\\n                id=\\\"subject\\\"\\n                placeholder=\\\"How can we help?\\\"\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-white\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Your message...\\\"\\n                rows={6}\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"mt-12 flex justify-center gap-12\\\">\\n            <div className=\\\"text-center\\\">\\n              <Phone className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">+1 (424) 535-3523</p>\\n            </div>\\n            <div className=\\\"text-center\\\">\\n              <Mail className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">hello@mail.com</p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections12() {\\n  return (\\n    <section className=\\\"relative flex min-h-screen items-center py-20\\\">\\n      <div\\n        className=\\\"absolute inset-0 bg-cover bg-center opacity-20\\\"\\n        style={{\\n          backgroundImage:\\n            \\\"url('https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop')\\\",\\n        }}\\n      />\\n      <div className=\\\"relative z-10 container mx-auto\\\">\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <div className=\\\"mb-12 text-center\\\">\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">Let's Talk</h2>\\n            <p className=\\\"text-muted-foreground text-lg\\\">\\n              Fill out the form below and we'll be in touch shortly.\\n            </p>\\n          </div>\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"bg-card space-y-6 rounded-2xl p-8 shadow-xl\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"company\\\">Company</Label>\\n              <Input id=\\\"company\\\" placeholder=\\\"Your Company\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">How can we help?</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Tell us about your project...\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Submit\\n            </Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Clock, Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst CONTACT_INFO = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Visit us\\\",\\n    info: \\\"123 Main Street, New York, NY 10001\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Call us\\\",\\n    info: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email us\\\",\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Clock,\\n    title: \\\"Working hours\\\",\\n    info: \\\"Mon - Fri, 9:00 AM - 6:00 PM\\\",\\n  },\\n]\\n\\nexport default function ContactSections13() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Contact Information</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            We're here to answer any questions you may have about our services.\\n            Reach out to us and we'll respond as soon as we can.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {CONTACT_INFO.map(({ icon: Icon, title, info }, key) => (\\n            <Card key={key} className=\\\"p-6 text-center\\\">\\n              <div className=\\\"bg-primary/10 mx-auto mb-4 grid h-12 w-12 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary h-6 w-6\\\" />\\n              </div>\\n              <h3 className=\\\"mb-2 font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{info}</p>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"mx-auto max-w-2xl p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-bold\\\">Send us a message</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"your@email.com\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"How can we help you?\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Send } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections14() {\\n  return (\\n    <section className=\\\"from-background to-muted/20 bg-gradient-to-b py-20\\\">\\n      <div className=\\\"container mx-auto max-w-4xl\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <span className=\\\"text-primary text-sm font-semibold\\\">\\n            GET IN TOUCH\\n          </span>\\n          <h2 className=\\\"mt-2 mb-4 text-4xl font-bold\\\">\\n            We'd Love to Hear From You\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether you have a question about features, pricing, or anything\\n            else, our team is ready to answer all your questions.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-8\\\">\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"name\\\">Full Name *</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" required />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address *</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"john@example.com\\\"\\n                required\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n              <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 (555) 000-0000\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\">Subject</Label>\\n              <Input id=\\\"subject\\\" placeholder=\\\"How can we help?\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message *</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Tell us more about your inquiry...\\\"\\n              rows={6}\\n              required\\n            />\\n          </div>\\n          <div className=\\\"flex justify-center\\\">\\n            <Button size=\\\"lg\\\" className=\\\"gap-2\\\">\\n              <Send className=\\\"h-4 w-4\\\" />\\n              Send Message\\n            </Button>\\n          </div>\\n        </form>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { FileText, Headphones, MessageSquare } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst CONTACT_OPTIONS = [\\n  {\\n    icon: MessageSquare,\\n    title: \\\"Chat with Sales\\\",\\n    description: \\\"Speak to our sales team\\\",\\n    action: \\\"Start Chat\\\",\\n  },\\n  {\\n    icon: Headphones,\\n    title: \\\"Get Support\\\",\\n    description: \\\"We're here to help\\\",\\n    action: \\\"Contact Support\\\",\\n  },\\n  {\\n    icon: FileText,\\n    title: \\\"Documentation\\\",\\n    description: \\\"Browse our docs\\\",\\n    action: \\\"View Docs\\\",\\n  },\\n]\\n\\nexport default function ContactSections15() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid items-center gap-12 lg:grid-cols-2\\\">\\n          <div>\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n              Let's start a conversation\\n            </h2>\\n            <p className=\\\"text-muted-foreground mb-8 text-lg\\\">\\n              We're always happy to help with any questions you might have. Get\\n              in touch with us and we'll respond as soon as possible.\\n            </p>\\n            <div className=\\\"space-y-6\\\">\\n              {CONTACT_OPTIONS.map(\\n                ({ icon: Icon, title, description, action }, key) => (\\n                  <div key={key} className=\\\"flex items-start gap-4\\\">\\n                    <div className=\\\"bg-primary/10 grid h-12 w-12 shrink-0 place-items-center rounded-lg\\\">\\n                      <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                    </div>\\n                    <div className=\\\"flex-1\\\">\\n                      <h3 className=\\\"mb-1 font-semibold\\\">{title}</h3>\\n                      <p className=\\\"text-muted-foreground mb-3 text-sm\\\">\\n                        {description}\\n                      </p>\\n                      <Button variant=\\\"link\\\" className=\\\"h-auto p-0\\\">\\n                        {action} →\\n                      </Button>\\n                    </div>\\n                  </div>\\n                )\\n              )}\\n            </div>\\n          </div>\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Quick Contact</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Your Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Enter your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Your Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"Enter your email\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number (Optional)</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"Enter your phone\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"inquiry\\\">Your Inquiry</Label>\\n                <Input id=\\\"inquiry\\\" placeholder=\\\"What can we help you with?\\\" />\\n              </div>\\n              <Button className=\\\"w-full\\\">Submit</Button>\\n            </form>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"475\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"476\\\",\\n    profession: \\\"owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"477\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n]\\n\\nexport default function Web301() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"p-6\\\">\\n          <Avatar className=\\\"h-12 w-12\\\">\\n            <AvatarImage\\n              src=\\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\"\\n              alt=\\\"pixel art collection\\\"\\n            />\\n            <AvatarFallback>PA</AvatarFallback>\\n          </Avatar>\\n          <h1 className=\\\"mt-4 mb-1 text-2xl font-bold\\\">Pixelated Art</h1>\\n          <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n            These NFTs capture the essence of imagination and innovation,\\n            offering a glimpse into the boundless potential of the digital\\n            world.\\n          </p>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, profession, profileImg }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-64 w-full rounded-md object-cover object-center\\\"\\n                />\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <p className=\\\"text-muted-foreground mb-1 text-sm\\\">\\n                  Pixelated Art\\n                </p>\\n                <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                <div className=\\\"mt-4 flex items-center justify-between\\\">\\n                  <div className=\\\"flex items-center gap-4\\\">\\n                    <Avatar className=\\\"h-6 w-6\\\">\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">{name}</p>\\n                  </div>\\n                  <p className=\\\"text-primary text-sm capitalize\\\">\\n                    {profession}\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Heart, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    tokenId: \\\"876\\\",\\n    price: \\\"1,6 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    tokenId: \\\"877\\\",\\n    price: \\\"0,9 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    tokenId: \\\"878\\\",\\n    price: \\\"1,3 ETH\\\",\\n  },\\n]\\n\\nexport default function Web302() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <Avatar className=\\\"h-10 w-10\\\">\\n              <AvatarImage\\n                src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                alt=\\\"emma\\\"\\n              />\\n              <AvatarFallback>EM</AvatarFallback>\\n            </Avatar>\\n            <h1 className=\\\"mt-4 mb-1 flex items-center gap-2 text-2xl font-bold\\\">\\n              Emma\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-blue-500 text-blue-500\\\"\\n              >\\n                ✓\\n              </Badge>\\n            </h1>\\n            <p className=\\\"text-muted-foreground text-lg\\\">130 Collections</p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button>Follow Me</Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, price }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"relative px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-72 w-full rounded-md object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute top-6 right-6 flex items-center gap-2\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"border-white/50 bg-white/70 text-black backdrop-blur\\\"\\n                  >\\n                    Auction ends in 23h:03m:33s\\n                  </Badge>\\n                  <Button\\n                    size=\\\"icon\\\"\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"h-7 w-7 bg-white text-black hover:bg-white\\\"\\n                  >\\n                    <Heart className=\\\"h-3.5 w-3.5\\\" />\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <div className=\\\"mb-2 flex items-center justify-between gap-4\\\">\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Cosmic creatures\\n                  </p>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <div className=\\\"flex gap-1\\\">\\n                      <img\\n                        src=\\\"https://v3.material-tailwind.com/icon/eth.svg\\\"\\n                        alt=\\\"ethereum\\\"\\n                        className=\\\"h-4 w-4\\\"\\n                      />\\n                      <p className=\\\"text-sm font-semibold\\\">{price}</p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div className=\\\"flex items-center justify-between gap-4\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                  <Button size=\\\"sm\\\">Place a Bid</Button>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"1,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    desc: \\\"Creator\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"0,4 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    price: \\\"0,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n]\\n\\nexport default function Web303() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Auctions</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Select defaultValue=\\\"Last 24H\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Select Date\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select defaultValue=\\\"Category 1\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Category 1\\\">Category 1</SelectItem>\\n                <SelectItem value=\\\"Category 2\\\">Category 2</SelectItem>\\n                <SelectItem value=\\\"Category 3\\\">Category 3</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, desc, profileImg, price, time }, key) => (\\n            <Card key={key} className=\\\"overflow-hidden py-0\\\">\\n              <CardHeader className=\\\"relative p-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-80 w-full object-cover object-center\\\"\\n                />\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute bottom-4 left-4 flex items-center gap-2 border-white/50 bg-white/70 backdrop-blur\\\"\\n                >\\n                  <Avatar className=\\\"h-7 w-7\\\">\\n                    <AvatarImage src={profileImg} alt={name} />\\n                    <AvatarFallback>{name[1]}</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"flex flex-col\\\">\\n                    <span className=\\\"text-xs font-semibold text-black\\\">\\n                      {name}\\n                    </span>\\n                    <span className=\\\"text-muted-foreground text-xs\\\">\\n                      {desc}\\n                    </span>\\n                  </div>\\n                </Badge>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4 pb-4\\\">\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <p className=\\\"text-lg font-bold\\\">{price}</p>\\n                  </div>\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Auction ends in\\n                    </p>\\n                    <p className=\\\"text-sm font-semibold\\\">{time}</p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Cuboid, Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    title: \\\"Dreamy Trees\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"3,000 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@3dfaces\\\",\\n    title: \\\"Face NFTs\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@theplanetsoftheuniverse\\\",\\n    title: \\\"The Planets Of The Universe\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n]\\n\\nexport default function Web304() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardContent className=\\\"p-6\\\">\\n          <div className=\\\"mb-6 flex flex-wrap items-start justify-between gap-6\\\">\\n            <div>\\n              <h1 className=\\\"mb-1 text-2xl font-bold\\\">Trending Collections</h1>\\n              <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n                The most sought-after collections across the entire ecosystem.\\n              </p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              <Select defaultValue=\\\"Last 24H\\\">\\n                <SelectTrigger className=\\\"w-max\\\">\\n                  <SelectValue placeholder=\\\"Select Date\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                  <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                  <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Menu className=\\\"h-4 w-4\\\" />\\n              </Button>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Grid3x3 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {DATA.map(({ price, img, name, title, profileImg, desc }, key) => (\\n              <Card key={key} className=\\\"relative overflow-hidden\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute inset-0 h-full w-full bg-gradient-to-t from-black/80 to-black/20\\\" />\\n                <CardContent className=\\\"relative z-10 flex h-[28rem] flex-col justify-between p-6\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"w-fit border-white/30 bg-white/20 text-white backdrop-blur\\\"\\n                  >\\n                    <Cuboid className=\\\"mr-1 h-4 w-4\\\" />\\n                    Collection\\n                  </Badge>\\n                  <div>\\n                    <h3 className=\\\"mb-1 flex items-center gap-2 text-xl font-semibold text-white\\\">\\n                      {title}\\n                      <Badge\\n                        variant=\\\"outline\\\"\\n                        className=\\\"border-blue-400 text-blue-400\\\"\\n                      >\\n                        ✓\\n                      </Badge>\\n                    </h3>\\n                    <p className=\\\"mb-4 text-sm text-gray-300\\\">{desc}</p>\\n                    <div className=\\\"flex items-center justify-between\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Avatar className=\\\"h-8 w-8\\\">\\n                          <AvatarImage src={profileImg} alt={name} />\\n                          <AvatarFallback>{name[1]}</AvatarFallback>\\n                        </Avatar>\\n                        <p className=\\\"text-sm text-white\\\">{name}</p>\\n                      </div>\\n                      <p className=\\\"text-sm font-semibold text-white\\\">\\n                        {price}\\n                      </p>\\n                    </div>\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            ))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    tokenId: \\\"#1\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Tina Andrew\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-4.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#2\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michael\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#3\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    ],\\n  },\\n]\\n\\nexport default function Web305() {\\n  const [timeFrame, setTimeFrame] = useState(\\\"month\\\")\\n\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Creators</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"hour\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"hour\\\")}\\n            >\\n              Last 24h\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"week\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"week\\\")}\\n            >\\n              Last week\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"month\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"month\\\")}\\n            >\\n              Last month\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ tokenId, profileImg, name, desc, imgs }, key) => (\\n            <Card key={key} className=\\\"flex flex-col justify-between py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <p className=\\\"font-semibold\\\">{tokenId}</p>\\n                <div className=\\\"mt-4 flex flex-wrap items-start justify-between gap-4\\\">\\n                  <div className=\\\"flex items-start gap-3\\\">\\n                    <Avatar>\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <div>\\n                      <p className=\\\"font-semibold\\\">{name}</p>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                    </div>\\n                  </div>\\n                  <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                    See Collection\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"grid grid-cols-3 gap-4 px-4\\\">\\n                {imgs.map((img, idx) => (\\n                  <img\\n                    key={idx}\\n                    src={img}\\n                    alt={`nft-${idx}`}\\n                    className=\\\"h-full min-h-24 w-full rounded-lg object-cover object-center\\\"\\n                  />\\n                ))}\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function Cruds01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Edit Apparel Item</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Update product information, pricing, and categorization for your\\n            fashion inventory.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"productName\\\">Product Name</Label>\\n            <Input\\n              id=\\\"productName\\\"\\n              name=\\\"productName\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Slim Fit Denim Jacket\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"brand\\\">Designer Brand</Label>\\n            <Input\\n              id=\\\"brand\\\"\\n              name=\\\"brand\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Balenciaga\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"price\\\">Retail Price ($)</Label>\\n            <Input\\n              id=\\\"price\\\"\\n              name=\\\"price\\\"\\n              type=\\\"number\\\"\\n              placeholder=\\\"e.g. 199\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"category\\\">Category</Label>\\n            <Select name=\\\"category\\\">\\n              <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                <SelectValue placeholder=\\\"Select a category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"outerwear\\\">Outerwear</SelectItem>\\n                <SelectItem value=\\\"tops\\\">Tops</SelectItem>\\n                <SelectItem value=\\\"bottoms\\\">Bottoms</SelectItem>\\n                <SelectItem value=\\\"footwear\\\">Footwear</SelectItem>\\n                <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"description\\\">Product Details</Label>\\n            <Textarea\\n              id=\\\"description\\\"\\n              name=\\\"description\\\"\\n              placeholder=\\\"Material, fit, washing instructions...\\\"\\n              rows={4}\\n            />\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n              Save Changes\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Remove Item\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function Cruds02() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">\\n            Update Retail Staff Profile\\n          </h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage employee account credentials and contact information for\\n            retail team members.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"username\\\">Username</Label>\\n            <Input\\n              id=\\\"username\\\"\\n              name=\\\"username\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. elena.moreno\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Work Email</Label>\\n            <Input\\n              id=\\\"email\\\"\\n              name=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"e.g. elena@fashionco.com\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"password\\\">New Password</Label>\\n            <Input id=\\\"password\\\" name=\\\"password\\\" type=\\\"password\\\" />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"confirmPassword\\\">Confirm Password</Label>\\n            <Input\\n              id=\\\"confirmPassword\\\"\\n              name=\\\"confirmPassword\\\"\\n              type=\\\"password\\\"\\n            />\\n          </div>\\n\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Update Profile\\n          </Button>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Upload } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function Cruds03() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-3xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Stylist Account Settings</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Configure your profile, roles, and permissions for your stylist\\n            account.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"avatar\\\">Profile Photo</Label>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"flex h-24 w-24 items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                <Upload className=\\\"text-muted-foreground h-8 w-8\\\" />\\n              </div>\\n              <div className=\\\"flex-1\\\">\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  PNG, JPG, JPEG or GIF (max. 800x400px)\\n                </p>\\n                <Input\\n                  id=\\\"avatar\\\"\\n                  name=\\\"avatar\\\"\\n                  type=\\\"file\\\"\\n                  accept=\\\".png,.jpg,.jpeg,.gif\\\"\\n                  className=\\\"mt-2\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"firstName\\\">First Name</Label>\\n              <Input id=\\\"firstName\\\" name=\\\"firstName\\\" type=\\\"text\\\" />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"lastName\\\">Last Name</Label>\\n              <Input id=\\\"lastName\\\" name=\\\"lastName\\\" type=\\\"text\\\" />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"contactEmail\\\">Contact Email</Label>\\n            <Input id=\\\"contactEmail\\\" name=\\\"contactEmail\\\" type=\\\"email\\\" />\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"userRole\\\">Role</Label>\\n              <Select name=\\\"userRole\\\">\\n                <SelectTrigger id=\\\"userRole\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a role\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"stylist\\\">Stylist</SelectItem>\\n                  <SelectItem value=\\\"store-manager\\\">Store Manager</SelectItem>\\n                  <SelectItem value=\\\"creative-lead\\\">Creative Lead</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"languages\\\">Languages</Label>\\n              <Input\\n                id=\\\"languages\\\"\\n                name=\\\"languages\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. English, Italian\\\"\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"jobTitle\\\">Job Title</Label>\\n              <Input\\n                id=\\\"jobTitle\\\"\\n                name=\\\"jobTitle\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. Fashion Consultant\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"accountType\\\">Account Type</Label>\\n              <Select name=\\\"accountType\\\">\\n                <SelectTrigger id=\\\"accountType\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select account type\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"basic\\\">Basic</SelectItem>\\n                  <SelectItem value=\\\"pro\\\">Pro</SelectItem>\\n                  <SelectItem value=\\\"executive\\\">Executive</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"permissionLevel\\\">Permission Level</Label>\\n              <Select name=\\\"permissionLevel\\\">\\n                <SelectTrigger id=\\\"permissionLevel\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select permission level\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"admin\\\">Admin</SelectItem>\\n                  <SelectItem value=\\\"operational\\\">Operational</SelectItem>\\n                  <SelectItem value=\\\"viewer\\\">Viewer</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"emailStatus\\\">Email Verified</Label>\\n              <Input\\n                id=\\\"emailStatus\\\"\\n                name=\\\"emailStatus\\\"\\n                type=\\\"text\\\"\\n                value=\\\"Verified\\\"\\n                disabled\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\" className=\\\"flex-1\\\">\\n              Upload New Photo\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Delete Account\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers01() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-2 md:!justify-between\\\">\\n          <p className=\\\"text-foreground text-center text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim.\\n          </p>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers02() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 md:grid-cols-2\\\">\\n          <div className=\\\"grid grid-cols-3 justify-between gap-x-6 gap-y-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title}>\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title} className=\\\"mb-1\\\">\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-2 font-semibold\\\">Subscribe</p>\\n            <p className=\\\"text-foreground max-w-sm [text-wrap:_balance]\\\">\\n              Get access to subscriber exclusive deals and be the first who gets\\n              informed about fresh sales.\\n            </p>\\n            <div className=\\\"mt-4 flex w-full max-w-sm items-end gap-2\\\">\\n              <div className=\\\"w-full\\\">\\n                <Label\\n                  htmlFor=\\\"email\\\"\\n                  className=\\\"mb-2 inline-block text-sm font-semibold\\\"\\n                >\\n                  Your Email\\n                </Label>\\n                <Input\\n                  type=\\\"email\\\"\\n                  id=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <Button className=\\\"shrink-0\\\">Subscribe</Button>\\n            </div>\\n            <div className=\\\"mt-3 flex items-center gap-2\\\">\\n              <Checkbox id=\\\"checkbox-link\\\" />\\n              <Label\\n                htmlFor=\\\"checkbox-link\\\"\\n                className=\\\"text-foreground flex gap-1 select-none\\\"\\n              >\\n                I agree with the\\n                <a href=\\\"#\\\" className=\\\"text-primary\\\">\\n                  terms and conditions\\n                </a>\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-10 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Home\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Service\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers03() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"border-surface flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-3 border-t pt-8 text-center md:!justify-between\\\">\\n          <p className=\\\"text-foreground\\\">\\n            Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-6\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n            <Button className=\\\"w-full sm:max-w-fit\\\">Sign in</Button>\\n          </ul>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers04() {\\n  return (\\n    <section className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Card className=\\\"bg-primary border-primary grid justify-center px-6 py-12 text-center shadow-none\\\">\\n          <h2 className=\\\"text-secondary text-2xl font-semibold\\\">\\n            Be the first who see the news\\n          </h2>\\n          <p className=\\\"text-secondary mt-4 max-w-lg [text-wrap:_balance]\\\">\\n            Your company may not be in the software business, but eventually, a\\n            software company will be in your business.\\n          </p>\\n          <div className=\\\"mx-auto mt-10 flex w-full max-w-sm flex-col gap-x-2 gap-y-4 sm:flex-row\\\">\\n            <Input\\n              type=\\\"email\\\"\\n              id=\\\"email\\\"\\n              placeholder=\\\"someone@example.com\\\"\\n              className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n            />\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </Card>\\n        <div className=\\\"mt-16 mb-6 flex flex-col items-center !justify-center gap-x-10 gap-y-3 lg:flex-row lg:!justify-between\\\">\\n          <p className=\\\"font-semibold\\\">Creative Tim</p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground text-sm\\\">\\n          All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers05() {\\n  return (\\n    <footer className=\\\"bg-primary pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 sm:grid-cols-2\\\">\\n          <div className=\\\"row-start-2 grid grid-cols-2 justify-between gap-6 sm:row-auto lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"text-secondary mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-secondary hover:text-secondary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"text-secondary mb-4 flex font-semibold lg:justify-end\\\">\\n              Language & Currency\\n            </p>\\n            <Select>\\n              <SelectTrigger className=\\\"mb-4 border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Language\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"english\\\">English</SelectItem>\\n                <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                <SelectItem value=\\\"hindi\\\">Hindi</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select>\\n              <SelectTrigger className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Currency\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n                <SelectItem value=\\\"euro\\\">Euro</SelectItem>\\n                <SelectItem value=\\\"rupee\\\">Rupee</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 mt-10 flex flex-col justify-between gap-4 border-t border-b pt-6 pb-8 md:flex-row lg:items-end\\\">\\n          <div>\\n            <p className=\\\"text-secondary mb-2 font-semibold\\\">\\n              Subscribe to our newsletters\\n            </p>\\n            <p className=\\\"text-secondary\\\">\\n              The latest news, articles and resources sent to your inbox weekly.\\n            </p>\\n          </div>\\n          <div className=\\\"flex w-full items-end gap-2 md:max-w-sm\\\">\\n            <div className=\\\"w-full\\\">\\n              <Label\\n                htmlFor=\\\"email\\\"\\n                className=\\\"text-secondary mb-2 inline-block text-sm font-semibold\\\"\\n              >\\n                Your Email\\n              </Label>\\n              <Input\\n                type=\\\"email\\\"\\n                id=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n              />\\n            </div>\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              subscribe\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-secondary mt-8\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers06() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-4 md:grid-cols-2\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-foreground my-4\\\">\\n              The next generation of design systems.\\n            </p>\\n            <div className=\\\"flex gap-1\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-2 justify-between gap-6 lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-20 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nconst COUNTRIES = [\\n  { name: \\\"United States\\\", flag: \\\"🇺🇸\\\" },\\n  { name: \\\"United Kingdom\\\", flag: \\\"🇬🇧\\\" },\\n  { name: \\\"Canada\\\", flag: \\\"🇨🇦\\\" },\\n  { name: \\\"Germany\\\", flag: \\\"🇩🇪\\\" },\\n  { name: \\\"France\\\", flag: \\\"🇫🇷\\\" },\\n  { name: \\\"Japan\\\", flag: \\\"🇯🇵\\\" },\\n  { name: \\\"Australia\\\", flag: \\\"🇦🇺\\\" },\\n  { name: \\\"Spain\\\", flag: \\\"🇪🇸\\\" },\\n]\\n\\nexport default function Footers07() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-start justify-center gap-4 md:justify-between\\\">\\n          <div className=\\\"grid gap-3\\\">\\n            <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-foreground text-center text-sm font-medium md:text-left\\\">\\n              All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n            </p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n            <Select>\\n              <SelectTrigger className=\\\"w-64\\\">\\n                <SelectValue placeholder=\\\"Select Country\\\" />\\n              </SelectTrigger>\\n              <SelectContent className=\\\"max-h-72\\\">\\n                {COUNTRIES.map(({ name, flag }) => (\\n                  <SelectItem key={name} value={name}>\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <span className=\\\"text-lg\\\">{flag}</span>\\n                      <span className=\\\"text-sm\\\">{name}</span>\\n                    </div>\\n                  </SelectItem>\\n                ))}\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers08() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-center justify-between gap-6 md:flex-row\\\">\\n          <p className=\\\"text-muted-foreground text-center text-sm md:text-left\\\">\\n            &copy; {YEAR} Creative Tim. All rights reserved.\\n          </p>\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <Badge variant=\\\"secondary\\\" className=\\\"px-3 py-1\\\">\\n              v3.0.0\\n            </Badge>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" aria-label=\\\"Settings\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers09() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-start justify-between gap-8 md:flex-row md:items-center\\\">\\n          <div className=\\\"space-y-3\\\">\\n            <p className=\\\"text-lg font-semibold\\\">\\n              New Features available! Upgrade to v3.0.0\\n            </p>\\n            <Button size=\\\"default\\\" className=\\\"w-full md:w-auto\\\">\\n              Upgrade Now\\n            </Button>\\n          </div>\\n          <div className=\\\"flex flex-col gap-4 md:items-end\\\">\\n            <ul className=\\\"flex flex-wrap items-center gap-x-8 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              &copy; {YEAR} Creative Tim. All rights reserved.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers10() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"mb-10 flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers11() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 grid grid-cols-1 items-start justify-between gap-8 md:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-muted-foreground mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n          </div>\\n          <div className=\\\"grid grid-cols-3 gap-x-8 gap-y-6 md:ml-auto\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-3\\\">\\n                <p className=\\\"mb-3 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"border-border flex flex-col items-start justify-between gap-6 border-t pt-8 md:flex-row md:items-center\\\">\\n          <p className=\\\"text-muted-foreground max-w-2xl text-sm\\\">\\n            The price of fame is you can&apos;t get off the stage.\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm whitespace-nowrap\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n  { title: \\\"Terms & Conditions\\\", href: \\\"#\\\" },\\n  { title: \\\"FAQ\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers12() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-6 lg:!justify-between\\\">\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a\\n                  href={href}\\n                  className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                >\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <p className=\\\"text-foreground text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers13() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <div className=\\\"my-8 flex gap-1\\\">\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n              <Twitter className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n              <Youtube className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n              <Instagram className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n              <Github className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n        </div>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers14() {\\n  return (\\n    <footer className=\\\"bg-primary pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-8\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold text-white\\\">Creative Tim</h6>\\n            <p className=\\\"text-secondary mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <ul className=\\\"mt-12 flex flex-wrap items-center gap-x-8 gap-y-3\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-secondary transition-colors hover:text-white\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-6 text-lg font-semibold text-white\\\">Get the App</p>\\n            <div className=\\\"grid gap-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  xmlSpace=\\\"preserve\\\"\\n                  viewBox=\\\"0 0 16 16\\\"\\n                  className=\\\"h-14 w-14 shrink-0\\\"\\n                >\\n                  <path\\n                    fill=\\\"#2196F3\\\"\\n                    d=\\\"M8.32 7.68.58 15.42c-.37-.35-.57-.83-.57-1.35V1.93C.01 1.4.22.92.6.56l7.72 7.12z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#FFC107\\\"\\n                    d=\\\"M15.01 8c0 .7-.38 1.32-1.01 1.67l-2.2 1.22-2.73-2.52-.75-.69 2.89-2.89L14 6.33c.63.35 1.01.97 1.01 1.67z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#4CAF50\\\"\\n                    d=\\\"M8.32 7.68.6.56C.7.46.83.37.96.29 1.59-.09 2.35-.1 3 .26l8.21 4.53-2.89 2.89z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#F44336\\\"\\n                    d=\\\"M11.8 10.89 3 15.74c-.31.18-.66.26-1 .26-.36 0-.72-.09-1.04-.29a1.82 1.82 0 0 1-.38-.29l7.74-7.74.75.69 2.73 2.52z\\\"\\n                  />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    GET IT ON\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    Google Play\\n                  </span>\\n                </div>\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  enableBackground=\\\"new 0 0 22.185 27\\\"\\n                  viewBox=\\\"0 0 22.185 27\\\"\\n                  className=\\\"h-14 w-14 shrink-0 fill-white\\\"\\n                >\\n                  <path d=\\\"M18.436 14.271c0-2.225 1.216-4.166 3.02-5.194-.942-1.156-2.359-2.192-3.921-2.496-2.13-.415-3.345.276-4.131.553-.786.277-1.83.526-1.83.526s-1.043-.249-1.83-.526C8.959 6.857 7.744 6.165 5.614 6.58s-3.99 2.192-4.746 3.776c-1.458 3.057-.858 6.903.172 9.669 1.029 2.767 3.75 6.633 5.86 6.944 1.501.221 2.43-.816 4.674-1.079 2.244.263 3.173 1.3 4.674 1.079 2.11-.311 4.831-4.177 5.86-6.944.025-.068.051-.138.076-.208C19.987 18.935 18.436 16.784 18.436 14.271zM11.041 6.075c0 0 2.087.277 3.982-1.875s1.356-4.188 1.356-4.188-2.087-.277-3.982 1.875S11.041 6.075 11.041 6.075z\\\" />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    Download on the\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    App Store\\n                  </span>\\n                </div>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 flex flex-col items-center justify-between gap-6 border-t pt-8 md:flex-row\\\">\\n          <p className=\\\"text-secondary order-2 md:order-1\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n          <div className=\\\"order-1 flex gap-1 md:order-2\\\">\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers15() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-4 flex flex-col justify-between gap-4 md:flex-row\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <ul className=\\\"mt-4 flex flex-wrap items-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-medium\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"md:text-right\\\">\\n            <p className=\\\"font-semibold\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <p className=\\\"mb-4 font-semibold\\\">\\n              The price of fame is you can&apos;t get off the stage.\\n            </p>\\n            <div className=\\\"flex gap-1 md:justify-end\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">What Clients Say</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-lg\\\">\\n            We&apos;re constantly trying to express ourselves and actualize our\\n            dreams. If you have the opportunity to play.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-4 h-20 w-20\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { BadgeCheck, Twitter } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardFooter, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    username: \\\"@jessicadevis\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 🎉\\\",\\n    date: \\\"Jan 17, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    username: \\\"@lucianeurel\\\",\\n    quote:\\n      \\\"It's like having a superpower in your toolkit. The ability to craft custom designs quickly and efficiently with simple classes is unparalleled.\\\",\\n    date: \\\"Jan 18, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    username: \\\"@marcelglock\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 😍\\\",\\n    date: \\\"Jan 19, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Linde Michele\\\",\\n    username: \\\"@lindemichele\\\",\\n    quote:\\n      \\\"With its clear and concise classes, I can easily communicate design intentions to my colleagues. It's a must-have tool for any web developer. 👨🏻‍💻\\\",\\n    date: \\\"Jan 20, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-3.jpg\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    username: \\\"@maryjoshiash\\\",\\n    quote:\\n      \\\"I've tried several CSS frameworks, but this is on a whole different level. It strikes the perfect balance between flexibility and design.\\\",\\n    date: \\\"Jan 21, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/woman-profile-3.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    username: \\\"@mishastam\\\",\\n    quote:\\n      \\\"Active community support make it easy to get started. It's the ideal framework for achieving design excellence in web applications.\\\",\\n    date: \\\"Jan 22, 2024\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16\\\">\\n          <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase\\\">\\n            Testimonials\\n          </p>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Think about us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, username, quote, date }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"flex flex-row items-center gap-4 px-6\\\">\\n                <Avatar>\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex-1\\\">\\n                  <div className=\\\"flex items-center gap-1.5\\\">\\n                    <p className=\\\"font-semibold\\\">{name}</p>\\n                    <BadgeCheck className=\\\"h-4 w-4 text-blue-500\\\" />\\n                  </div>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{username}</p>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <blockquote className=\\\"text-muted-foreground\\\">\\n                  {quote}\\n                </blockquote>\\n              </CardContent>\\n              <CardFooter className=\\\"flex items-center justify-between gap-4 px-6\\\">\\n                <a\\n                  href=\\\"#\\\"\\n                  className=\\\"flex items-center gap-1.5 text-sm font-semibold hover:underline\\\"\\n                >\\n                  See on <Twitter className=\\\"h-3.5 w-3.5\\\" />\\n                </a>\\n                <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n              </CardFooter>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst testimonials = [\\n  {\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"The attention to detail and user experience is exceptional. This has transformed how we approach design decisions in our team.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"Outstanding component library that saves us countless hours. The quality and customization options are exactly what we needed.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production builds. The documentation is clear and the components are production-ready.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Loved by Developers & Designers\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of professionals who trust our components for their\\n            projects\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mb-12 flex flex-wrap items-center justify-center gap-8 text-center md:gap-12\\\">\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">1,679,700+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Active Users</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">4.9/5</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Average Rating</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">50K+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Companies</p>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {testimonials.map((testimonial, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"px-6\\\">\\n                <div className=\\\"mb-4 flex items-center gap-1\\\">\\n                  {Array.from({ length: testimonial.rating }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                    />\\n                  ))}\\n                </div>\\n\\n                <Quote className=\\\"text-muted-foreground/30 mb-3 h-8 w-8\\\" />\\n\\n                <blockquote className=\\\"text-foreground/90 mb-6 text-sm leading-relaxed\\\">\\n                  {testimonial.quote}\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <Avatar className=\\\"border-border h-12 w-12 border-2\\\">\\n                    <AvatarImage\\n                      src={testimonial.image}\\n                      alt={testimonial.name}\\n                    />\\n                    <AvatarFallback>\\n                      {testimonial.name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div>\\n                    <p className=\\\"text-foreground font-semibold\\\">\\n                      {testimonial.name}\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {testimonial.role}\\n                    </p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Our Users Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Trusted by thousands of developers and designers worldwide\\n          </p>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-24 w-24 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-background absolute -right-2 -bottom-2 rounded-full p-2 shadow-md\\\">\\n                    <Quote className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-xl font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-foreground/80 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The component library has transformed our design process. The quality and attention to detail in every component is exceptional.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding documentation and TypeScript support. These components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components with excellent customization. The design system is cohesive and well-thought-out.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"bg-black py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white md:text-4xl\\\">\\n            Trusted by Professionals\\n          </h2>\\n          <p className=\\\"mx-auto max-w-2xl text-lg text-white/70\\\">\\n            Hear what developers and designers say about our component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"border-white/10 bg-white/5 backdrop-blur-sm transition-all hover:border-white/20 hover:bg-white/10\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"h-20 w-20 border-4 border-white/20\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback className=\\\"bg-white/10 text-white\\\">\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold text-white\\\">\\n                  {name}\\n                </h3>\\n                <p className=\\\"mb-6 text-sm text-white/60\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-white/20 text-white/20\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-sm leading-relaxed text-white/80\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-12 items-center border-0 bg-transparent shadow-none\\\">\\n          <div className=\\\"col-span-full md:col-span-4\\\">\\n            <img\\n              src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover lg:max-h-[30rem] lg:max-w-full\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"col-span-full px-0 py-6 md:col-span-8 md:px-8 lg:px-12\\\">\\n            <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase lg:mb-4\\\">\\n              Client Success Story\\n            </p>\\n            <h2 className=\\\"mb-6 text-3xl font-bold\\\">\\n              Transforming Our Design System\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-8 text-lg font-normal lg:mb-12\\\">\\n              &quot;This component library has revolutionized how we build\\n              products at scale. The quality, consistency, and developer\\n              experience are exceptional. We've reduced our\\n              design-to-development time by 60% and our entire team loves\\n              working with these components.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <Avatar className=\\\"h-12 w-12\\\">\\n                <AvatarImage\\n                  alt=\\\"Alexandra Martinez\\\"\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                />\\n                <AvatarFallback>AM</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-lg font-semibold\\\">Alexandra Martinez</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Head of Design, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [selectedTestimonial, setSelectedTestimonial] = React.useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-12 items-center gap-y-8 px-4\\\">\\n        <div className=\\\"col-span-full row-start-2 md:col-span-8 md:row-start-auto\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">What Developers Say</h2>\\n          <p className=\\\"text-muted-foreground my-4 max-w-lg\\\">\\n            {TESTIMONIALS[selectedTestimonial].quote}\\n          </p>\\n          <div>\\n            <p className=\\\"font-semibold\\\">\\n              {TESTIMONIALS[selectedTestimonial].name}\\n            </p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              {TESTIMONIALS[selectedTestimonial].role}\\n            </p>\\n          </div>\\n          <div className=\\\"divide-border mt-8 flex items-center divide-x\\\">\\n            {TESTIMONIALS.map((testimonial, index) => (\\n              <div className={index !== 0 ? \\\"px-4\\\" : \\\"pr-4\\\"} key={index}>\\n                <Avatar\\n                  role=\\\"button\\\"\\n                  className=\\\"h-12 w-12 cursor-pointer rounded-lg\\\"\\n                  onClick={() => setSelectedTestimonial(index)}\\n                >\\n                  <AvatarImage src={testimonial.image} />\\n                  <AvatarFallback>\\n                    {testimonial.name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"col-span-full md:col-span-4\\\">\\n          <img\\n            src={TESTIMONIALS[selectedTestimonial].image}\\n            alt=\\\"user profile\\\"\\n            className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover object-center\\\"\\n          />\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"These components have transformed our design workflow. The quality and attention to detail are exceptional, making it easy to build beautiful interfaces quickly.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding component library with excellent TypeScript support. The documentation is clear and the components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components that save countless hours. The customization options are fantastic and the design system is incredibly cohesive. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Developers Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of developers building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-0 bg-transparent shadow-none\\\"\\n            >\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"border-border h-24 w-24 border-4 transition-transform group-hover:scale-105\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-2 -bottom-2 rounded-full p-2 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-4 md:py-6\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-1 items-center gap-4 border-0 bg-transparent shadow-none md:grid-cols-12 md:gap-6\\\">\\n          <div className=\\\"md:col-span-4\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-40 w-full rounded-lg object-cover md:h-56\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"px-0 py-0 md:col-span-8 md:px-4 lg:px-8\\\">\\n            <p className=\\\"text-primary mb-1.5 text-xs font-semibold md:text-sm\\\">\\n              Customer Story\\n            </p>\\n            <h2 className=\\\"mb-2 text-lg font-bold md:text-xl lg:text-2xl\\\">\\n              Revolutionary component library for modern design\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-3 text-sm leading-relaxed font-normal md:text-base\\\">\\n              &quot;This component library has transformed how our design team\\n              works. The attention to detail, seamless integration, and\\n              production-ready components have accelerated our development\\n              workflow by 10x.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-2.5\\\">\\n              <Avatar className=\\\"h-9 w-9 md:h-10 md:w-10\\\">\\n                <AvatarImage\\n                  alt=\\\"spotify\\\"\\n                  src=\\\"https://v3.material-tailwind.com/icon/spotify.svg\\\"\\n                />\\n                <AvatarFallback>SP</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-sm font-semibold md:text-base\\\">\\n                  Sarah Johnson\\n                </p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">\\n                  Design Director, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowRight, Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Alexandra Martinez\\\",\\n    role: \\\"Head of Design\\\",\\n    quote:\\n      \\\"This component library has revolutionized our design system. The quality and consistency have dramatically improved our product development workflow.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"David Kim\\\",\\n    role: \\\"Engineering Lead\\\",\\n    quote:\\n      \\\"Outstanding components with excellent TypeScript support. The documentation is thorough and implementation is seamless across our platforms.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"Marcus Johnson\\\",\\n    role: \\\"Product Director\\\",\\n    quote:\\n      \\\"A game-changer for our development team. These production-ready components have reduced our time-to-market by 50% while maintaining exceptional quality.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Trusted by Industry Leaders\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            See how leading companies are building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, quote, role }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <img\\n                  src={image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"mx-auto mb-6 h-20\\\"\\n                />\\n                <blockquote className=\\\"text-muted-foreground mx-auto mb-6 max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n                <div className=\\\"mb-6\\\">\\n                  <p className=\\\"font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{role}</p>\\n                </div>\\n                <Button variant=\\\"link\\\" className=\\\"group\\\">\\n                  Read More\\n                  <ArrowRight className=\\\"ml-2 h-4 w-4 transition-transform group-hover:translate-x-1\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 27 February\\\",\\n    quote:\\n      \\\"Success is not final, failure is not fatal: it is the courage to continue that counts.\\\",\\n    rating: 4,\\n    isHighlighted: false,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 28 February\\\",\\n    quote:\\n      \\\"If you have the opportunity to play this game of life you need to appreciate every moment.\\\",\\n    rating: 4,\\n    isHighlighted: true,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mathew Glock\\\",\\n    date: \\\"Posted on 29 February\\\",\\n    quote:\\n      \\\"Artist is a term applied to a person who engages in an activity deemed to be an art.\\\",\\n    rating: 5,\\n    isHighlighted: false,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(\\n            ({ name, image, date, quote, rating, isHighlighted }, key) => (\\n              <Card\\n                key={key}\\n                className={\\n                  isHighlighted\\n                    ? \\\"bg-primary text-primary-foreground\\\"\\n                    : \\\"bg-transparent\\\"\\n                }\\n              >\\n                <CardContent className=\\\"px-6\\\">\\n                  <Avatar className=\\\"mb-4 h-16 w-16 rounded-lg\\\">\\n                    <AvatarImage src={image} alt={`${name} image`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <p\\n                    className={`text-lg font-semibold ${isHighlighted ? \\\"text-primary-foreground\\\" : \\\"\\\"}`}\\n                  >\\n                    {name}\\n                  </p>\\n                  <p\\n                    className={`text-sm ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    {date}\\n                  </p>\\n                  <blockquote\\n                    className={`my-4 max-w-lg ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    &quot;{quote}&quot;\\n                  </blockquote>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {Array.from({ length: 5 }).map((_, i) => (\\n                      <Star\\n                        key={i}\\n                        className={`h-5 w-5 ${\\n                          i < rating\\n                            ? \\\"fill-yellow-500 text-yellow-500\\\"\\n                            : isHighlighted\\n                              ? \\\"fill-white/30 text-white/30\\\"\\n                              : \\\"fill-gray-300 text-gray-300\\\"\\n                        }`}\\n                      />\\n                    ))}\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            )\\n          )}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent, CardFooter } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            The heartfelt testimonials of our community\\n          </h2>\\n          <p className=\\\"text-muted-foreground text-lg\\\">\\n            From life-enhancing gadgets to unparalleled customer support, and\\n            transformative learning opportunities.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;The team went above and beyond to ensure my issue was\\n                resolved quickly and efficiently. Truly outstanding!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Jessica Devis</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Full Stack Developer @Netflix\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/netflix.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;It have broadened my horizons and helped me advance my\\n                career. The community is incredibly supportive.&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Graphic Designer, @Coinbase\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-75 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"col-span-full grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium\\\">\\n                &quot;Its intuitive design and powerful features make it\\n                indispensable. I can&apos;t imagine going back to life before\\n                it!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-center gap-4 px-6 pb-6 text-center\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Emma Roberts</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Chief Executive @Spotify\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-50 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"rounded-xl bg-black text-white\\\">\\n          <CardContent className=\\\"grid w-full grid-cols-1 items-center gap-8 p-10 md:grid-cols-12\\\">\\n            <div className=\\\"col-span-full text-center md:col-span-8 md:pl-4 md:text-left\\\">\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"spotify logo\\\"\\n                className=\\\"mr-auto mb-2 ml-auto w-32 md:mr-0 md:-ml-3\\\"\\n              />\\n              <blockquote className=\\\"mb-12 text-2xl !leading-snug\\\">\\n                &quot;We&apos;re not always in the position that we want to be\\n                at. We&apos;re constantly growing. We&apos;re constantly making\\n                mistakes. We&apos;re constantly trying to express ourselves and\\n                actualize our dreams. &quot;\\n              </blockquote>\\n              <div>\\n                <p className=\\\"mb-1 text-xl font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-white/80\\\">Chief Executive, Spotify</p>\\n              </div>\\n            </div>\\n            <div className=\\\"col-span-full grid justify-items-center md:col-span-4 md:justify-items-end\\\">\\n              <Avatar className=\\\"h-24 w-24 md:h-64 md:w-64\\\">\\n                <AvatarImage\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                  alt=\\\"user profile\\\"\\n                />\\n                <AvatarFallback>MG</AvatarFallback>\\n              </Avatar>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    role: \\\"CEO @ Marketing Digital LTD\\\",\\n    quote:\\n      \\\"The connections you make at Web Summit are unparalleled, we met users all over the world.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    role: \\\"Marketing @ Apple INC\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"CFO @ Apple INC\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key}>\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-6 h-24 w-24\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Plus, Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    role: \\\"CEO Discord\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"CFO Slack\\\",\\n    quote:\\n      \\\"Do not go where the path may lead, go instead where there is no path and leave a trail. You will succeed on it.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    role: \\\"COO Dribbble\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-4 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-20 w-20 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n\\n                <blockquote className=\\\"text-muted-foreground mb-4 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n          <Card className=\\\"group border-border/50 hover:border-border hover:bg-muted/50 cursor-pointer border-2 border-dashed transition-all\\\">\\n            <CardContent className=\\\"grid h-full min-h-[280px] w-full place-items-center p-6\\\">\\n              <div className=\\\"text-center\\\">\\n                <div className=\\\"bg-muted group-hover:bg-muted/80 mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-full transition-colors\\\">\\n                  <Plus className=\\\"text-muted-foreground h-8 w-8\\\" />\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                  Add Testimonial\\n                </p>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-16/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-16/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"Social Media Executive, Netflix\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"Visionary, Coinbase\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"Chief Executive, Spotify\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-black py-16\\\">\\n      <div className=\\\"relative container mx-auto px-4\\\">\\n        <div className=\\\"pb-16\\\">\\n          <img\\n            src={SLIDES[currentSlide].companyLogo}\\n            alt=\\\"company logo\\\"\\n            className=\\\"mx-auto mb-8 h-24\\\"\\n          />\\n          <blockquote className=\\\"mx-auto mb-16 max-w-2xl text-center text-xl font-medium text-white\\\">\\n            &quot;{SLIDES[currentSlide].quote}&quot;\\n          </blockquote>\\n          <p className=\\\"text-center font-medium text-white\\\">\\n            {SLIDES[currentSlide].name}\\n          </p>\\n          <p className=\\\"text-center text-sm text-white/80\\\">\\n            {SLIDES[currentSlide].role}\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mt-8 flex items-center justify-center gap-2\\\">\\n          {SLIDES.map((slide, index) => (\\n            <button\\n              key={index}\\n              onClick={() => setCurrentSlide(index)}\\n              className={`h-8 w-8 rounded object-cover object-center transition-opacity ${\\n                index === currentSlide ? \\\"opacity-100\\\" : \\\"opacity-50\\\"\\n              }`}\\n            >\\n              <img\\n                src={slide.image}\\n                alt={slide.name}\\n                className=\\\"h-full w-full rounded object-cover\\\"\\n              />\\n            </button>\\n          ))}\\n        </div>\\n\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={prevSlide}\\n          className=\\\"!absolute top-1/2 left-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronLeft className=\\\"h-7 w-7\\\" />\\n        </Button>\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={nextSlide}\\n          className=\\\"!absolute top-1/2 right-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronRight className=\\\"h-7 w-7\\\" />\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-17/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-17/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Quote } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Louis Miriam\\\",\\n    role: \\\"COO @ Netflix\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"CEO @ Coinbase\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"relative overflow-hidden rounded-2xl bg-[url('https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070')] bg-cover bg-center p-6\\\">\\n          <span className=\\\"absolute inset-0 h-full w-full bg-gradient-to-br from-black/80 to-black/60 backdrop-blur-sm\\\" />\\n\\n          <CardContent className=\\\"relative grid w-full grid-cols-1 items-center gap-8 px-6 py-12 md:grid-cols-12 md:px-12 md:py-16\\\">\\n            <div className=\\\"col-span-full md:col-span-8\\\">\\n              <Quote className=\\\"mb-6 h-12 w-12 text-white/30\\\" />\\n              <blockquote className=\\\"mb-8 text-xl leading-relaxed font-medium text-white md:text-2xl\\\">\\n                &quot;{SLIDES[currentSlide].quote}&quot;\\n              </blockquote>\\n              <div className=\\\"flex flex-col gap-2 md:flex-row md:items-center md:gap-3\\\">\\n                <p className=\\\"text-lg font-semibold text-white\\\">\\n                  {SLIDES[currentSlide].name}\\n                </p>\\n                <span className=\\\"hidden text-white/50 md:inline\\\">•</span>\\n                <p className=\\\"text-sm text-white/70\\\">\\n                  {SLIDES[currentSlide].role}\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"col-span-full flex items-center justify-center md:col-span-4\\\">\\n              <div className=\\\"rounded-xl bg-white/10 p-8 backdrop-blur-sm\\\">\\n                <img\\n                  src={SLIDES[currentSlide].image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"h-16 md:h-20\\\"\\n                />\\n              </div>\\n            </div>\\n          </CardContent>\\n\\n          <div className=\\\"absolute bottom-8 left-1/2 flex -translate-x-1/2 items-center gap-3\\\">\\n            {SLIDES.map((_, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setCurrentSlide(index)}\\n                aria-label={`Go to slide ${index + 1}`}\\n                className={`h-2 rounded-full transition-all ${\\n                  index === currentSlide\\n                    ? \\\"w-8 bg-white\\\"\\n                    : \\\"w-2 bg-white/50 hover:bg-white/75\\\"\\n                }`}\\n              />\\n            ))}\\n          </div>\\n\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={prevSlide}\\n            aria-label=\\\"Previous testimonial\\\"\\n            className=\\\"!absolute top-1/2 left-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronLeft className=\\\"h-8 w-8\\\" />\\n          </Button>\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={nextSlide}\\n            aria-label=\\\"Next testimonial\\\"\\n            className=\\\"!absolute top-1/2 right-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronRight className=\\\"h-8 w-8\\\" />\\n          </Button>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TriangleAlert, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <TriangleAlert className=\\\"text-destructive mb-6 h-14 w-14\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-1 text-xl\\\">\\n                  Reset Settings\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 max-w-xl text-sm\\\">\\n                Are you sure you want to reset all settings to their default\\n                values? This action cannot be undone.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"reset\\\" className=\\\"text-sm\\\">\\n                Please type{\\\" \\\"}\\n                <span className=\\\"text-foreground font-semibold\\\">\\n                  &quot;Reset settings&quot;\\n                </span>{\\\" \\\"}\\n                to confirm.\\n              </Label>\\n              <div className=\\\"flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n                <Input\\n                  id=\\\"reset\\\"\\n                  placeholder=\\\"Reset settings\\\"\\n                  className=\\\"flex-1\\\"\\n                />\\n                <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n                  I understand, reset settings\\n                </Button>\\n              </div>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst NOTIFICATION = [\\\"Email\\\", \\\"SMS\\\", \\\"Push Notification\\\"]\\nconst TOOLS = [\\\"React\\\", \\\"Material Tailwind\\\", \\\"TailwindCSS\\\", \\\"Next.js\\\"]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Edit Profile</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Update your profile information below.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"font-semibold\\\">\\n                  My Name\\n                </Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Emma Roberts\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"profession\\\" className=\\\"font-semibold\\\">\\n                  I&apos;m\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"profession\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Profession\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                    <SelectItem value=\\\"frontend\\\">Frontend Developer</SelectItem>\\n                    <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                    <SelectItem value=\\\"fullstack\\\">\\n                      Fullstack Developer\\n                    </SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2 border-y py-6\\\">\\n              <p className=\\\"font-semibold\\\">\\n                Interested in the following technologies\\n              </p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose the frameworks you work on\\n              </p>\\n              <div className=\\\"mt-4 flex flex-wrap items-center gap-6\\\">\\n                {TOOLS.map((tool) => (\\n                  <div key={tool} className=\\\"flex items-center gap-2\\\">\\n                    <Checkbox id={tool} />\\n                    <Label\\n                      htmlFor={tool}\\n                      className=\\\"text-muted-foreground cursor-pointer text-sm\\\"\\n                    >\\n                      {tool}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <p className=\\\"font-semibold\\\">Notification preferences</p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Select where you want to be notified\\n              </p>\\n              <RadioGroup className=\\\"mt-4 flex items-center gap-6\\\">\\n                {NOTIFICATION.map((notify) => (\\n                  <div key={notify} className=\\\"flex items-center gap-2\\\">\\n                    <RadioGroupItem value={notify} id={notify} />\\n                    <Label\\n                      htmlFor={notify}\\n                      className=\\\"text-muted-foreground text-sm\\\"\\n                    >\\n                      {notify}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </RadioGroup>\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Profile</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Pencil, X } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\ninterface UserProps {\\n  name: string\\n  img: string\\n  email: string\\n}\\n\\nfunction User({ name, img, email }: UserProps) {\\n  const [selected, setSelected] = React.useState(\\\"Can View\\\")\\n\\n  return (\\n    <div className=\\\"flex items-center justify-between gap-4\\\">\\n      <div className=\\\"flex items-center gap-4\\\">\\n        <Avatar>\\n          <AvatarImage src={img} alt={name} />\\n          <AvatarFallback>{name.charAt(0)}</AvatarFallback>\\n        </Avatar>\\n        <div className=\\\"space-y-0.5\\\">\\n          <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n          <p className=\\\"text-muted-foreground text-sm\\\">{email}</p>\\n        </div>\\n      </div>\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\" className=\\\"group\\\">\\n            <span className=\\\"hidden items-center gap-1 sm:flex\\\">\\n              {selected}{\\\" \\\"}\\n              <ChevronDown className=\\\"h-4 w-4 transition-transform group-data-[state=open]:rotate-180\\\" />\\n            </span>\\n            <Pencil className=\\\"block h-4 w-4 sm:hidden\\\" />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\">\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can View\\\")}>\\n            Can View\\n          </DropdownMenuItem>\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can Edit\\\")}>\\n            Can Edit\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Share with New Members\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground max-w-xl text-sm\\\">\\n              Welcome new members to your team! Use this modal to seamlessly add\\n              individuals to your dashboard, enabling collaboration and\\n              enhancing productivity.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"my-6 flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n            <Input type=\\\"email\\\" placeholder=\\\"Email, comma separated\\\" />\\n            <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n              Invite\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"w-full shrink-0 sm:w-auto\\\"\\n            >\\n              Copy Link\\n            </Button>\\n          </form>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=1\\\"\\n              name=\\\"Emma Roberts\\\"\\n              email=\\\"emma@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=2\\\"\\n              name=\\\"John Smith\\\"\\n              email=\\\"john@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=3\\\"\\n              name=\\\"Sarah Johnson\\\"\\n              email=\\\"sarah@mail.com\\\"\\n            />\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"max-h-[90vh] overflow-y-auto sm:max-w-[700px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Update Product Modal\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Edit product features and save it.\\n            </p>\\n          </DialogHeader>\\n\\n          <div className=\\\"my-6 grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3\\\">\\n            {[...new Array(3)].map((_, i) => (\\n              <div\\n                key={i}\\n                className=\\\"bg-muted relative h-44 w-full overflow-hidden rounded-md\\\"\\n              >\\n                <img\\n                  src={`https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&h=400&fit=crop&crop=center&q=80`}\\n                  alt={`Product ${i + 1}`}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant=\\\"ghost\\\"\\n                  className=\\\"!absolute right-2 bottom-2\\\"\\n                >\\n                  <Trash className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <form className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"productName\\\" className=\\\"font-semibold\\\">\\n                  Product Name\\n                </Label>\\n                <Input id=\\\"productName\\\" placeholder=\\\"Laptop\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"category\\\" className=\\\"font-semibold\\\">\\n                  Category\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Category\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"electronics\\\">Electronics</SelectItem>\\n                    <SelectItem value=\\\"clothing\\\">Clothing</SelectItem>\\n                    <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"price\\\" className=\\\"font-semibold\\\">\\n                  Price\\n                </Label>\\n                <Input id=\\\"price\\\" placeholder=\\\"1000\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"brand\\\" className=\\\"font-semibold\\\">\\n                  Brand\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"brand\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Brand\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                    <SelectItem value=\\\"samsung\\\">Samsung</SelectItem>\\n                    <SelectItem value=\\\"microsoft\\\">Microsoft</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"description\\\" className=\\\"font-semibold\\\">\\n                Description\\n              </Label>\\n              <Textarea\\n                id=\\\"description\\\"\\n                placeholder=\\\"Write something about your product.\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"tags\\\" className=\\\"font-semibold\\\">\\n                Tags\\n              </Label>\\n              <Input\\n                id=\\\"tags\\\"\\n                placeholder=\\\"Add up to 10 tags, separated by commas (,)\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Product</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CloudUpload, Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nconst IMAGES = [\\n  {\\n    name: \\\"cover-1.jpg\\\",\\n    size: \\\"140 KB\\\",\\n  },\\n  {\\n    name: \\\"cover-2.jpg\\\",\\n    size: \\\"288 KB\\\",\\n  },\\n]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Upload Files</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Easily upload files to your account with just a few clicks.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <Card className=\\\"border-2 border-dashed\\\">\\n              <CardContent className=\\\"grid min-h-64 place-items-center p-6\\\">\\n                <label htmlFor=\\\"upload\\\" className=\\\"cursor-pointer\\\">\\n                  <input type=\\\"file\\\" className=\\\"hidden\\\" id=\\\"upload\\\" />\\n                  <div className=\\\"mx-auto max-w-md text-center\\\">\\n                    <CloudUpload className=\\\"text-muted-foreground mx-auto mb-6 h-12 w-12\\\" />\\n                    <p className=\\\"mb-2 font-semibold\\\">\\n                      Drag and Drop or{\\\" \\\"}\\n                      <span className=\\\"underline\\\">Choose a Local File</span>\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Supported formats: .png, .jpg, .svg\\n                    </p>\\n                  </div>\\n                </label>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              {IMAGES.map(({ name, size }) => (\\n                <Card key={name}>\\n                  <CardContent className=\\\"flex items-start justify-between p-3\\\">\\n                    <div className=\\\"flex items-center gap-4\\\">\\n                      <img\\n                        src=\\\"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=100&h=100&fit=crop&crop=center&q=80\\\"\\n                        alt={name}\\n                        className=\\\"h-12 w-12 rounded object-cover object-center\\\"\\n                      />\\n                      <div className=\\\"space-y-1\\\">\\n                        <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{size}</p>\\n                      </div>\\n                    </div>\\n                    <Button\\n                      type=\\\"button\\\"\\n                      variant=\\\"ghost\\\"\\n                      size=\\\"sm\\\"\\n                      className=\\\"shrink-0\\\"\\n                    >\\n                      <Trash className=\\\"h-4 w-4\\\" />\\n                    </Button>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Upload</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Unlock, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <Unlock className=\\\"text-primary mb-6 h-12 w-12\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-2 text-xl\\\">\\n                  Publish Capsule Collection\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                This action will expose your private capsule collection to\\n                public viewing across all fashion storefronts.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <Card className=\\\"my-6\\\">\\n            <CardContent className=\\\"space-y-3 p-4\\\">\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">\\n                  Collection\\n                </span>\\n                <span className=\\\"text-sm font-medium\\\">fall-winter-vault</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Views</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Likes</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Make Collection Public</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Visibility Settings\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            This collection is currently restricted to internal collaborators.\\n            You can modify who can view or access it from this setting.\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-6\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Change Visibility</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Disable Collection Lock Rules\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Removing edit rules will allow unrestricted changes to your seasonal\\n            campaign folders and product groups.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertTriangle className=\\\"text-destructive h-4 w-4\\\" />\\n                Access Restrictions Will Be Removed\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Disabling these rules unlocks direct edits to sensitive assets\\n                and might affect internal syncs.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This will impact:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Designer review checkpoints</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Version freeze policies</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <p className=\\\"text-muted-foreground mb-6 text-xs\\\">\\n            Note: 0 edit lock rules currently active\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Disable Edit Locks</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Transfer Showroom Ownership\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Switch control of this fashion showroom space to another user or\\n            organization.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"owner\\\" className=\\\"font-semibold\\\">\\n                Select new owner\\n              </Label>\\n              <Select>\\n                <SelectTrigger id=\\\"owner\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Choose owner\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"styling-team\\\">Styling Team</SelectItem>\\n                  <SelectItem value=\\\"content-studio\\\">Content Studio</SelectItem>\\n                  <SelectItem value=\\\"retail-partner\\\">Retail Partner</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"handle\\\" className=\\\"font-semibold\\\">\\n                Confirm collection handle\\n              </Label>\\n              <Input id=\\\"handle\\\" placeholder=\\\"resort-collection-2026\\\" />\\n            </div>\\n\\n            <Card className=\\\"border-yellow-500/50 bg-yellow-500/5\\\">\\n              <CardContent className=\\\"p-4\\\">\\n                <div className=\\\"flex items-start gap-3\\\">\\n                  <AlertTriangle className=\\\"mt-0.5 h-5 w-5 shrink-0 text-yellow-600\\\" />\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Transferring ownership will revoke your access to draft\\n                    sets, unpublished campaigns, and internal analytics.\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Transfer Access\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertCircle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Permanently Remove Archive\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Erasing this fashion vault will wipe its data across your platform\\n            and collaborators.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertCircle className=\\\"text-destructive h-4 w-4\\\" />\\n                Review Before Deleting\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Once removed, associated content (lookbooks, notes, edits) will\\n                be lost forever.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This action will:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Deletes all digital outfits and metadata</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Disconnects synced creative briefs</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-primary mt-1\\\">•</span>\\n                <span>No change to billing or usage limits</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">I acknowledge and confirm</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Erase Fashion Vault\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Type the full collection handle to confirm irreversible deletion of\\n            this vault.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"identifier\\\" className=\\\"font-semibold\\\">\\n                Collection identifier\\n              </Label>\\n              <Input id=\\\"identifier\\\" placeholder=\\\"spring-edit-collection\\\" />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Delete Vault\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-basic-info-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-basic-info/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport {\\n  Briefcase,\\n  CalendarIcon,\\n  Globe,\\n  GraduationCap,\\n  Mail,\\n  MapPin,\\n  Phone,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function AccountBasicInfo01() {\\n  const [birthDate, setBirthDate] = React.useState<Date>()\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Personal Information\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Manage your personal details and profile information. This\\n            information will be visible to other users on the platform.\\n          </p>\\n        </div>\\n\\n        <form className=\\\"space-y-8\\\">\\n          {/* Basic Details Section */}\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Basic Details</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"firstName\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    First Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"firstName\\\"\\n                    placeholder=\\\"Emma\\\"\\n                    defaultValue=\\\"Emma\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"lastName\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Last Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"lastName\\\"\\n                    placeholder=\\\"Roberts\\\"\\n                    defaultValue=\\\"Roberts\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Professional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Professional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"gender\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Gender\\n                  </Label>\\n                  <Select defaultValue=\\\"female\\\">\\n                    <SelectTrigger id=\\\"gender\\\">\\n                      <SelectValue placeholder=\\\"Select Gender\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"male\\\">Male</SelectItem>\\n                      <SelectItem value=\\\"female\\\">Female</SelectItem>\\n                      <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      <SelectItem value=\\\"prefer-not-to-say\\\">\\n                        Prefer not to say\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label className=\\\"flex items-center gap-2\\\">\\n                    <CalendarIcon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Birth Date\\n                  </Label>\\n                  <Popover>\\n                    <PopoverTrigger asChild>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        className=\\\"w-full justify-start text-left font-normal\\\"\\n                      >\\n                        <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\n                        {birthDate ? format(birthDate, \\\"PPP\\\") : \\\"Select a date\\\"}\\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                        initialFocus\\n                      />\\n                    </PopoverContent>\\n                  </Popover>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"profession\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Briefcase className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Profession\\n                  </Label>\\n                  <Select defaultValue=\\\"ui-ux\\\">\\n                    <SelectTrigger id=\\\"profession\\\">\\n                      <SelectValue placeholder=\\\"Select Profession\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                      <SelectItem value=\\\"frontend\\\">\\n                        Frontend Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                      <SelectItem value=\\\"fullstack\\\">\\n                        Fullstack Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"product-manager\\\">\\n                        Product Manager\\n                      </SelectItem>\\n                      <SelectItem value=\\\"data-scientist\\\">\\n                        Data Scientist\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"education\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <GraduationCap className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Education\\n                  </Label>\\n                  <Select defaultValue=\\\"university\\\">\\n                    <SelectTrigger id=\\\"education\\\">\\n                      <SelectValue placeholder=\\\"Select Level\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"high-school\\\">High School</SelectItem>\\n                      <SelectItem value=\\\"college\\\">College</SelectItem>\\n                      <SelectItem value=\\\"university\\\">University</SelectItem>\\n                      <SelectItem value=\\\"masters\\\">\\n                        Master&apos;s Degree\\n                      </SelectItem>\\n                      <SelectItem value=\\\"phd\\\">Ph.D.</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Contact Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Contact Information</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Email Address\\n                  </Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"confirmEmail\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Confirm Email\\n                  </Label>\\n                  <Input\\n                    id=\\\"confirmEmail\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"phone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Phone className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Phone Number\\n                  </Label>\\n                  <Input\\n                    id=\\\"phone\\\"\\n                    placeholder=\\\"+1 (555) 123-4567\\\"\\n                    defaultValue=\\\"+1 (555) 123-4567\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"location\\\" className=\\\"flex items-center gap-2\\\">\\n                    <MapPin className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Location\\n                  </Label>\\n                  <Input\\n                    id=\\\"location\\\"\\n                    placeholder=\\\"City, Country\\\"\\n                    defaultValue=\\\"Florida, USA\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Additional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Additional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"language\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Preferred Language\\n                  </Label>\\n                  <Select defaultValue=\\\"english\\\">\\n                    <SelectTrigger id=\\\"language\\\">\\n                      <SelectValue placeholder=\\\"Select Language\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"english\\\">English</SelectItem>\\n                      <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                      <SelectItem value=\\\"french\\\">French</SelectItem>\\n                      <SelectItem value=\\\"german\\\">German</SelectItem>\\n                      <SelectItem value=\\\"chinese\\\">Chinese</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"timezone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Timezone\\n                  </Label>\\n                  <Select defaultValue=\\\"est\\\">\\n                    <SelectTrigger id=\\\"timezone\\\">\\n                      <SelectValue placeholder=\\\"Select Timezone\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"est\\\">Eastern Time (ET)</SelectItem>\\n                      <SelectItem value=\\\"cst\\\">Central Time (CT)</SelectItem>\\n                      <SelectItem value=\\\"mst\\\">Mountain Time (MT)</SelectItem>\\n                      <SelectItem value=\\\"pst\\\">Pacific Time (PT)</SelectItem>\\n                      <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Save Changes</Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-2fa-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-2fa/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  AlertCircle,\\n  CheckCircle2,\\n  KeyRound,\\n  MessageSquare,\\n  Shield,\\n  Smartphone,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst TwoFactorMethods = [\\n  {\\n    title: \\\"Security Keys\\\",\\n    description:\\n      \\\"Physical security keys provide the highest level of protection by requiring a hardware device for authentication.\\\",\\n    value: \\\"No security keys configured\\\",\\n    action: \\\"Add\\\",\\n    icon: KeyRound,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"Authenticator App\\\",\\n    description:\\n      \\\"Generate time-based one-time passwords (TOTP) using apps like Google Authenticator or Authy.\\\",\\n    value: \\\"Not configured\\\",\\n    action: \\\"Setup\\\",\\n    icon: Smartphone,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"SMS Number\\\",\\n    description:\\n      \\\"Receive verification codes via text message to your registered mobile number.\\\",\\n    value: \\\"+1 (555) 123-4567\\\",\\n    action: \\\"Edit\\\",\\n    icon: MessageSquare,\\n    isConfigured: true,\\n    recommended: false,\\n  },\\n]\\n\\nexport default function Account2FA01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4 border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Two-Factor Authentication\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Add an extra layer of security to your account\\n              </p>\\n            </div>\\n          </div>\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n          >\\n            <CheckCircle2 className=\\\"mr-1 h-3 w-3\\\" />\\n            Enabled\\n          </Badge>\\n        </div>\\n\\n        <div className=\\\"space-y-0\\\">\\n          {TwoFactorMethods.map((method, index) => {\\n            const Icon = method.icon\\n            return (\\n              <div\\n                key={method.title}\\n                className={`group flex flex-wrap items-center justify-between gap-6 py-6 ${\\n                  index !== TwoFactorMethods.length - 1\\n                    ? \\\"border-border border-b\\\"\\n                    : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-start gap-4\\\">\\n                  <div\\n                    className={`bg-muted flex h-12 w-12 shrink-0 items-center justify-center rounded-lg ${method.isConfigured ? \\\"bg-primary/10\\\" : \\\"\\\"}`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${method.isConfigured ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n                  <div className=\\\"flex-1 space-y-2\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <p className=\\\"font-semibold\\\">{method.title}</p>\\n                      {method.recommended && (\\n                        <span className=\\\"text-primary border-primary bg-primary/10 rounded-full border px-2 py-0.5 text-xs font-medium\\\">\\n                          Recommended\\n                        </span>\\n                      )}\\n                    </div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {method.description}\\n                    </p>\\n                    <p\\n                      className={`text-sm ${\\n                        method.isConfigured\\n                          ? \\\"font-semibold\\\"\\n                          : \\\"text-muted-foreground\\\"\\n                      }`}\\n                    >\\n                      {method.isConfigured && (\\n                        <CheckCircle2 className=\\\"mr-1 inline h-4 w-4 text-green-500\\\" />\\n                      )}\\n                      {method.value}\\n                    </p>\\n                  </div>\\n                </div>\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant={method.isConfigured ? \\\"outline\\\" : \\\"default\\\"}\\n                >\\n                  {method.action}\\n                </Button>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"mt-8 space-y-4\\\">\\n          <div className=\\\"bg-muted/50 flex items-start gap-3 rounded-lg border p-4\\\">\\n            <AlertCircle className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Recovery Codes</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Generate backup codes that can be used if you lose access to\\n                your 2FA methods. Store them securely in a safe place.\\n              </p>\\n              <Button variant=\\\"link\\\" className=\\\"mt-2 h-auto p-0 text-sm\\\">\\n                Generate Recovery Codes →\\n              </Button>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button variant=\\\"outline\\\">View Activity Log</Button>\\n            <Button>Save Settings</Button>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-change-password-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-change-password/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckCircle2, Eye, EyeOff, Lock, Shield, XCircle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nfunction PasswordField({\\n  id,\\n  label,\\n  ...props\\n}: {\\n  id: string\\n  label: string\\n} & React.InputHTMLAttributes<HTMLInputElement>) {\\n  const [showPassword, setShowPassword] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"mb-6 space-y-2\\\">\\n      <Label htmlFor={id} className=\\\"flex items-center gap-2\\\">\\n        <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n        {label}\\n      </Label>\\n      <div className=\\\"relative\\\">\\n        <Input\\n          {...props}\\n          id={id}\\n          type={showPassword ? \\\"text\\\" : \\\"password\\\"}\\n          placeholder=\\\"••••••••\\\"\\n        />\\n        <Button\\n          type=\\\"button\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"sm\\\"\\n          className=\\\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\\\"\\n          onClick={() => setShowPassword(!showPassword)}\\n        >\\n          {showPassword ? (\\n            <EyeOff className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          ) : (\\n            <Eye className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          )}\\n          <span className=\\\"sr-only\\\">\\n            {showPassword ? \\\"Hide password\\\" : \\\"Show password\\\"}\\n          </span>\\n        </Button>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst PASSWORD_REQUIREMENTS = [\\n  {\\n    label: \\\"At least 8 characters long\\\",\\n    regex: /.{8,}/,\\n  },\\n  {\\n    label: \\\"One uppercase letter (A-Z)\\\",\\n    regex: /[A-Z]/,\\n  },\\n  {\\n    label: \\\"One lowercase letter (a-z)\\\",\\n    regex: /[a-z]/,\\n  },\\n  {\\n    label: \\\"One number (0-9)\\\",\\n    regex: /[0-9]/,\\n  },\\n  {\\n    label: \\\"One special character (!@#$%^&*)\\\",\\n    regex: /[!@#$%^&*()_+\\\\-=\\\\[\\\\]{};':\\\"\\\\\\\\|,.<>\\\\/?]/,\\n  },\\n]\\n\\nexport default function AccountChangePassword01() {\\n  const [newPassword, setNewPassword] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Change Password\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your password to keep your account secure\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2\\\">\\n          <div>\\n            <form onSubmit={(e) => e.preventDefault()}>\\n              <PasswordField id=\\\"current-password\\\" label=\\\"Current Password\\\" />\\n              <PasswordField\\n                id=\\\"new-password\\\"\\n                label=\\\"New Password\\\"\\n                onChange={(e) => setNewPassword(e.target.value)}\\n                value={newPassword}\\n              />\\n              <PasswordField\\n                id=\\\"confirm-password\\\"\\n                label=\\\"Confirm New Password\\\"\\n              />\\n              <div className=\\\"mt-8 flex gap-3\\\">\\n                <Button type=\\\"button\\\" variant=\\\"outline\\\" className=\\\"flex-1\\\">\\n                  Cancel\\n                </Button>\\n                <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n                  Update Password\\n                </Button>\\n              </div>\\n            </form>\\n          </div>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 flex items-center gap-2 font-semibold\\\">\\n                <Shield className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                Password Requirements\\n              </h3>\\n              <p className=\\\"text-muted-foreground mb-6 text-sm\\\">\\n                Your password must meet the following criteria for enhanced\\n                security:\\n              </p>\\n              <ul className=\\\"space-y-3\\\">\\n                {PASSWORD_REQUIREMENTS.map((req, index) => {\\n                  const meetsRequirement = req.regex.test(newPassword)\\n                  return (\\n                    <li key={index} className=\\\"flex items-start gap-3\\\">\\n                      {meetsRequirement ? (\\n                        <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 shrink-0 text-green-500\\\" />\\n                      ) : (\\n                        <XCircle className=\\\"text-muted-foreground mt-0.5 h-5 w-5 shrink-0\\\" />\\n                      )}\\n                      <span\\n                        className={`text-sm ${\\n                          meetsRequirement\\n                            ? \\\"text-foreground\\\"\\n                            : \\\"text-muted-foreground\\\"\\n                        }`}\\n                      >\\n                        {req.label}\\n                      </span>\\n                    </li>\\n                  )\\n                })}\\n              </ul>\\n            </div>\\n\\n            <div className=\\\"bg-muted/50 rounded-lg border p-4\\\">\\n              <h4 className=\\\"mb-2 text-sm font-medium\\\">\\n                Security Best Practices\\n              </h4>\\n              <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Change your password regularly (every 90 days)</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Never share your password with anyone</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Use a unique password for each account</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Consider using a password manager</span>\\n                </li>\\n              </ul>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-notifications-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-notifications/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bell, Mail, MessageSquare, Smartphone } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst TABLE_HEAD = [\\n  { label: \\\"Activity\\\", icon: Bell },\\n  { label: \\\"Email\\\", icon: Mail },\\n  { label: \\\"Push\\\", icon: Smartphone },\\n  { label: \\\"SMS\\\", icon: MessageSquare },\\n]\\n\\nconst NOTIFICATIONS = [\\n  {\\n    title: \\\"Mentions\\\",\\n    description: \\\"Notify when another user mentions you in a comment\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Comments\\\",\\n    description: \\\"Notify when another user comments on your item\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"New Follower\\\",\\n    description: \\\"Notify when someone starts following you\\\",\\n    category: \\\"Social\\\",\\n    email: false,\\n    push: true,\\n    sms: false,\\n  },\\n  {\\n    title: \\\"Login Activity\\\",\\n    description: \\\"Alert when logging in from a new device or location\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Password Changed\\\",\\n    description: \\\"Immediate notification when password is updated\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Product Updates\\\",\\n    description: \\\"Get notified about new features and improvements\\\",\\n    category: \\\"Product\\\",\\n    email: true,\\n    push: false,\\n    sms: false,\\n  },\\n]\\n\\nexport default function AccountNotifications01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Notification Preferences\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Customize how you receive notifications. These settings apply to all\\n            activities you&apos;re monitoring across the platform.\\n          </p>\\n        </div>\\n\\n        <div className=\\\"overflow-x-auto\\\">\\n          <table className=\\\"w-full min-w-[40rem] table-auto text-left\\\">\\n            <thead>\\n              <tr className=\\\"border-b\\\">\\n                {TABLE_HEAD.map((head, i) => {\\n                  const Icon = head.icon\\n                  return (\\n                    <th\\n                      key={head.label}\\n                      className={`${\\n                        i === 0 ? \\\"py-4 pr-4\\\" : \\\"p-4 text-center\\\"\\n                      } font-semibold`}\\n                    >\\n                      <div\\n                        className={`flex items-center gap-2 ${\\n                          i !== 0 ? \\\"justify-center\\\" : \\\"\\\"\\n                        }`}\\n                      >\\n                        <Icon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                        <span className=\\\"text-sm\\\">{head.label}</span>\\n                      </div>\\n                    </th>\\n                  )\\n                })}\\n              </tr>\\n            </thead>\\n            <tbody>\\n              {NOTIFICATIONS.map((notification, index) => {\\n                const isLast = index === NOTIFICATIONS.length - 1\\n                const classes = isLast ? \\\"py-6\\\" : \\\"border-border border-b py-6\\\"\\n\\n                return (\\n                  <tr\\n                    key={notification.title}\\n                    className=\\\"group hover:bg-muted/50\\\"\\n                  >\\n                    <td className={`${classes} pr-4`}>\\n                      <div className=\\\"space-y-1\\\">\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{notification.title}</p>\\n                          <span className=\\\"text-muted-foreground rounded-full border px-2 py-0.5 text-xs\\\">\\n                            {notification.category}\\n                          </span>\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {notification.description}\\n                        </p>\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.email}\\n                          id={`email-${index}`}\\n                          aria-label={`Email notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.push}\\n                          id={`push-${index}`}\\n                          aria-label={`Push notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.sms}\\n                          id={`sms-${index}`}\\n                          aria-label={`SMS notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                  </tr>\\n                )\\n              })}\\n            </tbody>\\n          </table>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Bell className=\\\"text-muted-foreground mt-0.5 h-5 w-5\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">\\n                About Notification Delivery\\n              </h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Email notifications are sent instantly. Push notifications\\n                require the mobile app. SMS notifications may incur carrier\\n                charges. You can change these settings at any time.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-sessions-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-sessions/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Clock,\\n  Computer,\\n  Globe,\\n  ShieldCheck,\\n  Smartphone,\\n  X,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst ACTIVE_SESSIONS = [\\n  {\\n    id: 1,\\n    type: \\\"Laptop\\\",\\n    icon: Computer,\\n    location: \\\"New York, USA\\\",\\n    coordinates: \\\"40.7128° N, 74.0060° W\\\",\\n    isCurrent: true,\\n    lastActive: \\\"2 hours ago\\\",\\n    browser: \\\"Chrome 114.0\\\",\\n    os: \\\"macOS 13.4\\\",\\n  },\\n  {\\n    id: 2,\\n    type: \\\"Smartphone\\\",\\n    icon: Smartphone,\\n    location: \\\"Florida, USA\\\",\\n    coordinates: \\\"27.9944° N, 81.7603° W\\\",\\n    isCurrent: false,\\n    lastActive: \\\"Yesterday at 3:45 PM\\\",\\n    browser: \\\"Safari 16.5\\\",\\n    os: \\\"iOS 16.5\\\",\\n  },\\n  {\\n    id: 3,\\n    type: \\\"Desktop\\\",\\n    icon: Computer,\\n    location: \\\"Tokyo, Japan\\\",\\n    coordinates: \\\"35.6895° N, 139.6917° E\\\",\\n    isCurrent: false,\\n    lastActive: \\\"3 days ago\\\",\\n    browser: \\\"Firefox 112.0\\\",\\n    os: \\\"Windows 11\\\",\\n  },\\n]\\n\\nexport default function AccountSessions01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <ShieldCheck className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Active Sessions\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and monitor devices that have access to your account\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"space-y-6\\\">\\n          {ACTIVE_SESSIONS.map((session, index) => {\\n            const Icon = session.icon\\n            const isLast = index === ACTIVE_SESSIONS.length - 1\\n\\n            return (\\n              <div\\n                key={session.id}\\n                className={`flex items-center justify-between gap-6 py-4 ${\\n                  !isLast ? \\\"border-border border-b\\\" : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-center gap-4\\\">\\n                  <div\\n                    className={`bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${session.isCurrent ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n\\n                  <div className=\\\"space-y-1\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <h4 className=\\\"font-semibold\\\">{session.type} Session</h4>\\n                      {session.isCurrent && (\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n                        >\\n                          Current Session\\n                        </Badge>\\n                      )}\\n                    </div>\\n\\n                    <div className=\\\"text-muted-foreground space-y-1 text-sm\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Globe className=\\\"h-4 w-4\\\" />\\n                        <span>{session.location}</span>\\n                      </div>\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Clock className=\\\"h-4 w-4\\\" />\\n                        <span>Last active: {session.lastActive}</span>\\n                      </div>\\n                      <div>\\n                        {session.browser} on {session.os}\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  {!session.isCurrent && (\\n                    <Button variant=\\\"destructive\\\" size=\\\"sm\\\">\\n                      <X className=\\\"mr-2 h-4 w-4\\\" />\\n                      Remove\\n                    </Button>\\n                  )}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <ShieldCheck className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Security Tip</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                If you notice any suspicious activity, immediately remove the\\n                session and change your account password. Enable two-factor\\n                authentication for additional security.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-avatar-upload-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-avatar-upload/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  CheckCircle2,\\n  Pencil,\\n  Trash2,\\n  Upload,\\n  User,\\n  XCircle,\\n} from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nexport default function AccountAvatarUpload01() {\\n  const [status, setStatus] = React.useState(\\\"Online\\\")\\n  const [avatarPreview, setAvatarPreview] = React.useState<string | null>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onloadend = () => {\\n        setAvatarPreview(reader.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleRemoveAvatar = () => {\\n    setAvatarPreview(null)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <User className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Profile Picture\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your profile picture and personal information\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex flex-wrap items-center justify-between gap-6\\\">\\n          <div className=\\\"flex items-center gap-6\\\">\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"relative\\\">\\n                <Avatar className=\\\"border-border h-16 w-16 border-2\\\">\\n                  <AvatarImage\\n                    src={\\n                      avatarPreview ||\\n                      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                    }\\n                    alt=\\\"Profile Picture\\\"\\n                    className=\\\"object-cover\\\"\\n                  />\\n                  <AvatarFallback className=\\\"bg-muted-foreground/10 text-muted-foreground\\\">\\n                    <User className=\\\"h-8 w-8\\\" />\\n                  </AvatarFallback>\\n                </Avatar>\\n                <label\\n                  htmlFor=\\\"avatar-upload\\\"\\n                  className=\\\"absolute right-0 bottom-0 cursor-pointer\\\"\\n                >\\n                  <div className=\\\"bg-primary/10 text-primary hover:bg-primary/20 border-border rounded-full border p-1.5\\\">\\n                    <Pencil className=\\\"h-3.5 w-3.5\\\" />\\n                  </div>\\n                  <input\\n                    type=\\\"file\\\"\\n                    id=\\\"avatar-upload\\\"\\n                    accept=\\\"image/png,image/jpeg,image/svg+xml\\\"\\n                    className=\\\"hidden\\\"\\n                    onChange={handleFileUpload}\\n                  />\\n                </label>\\n              </div>\\n\\n              <div className=\\\"space-y-1\\\">\\n                <h3 className=\\\"font-semibold\\\">Select and Upload Image</h3>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  .svg, .png, .jpg (size 400x400px)\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Button>\\n                <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                Upload Avatar\\n              </Button>\\n              {avatarPreview && (\\n                <Button variant=\\\"destructive\\\" onClick={handleRemoveAvatar}>\\n                  <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n                  Remove\\n                </Button>\\n              )}\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Label className=\\\"mb-3 flex items-center gap-2\\\">\\n              <CheckCircle2 className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              Availability Status\\n            </Label>\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Switch\\n                id=\\\"status\\\"\\n                checked={status === \\\"Online\\\"}\\n                onCheckedChange={() =>\\n                  setStatus((cur) => (cur === \\\"Online\\\" ? \\\"Offline\\\" : \\\"Online\\\"))\\n                }\\n              />\\n              <Label\\n                htmlFor=\\\"status\\\"\\n                className=\\\"flex cursor-pointer items-center gap-2\\\"\\n              >\\n                {status === \\\"Online\\\" ? (\\n                  <CheckCircle2 className=\\\"h-4 w-4 text-green-500\\\" />\\n                ) : (\\n                  <XCircle className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                )}\\n                {status}\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Profile Picture Tips</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose a high-quality, professional image that clearly shows\\n                your face. Recommended image size is 400x400 pixels. Only .svg,\\n                .png, and .jpg formats are supported.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-integrations-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-integrations/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Check,\\n  ChevronDown,\\n  Copy,\\n  ExternalLink,\\n  Github,\\n  MessageCircle,\\n  Shield,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst INTEGRATIONS = [\\n  {\\n    id: \\\"github\\\",\\n    name: \\\"GitHub\\\",\\n    icon: Github,\\n    category: \\\"Development\\\",\\n    description:\\n      \\\"Connect your GitHub account to sync repositories and track contributions.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n  {\\n    id: \\\"spotify\\\",\\n    name: \\\"Spotify\\\",\\n    icon: MessageCircle, // Replaced Spotify icon with MessageCircle\\n    category: \\\"Music\\\",\\n    description:\\n      \\\"Link your Spotify account to share playlists and sync listening activity.\\\",\\n    isConfigured: true,\\n    connectedEmail: \\\"emma@mail.com\\\",\\n    verificationCode: \\\"1172913\\\",\\n  },\\n  {\\n    id: \\\"discord\\\",\\n    name: \\\"Discord\\\",\\n    icon: MessageCircle,\\n    category: \\\"Communication\\\",\\n    description:\\n      \\\"Integrate your Discord account to manage server connections and notifications.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n]\\n\\nexport default function AccountIntegrations01() {\\n  const [activeIntegrations, setActiveIntegrations] = React.useState<\\n    Record<string, boolean>\\n  >(\\n    INTEGRATIONS.reduce(\\n      (acc, integration) => {\\n        acc[integration.id] = integration.isConfigured\\n        return acc\\n      },\\n      {} as Record<string, boolean>\\n    )\\n  )\\n  const [copiedCode, setCopiedCode] = React.useState<string | null>(null)\\n\\n  const toggleIntegration = (id: string) => {\\n    setActiveIntegrations((prev) => ({\\n      ...prev,\\n      [id]: !prev[id],\\n    }))\\n  }\\n\\n  const copyVerificationCode = (code: string) => {\\n    navigator.clipboard.writeText(code)\\n    setCopiedCode(code)\\n    setTimeout(() => setCopiedCode(null), 2000)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Third-Party Integrations\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and configure connections to external services and\\n                platforms\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <Accordion type=\\\"single\\\" collapsible className=\\\"space-y-4\\\">\\n          {INTEGRATIONS.map((integration) => {\\n            const Icon = integration.icon\\n            const isActive = activeIntegrations[integration.id]\\n\\n            return (\\n              <AccordionItem\\n                key={integration.id}\\n                value={integration.id}\\n                className=\\\"border-border rounded-lg border\\\"\\n              >\\n                <div className=\\\"flex items-center justify-between px-4 py-4\\\">\\n                  <div className=\\\"flex flex-1 items-center gap-4\\\">\\n                    <div className=\\\"bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n                      <Icon\\n                        className={`h-6 w-6 ${isActive ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                      />\\n                    </div>\\n                    <div className=\\\"flex-1 space-y-1 text-left\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <h3 className=\\\"font-semibold\\\">{integration.name}</h3>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          {integration.category}\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground line-clamp-1 text-sm\\\">\\n                        {integration.description}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  <div className=\\\"flex items-center gap-3\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Switch\\n                        id={`${integration.id}-toggle`}\\n                        checked={isActive}\\n                        onCheckedChange={() =>\\n                          toggleIntegration(integration.id)\\n                        }\\n                      />\\n                      <Label\\n                        htmlFor={`${integration.id}-toggle`}\\n                        className=\\\"cursor-pointer text-sm\\\"\\n                      >\\n                        {isActive ? \\\"Enabled\\\" : \\\"Enable\\\"}\\n                      </Label>\\n                    </div>\\n                    <AccordionTrigger className=\\\"hover:bg-muted/50 rounded px-3 py-2\\\">\\n                      <span className=\\\"text-sm font-medium\\\">View More</span>\\n                    </AccordionTrigger>\\n                  </div>\\n                </div>\\n                <AccordionContent className=\\\"px-4 pb-6\\\">\\n                  {!isActive ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        You haven&apos;t added your {integration.name} account\\n                        or you aren&apos;t authorized. Click &quot;Connect&quot;\\n                        to initiate the integration process.\\n                      </p>\\n                      <Button>\\n                        <ExternalLink className=\\\"mr-2 h-4 w-4\\\" />\\n                        Connect {integration.name}\\n                      </Button>\\n                    </div>\\n                  ) : integration.connectedEmail ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Verification Code</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Use this code to complete the integration\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <code className=\\\"bg-muted/50 rounded px-3 py-1 font-mono text-sm\\\">\\n                              {integration.verificationCode}\\n                            </code>\\n                            <Button\\n                              variant=\\\"outline\\\"\\n                              size=\\\"sm\\\"\\n                              onClick={() =>\\n                                copyVerificationCode(\\n                                  integration.verificationCode!\\n                                )\\n                              }\\n                            >\\n                              {copiedCode === integration.verificationCode ? (\\n                                <Check className=\\\"mr-2 h-4 w-4 text-green-500\\\" />\\n                              ) : (\\n                                <Copy className=\\\"mr-2 h-4 w-4\\\" />\\n                              )}\\n                              {copiedCode === integration.verificationCode\\n                                ? \\\"Copied\\\"\\n                                : \\\"Copy\\\"}\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Connected Account</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Manage your linked {integration.name} account\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <span className=\\\"text-sm font-medium\\\">\\n                              {integration.connectedEmail}\\n                            </span>\\n                            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                              Edit\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                    </div>\\n                  ) : null}\\n                </AccordionContent>\\n              </AccordionItem>\\n            )\\n          })}\\n        </Accordion>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Shield className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Integration Security</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Ensure you trust the applications you connect. Review and manage\\n                third-party access to your account regularly. You can revoke\\n                access at any time by disabling the integration.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-chat-streaming-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-chat-streaming/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Brain, Loader2, Send } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { ScrollArea } from \\\"@/components/ui/scroll-area\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Gemini\\\" },\\n  { value: \\\"cohere\\\", label: \\\"Cohere\\\" },\\n  { value: \\\"mistral\\\", label: \\\"Mistral AI\\\" },\\n]\\n\\ninterface Message {\\n  id: string\\n  role: \\\"user\\\" | \\\"assistant\\\"\\n  content: string\\n  thinking?: string\\n  isStreaming?: boolean\\n}\\n\\nexport default function AIChatStreamingBlock() {\\n  const [messages, setMessages] = React.useState<Message[]>([\\n    {\\n      id: \\\"1\\\",\\n      role: \\\"assistant\\\",\\n      content:\\n        \\\"Hello! I'm your AI assistant with streaming and thinking capabilities. How can I help you today?\\\",\\n    },\\n  ])\\n  const [input, setInput] = React.useState(\\\"\\\")\\n  const [isLoading, setIsLoading] = React.useState(false)\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [showThinking, setShowThinking] = React.useState(false)\\n  const scrollAreaRef = React.useRef<HTMLDivElement>(null)\\n\\n  const simulateStreaming = async (text: string) => {\\n    const words = text.split(\\\" \\\")\\n    let currentText = \\\"\\\"\\n\\n    const messageId = Date.now().toString()\\n    setMessages((prev) => [\\n      ...prev,\\n      {\\n        id: messageId,\\n        role: \\\"assistant\\\",\\n        content: \\\"\\\",\\n        thinking: showThinking\\n          ? \\\"Analyzing your question and formulating a comprehensive response...\\\"\\n          : undefined,\\n        isStreaming: true,\\n      },\\n    ])\\n\\n    for (let i = 0; i < words.length; i++) {\\n      currentText += (i > 0 ? \\\" \\\" : \\\"\\\") + words[i]\\n      await new Promise((resolve) => setTimeout(resolve, 50))\\n\\n      setMessages((prev) =>\\n        prev.map((msg) =>\\n          msg.id === messageId\\n            ? {\\n                ...msg,\\n                content: currentText,\\n                isStreaming: i < words.length - 1,\\n              }\\n            : msg\\n        )\\n      )\\n    }\\n  }\\n\\n  const handleSend = async () => {\\n    if (!input.trim() || isLoading) return\\n\\n    const userMessage: Message = {\\n      id: Date.now().toString(),\\n      role: \\\"user\\\",\\n      content: input.trim(),\\n    }\\n\\n    setMessages((prev) => [...prev, userMessage])\\n    setInput(\\\"\\\")\\n    setIsLoading(true)\\n\\n    // Simulate AI response\\n    const responses = [\\n      \\\"That's an interesting question. Based on the AI provider you've selected, I can process this with advanced natural language understanding. Let me break this down for you with a detailed analysis.\\\",\\n      \\\"I understand what you're asking. Using the configured API, I can provide you with accurate information. The key aspects to consider are context, relevance, and accuracy in the response.\\\",\\n      \\\"Great question! With streaming enabled, you can see my response in real-time as I process your query. This creates a more interactive and engaging experience for users.\\\",\\n    ]\\n\\n    const randomResponse =\\n      responses[Math.floor(Math.random() * responses.length)]\\n    await simulateStreaming(randomResponse)\\n    setIsLoading(false)\\n  }\\n\\n  React.useEffect(() => {\\n    if (scrollAreaRef.current) {\\n      scrollAreaRef.current.scrollTop = scrollAreaRef.current.scrollHeight\\n    }\\n  }, [messages])\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-4xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Brain className=\\\"h-6 w-6\\\" />\\n            AI Chat with Streaming and Thinking\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n            <input\\n              type=\\\"checkbox\\\"\\n              id=\\\"showThinking\\\"\\n              checked={showThinking}\\n              onChange={(e) => setShowThinking(e.target.checked)}\\n              className=\\\"h-4 w-4 rounded border-gray-300\\\"\\n            />\\n            <Label htmlFor=\\\"showThinking\\\" className=\\\"cursor-pointer text-sm\\\">\\n              Show AI thinking process\\n            </Label>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"space-y-4\\\">\\n          <ScrollArea\\n            className=\\\"h-[400px] rounded-md border p-4\\\"\\n            ref={scrollAreaRef}\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              {messages.map((message) => (\\n                <div\\n                  key={message.id}\\n                  className={`flex gap-3 ${\\n                    message.role === \\\"user\\\" ? \\\"justify-end\\\" : \\\"justify-start\\\"\\n                  }`}\\n                >\\n                  {message.role === \\\"assistant\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                  <div\\n                    className={`max-w-[80%] space-y-2 ${\\n                      message.role === \\\"user\\\" ? \\\"order-first\\\" : \\\"\\\"\\n                    }`}\\n                  >\\n                    {message.thinking && (\\n                      <div className=\\\"bg-muted/50 mb-2 rounded-lg border border-dashed p-3\\\">\\n                        <p className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n                          <Brain className=\\\"h-4 w-4\\\" />\\n                          <span className=\\\"italic\\\">{message.thinking}</span>\\n                        </p>\\n                      </div>\\n                    )}\\n                    <div\\n                      className={`rounded-lg p-3 ${\\n                        message.role === \\\"user\\\"\\n                          ? \\\"bg-primary text-primary-foreground\\\"\\n                          : \\\"bg-muted\\\"\\n                      }`}\\n                    >\\n                      <p className=\\\"text-sm\\\">\\n                        {message.content}\\n                        {message.isStreaming && (\\n                          <span className=\\\"ml-1 inline-block h-4 w-1 animate-pulse bg-current\\\" />\\n                        )}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  {message.role === \\\"user\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback>U</AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                </div>\\n              ))}\\n              {isLoading &&\\n                messages[messages.length - 1]?.role !== \\\"assistant\\\" && (\\n                  <div className=\\\"flex gap-3\\\">\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"bg-muted flex items-center gap-2 rounded-lg p-3\\\">\\n                      <Loader2 className=\\\"h-4 w-4 animate-spin\\\" />\\n                      <span className=\\\"text-sm\\\">Thinking...</span>\\n                    </div>\\n                  </div>\\n                )}\\n            </div>\\n          </ScrollArea>\\n          <form\\n            onSubmit={(e) => {\\n              e.preventDefault()\\n              handleSend()\\n            }}\\n            className=\\\"flex gap-2\\\"\\n          >\\n            <Input\\n              placeholder=\\\"Type your message...\\\"\\n              value={input}\\n              onChange={(e) => setInput(e.target.value)}\\n              disabled={isLoading || !apiKey}\\n            />\\n            <Button\\n              type=\\\"submit\\\"\\n              disabled={isLoading || !apiKey || !input.trim()}\\n            >\\n              <Send className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </form>\\n          {!apiKey && (\\n            <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n              Please enter your API key to start chatting\\n            </p>\\n          )}\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-image-generator-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-image-generator/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Download,\\n  ImageIcon,\\n  Loader2,\\n  Move,\\n  RotateCw,\\n  Upload,\\n  Wand2,\\n  ZoomIn,\\n  ZoomOut,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Slider } from \\\"@/components/ui/slider\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI DALL-E\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI\\\" },\\n  { value: \\\"midjourney\\\", label: \\\"Midjourney\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Imagen\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n]\\n\\nconst IMAGE_SIZES = [\\n  { value: \\\"1024x1024\\\", label: \\\"Square (1024x1024)\\\" },\\n  { value: \\\"1024x1792\\\", label: \\\"Portrait (1024x1792)\\\" },\\n  { value: \\\"1792x1024\\\", label: \\\"Landscape (1792x1024)\\\" },\\n]\\n\\nexport default function AIImageGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [imageSize, setImageSize] = React.useState(\\\"1024x1024\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [uploadedImage, setUploadedImage] = React.useState<string | null>(null)\\n  const [generatedImage, setGeneratedImage] = React.useState<string | null>(\\n    null\\n  )\\n  const [brightness, setBrightness] = React.useState([100])\\n  const [contrast, setContrast] = React.useState([100])\\n  const [saturation, setSaturation] = React.useState([100])\\n  const fileInputRef = React.useRef<HTMLInputElement>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onload = (e) => {\\n        setUploadedImage(e.target?.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n\\n    // Simulate image generation\\n    await new Promise((resolve) => setTimeout(resolve, 3000))\\n\\n    // Use a placeholder image service\\n    const seed = Math.floor(Math.random() * 1000)\\n    const [width, height] = imageSize.split(\\\"x\\\")\\n    setGeneratedImage(`https://picsum.photos/seed/${seed}/${width}/${height}`)\\n\\n    setIsGenerating(false)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!generatedImage) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = generatedImage\\n    link.download = \\\"ai-generated-image.png\\\"\\n    link.click()\\n  }\\n\\n  const resetEditor = () => {\\n    setBrightness([100])\\n    setContrast([100])\\n    setSaturation([100])\\n  }\\n\\n  const imageStyle = {\\n    filter: `brightness(${brightness[0]}%) contrast(${contrast[0]}%) saturate(${saturation[0]}%)`,\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-6xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <ImageIcon className=\\\"h-6 w-6\\\" />\\n            AI Image Generator with Editor\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-3\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"size\\\">Image Size</Label>\\n              <Select value={imageSize} onValueChange={setImageSize}>\\n                <SelectTrigger id=\\\"size\\\">\\n                  <SelectValue placeholder=\\\"Select size\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {IMAGE_SIZES.map((size) => (\\n                    <SelectItem key={size.value} value={size.value}>\\n                      {size.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <Tabs defaultValue=\\\"generate\\\" className=\\\"w-full\\\">\\n            <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n              <TabsTrigger value=\\\"generate\\\">Generate</TabsTrigger>\\n              <TabsTrigger value=\\\"edit\\\">Edit & Upload</TabsTrigger>\\n            </TabsList>\\n\\n            <TabsContent value=\\\"generate\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Image Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the image you want to generate... (e.g., 'A serene landscape with mountains at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-4 w-4 animate-spin\\\" />\\n                    Generating Image...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Wand2 className=\\\"mr-2 h-4 w-4\\\" />\\n                    Generate Image\\n                  </>\\n                )}\\n              </Button>\\n\\n              {generatedImage && (\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                    <img\\n                      src={generatedImage}\\n                      alt=\\\"Generated\\\"\\n                      className=\\\"h-full w-full object-contain\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                      <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                      Download\\n                    </Button>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={handleGenerate}\\n                      disabled={isGenerating}\\n                    >\\n                      <RotateCw className=\\\"mr-2 h-4 w-4\\\" />\\n                      Regenerate\\n                    </Button>\\n                  </div>\\n                </div>\\n              )}\\n\\n              {!apiKey && (\\n                <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                  Please enter your API key to start generating images\\n                </p>\\n              )}\\n            </TabsContent>\\n\\n            <TabsContent value=\\\"edit\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label>Upload Image</Label>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Input\\n                      ref={fileInputRef}\\n                      type=\\\"file\\\"\\n                      accept=\\\"image/*\\\"\\n                      onChange={handleFileUpload}\\n                      className=\\\"flex-1\\\"\\n                    />\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={() => fileInputRef.current?.click()}\\n                    >\\n                      <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                      Browse\\n                    </Button>\\n                  </div>\\n                </div>\\n\\n                {(uploadedImage || generatedImage) && (\\n                  <div className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                      <img\\n                        src={uploadedImage || generatedImage || \\\"\\\"}\\n                        alt=\\\"Editing\\\"\\n                        className=\\\"h-full w-full object-contain\\\"\\n                        style={imageStyle}\\n                      />\\n                    </div>\\n\\n                    <Card>\\n                      <CardHeader>\\n                        <CardTitle className=\\\"text-sm\\\">Image Editor</CardTitle>\\n                      </CardHeader>\\n                      <CardContent className=\\\"space-y-6\\\">\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Brightness</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {brightness[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={brightness}\\n                            onValueChange={setBrightness}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Contrast</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {contrast[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={contrast}\\n                            onValueChange={setContrast}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Saturation</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {saturation[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={saturation}\\n                            onValueChange={setSaturation}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"flex gap-2\\\">\\n                          <Button\\n                            variant=\\\"outline\\\"\\n                            onClick={resetEditor}\\n                            className=\\\"flex-1\\\"\\n                          >\\n                            Reset\\n                          </Button>\\n                          <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                            <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                            Download\\n                          </Button>\\n                        </div>\\n                      </CardContent>\\n                    </Card>\\n                  </div>\\n                )}\\n\\n                {!uploadedImage && !generatedImage && (\\n                  <div className=\\\"border-muted-foreground/25 bg-muted/50 flex h-64 flex-col items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                    <ImageIcon className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Upload an image or generate one to start editing\\n                    </p>\\n                  </div>\\n                )}\\n              </div>\\n            </TabsContent>\\n          </Tabs>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-video-generator-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-video-generator/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Clock,\\n  Download,\\n  FileVideo,\\n  Film,\\n  Loader2,\\n  Pause,\\n  Play,\\n  Sparkles,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Progress } from \\\"@/components/ui/progress\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"runway\\\", label: \\\"Runway Gen-3\\\" },\\n  { value: \\\"pika\\\", label: \\\"Pika Labs\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI Video\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Veo\\\" },\\n  { value: \\\"openai\\\", label: \\\"OpenAI Sora\\\" },\\n]\\n\\nconst VIDEO_DURATIONS = [\\n  { value: \\\"3\\\", label: \\\"3 seconds\\\" },\\n  { value: \\\"5\\\", label: \\\"5 seconds\\\" },\\n  { value: \\\"10\\\", label: \\\"10 seconds\\\" },\\n  { value: \\\"15\\\", label: \\\"15 seconds\\\" },\\n]\\n\\nconst VIDEO_STYLES = [\\n  { value: \\\"realistic\\\", label: \\\"Realistic\\\" },\\n  { value: \\\"cinematic\\\", label: \\\"Cinematic\\\" },\\n  { value: \\\"animated\\\", label: \\\"Animated\\\" },\\n  { value: \\\"artistic\\\", label: \\\"Artistic\\\" },\\n  { value: \\\"abstract\\\", label: \\\"Abstract\\\" },\\n]\\n\\ninterface GeneratedVideo {\\n  id: string\\n  prompt: string\\n  url: string\\n  thumbnail: string\\n  duration: string\\n  style: string\\n  timestamp: Date\\n}\\n\\nexport default function AIVideoGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"runway\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [duration, setDuration] = React.useState(\\\"5\\\")\\n  const [style, setStyle] = React.useState(\\\"realistic\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [progress, setProgress] = React.useState(0)\\n  const [generatedVideos, setGeneratedVideos] = React.useState<\\n    GeneratedVideo[]\\n  >([])\\n  const [selectedVideo, setSelectedVideo] =\\n    React.useState<GeneratedVideo | null>(null)\\n  const [isPlaying, setIsPlaying] = React.useState(false)\\n  const videoRef = React.useRef<HTMLVideoElement>(null)\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n    setProgress(0)\\n\\n    // Simulate video generation progress\\n    const interval = setInterval(() => {\\n      setProgress((prev) => {\\n        if (prev >= 100) {\\n          clearInterval(interval)\\n          return 100\\n        }\\n        return prev + 5\\n      })\\n    }, 300)\\n\\n    // Simulate video generation\\n    await new Promise((resolve) => setTimeout(resolve, 6000))\\n\\n    const newVideo: GeneratedVideo = {\\n      id: Date.now().toString(),\\n      prompt: prompt,\\n      url: \\\"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4\\\",\\n      thumbnail: `https://picsum.photos/seed/${Math.floor(Math.random() * 1000)}/640/360`,\\n      duration: duration,\\n      style: style,\\n      timestamp: new Date(),\\n    }\\n\\n    setGeneratedVideos((prev) => [newVideo, ...prev])\\n    setSelectedVideo(newVideo)\\n    setIsGenerating(false)\\n    setProgress(0)\\n  }\\n\\n  const togglePlayPause = () => {\\n    if (!videoRef.current) return\\n\\n    if (isPlaying) {\\n      videoRef.current.pause()\\n    } else {\\n      videoRef.current.play()\\n    }\\n    setIsPlaying(!isPlaying)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!selectedVideo) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = selectedVideo.url\\n    link.download = `ai-video-${selectedVideo.id}.mp4`\\n    link.click()\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-7xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Video className=\\\"h-6 w-6\\\" />\\n            AI Video Generation Agent\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"duration\\\">Duration</Label>\\n              <Select value={duration} onValueChange={setDuration}>\\n                <SelectTrigger id=\\\"duration\\\">\\n                  <SelectValue placeholder=\\\"Select duration\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_DURATIONS.map((d) => (\\n                    <SelectItem key={d.value} value={d.value}>\\n                      {d.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"style\\\">Style</Label>\\n              <Select value={style} onValueChange={setStyle}>\\n                <SelectTrigger id=\\\"style\\\">\\n                  <SelectValue placeholder=\\\"Select style\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_STYLES.map((s) => (\\n                    <SelectItem key={s.value} value={s.value}>\\n                      {s.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"grid gap-6 lg:grid-cols-3\\\">\\n            <div className=\\\"space-y-4 lg:col-span-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Video Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the video you want to generate... (e.g., 'A drone shot flying over a futuristic city at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey || isGenerating}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n                size=\\\"lg\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-5 w-5 animate-spin\\\" />\\n                    Generating Video...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Sparkles className=\\\"mr-2 h-5 w-5\\\" />\\n                    Generate Video\\n                  </>\\n                )}\\n              </Button>\\n\\n              {isGenerating && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"pt-6\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <div className=\\\"flex items-center justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          Processing video generation...\\n                        </span>\\n                        <span className=\\\"font-medium\\\">{progress}%</span>\\n                      </div>\\n                      <Progress value={progress} className=\\\"h-2\\\" />\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {selectedVideo && (\\n                <Card>\\n                  <CardHeader>\\n                    <div className=\\\"flex items-start justify-between\\\">\\n                      <div className=\\\"space-y-1\\\">\\n                        <CardTitle className=\\\"text-lg\\\">Preview</CardTitle>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {selectedVideo.prompt}\\n                        </p>\\n                      </div>\\n                      <div className=\\\"flex gap-2\\\">\\n                        <Badge variant=\\\"secondary\\\">\\n                          <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                          {selectedVideo.duration}s\\n                        </Badge>\\n                        <Badge variant=\\\"secondary\\\" className=\\\"capitalize\\\">\\n                          {selectedVideo.style}\\n                        </Badge>\\n                      </div>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\\\">\\n                      <video\\n                        ref={videoRef}\\n                        src={selectedVideo.url}\\n                        className=\\\"h-full w-full\\\"\\n                        onPlay={() => setIsPlaying(true)}\\n                        onPause={() => setIsPlaying(false)}\\n                      />\\n                      <div className=\\\"absolute inset-0 flex items-center justify-center\\\">\\n                        <Button\\n                          size=\\\"lg\\\"\\n                          variant=\\\"secondary\\\"\\n                          onClick={togglePlayPause}\\n                          className=\\\"h-16 w-16 rounded-full\\\"\\n                        >\\n                          {isPlaying ? (\\n                            <Pause className=\\\"h-6 w-6\\\" />\\n                          ) : (\\n                            <Play className=\\\"h-6 w-6\\\" />\\n                          )}\\n                        </Button>\\n                      </div>\\n                    </div>\\n                    <div className=\\\"flex gap-2\\\">\\n                      <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                        <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                        Download Video\\n                      </Button>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        onClick={handleGenerate}\\n                        disabled={isGenerating}\\n                        className=\\\"flex-1\\\"\\n                      >\\n                        <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n                        Generate New\\n                      </Button>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {!apiKey && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"flex flex-col items-center justify-center py-12\\\">\\n                    <FileVideo className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                      Please enter your API key to start generating videos\\n                    </p>\\n                  </CardContent>\\n                </Card>\\n              )}\\n            </div>\\n\\n            <div className=\\\"space-y-4\\\">\\n              <Card>\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-base\\\">Generated Videos</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"space-y-3\\\">\\n                  {generatedVideos.length === 0 ? (\\n                    <div className=\\\"text-muted-foreground py-8 text-center text-sm\\\">\\n                      No videos generated yet\\n                    </div>\\n                  ) : (\\n                    generatedVideos.map((video) => (\\n                      <Card\\n                        key={video.id}\\n                        className={`cursor-pointer transition-colors ${\\n                          selectedVideo?.id === video.id\\n                            ? \\\"border-primary\\\"\\n                            : \\\"hover:border-primary/50\\\"\\n                        }`}\\n                        onClick={() => setSelectedVideo(video)}\\n                      >\\n                        <CardContent className=\\\"p-3\\\">\\n                          <div className=\\\"relative mb-2 aspect-video overflow-hidden rounded\\\">\\n                            <img\\n                              src={video.thumbnail}\\n                              alt={video.prompt}\\n                              className=\\\"h-full w-full object-cover\\\"\\n                            />\\n                            <div className=\\\"absolute inset-0 flex items-center justify-center bg-black/30\\\">\\n                              <Play className=\\\"h-8 w-8 text-white\\\" />\\n                            </div>\\n                          </div>\\n                          <p className=\\\"line-clamp-2 text-xs\\\">{video.prompt}</p>\\n                          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n                            <Badge variant=\\\"secondary\\\" className=\\\"text-xs\\\">\\n                              <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                              {video.duration}s\\n                            </Badge>\\n                          </div>\\n                        </CardContent>\\n                      </Card>\\n                    ))\\n                  )}\\n                </CardContent>\\n              </Card>\\n\\n              <Card className=\\\"bg-muted/50\\\">\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-sm\\\">Tips</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"text-muted-foreground space-y-2 text-xs\\\">\\n                  <p>• Be specific and descriptive in your prompts</p>\\n                  <p>• Describe camera movements and angles</p>\\n                  <p>• Mention lighting and atmosphere</p>\\n                  <p>• Specify the mood and style you want</p>\\n                  <p>• Keep prompts under 500 characters</p>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"hooks/use-mobile.ts\",\n      \"type\": \"registry:hook\",\n      \"target\": \"\",\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    },\n    {\n      \"path\": \"examples/software-purchase-card-demo.tsx\",\n      \"type\": \"registry:example\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SoftwarePurchaseCard } from \\\"@/components/ui/software-purchase-card\\\"\\n\\nexport default function SoftwarePurchaseCardDemo() {\\n  const handleApprove = () => {\\n    console.log(\\\"Purchase approved\\\")\\n  }\\n\\n  const handleDiscard = () => {\\n    console.log(\\\"Purchase discarded\\\")\\n  }\\n\\n  return (\\n    <div className=\\\"flex items-center justify-center p-6\\\">\\n      <SoftwarePurchaseCard\\n        softwareName=\\\"Enterprise Cloud Suite\\\"\\n        startDate=\\\"2025-01-15\\\"\\n        seats={50}\\n        pricingType=\\\"per-seat\\\"\\n        price=\\\"$2,500\\\"\\n        onApprove={handleApprove}\\n        onDiscard={handleDiscard}\\n      />\\n    </div>\\n  )\\n}\\n\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/www/public/r/aspect-ratio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"aspect-ratio\",\n  \"dependencies\": [\n    \"@radix-ui/react-aspect-ratio\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/aspect-ratio.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as AspectRatioPrimitive from \\\"@radix-ui/react-aspect-ratio\\\"\\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/www/public/r/avatar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"avatar\",\n  \"dependencies\": [\n    \"@radix-ui/react-avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\nfunction Avatar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 overflow-hidden rounded-full\\\",\\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        \\\"bg-muted flex size-full items-center justify-center rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Avatar, AvatarImage, AvatarFallback }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/badge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge\",\n  \"files\": [\n    {\n      \"path\": \"components/ui/badge.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 badgeVariants = cva(\\n  \\\"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\\\",\\n        secondary:\\n          \\\"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\\\",\\n        destructive:\\n          \\\"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\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/www/public/r/billing-information-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"billing-information-01\",\n  \"description\": \"Manage billing contacts and company information\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/billing-information-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Building2, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\ninterface BillingCardProps {\\n  company: string\\n  contact: string\\n  email: string\\n  vat: string\\n}\\n\\nfunction BillingCard({ company, contact, email, vat }: BillingCardProps) {\\n  return (\\n    <Card className=\\\"border\\\">\\n      <CardHeader>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <div className=\\\"bg-background grid h-12 w-12 shrink-0 place-items-center rounded border\\\">\\n            <Building2 className=\\\"h-6 w-6\\\" />\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <CardTitle className=\\\"text-sm\\\">{company}</CardTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Company</p>\\n          </div>\\n        </div>\\n        <CardAction>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n              <Pencil className=\\\"mr-2 h-4 w-4\\\" />\\n              Edit\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"text-destructive hover:text-destructive\\\"\\n            >\\n              <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n              Delete\\n            </Button>\\n          </div>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-2\\\">\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">Contact: </span>\\n          <span className=\\\"font-medium\\\">{contact}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            Email Address:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{email}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            VAT Number:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{vat}</span>\\n        </div>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\\nexport default function BillingInformation01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-3xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row\\\">\\n        <div>\\n          <h2 className=\\\"font-semibold\\\">Billing Information</h2>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            View and update your billing details quickly and easily.\\n          </p>\\n        </div>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Billing\\n        </Button>\\n      </div>\\n      <div className=\\\"mt-6 space-y-4\\\">\\n        <BillingCard\\n          company=\\\"Burrito Vikings\\\"\\n          contact=\\\"Emma Roberts\\\"\\n          email=\\\"emma@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Stone Tech Zone\\\"\\n          contact=\\\"Marcel Glock\\\"\\n          email=\\\"marcel@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Fiber Notion\\\"\\n          contact=\\\"Misha Stam\\\"\\n          email=\\\"misha@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/billing-information/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\"\n  },\n  \"categories\": [\n    \"billing\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/blocks.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"blocks\",\n  \"type\": \"registry:block\",\n  \"description\": \"All blocks from @creative-tim/blocks\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"accordion\",\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"checkbox\",\n    \"dialog\",\n    \"dropdown-menu\",\n    \"input\",\n    \"label\",\n    \"popover\",\n    \"progress\",\n    \"radio-group\",\n    \"scroll-area\",\n    \"select\",\n    \"separator\",\n    \"slider\",\n    \"software-purchase-card\",\n    \"switch\",\n    \"tabs\",\n    \"textarea\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"blocks/software-purchase-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/software-purchase/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport { SoftwarePurchaseCard } from \\\"@/components/ui/software-purchase-card\\\"\\n\\nexport default function Page() {\\n  const handleApprove = () => {\\n    console.log(\\\"Purchase approved\\\")\\n  }\\n\\n  const handleDiscard = () => {\\n    console.log(\\\"Purchase discarded\\\")\\n  }\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full items-center justify-center p-6\\\">\\n      <div className=\\\"flex w-full max-w-6xl flex-col gap-8 lg:flex-row\\\">\\n        {/* Left side - Purchase Details */}\\n        <div className=\\\"flex flex-1 flex-col gap-6\\\">\\n          <div className=\\\"flex flex-col gap-2\\\">\\n            <h1 className=\\\"text-3xl font-bold\\\">Software Purchase Request</h1>\\n            <p className=\\\"text-muted-foreground\\\">\\n              Review and approve the software purchase details below\\n            </p>\\n          </div>\\n\\n          <Separator />\\n\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">Purchase Details</h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Software Name</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Enterprise Cloud Suite\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Vendor</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    CloudTech Solutions Inc.\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">License Type</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Commercial License\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Contract Duration</span>\\n                  <span className=\\\"text-muted-foreground\\\">12 months</span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Billing Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Billing Cycle</span>\\n                  <span className=\\\"text-muted-foreground\\\">Monthly</span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Payment Method</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Corporate Credit Card\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Cost Center</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Engineering Department\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Annual Total</span>\\n                  <span className=\\\"text-muted-foreground font-semibold\\\">\\n                    $30,000\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Additional Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Requested By</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    John Smith (Engineering Manager)\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Request Date</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    December 28, 2024\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Status</span>\\n                  <Badge variant=\\\"secondary\\\" className=\\\"w-fit\\\">\\n                    Pending Approval\\n                  </Badge>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Justification</span>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    This software is critical for our cloud infrastructure\\n                    management and will enable the engineering team to scale\\n                    operations more efficiently. The per-seat pricing model\\n                    aligns with our team growth projections for Q1 2025.\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* Right side - Software Purchase Card */}\\n        <div className=\\\"flex items-start justify-center lg:sticky lg:top-6 lg:h-fit lg:w-[400px]\\\">\\n          <SoftwarePurchaseCard\\n            softwareName=\\\"Enterprise Cloud Suite\\\"\\n            startDate=\\\"2025-01-15\\\"\\n            seats={50}\\n            pricingType=\\\"per-seat\\\"\\n            price=\\\"$2,500\\\"\\n            onApprove={handleApprove}\\n            onDiscard={handleDiscard}\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/billing-information-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/billing-information/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Building2, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardAction,\\n  CardContent,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\ninterface BillingCardProps {\\n  company: string\\n  contact: string\\n  email: string\\n  vat: string\\n}\\n\\nfunction BillingCard({ company, contact, email, vat }: BillingCardProps) {\\n  return (\\n    <Card className=\\\"border\\\">\\n      <CardHeader>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <div className=\\\"bg-background grid h-12 w-12 shrink-0 place-items-center rounded border\\\">\\n            <Building2 className=\\\"h-6 w-6\\\" />\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <CardTitle className=\\\"text-sm\\\">{company}</CardTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Company</p>\\n          </div>\\n        </div>\\n        <CardAction>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button size=\\\"sm\\\" variant=\\\"ghost\\\">\\n              <Pencil className=\\\"mr-2 h-4 w-4\\\" />\\n              Edit\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"ghost\\\"\\n              className=\\\"text-destructive hover:text-destructive\\\"\\n            >\\n              <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n              Delete\\n            </Button>\\n          </div>\\n        </CardAction>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-2\\\">\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">Contact: </span>\\n          <span className=\\\"font-medium\\\">{contact}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            Email Address:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{email}</span>\\n        </div>\\n        <div className=\\\"text-sm\\\">\\n          <span className=\\\"text-muted-foreground font-semibold\\\">\\n            VAT Number:{\\\" \\\"}\\n          </span>\\n          <span className=\\\"font-medium\\\">{vat}</span>\\n        </div>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\\nexport default function BillingInformation01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-3xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row\\\">\\n        <div>\\n          <h2 className=\\\"font-semibold\\\">Billing Information</h2>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            View and update your billing details quickly and easily.\\n          </p>\\n        </div>\\n        <Button variant=\\\"outline\\\" className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Billing\\n        </Button>\\n      </div>\\n      <div className=\\\"mt-6 space-y-4\\\">\\n        <BillingCard\\n          company=\\\"Burrito Vikings\\\"\\n          contact=\\\"Emma Roberts\\\"\\n          email=\\\"emma@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Stone Tech Zone\\\"\\n          contact=\\\"Marcel Glock\\\"\\n          email=\\\"marcel@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n        <BillingCard\\n          company=\\\"Fiber Notion\\\"\\n          contact=\\\"Misha Stam\\\"\\n          email=\\\"misha@mail.com\\\"\\n          vat=\\\"FRB1235476\\\"\\n        />\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/card-display-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/card-display/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Wifi } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\ninterface CreditCardProps {\\n  variant?: \\\"dark\\\" | \\\"light\\\"\\n  number: string\\n  holder: string\\n  expires: string\\n}\\n\\nfunction CreditCard({\\n  variant = \\\"light\\\",\\n  number,\\n  holder,\\n  expires,\\n}: CreditCardProps) {\\n  const isDark = variant === \\\"dark\\\"\\n\\n  return (\\n    <Card\\n      className={`group relative overflow-hidden transition-all duration-300 hover:scale-[1.02] hover:shadow-2xl ${\\n        isDark\\n          ? \\\"bg-black text-white\\\"\\n          : \\\"border-border/50 bg-white text-black shadow-lg\\\"\\n      }`}\\n    >\\n      <div className=\\\"absolute inset-0 bg-gradient-to-tr from-transparent via-white/5 to-white/10 opacity-0 transition-opacity duration-300 group-hover:opacity-100\\\" />\\n\\n      <div className=\\\"relative m-0 flex w-full items-center justify-between p-6\\\">\\n        <div\\n          className={`rounded-lg p-2 ${isDark ? \\\"bg-white/10\\\" : \\\"bg-gray-100\\\"}`}\\n        >\\n          <Wifi className=\\\"h-6 w-6\\\" />\\n        </div>\\n        <div\\n          className={`h-10 w-14 rounded ${isDark ? \\\"bg-gradient-to-br from-yellow-400 to-yellow-600\\\" : \\\"bg-gradient-to-br from-yellow-300 to-yellow-500\\\"}`}\\n        >\\n          <div className=\\\"h-full w-full rounded bg-gradient-to-tr from-transparent via-white/20 to-white/40\\\" />\\n        </div>\\n      </div>\\n\\n      <div className=\\\"relative px-6 py-4\\\">\\n        <p className=\\\"text-lg font-bold tracking-[0.2em]\\\">\\n          {String(number)\\n            .match(/.{1,4}/g)\\n            ?.join(\\\"  \\\")}\\n        </p>\\n      </div>\\n\\n      <div className=\\\"relative flex items-end justify-between gap-6 p-6 pt-2\\\">\\n        <div className=\\\"flex gap-6\\\">\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Card Holder\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{holder}</p>\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Expires\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{expires}</p>\\n          </div>\\n        </div>\\n        <div className=\\\"flex items-center\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n            alt=\\\"mastercard logo\\\"\\n            className=\\\"h-10 w-auto transition-transform group-hover:scale-110\\\"\\n          />\\n        </div>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function CardDisplay01() {\\n  return (\\n    <div className=\\\"mx-auto grid max-w-5xl grid-cols-1 gap-8 p-6 md:grid-cols-2\\\">\\n      <CreditCard\\n        variant=\\\"dark\\\"\\n        expires=\\\"10/25\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245947852\\\"\\n      />\\n      <CreditCard\\n        variant=\\\"light\\\"\\n        expires=\\\"10/26\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245948844\\\"\\n      />\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/payment-method-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/payment-method/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Check, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\n\\ninterface PaymentMethodProps {\\n  type: \\\"visa\\\" | \\\"mastercard\\\"\\n  number: string\\n  isDefault?: boolean\\n}\\n\\nfunction PaymentMethod({ type, number, isDefault }: PaymentMethodProps) {\\n  const cardImg =\\n    type === \\\"visa\\\"\\n      ? \\\"https://v3.material-tailwind.com/visa.webp\\\"\\n      : \\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n\\n  return (\\n    <Card className=\\\"group hover:border-primary/50 relative flex flex-col gap-4 border p-6 transition-all hover:shadow-md\\\">\\n      {isDefault && (\\n        <div className=\\\"bg-primary absolute -top-px -right-px rounded-tr-lg rounded-bl-lg px-3 py-1\\\">\\n          <div className=\\\"flex items-center gap-1.5 text-xs font-semibold text-white\\\">\\n            <Check className=\\\"h-3 w-3\\\" />\\n            Default\\n          </div>\\n        </div>\\n      )}\\n\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <div className=\\\"flex h-12 w-16 items-center justify-center rounded-lg bg-gray-50 p-2\\\">\\n          <img\\n            src={cardImg}\\n            alt={type}\\n            className=\\\"h-full w-auto object-contain\\\"\\n          />\\n        </div>\\n\\n        <div className=\\\"flex flex-1 flex-col gap-1\\\">\\n          <p className=\\\"text-base font-bold tracking-wider\\\">\\n            **** **** **** {number}\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm capitalize\\\">\\n            {type} Card\\n          </p>\\n        </div>\\n      </div>\\n\\n      <div className=\\\"flex items-center gap-1\\\">\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-9 w-9\\\">\\n                <Pencil className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Edit Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button\\n                size=\\\"icon\\\"\\n                variant=\\\"ghost\\\"\\n                className=\\\"text-destructive hover:bg-destructive/10 hover:text-destructive h-9 w-9\\\"\\n              >\\n                <Trash2 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Remove Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function PaymentMethod01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-4xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center\\\">\\n        <div>\\n          <h2 className=\\\"text-2xl font-bold\\\">Payment Methods</h2>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage your preferred payment methods securely and conveniently.\\n          </p>\\n        </div>\\n        <Button className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Card\\n        </Button>\\n      </div>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-4 md:grid-cols-2\\\">\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"7852\\\" isDefault />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"9831\\\" />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"8362\\\" />\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"0098\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/transaction-history-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/transaction-history/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon, ChevronDown, ChevronUp, Clock } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\n\\nconst DATA = {\\n  \\\"March 2023\\\": [\\n    {\\n      name: \\\"Netflix\\\",\\n      date: \\\"27 March 2026, at 12:30 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Apple\\\",\\n      date: \\\"27 March 2026, at 04:30 AM\\\",\\n      value: 2000,\\n      status: \\\"increasing\\\" as const,\\n    },\\n  ],\\n  \\\"February 2023\\\": [\\n    {\\n      name: \\\"Stripe\\\",\\n      date: \\\"26 March 2026, at 13:45 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"HubSpot\\\",\\n      date: \\\"26 March 2023, at 12:30 PM\\\",\\n      value: 750,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Figma\\\",\\n      date: \\\"26 March 2023, at 08:30 AM\\\",\\n      value: 1400,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Webflow\\\",\\n      date: \\\"26 March 2023, at 05:00 AM\\\",\\n      value: 0,\\n      status: \\\"pending\\\" as const,\\n    },\\n  ],\\n}\\n\\nconst ICONS = {\\n  increasing: ChevronUp,\\n  decreasing: ChevronDown,\\n  pending: Clock,\\n}\\n\\nconst COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-muted-foreground\\\",\\n}\\n\\nconst ICON_COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-black dark:text-white\\\",\\n}\\n\\nconst PREFIX = {\\n  increasing: \\\"+\\\",\\n  decreasing: \\\"-\\\",\\n  pending: \\\"\\\",\\n}\\n\\nexport default function TransactionHistory01() {\\n  const [date, setDate] = React.useState<Date>(new Date(2024, 9, 10))\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">History Transactions</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className={cn(\\n                  \\\"w-full justify-start text-left font-normal sm:w-48\\\",\\n                  !date && \\\"text-muted-foreground\\\"\\n                )}\\n              >\\n                <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\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={(day) => day && setDate(day)}\\n                initialFocus\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {(Object.keys(DATA) as Array<keyof typeof DATA>).map((month, key) => {\\n            return (\\n              <div key={key} className=\\\"mb-6 last:mb-0\\\">\\n                <p className=\\\"text-muted-foreground mb-2 ml-2.5 font-semibold\\\">\\n                  {month}\\n                </p>\\n                <div className=\\\"space-y-2\\\">\\n                  {DATA[month].map(({ name, value, date, status }) => {\\n                    const Icon = ICONS[status]\\n\\n                    return (\\n                      <div\\n                        key={name}\\n                        className=\\\"flex items-center gap-4 rounded-lg border p-4\\\"\\n                      >\\n                        <div className=\\\"bg-card text-card-foreground hidden h-12 w-12 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex\\\">\\n                          <Icon\\n                            className={cn(\\\"h-5 w-5\\\", ICON_COLORS[status])}\\n                          />\\n                        </div>\\n                        <div className=\\\"mx-0 space-y-0.5 sm:mx-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {date}\\n                          </p>\\n                        </div>\\n                        <p\\n                          className={cn(\\n                            \\\"mx-2 ml-auto text-sm font-semibold\\\",\\n                            COLORS[status]\\n                          )}\\n                        >\\n                          {PREFIX[status]}{\\\" \\\"}\\n                          {value\\n                            ? new Intl.NumberFormat(\\\"en-US\\\", {\\n                                style: \\\"currency\\\",\\n                                currency: \\\"USD\\\",\\n                              }).format(value)\\n                            : \\\"Pending\\\"}\\n                        </p>\\n                      </div>\\n                    )\\n                  })}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/invoices-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/invoices/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Download } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst DATA = [\\n  {\\n    name: \\\"INV-24 #MS-415646\\\",\\n    date: \\\"October 15, 2024\\\",\\n    amount: 2500,\\n    badge: \\\"24 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-23 #MS-415740\\\",\\n    date: \\\"October 10, 2024\\\",\\n    amount: 1750,\\n    badge: \\\"20 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-22 #MS-946285\\\",\\n    date: \\\"September 15, 2024\\\",\\n    amount: 1500,\\n    badge: \\\"18 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-21 #MS-739734\\\",\\n    date: \\\"September 10, 2024\\\",\\n    amount: 2990,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n  {\\n    name: \\\"INV-20 #MS-848649\\\",\\n    date: \\\"August 15, 2024\\\",\\n    amount: 3500,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n]\\n\\nexport default function Invoices01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">Invoices</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Export\\n          </Button>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {DATA.map(({ name, date, amount, badge, isOverdue }, index) => (\\n            <div key={name}>\\n              <div className=\\\"flex flex-wrap items-center justify-between gap-6 py-6\\\">\\n                <div className=\\\"basis-full space-y-0.5 sm:basis-auto\\\">\\n                  <p className=\\\"text-lg font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n                </div>\\n                <Badge\\n                  variant={isOverdue ? \\\"destructive\\\" : \\\"default\\\"}\\n                  className={\\n                    isOverdue\\n                      ? \\\"w-max sm:ml-auto\\\"\\n                      : \\\"w-max bg-green-100 text-green-800 hover:bg-green-100 sm:ml-auto\\\"\\n                  }\\n                >\\n                  {badge}\\n                </Badge>\\n                <p className=\\\"text-end text-sm font-semibold\\\">\\n                  {new Intl.NumberFormat(\\\"en-US\\\", {\\n                    style: \\\"currency\\\",\\n                    currency: \\\"USD\\\",\\n                  }).format(amount)}\\n                </p>\\n                <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-8 w-8\\\">\\n                  <Download className=\\\"h-5 w-5\\\" />\\n                </Button>\\n              </div>\\n              {index < DATA.length - 1 && <Separator />}\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-blog-content-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-blog-content/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"House\\\",\\n    title: \\\"Shared Coworking\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 26 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Office\\\",\\n    title: \\\"Really Housekeeping\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 03 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Chriss Smahos\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Hub\\\",\\n    title: \\\"Coworking Office\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 12 April\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Elijah Miller\\\",\\n    },\\n  },\\n]\\n\\nexport default function SimpleBlogContent01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-4 pb-0\\\">\\n              <div className=\\\"relative h-60 w-full overflow-hidden rounded-lg\\\">\\n                <img\\n                  src={img}\\n                  alt={title}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar>\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"space-y-0.5\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-cards-layout-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-cards-layout/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDown } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk and Figma looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Bolt launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape view\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366412874-3415097a27e7?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"22 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogCardsLayout01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-12 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Blog Posts</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-3 pb-0\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-56 w-full rounded-lg object-cover object-center\\\"\\n              />\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar className=\\\"h-8 w-8\\\">\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"flex flex-col\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-12 text-center\\\">\\n        <Button variant=\\\"ghost\\\">\\n          <ArrowDown className=\\\"mr-2 h-4 w-4\\\" />\\n          View More\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-post-preview-tags-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-post-preview-tags/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Otto Gonzalez\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Ryan Samuel\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Nora Hazel\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n]\\n\\nexport default function BlogPostPreviewTags01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-16 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Explore Our Places</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, category, title, desc, tags }) => (\\n          <div key={title} className=\\\"space-y-6\\\">\\n            <div className=\\\"relative h-56 w-full overflow-hidden rounded-lg shadow-lg\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4\\\">\\n              <p className=\\\"text-primary text-sm font-semibold\\\">{category}</p>\\n              <h3 className=\\\"text-2xl font-bold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              {tags.map((tag) => (\\n                <Badge key={tag} variant=\\\"secondary\\\">\\n                  {tag}\\n                </Badge>\\n              ))}\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-24 text-center\\\">\\n        <Button>View More</Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/highlighted-blog-posts-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/highlighted-blog-posts/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Globe, Heart, Mic, Puzzle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&auto=format&fit=crop\\\",\\n    icon: Heart,\\n    title: \\\"Cultural\\\",\\n    desc: \\\"257 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1511593358241-7eea1f3c84e5?w=800&auto=format&fit=crop\\\",\\n    icon: Puzzle,\\n    title: \\\"Modern Life\\\",\\n    desc: \\\"117 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&auto=format&fit=crop\\\",\\n    icon: Globe,\\n    title: \\\"Popularity\\\",\\n    desc: \\\"363 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=800&auto=format&fit=crop\\\",\\n    icon: Mic,\\n    title: \\\"Good Vibes\\\",\\n    desc: \\\"215 spots\\\",\\n  },\\n]\\n\\nexport default function HighlightedBlogPosts01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <div className=\\\"mb-16 grid place-items-center text-center\\\">\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Check out what&apos;s new</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-xl\\\">\\n          We get insulted by others, lose trust for those others. We get back\\n          freezes every winter\\n        </p>\\n      </div>\\n      <div className=\\\"grid grid-cols-1 gap-x-0 gap-y-6 md:grid-cols-3 md:gap-x-6\\\">\\n        <Card className=\\\"bg-primary text-primary-foreground flex flex-col justify-between py-0\\\">\\n          <CardHeader className=\\\"p-6 sm:p-8\\\">\\n            <p className=\\\"block text-center font-semibold opacity-80\\\">\\n              Landscape\\n            </p>\\n          </CardHeader>\\n          <CardContent className=\\\"p-6 sm:p-8\\\">\\n            <CardTitle className=\\\"text-center text-2xl\\\">\\n              Nature&apos;s Light\\n            </CardTitle>\\n            <CardDescription className=\\\"py-6 text-center opacity-80\\\">\\n              It really matters and then like it really doesn&apos;t matter.\\n              What matters is the people who are sparked by it.\\n            </CardDescription>\\n          </CardContent>\\n          <CardFooter className=\\\"p-6 text-center sm:p-8\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"secondary\\\"\\n              className=\\\"bg-background text-foreground hover:bg-background/90\\\"\\n            >\\n              Read More\\n            </Button>\\n          </CardFooter>\\n        </Card>\\n        <div className=\\\"col-span-2 grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n          {POSTS.map(({ img, icon: Icon, title, desc }) => (\\n            <Card\\n              key={title}\\n              className=\\\"relative grid min-h-48 w-full overflow-hidden border-0 py-0\\\"\\n            >\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n              />\\n              <div className=\\\"absolute inset-0 h-full w-full bg-black/60\\\" />\\n              <CardContent className=\\\"relative flex h-full flex-col justify-between p-6\\\">\\n                <Icon className=\\\"h-8 w-8 stroke-2 text-white\\\" />\\n                <div className=\\\"space-y-0.5\\\">\\n                  <CardTitle className=\\\"text-xl text-white\\\">{title}</CardTitle>\\n                  <CardDescription className=\\\"text-sm text-white/80\\\">\\n                    {desc}\\n                  </CardDescription>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/blog-rectangular-images-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-rectangular-images/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogRectangularImages01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container my-auto grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <div key={title} className=\\\"grid items-center gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"h-full max-h-72 overflow-hidden rounded-lg lg:max-h-full\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4 p-2\\\">\\n              <Badge variant=\\\"secondary\\\">{tag}</Badge>\\n              <h3 className=\\\"text-xl font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n              <div className=\\\"mt-6 flex items-center gap-3 md:mt-8\\\">\\n                <Avatar>\\n                  <AvatarImage src={author.img} alt={author.name} />\\n                  <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex flex-col\\\">\\n                  <p className=\\\"mb-1 text-sm font-semibold\\\">{author.name}</p>\\n                  <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/large-blog-preview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/large-blog-preview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nexport default function LargeBlogPreview01() {\\n  return (\\n    <div className=\\\"container mx-auto grid h-full w-full grid-cols-1 items-center gap-x-16 gap-y-6 py-16 lg:grid-cols-2\\\">\\n      <img\\n        alt=\\\"blog preview\\\"\\n        src=\\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop\\\"\\n        className=\\\"h-full w-full rounded-lg object-cover object-center shadow-lg\\\"\\n      />\\n      <div>\\n        <p className=\\\"text-primary block font-semibold\\\">Business</p>\\n        <h2 className=\\\"my-4 text-3xl font-bold lg:text-4xl\\\">\\n          Autodesk looks to future of 3D with Project Escher\\n        </h2>\\n        <p className=\\\"text-muted-foreground mb-6 w-full max-w-lg text-lg\\\">\\n          Warner Music Group announced today it&apos;s acquiring the selected\\n          assets of the music platform Songkick, including its app for finding\\n          concerts and the company&apos;s trademark. Songkick has been involved\\n          in a lawsuit against the major…{\\\" \\\"}\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"text-foreground ml-2 inline-block font-semibold hover:underline\\\"\\n          >\\n            Read More\\n          </a>\\n        </p>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <Avatar>\\n            <AvatarImage\\n              src=\\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\"\\n              alt=\\\"Otto Gonzalez\\\"\\n            />\\n            <AvatarFallback>OG</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-0.5\\\">\\n            <p className=\\\"text-sm font-semibold\\\">Otto Gonzalez</p>\\n            <p className=\\\"text-muted-foreground text-xs\\\">10 October 2024</p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-product-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-product-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"]\\n\\nconst SIMILAR_ITEMS = [\\n  {\\n    name: \\\"Black Bustier Top\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 5 size\\\",\\n  },\\n  {\\n    name: \\\"Black High-Waist Jeans\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1578508637199-240a8f25eff6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 8 taille\\\",\\n  },\\n]\\n\\nexport default function SimpleProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        {/* Main Product Section */}\\n        <div className=\\\"mb-16 grid grid-cols-1 items-start gap-x-8 gap-y-10 md:grid-cols-2\\\">\\n          <div className=\\\"bg-muted/30 h-full max-h-[32rem] w-full overflow-hidden rounded-xl border\\\">\\n            <img\\n              alt=\\\"Pink Blouse\\\"\\n              src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n              className=\\\"h-full w-full object-cover\\\"\\n            />\\n          </div>\\n          <div className=\\\"md:p-2\\\">\\n            <h3 className=\\\"text-3xl font-bold\\\">Pink Blouse</h3>\\n            <p className=\\\"text-primary my-4 text-3xl font-bold\\\">$1,490</p>\\n            <p className=\\\"text-muted-foreground leading-relaxed [text-wrap:_balance]\\\">\\n              Whether you're closing deals or attending formal events, its\\n              breathable lining and natural stretch keep you comfortable and\\n              sharp from day to night.\\n            </p>\\n\\n            <div className=\\\"my-6 flex items-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <p className=\\\"text-sm font-semibold\\\">100 Reviews</p>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Size</h4>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <Button\\n                    key={size}\\n                    variant={selectedSize === size ? \\\"default\\\" : \\\"outline\\\"}\\n                    size=\\\"sm\\\"\\n                    className=\\\"min-w-[3rem]\\\"\\n                    onClick={() => setSelectedSize(size)}\\n                  >\\n                    {size}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Color</h4>\\n              <div className=\\\"flex gap-2\\\">\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-black transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-white transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-gray-200 transition-transform hover:scale-110\\\" />\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mt-8 flex items-center gap-3\\\">\\n              <Button className=\\\"w-full max-w-sm\\\" size=\\\"lg\\\">\\n                Add to Cart\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className={`h-11 w-11 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-muted-foreground hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* More Info & Similar Items Section */}\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n          {/* More Info Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">More Info</h3>\\n            <Accordion\\n              type=\\\"single\\\"\\n              collapsible\\n              defaultValue=\\\"description\\\"\\n              className=\\\"w-full\\\"\\n            >\\n              <AccordionItem value=\\\"description\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Description\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    Whether you're navigating city streets or embarking on\\n                    outdoor adventures, this puffer jacket ensures you stay cozy\\n                    and comfortable wherever you go. The versatile black hue\\n                    effortlessly complements any outfit, making it a go-to\\n                    choice for everyday wear.\\n                  </p>\\n                  <p>\\n                    Equipped with practical features, including a front zipper\\n                    closure and zippered pockets, the MidnightShield Jacket\\n                    offers convenient storage for your essentials while on the\\n                    move. Its adjustable cuffs and hem allow for a customizable\\n                    fit, ensuring maximum comfort and versatility.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"delivery\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Delivery & Returns\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Free Standard Delivery:</strong> Orders over $100\\n                    qualify for free standard shipping. Delivery typically takes\\n                    3-5 business days.\\n                  </p>\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Express Shipping:</strong> Available at checkout for\\n                    faster delivery (1-2 business days).\\n                  </p>\\n                  <p>\\n                    <strong>Returns:</strong> We offer a 30-day return policy.\\n                    Items must be in original condition with tags attached. Free\\n                    returns for defective items.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"contact\\\" className=\\\"border-b-0\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Contact Us\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    Have questions about this product? We're here to help!\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Email:</strong> support@example.com\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Phone:</strong> +1 (555) 123-4567\\n                  </p>\\n                  <p>\\n                    <strong>Hours:</strong> Mon-Fri, 9AM-6PM EST\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n            </Accordion>\\n          </div>\\n\\n          {/* Similar Items Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Similar Items</h3>\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              {SIMILAR_ITEMS.map((item, index) => (\\n                <Card\\n                  key={index}\\n                  className=\\\"group cursor-pointer overflow-hidden transition-shadow hover:shadow-lg py-0\\\"\\n                >\\n                  <CardContent className=\\\"p-0\\\">\\n                    <div className=\\\"bg-muted aspect-[4/5] overflow-hidden\\\">\\n                      <img\\n                        src={item.image}\\n                        alt={item.name}\\n                        className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"p-4\\\">\\n                      <h4 className=\\\"font-semibold tracking-wide uppercase\\\">\\n                        {item.name}\\n                      </h4>\\n                      <p className=\\\"mt-2 text-lg font-bold\\\">{item.price}</p>\\n                      <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                        {item.sizes}\\n                      </p>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/grid-ecommerce-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/grid-ecommerce/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst CARDS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    title: \\\"New\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"Shop Sales\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1535220459927-c8428851fd45?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"50% off\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n]\\n\\nexport default function GridEcommerce01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <p className=\\\"mb-8 font-semibold\\\">\\n          Gear Up and Enjoy Savings | Get up to 50% off on select items\\n        </p>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {CARDS.map(({ image, title, subtitle }, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"group relative h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\"\\n            >\\n              <img\\n                src={image}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n              <div className=\\\"absolute inset-x-0 bottom-0 p-6 text-white\\\">\\n                <p className=\\\"mb-2 text-sm font-semibold tracking-wider text-white/90 uppercase\\\">\\n                  {title}\\n                </p>\\n                <h3 className=\\\"mb-4 text-2xl font-bold\\\">{subtitle}</h3>\\n                <Button variant=\\\"link\\\" className=\\\"p-0 text-white\\\">\\n                  Read More\\n                </Button>\\n              </div>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"group relative mt-6 h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\"\\n            alt=\\\"Formal Elegance\\\"\\n            className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n          <div className=\\\"absolute inset-0 flex items-center justify-center p-8 text-white\\\">\\n            <div className=\\\"text-center\\\">\\n              <p className=\\\"mb-3 text-lg font-bold tracking-wider uppercase\\\">\\n                UP TO 70%\\n              </p>\\n              <h3 className=\\\"mb-6 text-3xl font-bold md:text-4xl\\\">\\n                Formal Elegance Series\\n              </h3>\\n              <Button variant=\\\"link\\\" size=\\\"lg\\\" className=\\\"p-0 text-white\\\">\\n                Discover\\n              </Button>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/promotional-cards-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/promotional-cards/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    name: \\\"Active toning essence\\\",\\n    price: \\\"$59.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1620916566398-39f1143ab7be?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Hydrating face serum\\\",\\n    price: \\\"$49.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1571781926291-c477ebfd024b?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Vitamin C moisturizer\\\",\\n    price: \\\"$65.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1608571423902-eed4a5ad8108?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n]\\n\\nexport default function PromotionalCards01() {\\n  const [currentProduct, setCurrentProduct] = useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 overflow-hidden rounded-2xl shadow-xl lg:grid-cols-2\\\">\\n          {/* Left: Product Showcase */}\\n          <div className=\\\"flex flex-col items-center justify-center bg-[#e8e3dc] p-16\\\">\\n            <div className=\\\"mb-8 flex h-80 w-80 items-center justify-center\\\">\\n              <img\\n                src={PRODUCTS[currentProduct].image}\\n                alt={PRODUCTS[currentProduct].name}\\n                className=\\\"h-full w-full object-contain drop-shadow-2xl transition-all duration-500\\\"\\n              />\\n            </div>\\n            <h3 className=\\\"mb-2 text-center text-lg font-medium text-gray-800\\\">\\n              {PRODUCTS[currentProduct].name}\\n            </h3>\\n            <p className=\\\"mb-6 text-center text-xl font-semibold text-gray-900\\\">\\n              {PRODUCTS[currentProduct].price}\\n            </p>\\n            <div className=\\\"flex gap-2\\\">\\n              {PRODUCTS.map((_, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setCurrentProduct(index)}\\n                  className={`h-2.5 w-2.5 rounded-full transition-all ${\\n                    currentProduct === index\\n                      ? \\\"w-8 bg-gray-800\\\"\\n                      : \\\"bg-gray-400 hover:bg-gray-600\\\"\\n                  }`}\\n                  aria-label={`View product ${index + 1}`}\\n                />\\n              ))}\\n            </div>\\n          </div>\\n\\n          {/* Right: Hero Image with Text */}\\n          <div className=\\\"relative flex min-h-[500px] items-center justify-center lg:min-h-[600px]\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1581182815808-b6eb627a8798?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1065\\\"\\n              alt=\\\"Beauty model\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n            />\\n            <div className=\\\"relative z-10 px-8 text-center lg:px-16\\\">\\n              <h2 className=\\\"font-serif text-5xl leading-tight font-light text-white drop-shadow-lg lg:text-6xl\\\">\\n                Glow up with\\n                <br />\\n                nature\\n              </h2>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/order-history-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-history/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/components/ui/table\\\"\\n\\nconst OPTIONS = [\\n  {\\n    data: \\\"Order ID\\\",\\n    value: \\\"1234\\\",\\n  },\\n  {\\n    data: \\\"Date of Placement\\\",\\n    value: \\\"April 3, 2024\\\",\\n  },\\n  {\\n    data: \\\"Amount\\\",\\n    value: \\\"$2,570\\\",\\n  },\\n]\\n\\nconst TABLE_ROW = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    product: \\\"Premium Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    product: \\\"Linen Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n    product: \\\"Tweed Suit\\\",\\n    amount: \\\"$990\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n]\\n\\nconst TABLE_HEAD = [\\\"Product\\\", \\\"Amount\\\", \\\"Status\\\", \\\"Date\\\", \\\"Details\\\"]\\n\\nexport default function OrderHistory01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"text-lg font-semibold\\\">Order History</h2>\\n        <p className=\\\"text-muted-foreground mt-2\\\">\\n          See your recent orders, download your invoices.\\n        </p>\\n        <Card className=\\\"mt-8 mb-4 py-0\\\">\\n          <CardContent className=\\\"flex flex-wrap items-center justify-between gap-4 p-4\\\">\\n            <div className=\\\"flex gap-10\\\">\\n              {OPTIONS.map((option, i) => (\\n                <div key={i}>\\n                  <p className=\\\"text-muted-foreground mb-0.5 text-sm\\\">\\n                    {option.data}\\n                  </p>\\n                  <p className=\\\"font-semibold\\\">{option.value}</p>\\n                </div>\\n              ))}\\n            </div>\\n            <Button>View Invoice</Button>\\n          </CardContent>\\n        </Card>\\n        <Card>\\n          <div className=\\\"overflow-x-auto\\\">\\n            <Table>\\n              <TableHeader>\\n                <TableRow>\\n                  {TABLE_HEAD.map((head) => (\\n                    <TableHead key={head}>{head}</TableHead>\\n                  ))}\\n                </TableRow>\\n              </TableHeader>\\n              <TableBody>\\n                {TABLE_ROW.map(({ img, product, amount, date }) => (\\n                  <TableRow key={product}>\\n                    <TableCell>\\n                      <div className=\\\"flex items-center gap-3\\\">\\n                        <img src={img} alt={product} className=\\\"h-16\\\" />\\n                        <span className=\\\"text-sm font-semibold\\\">{product}</span>\\n                      </div>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {amount}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Badge\\n                        variant=\\\"secondary\\\"\\n                        className=\\\"bg-green-100 text-green-700\\\"\\n                      >\\n                        Delivered\\n                      </Badge>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {date}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                        View\\n                      </Button>\\n                    </TableCell>\\n                  </TableRow>\\n                ))}\\n              </TableBody>\\n            </Table>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/empty-shopping-cart-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/empty-shopping-cart/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EmptyShoppingCart01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center justify-center\\\">\\n      <div className=\\\"container mx-auto py-16\\\">\\n        <div className=\\\"text-center\\\">\\n          <p className=\\\"text-primary font-semibold\\\">Store</p>\\n          <h2 className=\\\"mt-4 text-2xl font-bold\\\">\\n            Your Shopping Cart is Empty\\n          </h2>\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/cart-illustration.png\\\"\\n            alt=\\\"Empty cart\\\"\\n            className=\\\"mx-auto my-8 max-h-[30rem]\\\"\\n          />\\n          <Button>Back to Store</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/digital-product-overview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/digital-product-overview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Eye, Lock, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\n\\nconst data = [\\n  {\\n    name: \\\"HTML Version\\\",\\n    desc: \\\"Pure HTML/CSS with Tailwind, perfect for static websites.\\\",\\n    price: \\\"$39\\\",\\n    popular: false,\\n  },\\n  {\\n    name: \\\"React Version\\\",\\n    desc: \\\"React components with TypeScript support included.\\\",\\n    price: \\\"$49\\\",\\n    popular: true,\\n  },\\n  {\\n    name: \\\"Angular Version\\\",\\n    desc: \\\"Angular components with full type definitions.\\\",\\n    price: \\\"$99\\\",\\n    popular: false,\\n  },\\n]\\n\\nexport default function DigitalProductOverview01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <nav className=\\\"mb-8 flex items-center gap-2 text-sm\\\">\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Home\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Templates\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <span className=\\\"text-foreground font-medium\\\">Digital Product</span>\\n      </nav>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n        <div className=\\\"group bg-muted/30 relative overflow-hidden rounded-2xl border p-4 shadow-xl transition-all hover:shadow-2xl\\\">\\n          <img\\n            src=\\\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/headers-thumbnail.jpg\\\"\\n            alt=\\\"Digital product preview\\\"\\n            className=\\\"h-full w-full object-contain transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n        </div>\\n\\n        <div className=\\\"flex flex-col\\\">\\n          <div className=\\\"mb-6\\\">\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold tracking-tight\\\">\\n                Premium UI Kit\\n              </h2>\\n              <Badge\\n                variant=\\\"secondary\\\"\\n                className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\"\\n              >\\n                Best Seller\\n              </Badge>\\n            </div>\\n            <p className=\\\"text-muted-foreground text-base leading-relaxed\\\">\\n              A comprehensive collection of beautifully crafted components and\\n              templates. Built with modern web technologies and best practices\\n              for seamless integration.\\n            </p>\\n          </div>\\n\\n          <div className=\\\"bg-muted/50 mb-6 flex items-center gap-6 rounded-lg p-4\\\">\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Star className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\" />\\n              <span className=\\\"text-sm font-semibold\\\">4.9/5</span>\\n              <span className=\\\"text-muted-foreground text-sm\\\">\\n                (127 reviews)\\n              </span>\\n            </div>\\n            <div className=\\\"bg-border h-4 w-px\\\" />\\n            <div className=\\\"flex items-center gap-2 text-sm\\\">\\n              <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              <span className=\\\"font-semibold\\\">1,234</span>\\n              <span className=\\\"text-muted-foreground\\\">sales</span>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"mb-6\\\">\\n            <p className=\\\"mb-4 text-lg font-semibold\\\">Choose your version</p>\\n            <RadioGroup defaultValue=\\\"React Version\\\" className=\\\"gap-3\\\">\\n              {data.map(({ name, desc, price, popular }) => (\\n                <div\\n                  key={name}\\n                  className=\\\"group/item bg-card hover:border-primary rounded-lg border transition-all hover:shadow-md\\\"\\n                >\\n                  <Label\\n                    htmlFor={name}\\n                    className=\\\"flex cursor-pointer items-start gap-4 p-4\\\"\\n                  >\\n                    <RadioGroupItem value={name} id={name} className=\\\"mt-1\\\" />\\n                    <div className=\\\"flex flex-1 items-center justify-between gap-4\\\">\\n                      <div className=\\\"flex-1\\\">\\n                        <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          {popular && (\\n                            <Badge className=\\\"bg-primary text-primary-foreground\\\">\\n                              Popular\\n                            </Badge>\\n                          )}\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                      </div>\\n                      <div className=\\\"text-right\\\">\\n                        <p className=\\\"text-2xl font-bold\\\">{price}</p>\\n                        <p className=\\\"text-muted-foreground text-xs\\\">\\n                          one-time\\n                        </p>\\n                      </div>\\n                    </div>\\n                  </Label>\\n                </div>\\n              ))}\\n            </RadioGroup>\\n          </div>\\n\\n          <div className=\\\"mt-auto flex flex-col gap-3 sm:flex-row\\\">\\n            <Button size=\\\"lg\\\" className=\\\"flex-1 gap-2\\\">\\n              <ShoppingCart className=\\\"h-4 w-4\\\" />\\n              Buy Now\\n            </Button>\\n            <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"flex-1 gap-2\\\">\\n              <Eye className=\\\"h-4 w-4\\\" />\\n              Live Preview\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-description-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-description/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronRight,\\n  Heart,\\n  RotateCcw,\\n  Shield,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst IMAGES = [\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-1.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-2.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-3.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-4.png\\\" },\\n]\\n\\nconst SIZES = [\\\"32\\\", \\\"34\\\", \\\"36\\\", \\\"38\\\", \\\"40\\\", \\\"42\\\", \\\"44\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n  { name: \\\"Navy\\\", hex: \\\"#1e3a8a\\\" },\\n  { name: \\\"Brown\\\", hex: \\\"#92400e\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Truck, text: \\\"Free shipping over $150\\\" },\\n  { icon: RotateCcw, text: \\\"Easy 30-day returns\\\" },\\n  { icon: Shield, text: \\\"1-year warranty\\\" },\\n]\\n\\nexport default function ProductDescription01() {\\n  const [active, setActive] = useState(\\n    \\\"https://v3.material-tailwind.com/coat-1.png\\\"\\n  )\\n  const [selectedSize, setSelectedSize] = useState(\\\"36\\\")\\n  const [selectedColor, setSelectedColor] = useState(\\\"Black\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <nav className=\\\"mb-8 flex items-center gap-2 text-sm text-neutral-500\\\">\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Home\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Women\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Outerwear\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <span className=\\\"text-neutral-900\\\">Premium Winter Coat</span>\\n        </nav>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <div className=\\\"overflow-hidden rounded-2xl bg-white\\\">\\n              <img\\n                src={active}\\n                alt=\\\"Product\\\"\\n                className=\\\"h-[500px] w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"mt-4 flex justify-center gap-3\\\">\\n              {IMAGES.map(({ imgelink }, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setActive(imgelink)}\\n                  className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                    active === imgelink\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={imgelink}\\n                    alt={`Gallery ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover object-center\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"mt-8 space-y-6\\\">\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Product Description\\n                </h3>\\n                <p className=\\\"leading-relaxed text-neutral-600\\\">\\n                  Experience luxury and comfort with this premium winter coat.\\n                  Crafted from high-quality materials with meticulous attention\\n                  to detail, this coat features a modern silhouette that\\n                  flatters all body types. The water-resistant outer shell keeps\\n                  you dry in light rain, while the insulated lining provides\\n                  warmth without bulk.\\n                </p>\\n              </div>\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Key Features\\n                </h3>\\n                <ul className=\\\"space-y-2 text-neutral-600\\\">\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Water-resistant fabric with breathable membrane technology\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Premium insulation for optimal warmth in cold weather\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>Adjustable cuffs and hem for personalized fit</span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Multiple interior and exterior pockets for storage\\n                    </span>\\n                  </li>\\n                </ul>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Limited Edition\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,290.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Elevate your winter wardrobe with this sophisticated coat that\\n              seamlessly blends style and functionality. Perfect for both\\n              professional settings and casual outings.\\n            </p>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Color\\n                </p>\\n                <Select value={selectedColor} onValueChange={setSelectedColor}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {COLORS.map((color) => (\\n                      <SelectItem key={color.name} value={color.name}>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <div\\n                            className=\\\"h-4 w-4 rounded-full border border-neutral-200\\\"\\n                            style={{ backgroundColor: color.hex }}\\n                          />\\n                          <span>{color.name}</span>\\n                        </div>\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Size\\n                </p>\\n                <Select value={selectedSize} onValueChange={setSelectedSize}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {SIZES.map((size) => (\\n                      <SelectItem key={size} value={size}>\\n                        {size}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-3\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex flex-col items-center gap-2 rounded-lg border border-neutral-200 bg-white p-4 text-center\\\"\\n                >\\n                  <feature.icon className=\\\"h-5 w-5 flex-shrink-0 text-neutral-900\\\" />\\n                  <span className=\\\"text-xs text-neutral-600\\\">\\n                    {feature.text}\\n                  </span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/dark-product-overview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dark-product-overview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, Shield, ShoppingCart, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"Features\\\",\\n    icon: Package,\\n    desc: `Premium cashmere blend with cable-knit pattern. Features a classic V-neck design, \\n    ribbed cuffs and hem for a perfect fit. Made with sustainable materials and ethically sourced \\n    fibers. Temperature-regulating properties keep you comfortable in any season.`,\\n  },\\n  {\\n    title: \\\"Product Care\\\",\\n    icon: Shield,\\n    desc: `Hand wash in cold water with mild detergent or dry clean for best results. \\n    Lay flat to dry, do not wring or twist. Store folded in a cool, dry place. \\n    Use a fabric shaver to remove any pilling. Steam gently to refresh between wears.`,\\n  },\\n  {\\n    title: \\\"Shipping\\\",\\n    icon: Truck,\\n    desc: `Free standard shipping on all orders over $100. Express shipping available at checkout. \\n    Orders are processed within 1-2 business days. International shipping available to select countries. \\n    30-day hassle-free returns and exchanges.`,\\n  },\\n]\\n\\nexport default function DarkProductOverview01() {\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"bg-primary container mx-auto rounded-2xl\\\">\\n      <div className=\\\"mx-auto max-w-6xl px-6 py-20 md:px-12\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"mb-4 border-white/30 bg-white/10 text-white\\\"\\n          >\\n            Shop Previewer\\n          </Badge>\\n          <h2 className=\\\"my-4 text-4xl font-bold tracking-tight text-white\\\">\\n            New Collection\\n          </h2>\\n          <p className=\\\"mx-auto max-w-3xl text-lg leading-relaxed text-white/80\\\">\\n            Easily preview furniture, decor, and more in your space, ensuring\\n            everything fits perfectly and looks just right. It&apos;s the\\n            ultimate tool for hassle-free home customization and design!\\n          </p>\\n        </div>\\n\\n        <div className=\\\"flex flex-col items-center justify-between gap-x-12 gap-y-12 lg:flex-row\\\">\\n          <div className=\\\"flex-1\\\">\\n            <div className=\\\"mb-4 flex items-center gap-3\\\">\\n              <h3 className=\\\"text-2xl font-bold text-white\\\">Elegant Suite</h3>\\n              <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex items-center gap-2\\\">\\n              <div className=\\\"flex items-center gap-1\\\">\\n                {[1, 2, 3, 4, 5].map((star) => (\\n                  <Star\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\"\\n                  />\\n                ))}\\n              </div>\\n              <span className=\\\"text-sm text-white/70\\\">(127 reviews)</span>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex items-baseline gap-3\\\">\\n              <p className=\\\"text-4xl font-bold text-white\\\">$449.90</p>\\n              <span className=\\\"text-lg text-white/50 line-through\\\">\\n                $599.90\\n              </span>\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-green-500/30 bg-green-500/10 text-green-400\\\"\\n              >\\n                25% OFF\\n              </Badge>\\n            </div>\\n\\n            <p className=\\\"mb-8 max-w-xl text-lg leading-relaxed text-white/80\\\">\\n              Add a touch of sophistication to your home with our handcrafted\\n              ceramic vase. Each piece is uniquely made, blending seamlessly\\n              into both modern and classic decors.\\n            </p>\\n\\n            <div className=\\\"mb-8 flex items-center gap-2 rounded-lg bg-white/10 p-4\\\">\\n              <Truck className=\\\"h-5 w-5 shrink-0 text-white\\\" />\\n              <span className=\\\"text-sm text-white\\\">\\n                Free shipping on orders over $100\\n              </span>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex w-full items-center gap-3\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 gap-2 bg-white text-black hover:bg-white/90 sm:w-64 sm:flex-none\\\"\\n              >\\n                <ShoppingCart className=\\\"h-5 w-5\\\" />\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"ghost\\\"\\n                className={`shrink-0 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-white/80 hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mt-12 max-w-2xl\\\">\\n              <Tabs defaultValue=\\\"Features\\\" className=\\\"w-full\\\">\\n                <TabsList className=\\\"h-auto w-full justify-start rounded-none border-b border-white/20 bg-transparent p-0\\\">\\n                  {DATA.map(({ title, icon: Icon }) => (\\n                    <TabsTrigger\\n                      key={title}\\n                      value={title}\\n                      className=\\\"gap-2 rounded-none px-4 py-3 text-white data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:bg-transparent data-[state=active]:shadow-none\\\"\\n                    >\\n                      <Icon className=\\\"h-4 w-4\\\" />\\n                      {title}\\n                    </TabsTrigger>\\n                  ))}\\n                </TabsList>\\n                {DATA.map(({ title, desc }) => (\\n                  <TabsContent\\n                    key={title}\\n                    value={title}\\n                    className=\\\"mt-6 text-white/80\\\"\\n                  >\\n                    <p className=\\\"leading-relaxed\\\">{desc}</p>\\n                  </TabsContent>\\n                ))}\\n              </Tabs>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"w-full lg:w-auto lg:max-w-lg\\\">\\n            <div className=\\\"group relative overflow-hidden rounded-2xl border-2 border-white/20 bg-white/5 p-4 shadow-2xl backdrop-blur-sm\\\">\\n              <img\\n                src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n                alt=\\\"Elegant Suite\\\"\\n                className=\\\"w-full rounded-xl transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/shopping-cart-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/shopping-cart/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Lock, Package, ShoppingBag, Tag, Truck, X } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst CHECKOUT_PRODUCTS = [\\n  {\\n    name: \\\"Wool Suit\\\",\\n    price: \\\"$1,300\\\",\\n    product: \\\"Silk\\\",\\n    size: \\\"XS\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n  {\\n    name: \\\"Premium Suit\\\",\\n    price: \\\"$700\\\",\\n    product: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n]\\n\\nexport default function ShoppingCart01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <Card className=\\\"rounded-2xl shadow-lg\\\">\\n          <CardHeader className=\\\"text-center\\\">\\n            <div className=\\\"mb-4 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"bg-primary/10 flex h-14 w-14 items-center justify-center rounded-full\\\">\\n                <ShoppingBag className=\\\"text-primary h-7 w-7\\\" />\\n              </div>\\n            </div>\\n            <CardTitle className=\\\"text-4xl\\\">Shopping Cart</CardTitle>\\n            <div className=\\\"mt-4 inline-flex items-center gap-2 rounded-full bg-green-50 px-5 py-2.5\\\">\\n              <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n              <p className=\\\"text-sm font-semibold text-green-700\\\">\\n                You are eligible for Free Shipping\\n              </p>\\n            </div>\\n          </CardHeader>\\n          <CardContent>\\n\\n            <div className=\\\"grid w-full grid-cols-1 gap-8 lg:grid-cols-3\\\">\\n              <div className=\\\"col-span-2\\\">\\n                <Card className=\\\"border-2\\\">\\n                  <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Package className=\\\"text-primary h-5 w-5\\\" />\\n                      <CardTitle className=\\\"text-xl\\\">\\n                        Cart Items ({CHECKOUT_PRODUCTS.length})\\n                      </CardTitle>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"p-0\\\">\\n                    {CHECKOUT_PRODUCTS.map(\\n                      ({ name, price, img, product, size, stock }, index) => (\\n                        <div key={index}>\\n                          <div className=\\\"p-6\\\">\\n                            <div className=\\\"flex flex-col items-stretch gap-6 sm:flex-row\\\">\\n                              <div className=\\\"bg-muted/50 h-36 w-36 shrink-0 overflow-hidden rounded-xl p-3\\\">\\n                                <img\\n                                  src={img}\\n                                  alt={name}\\n                                  className=\\\"h-full w-full object-cover\\\"\\n                                />\\n                              </div>\\n                              <div className=\\\"flex h-auto flex-1 flex-col gap-4\\\">\\n                                <div className=\\\"flex items-start justify-between gap-4\\\">\\n                                  <div className=\\\"flex-1\\\">\\n                                    <h4 className=\\\"text-xl font-bold\\\">\\n                                      {name}\\n                                    </h4>\\n                                    <p className=\\\"text-muted-foreground mt-1.5 text-sm\\\">\\n                                      {product}\\n                                    </p>\\n                                  </div>\\n                                  <Button\\n                                    size=\\\"icon\\\"\\n                                    variant=\\\"ghost\\\"\\n                                    className=\\\"text-muted-foreground hover:bg-destructive/10 hover:text-destructive h-9 w-9 rounded-full\\\"\\n                                  >\\n                                    <X className=\\\"h-5 w-5\\\" />\\n                                  </Button>\\n                                </div>\\n\\n                                <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n                                  <Badge\\n                                    variant=\\\"outline\\\"\\n                                    className=\\\"gap-1.5 px-3 py-1\\\"\\n                                  >\\n                                    <span className=\\\"text-xs\\\">Size:</span>\\n                                    <span className=\\\"font-semibold\\\">\\n                                      {size}\\n                                    </span>\\n                                  </Badge>\\n                                  <Badge className=\\\"gap-1.5 border-green-200 bg-green-50 px-3 py-1 text-green-700 hover:bg-green-100\\\">\\n                                    {stock}\\n                                  </Badge>\\n                                </div>\\n\\n                                <div className=\\\"mt-auto flex items-center justify-between\\\">\\n                                  <div className=\\\"flex items-center gap-3\\\">\\n                                    <span className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                                      Quantity:\\n                                    </span>\\n                                    <Select defaultValue=\\\"1\\\">\\n                                      <SelectTrigger className=\\\"h-10 w-28\\\">\\n                                        <SelectValue placeholder=\\\"Qty\\\" />\\n                                      </SelectTrigger>\\n                                      <SelectContent>\\n                                        <SelectItem value=\\\"1\\\">1</SelectItem>\\n                                        <SelectItem value=\\\"2\\\">2</SelectItem>\\n                                        <SelectItem value=\\\"3\\\">3</SelectItem>\\n                                        <SelectItem value=\\\"4\\\">4</SelectItem>\\n                                        <SelectItem value=\\\"5\\\">5</SelectItem>\\n                                      </SelectContent>\\n                                    </Select>\\n                                  </div>\\n                                  <p className=\\\"text-primary text-2xl font-bold\\\">\\n                                    {price}\\n                                  </p>\\n                                </div>\\n                              </div>\\n                            </div>\\n                          </div>\\n                          {index < CHECKOUT_PRODUCTS.length - 1 && (\\n                            <Separator />\\n                          )}\\n                        </div>\\n                      )\\n                    )}\\n                  </CardContent>\\n                </Card>\\n              </div>\\n\\n              <div className=\\\"col-span-1\\\">\\n                <div className=\\\"sticky top-4\\\">\\n                  <Card className=\\\"border-2\\\">\\n                    <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                      <CardTitle className=\\\"text-xl\\\">Order Summary</CardTitle>\\n                    </CardHeader>\\n                    <CardContent className=\\\"p-0\\\">\\n                      <div className=\\\"space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Subtotal\\n                          </span>\\n                          <span className=\\\"font-semibold\\\">$2,090</span>\\n                        </div>\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Shipping Tax\\n                          </span>\\n                          <span className=\\\"font-semibold text-green-600\\\">\\n                            $0\\n                          </span>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"p-6\\\">\\n                        <div className=\\\"mb-3 flex items-center gap-2\\\">\\n                          <Tag className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                          <label className=\\\"text-sm font-semibold\\\">\\n                            Promo Code\\n                          </label>\\n                        </div>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <Input\\n                            type=\\\"text\\\"\\n                            placeholder=\\\"Enter code\\\"\\n                            className=\\\"flex-1\\\"\\n                          />\\n                          <Button variant=\\\"outline\\\" className=\\\"shrink-0\\\">\\n                            Apply\\n                          </Button>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"bg-muted/30 space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                          <span className=\\\"text-primary text-3xl font-bold\\\">\\n                            $2,090\\n                          </span>\\n                        </div>\\n                        <Button className=\\\"w-full gap-2\\\" size=\\\"lg\\\">\\n                          <Lock className=\\\"h-5 w-5\\\" />\\n                          Proceed to Checkout\\n                        </Button>\\n                      </div>\\n                    </CardContent>\\n                    <CardFooter className=\\\"bg-green-50\\\">\\n                      <div className=\\\"flex items-start gap-3\\\">\\n                        <div className=\\\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-green-100\\\">\\n                          <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n                        </div>\\n                        <div>\\n                          <p className=\\\"font-semibold text-green-900\\\">\\n                            Free Shipping Applied\\n                          </p>\\n                          <p className=\\\"mt-1 text-sm text-green-700\\\">\\n                            Estimated delivery: 3-5 business days\\n                          </p>\\n                        </div>\\n                      </div>\\n                    </CardFooter>\\n                  </Card>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/checkout-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/checkout/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CreditCard,\\n  Lock,\\n  Mail,\\n  MapPin,\\n  Package,\\n  ShoppingBag,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    title: \\\"Classic Suit\\\",\\n    description: \\\"Silk\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$1,300\\\",\\n    quantity: 1,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    title: \\\"Premium Suit\\\",\\n    description: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$790\\\",\\n    quantity: 1,\\n  },\\n]\\n\\nconst PRICE_OPTIONS = [\\n  { value: \\\"Subtotal\\\", price: \\\"$2,090\\\" },\\n  { value: \\\"Shipping estimate\\\", price: \\\"$0\\\" },\\n  { value: \\\"Tax estimate\\\", price: \\\"$5\\\" },\\n]\\n\\nexport default function Checkout01() {\\n  return (\\n    <section className=\\\"container mx-auto px-4 py-12\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"mb-8\\\">\\n          <h1 className=\\\"text-3xl font-bold\\\">Checkout</h1>\\n          <p className=\\\"text-muted-foreground mt-2\\\">\\n            Complete your order by providing your payment details\\n          </p>\\n        </div>\\n\\n        <div className=\\\"rounded-2xl border bg-white p-6 shadow-lg md:p-8 lg:p-12 dark:bg-gray-950\\\">\\n          <div className=\\\"grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n            <div className=\\\"space-y-8\\\">\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Contact</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      We'll send order updates here\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\">Email Address</Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"you@example.com\\\"\\n                    className=\\\"h-11\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex items-start gap-2\\\">\\n                  <Checkbox id=\\\"terms\\\" className=\\\"mt-1\\\" />\\n                  <Label\\n                    htmlFor=\\\"terms\\\"\\n                    className=\\\"text-muted-foreground text-sm leading-relaxed\\\"\\n                  >\\n                    I agree to the{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Terms & Conditions\\n                    </a>{\\\" \\\"}\\n                    and{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Privacy Policy\\n                    </a>\\n                  </Label>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Shipping Address</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Where should we deliver your order?\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"address\\\">Street Address</Label>\\n                    <Input\\n                      id=\\\"address\\\"\\n                      placeholder=\\\"123 Main Street\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-3\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"city\\\">City</Label>\\n                      <Input\\n                        id=\\\"city\\\"\\n                        placeholder=\\\"New York\\\"\\n                        className=\\\"h-11\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"postal\\\">Postal Code</Label>\\n                      <Input id=\\\"postal\\\" placeholder=\\\"10001\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"country\\\">Country</Label>\\n                      <Input id=\\\"country\\\" placeholder=\\\"USA\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <CreditCard className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"flex-1\\\">\\n                    <h3 className=\\\"text-lg font-semibold\\\">Payment Details</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Your payment information is secure\\n                    </p>\\n                  </div>\\n                  <Badge\\n                    variant=\\\"outline\\\"\\n                    className=\\\"gap-1 border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                  >\\n                    <Lock className=\\\"h-3 w-3\\\" />\\n                    Secure\\n                  </Badge>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"card\\\">Card Number</Label>\\n                    <Input\\n                      id=\\\"card\\\"\\n                      placeholder=\\\"1234 5678 9012 3456\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"expiry\\\">Expiration Date</Label>\\n                      <Input id=\\\"expiry\\\" placeholder=\\\"MM/YY\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"cvv\\\">CVV</Label>\\n                      <Input id=\\\"cvv\\\" placeholder=\\\"123\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Button className=\\\"mt-4 h-12 w-full text-base\\\" size=\\\"lg\\\">\\n                <Lock className=\\\"mr-2 h-4 w-4\\\" />\\n                Place Order - $2,095\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"lg:sticky lg:top-8 lg:h-fit\\\">\\n              <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <ShoppingBag className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <h2 className=\\\"text-xl font-bold\\\">Order Summary</h2>\\n                </div>\\n\\n                <div className=\\\"space-y-4\\\">\\n                  {OPTIONS.map(\\n                    (\\n                      { image, title, description, size, price, quantity },\\n                      index\\n                    ) => (\\n                      <div\\n                        key={index}\\n                        className=\\\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\\\"\\n                      >\\n                        <div className=\\\"relative h-20 w-20 overflow-hidden rounded-md border\\\">\\n                          <img\\n                            src={image}\\n                            alt={title}\\n                            className=\\\"h-full w-full object-cover p-1\\\"\\n                          />\\n                        </div>\\n                        <div className=\\\"flex-1 space-y-1\\\">\\n                          <p className=\\\"leading-tight font-semibold\\\">{title}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {description} · Size {size}\\n                          </p>\\n                          <p className=\\\"text-muted-foreground text-xs\\\">\\n                            Qty: {quantity}\\n                          </p>\\n                        </div>\\n                        <p className=\\\"font-semibold\\\">{price}</p>\\n                      </div>\\n                    )\\n                  )}\\n                </div>\\n\\n                <Separator className=\\\"my-6\\\" />\\n\\n                <div className=\\\"space-y-3\\\">\\n                  {PRICE_OPTIONS.map(({ value, price }) => (\\n                    <div key={value} className=\\\"flex justify-between text-sm\\\">\\n                      <span className=\\\"text-muted-foreground\\\">{value}</span>\\n                      <span className=\\\"font-medium\\\">{price}</span>\\n                    </div>\\n                  ))}\\n                </div>\\n\\n                <Separator className=\\\"my-4\\\" />\\n\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <span className=\\\"text-lg font-bold\\\">Total</span>\\n                  <span className=\\\"text-2xl font-bold\\\">$2,095</span>\\n                </div>\\n\\n                <div className=\\\"bg-muted/50 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                  <Package className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                  <div className=\\\"space-y-1\\\">\\n                    <p className=\\\"text-sm font-medium\\\">Free Shipping</p>\\n                    <p className=\\\"text-muted-foreground text-xs\\\">\\n                      Your order qualifies for free standard shipping\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/complex-product-description-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/complex-product-description/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, RefreshCw, Shield, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-4.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Package, text: \\\"Premium quality materials\\\" },\\n  { icon: Truck, text: \\\"Free shipping on orders $100+\\\" },\\n  { icon: RefreshCw, text: \\\"30-day return policy\\\" },\\n  { icon: Shield, text: \\\"2-year warranty included\\\" },\\n]\\n\\nconst ACCORDION_DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"Features\\\",\\n    desc: \\\"This premium coat is crafted from weather-resistant fabric with advanced Gore-Tex technology, ensuring you stay dry and comfortable in all conditions. Features include adjustable cuffs, reinforced seams, and breathable lining.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"Product Care\\\",\\n    desc: \\\"Machine wash cold with like colors. Use mild detergent and avoid bleach. Tumble dry on low heat or hang to dry. For best results, store in a cool, dry place and avoid direct sunlight to maintain color and fabric integrity.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"Shipping & Returns\\\",\\n    desc: \\\"Free standard shipping on orders over $100. Express shipping available at checkout. We offer a 30-day return policy with free returns. Items must be unworn, unwashed, and in original packaging with tags attached.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Warranty\\\",\\n    desc: \\\"All our products come with a comprehensive 2-year warranty covering manufacturing defects. This includes issues with stitching, zippers, and fabric quality. Contact our customer service for warranty claims and support.\\\",\\n  },\\n]\\n\\nexport default function ComplexProductDescription01() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(0)\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div className=\\\"flex flex-col-reverse lg:flex-row lg:gap-4\\\">\\n            <div className=\\\"mt-4 flex gap-2 lg:mt-0 lg:flex-col\\\">\\n              {IMAGES.map((img, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setSelectedImage(index)}\\n                  className={`h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg border-2 transition-all ${\\n                    selectedImage === index\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={img}\\n                    alt={`Product view ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex-1\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={IMAGES[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              New Arrival\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,490.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Experience unparalleled comfort and style with our premium winter\\n              coat. Meticulously crafted with attention to detail, this coat\\n              features weather-resistant fabric and a timeless design that\\n              complements any wardrobe. Perfect for both casual and formal\\n              occasions.\\n            </p>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {COLORS[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {COLORS.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Size: <span className=\\\"font-normal\\\">{selectedSize}</span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <button\\n                    key={size}\\n                    onClick={() => setSelectedSize(size)}\\n                    className={`flex h-10 w-12 items-center justify-center rounded-md border-2 text-sm font-medium transition-all ${\\n                      selectedSize === size\\n                        ? \\\"border-neutral-900 bg-neutral-900 text-white\\\"\\n                        : \\\"border-neutral-200 bg-white text-neutral-900 hover:border-neutral-400\\\"\\n                    }`}\\n                  >\\n                    {size}\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-3 sm:grid-cols-2\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4 flex-shrink-0\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <Accordion\\n              type=\\\"single\\\"\\n              defaultValue=\\\"one\\\"\\n              collapsible\\n              className=\\\"w-full border-t border-neutral-200\\\"\\n            >\\n              {ACCORDION_DATA.map(({ value, title, desc }) => (\\n                <AccordionItem key={value} value={value}>\\n                  <AccordionTrigger className=\\\"text-sm font-medium text-neutral-900 hover:text-neutral-600\\\">\\n                    {title}\\n                  </AccordionTrigger>\\n                  <AccordionContent className=\\\"text-sm leading-relaxed text-neutral-600\\\">\\n                    {desc}\\n                  </AccordionContent>\\n                </AccordionItem>\\n              ))}\\n            </Accordion>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/interactive-product-preview-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/interactive-product-preview/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Eye,\\n  Heart,\\n  Minus,\\n  Plus,\\n  ShoppingCart,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function InteractiveProductPreview01() {\\n  const [quantity, setQuantity] = useState(1)\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Badge\\n          variant=\\\"outline\\\"\\n          className=\\\"border-primary/30 bg-primary/10 text-primary mb-4\\\"\\n        >\\n          Room Previewer\\n        </Badge>\\n        <h2 className=\\\"my-4 text-4xl font-bold tracking-tight\\\">\\n          Visualize Your Space\\n        </h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg leading-relaxed\\\">\\n          Easily preview furniture, decor, and more in your space, ensuring\\n          everything fits perfectly and looks just right. It&apos;s the ultimate\\n          tool for hassle-free home customization and design!\\n        </p>\\n      </div>\\n\\n      <div className=\\\"container mx-auto mt-14\\\">\\n        <div className=\\\"relative\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/room.png\\\"\\n            alt=\\\"Room preview\\\"\\n            className=\\\"h-[680px] w-full rounded-2xl object-cover object-center shadow-2xl\\\"\\n          />\\n          <div className=\\\"absolute inset-0 h-full w-full rounded-2xl bg-gradient-to-tr from-black/30 via-black/10 to-transparent\\\" />\\n\\n          <div className=\\\"absolute top-6 right-6 bottom-6 left-6 !ml-auto flex max-w-[26rem] flex-col justify-between rounded-2xl border border-white/30 bg-white/90 px-6 py-6 shadow-2xl backdrop-blur-xl dark:bg-gray-900/90\\\">\\n            <div>\\n              <div className=\\\"mb-4 flex items-start justify-between\\\">\\n                <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  className={`h-9 w-9 transition-colors ${\\n                    isFavorite\\n                      ? \\\"text-red-500 hover:text-red-600\\\"\\n                      : \\\"text-muted-foreground hover:text-red-500\\\"\\n                  }`}\\n                  onClick={() => setIsFavorite(!isFavorite)}\\n                >\\n                  <Heart\\n                    className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                  />\\n                </Button>\\n              </div>\\n\\n              <div className=\\\"mx-auto mb-6 grid place-items-center\\\">\\n                <div className=\\\"bg-muted/50 mb-4 rounded-xl p-6\\\">\\n                  <img\\n                    src=\\\"https://v3.material-tailwind.com/vase.svg\\\"\\n                    alt=\\\"Vase\\\"\\n                    className=\\\"h-32 w-32\\\"\\n                  />\\n                </div>\\n                <h3 className=\\\"text-2xl font-bold\\\">Elegant Ceramic Vase</h3>\\n\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {[1, 2, 3, 4, 5].map((star) => (\\n                      <Star\\n                        key={star}\\n                        className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                      />\\n                    ))}\\n                  </div>\\n                  <span className=\\\"text-muted-foreground text-sm\\\">\\n                    (127 reviews)\\n                  </span>\\n                </div>\\n\\n                <div className=\\\"mt-4 flex items-baseline gap-2\\\">\\n                  <p className=\\\"text-3xl font-bold\\\">$149.90</p>\\n                  <span className=\\\"text-muted-foreground text-sm line-through\\\">\\n                    $199.90\\n                  </span>\\n                </div>\\n              </div>\\n\\n              <p className=\\\"text-muted-foreground mx-auto max-w-xs text-center text-sm leading-relaxed\\\">\\n                Add a touch of sophistication to your home with our handcrafted\\n                ceramic vase.\\n              </p>\\n\\n              <div className=\\\"bg-muted/50 mb-2 flex items-center justify-center gap-2 rounded-lg py-3\\\">\\n                <Truck className=\\\"h-4 w-4 text-green-600 dark:text-green-400\\\" />\\n                <span className=\\\"text-sm font-medium\\\">\\n                  Free shipping on orders over $100\\n                </span>\\n              </div>\\n\\n              <div className=\\\"mb-4 flex items-center justify-center gap-3\\\">\\n                <span className=\\\"text-sm font-medium\\\">Quantity:</span>\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(Math.max(1, quantity - 1))}\\n                  >\\n                    <Minus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                  <span className=\\\"w-8 text-center font-semibold\\\">\\n                    {quantity}\\n                  </span>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(quantity + 1)}\\n                  >\\n                    <Plus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <Button className=\\\"flex-1 gap-2\\\" size=\\\"lg\\\">\\n                  <ShoppingCart className=\\\"h-4 w-4\\\" />\\n                  Add to Cart\\n                </Button>\\n                <Button variant=\\\"outline\\\" size=\\\"lg\\\" className=\\\"shrink-0 gap-2\\\">\\n                  <Eye className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"absolute hidden lg:flex\\\">\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[17rem] -translate-y-[30rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Ceramic Vase\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[26rem] -translate-y-[26rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Wall Art\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[5rem] -translate-y-[21rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Table Lamp\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/order-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useState } from \\\"react\\\"\\nimport {\\n  Archive,\\n  CheckCircle,\\n  Clock,\\n  FileText,\\n  Home,\\n  Mail,\\n  MapPin,\\n  Package,\\n  Phone,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  { title: \\\"Subtotal\\\", value: \\\"$1,780.00\\\" },\\n  { title: \\\"Shipping estimate\\\", value: \\\"$0\\\" },\\n  { title: \\\"Tax estimate\\\", value: \\\"$5\\\" },\\n]\\n\\nexport default function OrderDetails01() {\\n  const [step, setStep] = useState(\\\"3\\\")\\n  const [isVertical, setIsVertical] = useState(false)\\n\\n  useEffect(() => {\\n    const handleResize = () => {\\n      setIsVertical(window.innerWidth <= 768)\\n    }\\n    handleResize()\\n    window.addEventListener(\\\"resize\\\", handleResize)\\n    return () => window.removeEventListener(\\\"resize\\\", handleResize)\\n  }, [])\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold\\\">Order #1234</h2>\\n              <Badge className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\">\\n                In Transit\\n              </Badge>\\n            </div>\\n            <div className=\\\"flex items-center gap-4 text-sm\\\">\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Clock className=\\\"h-4 w-4\\\" />\\n                <span>\\n                  Placed on <span className=\\\"font-semibold\\\">April 1, 2024</span>\\n                </span>\\n              </div>\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Package className=\\\"h-4 w-4\\\" />\\n                <span className=\\\"font-semibold\\\">1 item</span>\\n              </div>\\n            </div>\\n          </div>\\n          <Button className=\\\"gap-2\\\">\\n            <FileText className=\\\"h-4 w-4\\\" />\\n            View Invoice\\n          </Button>\\n        </div>\\n\\n        <Card className=\\\"shadow-lg\\\">\\n          <CardHeader className=\\\"grid w-full grid-cols-1 gap-8 border-b p-6 md:grid-cols-2\\\">\\n            <div className=\\\"flex gap-4\\\">\\n              <div className=\\\"bg-muted/30 relative h-32 w-32 overflow-hidden rounded-xl border p-2 md:h-40 md:w-40\\\">\\n                <img\\n                  src=\\\"https://v3.material-tailwind.com/coat-2.png\\\"\\n                  alt=\\\"Premium Suit\\\"\\n                  className=\\\"h-full w-full object-contain\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-1 flex-col justify-between\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Premium Suit</h3>\\n                  <p className=\\\"text-2xl font-bold\\\">$790</p>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    The time is now for it to be okay to be great. People in\\n                    this world shun people for being great.\\n                  </p>\\n                </div>\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <Badge variant=\\\"outline\\\">Size: M</Badge>\\n                  <Badge variant=\\\"outline\\\">Qty: 1</Badge>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Delivery Address</p>\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                  362 Ridgewood Avenue\\n                  <br />\\n                  Alaska 99669, USA\\n                </p>\\n              </div>\\n\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Shipping Updates</p>\\n                </div>\\n                <div className=\\\"space-y-1 text-sm\\\">\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Mail className=\\\"h-3.5 w-3.5\\\" />\\n                    michael@email.com\\n                  </p>\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Phone className=\\\"h-3.5 w-3.5\\\" />\\n                    (307) 682-8835\\n                  </p>\\n                </div>\\n                <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"mt-2\\\">\\n                  Edit Contact\\n                </Button>\\n              </div>\\n            </div>\\n          </CardHeader>\\n\\n          <CardContent className=\\\"w-full p-6 sm:p-8\\\">\\n            <div className=\\\"flex flex-col gap-8 lg:flex-row\\\">\\n              <div className=\\\"flex-1\\\">\\n                <h3 className=\\\"mb-6 text-lg font-semibold\\\">Order Timeline</h3>\\n                <div className=\\\"space-y-6\\\">\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Home className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Placed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order was placed on April 1, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <CheckCircle className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Confirmed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been confirmed on April 2, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Archive className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-border my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Shipped</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-blue-500/30 bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400\\\"\\n                        >\\n                          In Progress\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been shipped on April 3, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-muted flex h-10 w-10 items-center justify-center rounded-full border-2 border-dashed\\\">\\n                        <Truck className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                      </div>\\n                    </div>\\n                    <div>\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"text-muted-foreground font-semibold\\\">\\n                          Order Delivered\\n                        </p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          Pending\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Expected delivery on April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator className=\\\"lg:hidden\\\" />\\n\\n              <div className=\\\"w-full lg:w-80\\\">\\n                <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                  <h3 className=\\\"mb-4 text-lg font-semibold\\\">Order Summary</h3>\\n                  <div className=\\\"space-y-3\\\">\\n                    {OPTIONS.map(({ title, value }) => (\\n                      <div key={title} className=\\\"flex justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">{title}</span>\\n                        <span className=\\\"font-medium\\\">{value}</span>\\n                      </div>\\n                    ))}\\n                  </div>\\n                  <Separator className=\\\"my-4\\\" />\\n                  <div className=\\\"flex items-center justify-between\\\">\\n                    <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                    <span className=\\\"text-2xl font-bold\\\">$1,785.00</span>\\n                  </div>\\n\\n                  <div className=\\\"bg-primary/10 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                    <Truck className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                    <div className=\\\"space-y-1\\\">\\n                      <p className=\\\"text-sm font-medium\\\">Track Your Order</p>\\n                      <p className=\\\"text-muted-foreground text-xs\\\">\\n                        Estimated delivery: April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-details-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-details/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Heart } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\"]\\n\\nexport default function ProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"S\\\")\\n  const [currentIndex, setCurrentIndex] = useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentIndex((prev) => (prev + 1) % IMAGES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentIndex((prev) => (prev - 1 + IMAGES.length) % IMAGES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <nav className=\\\"mb-4 flex text-sm\\\">\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Store\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Designers\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <span className=\\\"text-foreground\\\">Pink Blouse</span>\\n        </nav>\\n        <div className=\\\"mt-4 grid grid-cols-1 items-center gap-10 md:grid-cols-2\\\">\\n          <div>\\n            <Card className=\\\"py-10\\\">\\n              <CardContent className=\\\"relative p-0\\\">\\n                <div className=\\\"overflow-hidden\\\">\\n                  <img\\n                    src={IMAGES[currentIndex]}\\n                    alt={`Product ${currentIndex + 1}`}\\n                    className=\\\"mx-auto h-[30rem] object-cover transition-transform duration-300\\\"\\n                  />\\n                </div>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={prevSlide}\\n                  className=\\\"absolute top-1/2 left-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronLeft className=\\\"h-7 w-7\\\" />\\n                </Button>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={nextSlide}\\n                  className=\\\"absolute top-1/2 right-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronRight className=\\\"h-7 w-7\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          </div>\\n          <div className=\\\"text-center\\\">\\n            <h2 className=\\\"mb-6 text-2xl font-bold\\\">Pink Blouse</h2>\\n            <p className=\\\"text-primary text-2xl font-semibold\\\">$1,290</p>\\n            <div className=\\\"my-8 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <span className=\\\"text-sm font-semibold\\\">100 Reviews</span>\\n            </div>\\n            <p className=\\\"text-muted-foreground [text-wrap:_balance]\\\">\\n              There&apos;s nothing I really wanted to do in life that I\\n              wasn&apos;t able to get good at. That&apos;s my skill. I&apos;m\\n              not really specifically talented at anything except for the\\n              ability to learn.\\n            </p>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Color\\n            </h3>\\n            <div className=\\\"flex justify-center gap-2\\\">\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded bg-black\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-white\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-gray-200\\\" />\\n            </div>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Size\\n            </h3>\\n            <div className=\\\"flex items-center justify-center gap-4\\\">\\n              {SIZES.map((size) => (\\n                <Button\\n                  key={size}\\n                  onClick={() => setSelectedSize(size)}\\n                  variant={size === selectedSize ? \\\"default\\\" : \\\"outline\\\"}\\n                >\\n                  {size}\\n                </Button>\\n              ))}\\n            </div>\\n            <div className=\\\"my-6 flex items-center justify-center gap-2\\\">\\n              <Button size=\\\"lg\\\" className=\\\"w-full max-w-60\\\">\\n                Add to Cart\\n              </Button>\\n              <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"text-red-500\\\">\\n                <Heart className=\\\"h-5 w-5\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/product-listing-filters-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-listing-filters/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst FILTERS = [\\n  {\\n    id: \\\"categories\\\",\\n    label: \\\"Categories\\\",\\n    options: [\\\"All\\\", \\\"Shirts\\\", \\\"Pants\\\", \\\"Sweaters\\\", \\\"Jackets\\\"],\\n  },\\n  {\\n    id: \\\"size\\\",\\n    label: \\\"Size\\\",\\n    options: [\\\"All Sizes\\\", \\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"],\\n  },\\n  {\\n    id: \\\"material\\\",\\n    label: \\\"Material\\\",\\n    options: [\\\"All Materials\\\", \\\"Cotton\\\", \\\"Cashmere\\\", \\\"Wool\\\", \\\"Silk\\\", \\\"Linen\\\"],\\n  },\\n  {\\n    id: \\\"color\\\",\\n    label: \\\"Color\\\",\\n    options: [\\\"All Colors\\\", \\\"Black\\\", \\\"Blue\\\", \\\"Gray\\\", \\\"Brown\\\", \\\"White\\\", \\\"Navy\\\"],\\n  },\\n  {\\n    id: \\\"pattern\\\",\\n    label: \\\"Pattern\\\",\\n    options: [\\\"All Patterns\\\", \\\"Solid\\\", \\\"Striped\\\", \\\"Cable-knit\\\", \\\"Printed\\\"],\\n  },\\n]\\n\\nconst PRODUCTS = [\\n  {\\n    id: 1,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cable-knit cashmere cardigan\\\",\\n    price: \\\"€3,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 2,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cotton and cashmere shirt\\\",\\n    price: \\\"€675\\\",\\n    badge: null,\\n  },\\n  {\\n    id: 3,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1737608734653-d1eaad541d46?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1027\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Wool straight pants\\\",\\n    price: \\\"€1,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 4,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cashmere sweater\\\",\\n    price: \\\"€1,950\\\",\\n    badge: \\\"New Arrival\\\",\\n  },\\n]\\n\\nexport default function ProductListingFilters01() {\\n  const [favorites, setFavorites] = useState<number[]>([])\\n  const [selectedFilters, setSelectedFilters] = useState<\\n    Record<string, string>\\n  >({})\\n\\n  const toggleFavorite = (productId: number) => {\\n    setFavorites((prev) =>\\n      prev.includes(productId)\\n        ? prev.filter((id) => id !== productId)\\n        : [...prev, productId]\\n    )\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-center justify-between gap-4\\\">\\n          <div className=\\\"flex flex-wrap gap-2\\\">\\n            {FILTERS.map((filter) => (\\n              <Select\\n                key={filter.id}\\n                value={selectedFilters[filter.id] || filter.options[0]}\\n                onValueChange={(value) =>\\n                  setSelectedFilters((prev) => ({\\n                    ...prev,\\n                    [filter.id]: value,\\n                  }))\\n                }\\n              >\\n                <SelectTrigger className=\\\"w-[140px]\\\">\\n                  <SelectValue placeholder={filter.label} />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {filter.options.map((option) => (\\n                    <SelectItem key={option} value={option}>\\n                      {option}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            ))}\\n          </div>\\n          <div className=\\\"flex items-center gap-4\\\">\\n            <span className=\\\"text-muted-foreground text-sm\\\">462 Products</span>\\n            <Select defaultValue=\\\"featured\\\">\\n              <SelectTrigger className=\\\"w-[180px]\\\">\\n                <SelectValue placeholder=\\\"Sort by\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"featured\\\">Featured</SelectItem>\\n                <SelectItem value=\\\"price-low\\\">Price: Low to High</SelectItem>\\n                <SelectItem value=\\\"price-high\\\">Price: High to Low</SelectItem>\\n                <SelectItem value=\\\"newest\\\">Newest</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {PRODUCTS.map((product) => (\\n            <div\\n              key={product.id}\\n              className=\\\"group bg-card relative overflow-hidden rounded-lg border transition-all hover:shadow-lg\\\"\\n            >\\n              {product.badge && (\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute top-3 left-3 z-10 bg-white dark:bg-gray-900\\\"\\n                >\\n                  {product.badge}\\n                </Badge>\\n              )}\\n              <button\\n                onClick={() => toggleFavorite(product.id)}\\n                className=\\\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/90 backdrop-blur-sm transition-colors hover:bg-white dark:bg-gray-900/90 dark:hover:bg-gray-900\\\"\\n              >\\n                <Heart\\n                  className={`h-4 w-4 transition-colors ${\\n                    favorites.includes(product.id)\\n                      ? \\\"fill-red-500 text-red-500\\\"\\n                      : \\\"text-gray-600 dark:text-gray-400\\\"\\n                  }`}\\n                />\\n              </button>\\n\\n              <div className=\\\"bg-muted/30 aspect-square overflow-hidden\\\">\\n                <img\\n                  src={product.image}\\n                  alt={product.name}\\n                  className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                />\\n              </div>\\n\\n              <div className=\\\"border-t p-4\\\">\\n                <div className=\\\"mb-2 flex items-start justify-between gap-2\\\">\\n                  <div className=\\\"flex-1\\\">\\n                    <p className=\\\"text-sm font-semibold\\\">{product.brand}</p>\\n                    <p className=\\\"text-muted-foreground mt-1 text-sm leading-tight\\\">\\n                      {product.name}\\n                    </p>\\n                  </div>\\n                </div>\\n                <p className=\\\"mt-2 font-semibold\\\">{product.price}</p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ecommerce-sections-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useRef, useState } from \\\"react\\\"\\nimport { Pause, Play, ShoppingBag, Shuffle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    id: \\\"card-1\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1595777457583-95e059d581b8?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Satin Wrap Dress product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Maison Aurore\\\",\\n    title: \\\"Satin Wrap Dress\\\",\\n    description: \\\"Fluid silhouette with tie waist and soft sheen.\\\",\\n    price: \\\"$215.00\\\",\\n  },\\n  {\\n    id: \\\"card-2\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1591369822096-ffd140ec948f?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Structured Blazer product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Atelier No. 9\\\",\\n    title: \\\"Structured Blazer\\\",\\n    description: \\\"Sharp shoulders, single-breasted, polished finish.\\\",\\n    price: \\\"$329.00\\\",\\n  },\\n  {\\n    id: \\\"card-3\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1543163521-1bf539c55dd2?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Chunky Chelsea Boots product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Linea Forte\\\",\\n    title: \\\"Chunky Chelsea Boots\\\",\\n    description: \\\"Elevated lug sole with elastic side panels.\\\",\\n    price: \\\"From $180.00\\\",\\n  },\\n]\\n\\nexport default function EcommerceSectionsBlock() {\\n  const [isPlaying, setIsPlaying] = useState(true)\\n  const playerRef = useRef<any>(null)\\n  const [playerReady, setPlayerReady] = useState(false)\\n\\n  useEffect(() => {\\n    const tag = document.createElement(\\\"script\\\")\\n    tag.src = \\\"https://www.youtube.com/iframe_api\\\"\\n    const firstScriptTag = document.getElementsByTagName(\\\"script\\\")[0]\\n    firstScriptTag.parentNode?.insertBefore(tag, firstScriptTag)\\n    ;(window as any).onYouTubeIframeAPIReady = () => {\\n      playerRef.current = new (window as any).YT.Player(\\\"youtube-player\\\", {\\n        videoId: \\\"YCIuEU2y8XI\\\",\\n        playerVars: {\\n          autoplay: 1,\\n          mute: 1,\\n          loop: 1,\\n          playlist: \\\"YCIuEU2y8XI\\\",\\n          controls: 0,\\n          showinfo: 0,\\n          modestbranding: 1,\\n          playsinline: 1,\\n        },\\n        events: {\\n          onReady: () => {\\n            setPlayerReady(true)\\n          },\\n        },\\n      })\\n    }\\n\\n    return () => {\\n      if (playerRef.current) {\\n        playerRef.current.destroy()\\n      }\\n    }\\n  }, [])\\n\\n  const togglePlay = () => {\\n    if (playerRef.current && playerReady) {\\n      if (isPlaying) {\\n        playerRef.current.pauseVideo()\\n      } else {\\n        playerRef.current.playVideo()\\n      }\\n      setIsPlaying(!isPlaying)\\n    }\\n  }\\n\\n  return (\\n    <section className=\\\"relative w-full overflow-hidden rounded-xl\\\">\\n      <div className=\\\"relative aspect-[16/9] w-full lg:aspect-[16/9]\\\">\\n        <div\\n          id=\\\"youtube-player\\\"\\n          className=\\\"absolute inset-0 h-full w-full rounded-xl\\\"\\n          style={{\\n            pointerEvents: \\\"none\\\",\\n          }}\\n        />\\n\\n        <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\\\" />\\n\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"absolute top-4 left-4 rounded-full bg-black/50 text-white backdrop-blur-sm hover:bg-black/70 hover:text-white lg:top-6 lg:left-6\\\"\\n          onClick={togglePlay}\\n        >\\n          {isPlaying ? (\\n            <Pause className=\\\"h-4 w-4\\\" />\\n          ) : (\\n            <Play className=\\\"h-4 w-4\\\" />\\n          )}\\n        </Button>\\n\\n        <div className=\\\"absolute inset-x-0 bottom-0 space-y-6 p-4 lg:p-8\\\">\\n          <div className=\\\"mx-auto grid max-w-6xl gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {PRODUCTS.map((product) => (\\n              <div\\n                key={product.id}\\n                className=\\\"flex items-center gap-4 rounded-2xl bg-white p-4 shadow-lg dark:bg-white/95\\\"\\n              >\\n                <div className=\\\"h-16 w-16 flex-shrink-0 overflow-hidden rounded-lg\\\">\\n                  <img\\n                    src={product.media.src}\\n                    alt={product.media.alt}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </div>\\n\\n                <div className=\\\"min-w-0 flex-1\\\">\\n                  <p className=\\\"text-xs font-medium tracking-wide text-gray-500 uppercase\\\">\\n                    {product.eyebrow}\\n                  </p>\\n                  <h3 className=\\\"truncate font-semibold text-gray-900\\\">\\n                    {product.title}\\n                  </h3>\\n                  <p className=\\\"font-semibold text-gray-900\\\">{product.price}</p>\\n                </div>\\n\\n                <div className=\\\"flex flex-shrink-0 items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <ShoppingBag className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <Shuffle className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex justify-center\\\">\\n            <Button\\n              variant=\\\"outline\\\"\\n              size=\\\"lg\\\"\\n              className=\\\"rounded-full border-white/80 bg-white/10 px-8 text-white backdrop-blur-sm hover:bg-white/20 hover:text-white\\\"\\n            >\\n              VIEW ALL PRODUCTS\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ecommerce-sections-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronDown,\\n  MapPin,\\n  Package,\\n  Ruler,\\n  ShoppingBag,\\n  Star,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EcommerceSections02() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(1)\\n  const [isInfoOpen, setIsInfoOpen] = useState(false)\\n\\n  const thumbnails = [\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+1`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+2`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Detail`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Inside`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Model`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Lifestyle`,\\n  ]\\n\\n  const colors = [\\n    { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n    { name: \\\"Cream\\\", hex: \\\"#f5f0e8\\\" },\\n    { name: \\\"Forest Green\\\", hex: \\\"#7d9488\\\" },\\n    { name: \\\"Gray\\\", hex: \\\"#9ca3af\\\" },\\n    { name: \\\"Navy Blue\\\", hex: \\\"#0f172a\\\" },\\n    { name: \\\"Brown\\\", hex: \\\"#a0522d\\\" },\\n  ]\\n\\n  const features = [\\n    { icon: ShoppingBag, text: \\\"Crossbody style\\\" },\\n    { icon: Package, text: \\\"Premium leather\\\" },\\n    { icon: Ruler, text: \\\"Adjustable strap\\\" },\\n    { icon: MapPin, text: \\\"Crafted in France\\\" },\\n  ]\\n\\n  return (\\n    <div className=\\\"min-h-screen bg-neutral-50 p-4 sm:p-8\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"grid gap-8 lg:grid-cols-[auto_1fr_1fr] lg:gap-12\\\">\\n          <div className=\\\"hidden lg:flex lg:flex-col lg:gap-3\\\">\\n            {thumbnails.map((thumb, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setSelectedImage(index)}\\n                className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                  selectedImage === index\\n                    ? \\\"border-neutral-900\\\"\\n                    : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                }`}\\n              >\\n                <img\\n                  src={thumb}\\n                  alt={`Product view ${index + 1}`}\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </button>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex items-start justify-center\\\">\\n            <div className=\\\"w-full max-w-lg\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={thumbnails[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </div>\\n              <div className=\\\"mt-4 flex gap-2 lg:hidden\\\">\\n                {thumbnails.slice(0, 4).map((thumb, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedImage(index)}\\n                    className={`h-16 w-16 overflow-hidden rounded-lg border-2 ${\\n                      selectedImage === index\\n                        ? \\\"border-neutral-900\\\"\\n                        : \\\"border-neutral-200\\\"\\n                    }`}\\n                  >\\n                    <img\\n                      src={thumb}\\n                      alt={`Thumbnail ${index + 1}`}\\n                      className=\\\"h-full w-full object-cover\\\"\\n                    />\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Trending Now\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Artisan Leather Crossbody\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $385.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-900 text-neutral-900\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(4.7)</span>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {colors[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {colors.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-4 text-sm leading-relaxed text-neutral-600\\\">\\n              Elegant crossbody bag crafted from premium vegetable-tanned\\n              leather with a minimalist silhouette. Features a secure magnetic\\n              clasp closure, interior zip compartment, and an adjustable\\n              shoulder strap for versatile wear.\\n            </p>\\n\\n            <p className=\\\"mb-6 text-sm text-neutral-600\\\">\\n              This is a demo store. To buy this product, visit{\\\" \\\"}\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"font-medium text-neutral-900 underline underline-offset-2 hover:text-neutral-700\\\"\\n              >\\n                Maison Atelier\\n              </a>{\\\" \\\"}\\n              official store.\\n            </p>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 border-neutral-900 text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Buy it Now\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-2 gap-3\\\">\\n              {features.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"border-t border-neutral-200\\\">\\n              <button\\n                onClick={() => setIsInfoOpen(!isInfoOpen)}\\n                className=\\\"flex w-full items-center justify-between py-4 text-sm font-medium text-neutral-900 hover:text-neutral-600\\\"\\n              >\\n                More Information\\n                <ChevronDown\\n                  className={`h-4 w-4 transition-transform ${\\n                    isInfoOpen ? \\\"rotate-180\\\" : \\\"\\\"\\n                  }`}\\n                />\\n              </button>\\n              {isInfoOpen && (\\n                <div className=\\\"pb-4 text-sm leading-relaxed text-neutral-600\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Materials & Care:</strong> This bag is made from\\n                    100% full-grain vegetable-tanned leather that develops a\\n                    beautiful patina over time. Clean with a soft, dry cloth and\\n                    condition regularly with leather cream.\\n                  </p>\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Dimensions:</strong> 9.5\\\" W x 7\\\" H x 3\\\" D. Strap\\n                    drop adjustable from 20\\\" to 24\\\". Weight: 1.2 lbs.\\n                  </p>\\n                  <p>\\n                    <strong>Shipping & Returns:</strong> Free standard shipping\\n                    on orders over $200. 30-day return policy with original\\n                    receipt and tags attached.\\n                  </p>\\n                </div>\\n              )}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/simple-faq-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-faq/page.tsx\",\n      \"content\": \"export default function SimpleFaq01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How do I order?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            We&apos;re not always in the position that we want to be at.\\n            We&apos;re constantly growing. We&apos;re constantly making\\n            mistakes. We&apos;re constantly trying to express ourselves and\\n            actualize our dreams. If you have the opportunity to play this game\\n            of life you need to appreciate every moment. A lot of people\\n            don&apos;t appreciate the moment until it&apos;s passed.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How can i make the payment?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            It really matters and then like it really doesn&apos;t matter. What\\n            matters is the people who are sparked by it. And the people who are\\n            like offended by it, it doesn&apos;t matter. Because it&apos;s about\\n            motivating the doers. Because I&apos;m here to follow my dreams and\\n            inspire other people to follow their dreams, too. We&apos;re not\\n            always in the position that we want to be at. We&apos;re constantly\\n            growing. We&apos;re constantly making mistakes. We&apos;re\\n            constantly trying to express ourselves and actualize our dreams. If\\n            you have the opportunity to play this game of life you need to\\n            appreciate every moment. A lot of people don&apos;t appreciate the\\n            moment until it&apos;s passed.\\n          </p>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-list-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-list/page.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\n\\nconst DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it? If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything. If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"five\\\",\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment. I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqsList01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <Accordion type=\\\"single\\\" collapsible>\\n          {DATA.map(({ title, desc, value }, key) => (\\n            <AccordionItem key={key} value={value}>\\n              <AccordionTrigger>\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </AccordionTrigger>\\n              <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                {desc}\\n              </AccordionContent>\\n            </AccordionItem>\\n          ))}\\n        </Accordion>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faq-left-title-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faq-left-title/page.tsx\",\n      \"content\": \"import { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqLeftTitle01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto grid justify-between gap-6 lg:grid-cols-5\\\">\\n        <div className=\\\"col-span-2\\\">\\n          <h2 className=\\\"mb-4 text-3xl leading-snug font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground max-w-sm text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"col-span-3 grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key} className=\\\"border-none shadow-none\\\">\\n              <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-grid-cta-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid-cta/page.tsx\",\n      \"content\": \"import { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n  {\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment.\\\",\\n  },\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n]\\n\\nexport default function FaqsGridCta01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b px-6 gap-0\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"mt-20 text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-cards-icons-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-cards-icons/page.tsx\",\n      \"content\": \"import { CreditCard, ShoppingCart, Users } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    icon: Users,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n]\\n\\nexport default function FaqsCardsIcons01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"my-20 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b gap-0\\\">\\n                <div className=\\\"bg-primary mb-6 grid h-12 w-12 place-items-center rounded-lg\\\">\\n                  <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-base font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/faqs-grid-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid/page.tsx\",\n      \"content\": \"import {\\n  CreditCard,\\n  Package,\\n  RefreshCw,\\n  ShoppingCart,\\n  Store,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"Browse our collection, add items to your cart, and proceed to checkout. We accept multiple payment methods including credit cards, PayPal, and digital wallets for your convenience.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can I make the payment?\\\",\\n    desc: \\\"We accept all major credit cards, debit cards, PayPal, Apple Pay, and Google Pay. All transactions are secured with industry-standard encryption to protect your information.\\\",\\n  },\\n  {\\n    icon: Truck,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"Standard shipping takes 3-5 business days. Express shipping is available for 1-2 day delivery. International orders typically arrive within 7-14 business days depending on your location.\\\",\\n  },\\n  {\\n    icon: Store,\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"Products purchased for personal use cannot be resold without authorization. For wholesale or reseller inquiries, please contact our business development team at business@example.com.\\\",\\n  },\\n  {\\n    icon: Package,\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"Shipping information is available in your account under 'Order History'. You'll receive tracking details via email once your order ships, allowing you to monitor delivery progress.\\\",\\n  },\\n  {\\n    icon: RefreshCw,\\n    title: \\\"What is your return policy?\\\",\\n    desc: \\\"We offer a 30-day return policy on most items. Products must be in original condition with tags attached. Refunds are processed within 5-7 business days after we receive your return.\\\",\\n  },\\n]\\n\\nexport default function FaqsGrid01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n            Frequently Asked Questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Find answers to common questions about our products, shipping, and\\n            policies. Can't find what you're looking for? Contact our support\\n            team.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group hover:border-primary/50 transition-all hover:shadow-lg\\\"\\n            >\\n              <CardHeader className=\\\"px-6\\\">\\n                <div className=\\\"bg-primary/10 mb-3 flex h-12 w-12 items-center justify-center rounded-full\\\">\\n                  <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-xl leading-tight\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent>\\n                <p className=\\\"text-muted-foreground leading-relaxed\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone, Ticket } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto lg:max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get in Touch</h2>\\n          <p className=\\\"text-muted-foreground text-lg lg:max-w-lg\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          <div className=\\\"mt-14 space-y-4\\\">\\n            {OPTIONS.map(({ icon: Icon, info }, key) => (\\n              <div key={key} className=\\\"flex items-center gap-4\\\">\\n                <Icon className=\\\"h-5 w-5\\\" />\\n                <span>{info}</span>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections02() {\\n  return (\\n    <section className=\\\"grid min-h-screen w-full grid-cols-1 items-center md:grid-cols-2\\\">\\n      <div className=\\\"p-6 sm:p-12 lg:p-16\\\">\\n        <div className=\\\"mb-10\\\">\\n          <h2 className=\\\"my-4 text-3xl font-bold\\\">Contact us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            Whether you have questions or you would just like to say hello,\\n            contact us.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n              <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n              <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Email Address</Label>\\n            <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"someone@example.com\\\" />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n            <Input\\n              id=\\\"phone\\\"\\n              type=\\\"tel\\\"\\n              maxLength={16}\\n              placeholder=\\\"e.g., +1 123-456-7890\\\"\\n              pattern=\\\"^\\\\+\\\\d{1,3}\\\\s\\\\d{1,4}-\\\\d{1,4}-\\\\d{4}$\\\"\\n            />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Something about your request.\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Checkbox id=\\\"privacy-policy\\\" />\\n            <Label\\n              htmlFor=\\\"privacy-policy\\\"\\n              className=\\\"cursor-pointer text-sm font-normal\\\"\\n            >\\n              You agree to your friendly{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                Privacy Policy\\n              </a>\\n            </Label>\\n          </div>\\n          <Button className=\\\"w-full\\\">Send Message</Button>\\n        </form>\\n      </div>\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1658246944389-9e9ac0a85dda?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1064\\\"\\n        alt=\\\"contact\\\"\\n        className=\\\"hidden h-full w-full object-cover object-center md:block\\\"\\n      />\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections03() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-4xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-8 shadow-xl lg:grid-cols-2 lg:p-10\\\">\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\" className=\\\"text-base\\\">\\n                  First Name\\n                </Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" className=\\\"h-11\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\" className=\\\"text-base\\\">\\n                  Last Name\\n                </Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" className=\\\"h-11\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\" className=\\\"text-base\\\">\\n                Email Address\\n              </Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"h-11\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-base\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n                rows={5}\\n                className=\\\"resize-none\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full sm:w-auto sm:min-w-[150px]\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"flex flex-col justify-between rounded-xl bg-gradient-to-br from-gray-900 to-black p-8 lg:p-12\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h3>\\n              <p className=\\\"mb-12 max-w-lg text-gray-300\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              <div className=\\\"space-y-6\\\">\\n                {DATA.map(({ icon: Icon, info }, key) => (\\n                  <div key={key} className=\\\"flex items-center gap-4\\\">\\n                    <div className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10\\\">\\n                      <Icon className=\\\"h-5 w-5 text-white\\\" />\\n                    </div>\\n                    <span className=\\\"text-gray-200\\\">{info}</span>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"mt-12 flex items-center gap-6\\\">\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Linkedin className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Dribbble className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Facebook className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone, User } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: User,\\n    title: \\\"Contact\\\",\\n    description: \\\"Andrew Samian\\\",\\n  },\\n]\\n\\nexport default function ContactSections04() {\\n  return (\\n    <section className=\\\"relative min-h-[70vh] w-full bg-cover bg-center\\\">\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1635700193352-80564c35434c?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2532\\\"\\n        alt=\\\"Background\\\"\\n        className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n      />\\n      <div className=\\\"absolute inset-0 bg-black/50\\\" />\\n      <div className=\\\"relative flex min-h-[70vh] flex-col items-center justify-center px-4 py-16 text-center\\\">\\n        <h2 className=\\\"mb-6 text-5xl font-bold text-white\\\">Got a Question?</h2>\\n        <p className=\\\"mx-auto mb-12 max-w-xl text-xl text-white/80\\\">\\n          We'd like to talk more about what you need\\n        </p>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-12 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {OPTIONS.map(({ icon: Icon, title, description }, key) => (\\n            <div\\n              key={key}\\n              className=\\\"group text-center transition-transform hover:scale-105\\\"\\n            >\\n              <div className=\\\"mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-xl bg-white/10 shadow-lg transition-all group-hover:bg-white/20 group-hover:shadow-xl\\\">\\n                <Icon className=\\\"h-8 w-8 text-white\\\" />\\n              </div>\\n              <p className=\\\"mb-2 text-xl font-bold text-white\\\">{title}</p>\\n              <p className=\\\"text-base text-gray-300\\\">{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\\"General Inquiry\\\", \\\"Product Support\\\"]\\n\\nexport default function ContactSections05() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"bg-white py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"secondary\\\">Customer Care</Badge>\\n          <h2 className=\\\"mt-8 mb-4 text-3xl font-bold\\\">\\n            We&apos;re Here to Help\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether it&apos;s a question about our services, a request for\\n            technical assistance, or suggestions for improvement, our team is\\n            eager to hear from you.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-x-16 gap-y-10 lg:grid-cols-2\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070\\\"\\n            alt=\\\"Contact\\\"\\n            className=\\\"h-full min-h-[400px] w-full rounded-2xl object-cover\\\"\\n          />\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"mx-auto max-w-lg space-y-6 lg:mx-0 lg:py-2\\\"\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              <Label>Select Options for Business Engagement</Label>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {OPTIONS.map((option) => (\\n                  <Button\\n                    key={option}\\n                    type=\\\"button\\\"\\n                    variant={selectedOption === option ? \\\"default\\\" : \\\"outline\\\"}\\n                    onClick={() =>\\n                      setSelectedOption((cur) => (cur === option ? \\\"\\\" : option))\\n                    }\\n                  >\\n                    {option}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    subTitle: \\\"Find us at the office\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    subTitle: \\\"Send us your feedback\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    subTitle: \\\"Give us a ring\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n]\\n\\nexport default function ContactSections06() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <span className=\\\"text-primary block text-sm font-semibold\\\">\\n            Contact Us\\n          </span>\\n          <h2 className=\\\"my-4 text-center text-3xl font-bold\\\">\\n            Got a Question?\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            We&apos;d like to talk more about what you need\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {OPTIONS.map(({ icon: Icon, title, subTitle, description }, key) => (\\n            <div key={key} className=\\\"text-center\\\">\\n              <div className=\\\"bg-primary mx-auto mb-6 grid h-14 w-14 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n              </div>\\n              <p className=\\\"text-lg font-semibold\\\">{title}</p>\\n              <p className=\\\"text-muted-foreground my-3 block\\\">{subTitle}</p>\\n              <p>{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections07() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-2 text-2xl font-semibold\\\">Contact us</h3>\\n          <p className=\\\"text-muted-foreground mb-6\\\">\\n            We'd love to hear from you.\\n          </p>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto space-y-10 lg:max-w-lg\\\">\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"flex gap-4\\\">\\n              <div className=\\\"shrink-0\\\">\\n                <Icon className=\\\"h-6 w-6\\\" />\\n              </div>\\n              <div>\\n                <h4 className=\\\"mb-2 font-semibold\\\">{title}</h4>\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-muted-foreground\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nconst OPTIONS = [\\\"Design\\\", \\\"Development\\\", \\\"Support\\\", \\\"Other\\\"]\\n\\nexport default function ContactSections08() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-4 lg:grid-cols-2 lg:p-6\\\">\\n          <div className=\\\"grid rounded-lg bg-black p-8 lg:place-items-center lg:p-16\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h2>\\n              <p className=\\\"mb-16 max-w-lg text-gray-400\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              {DATA.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"mb-4 flex items-center gap-4\\\">\\n                  <Icon className=\\\"h-5 w-5 text-gray-400\\\" />\\n                  <span className=\\\"text-gray-400\\\">{info}</span>\\n                </div>\\n              ))}\\n              <div className=\\\"mt-12 flex items-center gap-6\\\">\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Twitter className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Linkedin className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Dribbble className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Facebook className=\\\"h-6 w-6\\\" />\\n                </a>\\n              </div>\\n            </div>\\n          </div>\\n          <form action=\\\"#\\\" className=\\\"space-y-6 px-2 py-0 lg:py-2\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label>Area of Interest</Label>\\n              <RadioGroup\\n                value={selectedOption}\\n                onValueChange={setSelectedOption}\\n              >\\n                <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                  {OPTIONS.map((option) => (\\n                    <div key={option} className=\\\"flex items-center space-x-2\\\">\\n                      <RadioGroupItem value={option} id={option} />\\n                      <Label\\n                        htmlFor={option}\\n                        className=\\\"cursor-pointer font-normal\\\"\\n                      >\\n                        {option}\\n                      </Label>\\n                    </div>\\n                  ))}\\n                </div>\\n              </RadioGroup>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"ml-auto flex max-w-fit\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections09() {\\n  return (\\n    <section className=\\\"p-6\\\">\\n      <div className=\\\"grid items-center gap-6 rounded-xl bg-black p-4 lg:grid-cols-2 lg:p-8\\\">\\n        <div className=\\\"p-8 lg:mx-auto lg:max-w-lg lg:p-0\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white\\\">Get in Touch</h2>\\n          <p className=\\\"text-lg text-white lg:max-w-xl\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"mt-12\\\">\\n              <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                <Icon className=\\\"h-7 w-7 text-white\\\" />\\n                <h4 className=\\\"text-lg font-semibold text-white\\\">{title}</h4>\\n              </div>\\n              <div className=\\\"ml-10 space-y-2\\\">\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-white\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n        <Card className=\\\"p-6 lg:p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    info: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n]\\n\\nexport default function ContactSections10() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"mb-16 text-center text-3xl font-bold\\\">Contact Us</h2>\\n        <div className=\\\"grid grid-cols-1 gap-10 lg:grid-cols-2\\\">\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Send us a message</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                  <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                  <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n                </div>\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 123-456-7890\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"message\\\">Message</Label>\\n                <Textarea\\n                  id=\\\"message\\\"\\n                  placeholder=\\\"Write your message here...\\\"\\n                />\\n              </div>\\n              <Button className=\\\"w-full\\\">Send Message</Button>\\n            </form>\\n          </Card>\\n          <div className=\\\"space-y-8\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-semibold\\\">Get in touch</h3>\\n              <p className=\\\"text-muted-foreground\\\">\\n                We&apos;re here to help and answer any question you might have.\\n                We look forward to hearing from you.\\n              </p>\\n            </div>\\n            <div className=\\\"space-y-6\\\">\\n              {OPTIONS.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"flex items-start gap-4\\\">\\n                  <div className=\\\"bg-primary/10 grid h-10 w-10 shrink-0 place-items-center rounded-lg\\\">\\n                    <Icon className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"pt-2\\\">\\n                    <p className=\\\"font-medium\\\">{info}</p>\\n                  </div>\\n                </div>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections11() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-gradient-to-br from-stone-900 to-stone-800 py-16 text-white\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get In Touch</h2>\\n          <p className=\\\"mx-auto max-w-2xl text-stone-300\\\">\\n            Have a question or want to work together? Leave your details and\\n            we'll get back to you as soon as possible.\\n          </p>\\n        </div>\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"space-y-6 rounded-2xl bg-white/10 p-8 backdrop-blur-sm\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-white\\\">\\n                  Name\\n                </Label>\\n                <Input\\n                  id=\\\"name\\\"\\n                  placeholder=\\\"Your name\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\" className=\\\"text-white\\\">\\n                  Email\\n                </Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"your@email.com\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\" className=\\\"text-white\\\">\\n                Subject\\n              </Label>\\n              <Input\\n                id=\\\"subject\\\"\\n                placeholder=\\\"How can we help?\\\"\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-white\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Your message...\\\"\\n                rows={6}\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"mt-12 flex justify-center gap-12\\\">\\n            <div className=\\\"text-center\\\">\\n              <Phone className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">+1 (424) 535-3523</p>\\n            </div>\\n            <div className=\\\"text-center\\\">\\n              <Mail className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">hello@mail.com</p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections12() {\\n  return (\\n    <section className=\\\"relative flex min-h-screen items-center py-20\\\">\\n      <div\\n        className=\\\"absolute inset-0 bg-cover bg-center opacity-20\\\"\\n        style={{\\n          backgroundImage:\\n            \\\"url('https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop')\\\",\\n        }}\\n      />\\n      <div className=\\\"relative z-10 container mx-auto\\\">\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <div className=\\\"mb-12 text-center\\\">\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">Let's Talk</h2>\\n            <p className=\\\"text-muted-foreground text-lg\\\">\\n              Fill out the form below and we'll be in touch shortly.\\n            </p>\\n          </div>\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"bg-card space-y-6 rounded-2xl p-8 shadow-xl\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"company\\\">Company</Label>\\n              <Input id=\\\"company\\\" placeholder=\\\"Your Company\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">How can we help?</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Tell us about your project...\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Submit\\n            </Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Clock, Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst CONTACT_INFO = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Visit us\\\",\\n    info: \\\"123 Main Street, New York, NY 10001\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Call us\\\",\\n    info: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email us\\\",\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Clock,\\n    title: \\\"Working hours\\\",\\n    info: \\\"Mon - Fri, 9:00 AM - 6:00 PM\\\",\\n  },\\n]\\n\\nexport default function ContactSections13() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Contact Information</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            We're here to answer any questions you may have about our services.\\n            Reach out to us and we'll respond as soon as we can.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {CONTACT_INFO.map(({ icon: Icon, title, info }, key) => (\\n            <Card key={key} className=\\\"p-6 text-center\\\">\\n              <div className=\\\"bg-primary/10 mx-auto mb-4 grid h-12 w-12 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary h-6 w-6\\\" />\\n              </div>\\n              <h3 className=\\\"mb-2 font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{info}</p>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"mx-auto max-w-2xl p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-bold\\\">Send us a message</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"your@email.com\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"How can we help you?\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Send } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections14() {\\n  return (\\n    <section className=\\\"from-background to-muted/20 bg-gradient-to-b py-20\\\">\\n      <div className=\\\"container mx-auto max-w-4xl\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <span className=\\\"text-primary text-sm font-semibold\\\">\\n            GET IN TOUCH\\n          </span>\\n          <h2 className=\\\"mt-2 mb-4 text-4xl font-bold\\\">\\n            We'd Love to Hear From You\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether you have a question about features, pricing, or anything\\n            else, our team is ready to answer all your questions.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-8\\\">\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"name\\\">Full Name *</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" required />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address *</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"john@example.com\\\"\\n                required\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n              <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 (555) 000-0000\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\">Subject</Label>\\n              <Input id=\\\"subject\\\" placeholder=\\\"How can we help?\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message *</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Tell us more about your inquiry...\\\"\\n              rows={6}\\n              required\\n            />\\n          </div>\\n          <div className=\\\"flex justify-center\\\">\\n            <Button size=\\\"lg\\\" className=\\\"gap-2\\\">\\n              <Send className=\\\"h-4 w-4\\\" />\\n              Send Message\\n            </Button>\\n          </div>\\n        </form>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/contact-sections-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { FileText, Headphones, MessageSquare } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst CONTACT_OPTIONS = [\\n  {\\n    icon: MessageSquare,\\n    title: \\\"Chat with Sales\\\",\\n    description: \\\"Speak to our sales team\\\",\\n    action: \\\"Start Chat\\\",\\n  },\\n  {\\n    icon: Headphones,\\n    title: \\\"Get Support\\\",\\n    description: \\\"We're here to help\\\",\\n    action: \\\"Contact Support\\\",\\n  },\\n  {\\n    icon: FileText,\\n    title: \\\"Documentation\\\",\\n    description: \\\"Browse our docs\\\",\\n    action: \\\"View Docs\\\",\\n  },\\n]\\n\\nexport default function ContactSections15() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid items-center gap-12 lg:grid-cols-2\\\">\\n          <div>\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n              Let's start a conversation\\n            </h2>\\n            <p className=\\\"text-muted-foreground mb-8 text-lg\\\">\\n              We're always happy to help with any questions you might have. Get\\n              in touch with us and we'll respond as soon as possible.\\n            </p>\\n            <div className=\\\"space-y-6\\\">\\n              {CONTACT_OPTIONS.map(\\n                ({ icon: Icon, title, description, action }, key) => (\\n                  <div key={key} className=\\\"flex items-start gap-4\\\">\\n                    <div className=\\\"bg-primary/10 grid h-12 w-12 shrink-0 place-items-center rounded-lg\\\">\\n                      <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                    </div>\\n                    <div className=\\\"flex-1\\\">\\n                      <h3 className=\\\"mb-1 font-semibold\\\">{title}</h3>\\n                      <p className=\\\"text-muted-foreground mb-3 text-sm\\\">\\n                        {description}\\n                      </p>\\n                      <Button variant=\\\"link\\\" className=\\\"h-auto p-0\\\">\\n                        {action} →\\n                      </Button>\\n                    </div>\\n                  </div>\\n                )\\n              )}\\n            </div>\\n          </div>\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Quick Contact</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Your Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Enter your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Your Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"Enter your email\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number (Optional)</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"Enter your phone\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"inquiry\\\">Your Inquiry</Label>\\n                <Input id=\\\"inquiry\\\" placeholder=\\\"What can we help you with?\\\" />\\n              </div>\\n              <Button className=\\\"w-full\\\">Submit</Button>\\n            </form>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"475\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"476\\\",\\n    profession: \\\"owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"477\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n]\\n\\nexport default function Web301() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"p-6\\\">\\n          <Avatar className=\\\"h-12 w-12\\\">\\n            <AvatarImage\\n              src=\\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\"\\n              alt=\\\"pixel art collection\\\"\\n            />\\n            <AvatarFallback>PA</AvatarFallback>\\n          </Avatar>\\n          <h1 className=\\\"mt-4 mb-1 text-2xl font-bold\\\">Pixelated Art</h1>\\n          <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n            These NFTs capture the essence of imagination and innovation,\\n            offering a glimpse into the boundless potential of the digital\\n            world.\\n          </p>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, profession, profileImg }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-64 w-full rounded-md object-cover object-center\\\"\\n                />\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <p className=\\\"text-muted-foreground mb-1 text-sm\\\">\\n                  Pixelated Art\\n                </p>\\n                <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                <div className=\\\"mt-4 flex items-center justify-between\\\">\\n                  <div className=\\\"flex items-center gap-4\\\">\\n                    <Avatar className=\\\"h-6 w-6\\\">\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">{name}</p>\\n                  </div>\\n                  <p className=\\\"text-primary text-sm capitalize\\\">\\n                    {profession}\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Heart, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    tokenId: \\\"876\\\",\\n    price: \\\"1,6 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    tokenId: \\\"877\\\",\\n    price: \\\"0,9 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    tokenId: \\\"878\\\",\\n    price: \\\"1,3 ETH\\\",\\n  },\\n]\\n\\nexport default function Web302() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <Avatar className=\\\"h-10 w-10\\\">\\n              <AvatarImage\\n                src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                alt=\\\"emma\\\"\\n              />\\n              <AvatarFallback>EM</AvatarFallback>\\n            </Avatar>\\n            <h1 className=\\\"mt-4 mb-1 flex items-center gap-2 text-2xl font-bold\\\">\\n              Emma\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-blue-500 text-blue-500\\\"\\n              >\\n                ✓\\n              </Badge>\\n            </h1>\\n            <p className=\\\"text-muted-foreground text-lg\\\">130 Collections</p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button>Follow Me</Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, price }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"relative px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-72 w-full rounded-md object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute top-6 right-6 flex items-center gap-2\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"border-white/50 bg-white/70 text-black backdrop-blur\\\"\\n                  >\\n                    Auction ends in 23h:03m:33s\\n                  </Badge>\\n                  <Button\\n                    size=\\\"icon\\\"\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"h-7 w-7 bg-white text-black hover:bg-white\\\"\\n                  >\\n                    <Heart className=\\\"h-3.5 w-3.5\\\" />\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <div className=\\\"mb-2 flex items-center justify-between gap-4\\\">\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Cosmic creatures\\n                  </p>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <div className=\\\"flex gap-1\\\">\\n                      <img\\n                        src=\\\"https://v3.material-tailwind.com/icon/eth.svg\\\"\\n                        alt=\\\"ethereum\\\"\\n                        className=\\\"h-4 w-4\\\"\\n                      />\\n                      <p className=\\\"text-sm font-semibold\\\">{price}</p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div className=\\\"flex items-center justify-between gap-4\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                  <Button size=\\\"sm\\\">Place a Bid</Button>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"1,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    desc: \\\"Creator\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"0,4 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    price: \\\"0,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n]\\n\\nexport default function Web303() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Auctions</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Select defaultValue=\\\"Last 24H\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Select Date\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select defaultValue=\\\"Category 1\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Category 1\\\">Category 1</SelectItem>\\n                <SelectItem value=\\\"Category 2\\\">Category 2</SelectItem>\\n                <SelectItem value=\\\"Category 3\\\">Category 3</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, desc, profileImg, price, time }, key) => (\\n            <Card key={key} className=\\\"overflow-hidden py-0\\\">\\n              <CardHeader className=\\\"relative p-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-80 w-full object-cover object-center\\\"\\n                />\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute bottom-4 left-4 flex items-center gap-2 border-white/50 bg-white/70 backdrop-blur\\\"\\n                >\\n                  <Avatar className=\\\"h-7 w-7\\\">\\n                    <AvatarImage src={profileImg} alt={name} />\\n                    <AvatarFallback>{name[1]}</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"flex flex-col\\\">\\n                    <span className=\\\"text-xs font-semibold text-black\\\">\\n                      {name}\\n                    </span>\\n                    <span className=\\\"text-muted-foreground text-xs\\\">\\n                      {desc}\\n                    </span>\\n                  </div>\\n                </Badge>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4 pb-4\\\">\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <p className=\\\"text-lg font-bold\\\">{price}</p>\\n                  </div>\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Auction ends in\\n                    </p>\\n                    <p className=\\\"text-sm font-semibold\\\">{time}</p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Cuboid, Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    title: \\\"Dreamy Trees\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"3,000 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@3dfaces\\\",\\n    title: \\\"Face NFTs\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@theplanetsoftheuniverse\\\",\\n    title: \\\"The Planets Of The Universe\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n]\\n\\nexport default function Web304() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardContent className=\\\"p-6\\\">\\n          <div className=\\\"mb-6 flex flex-wrap items-start justify-between gap-6\\\">\\n            <div>\\n              <h1 className=\\\"mb-1 text-2xl font-bold\\\">Trending Collections</h1>\\n              <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n                The most sought-after collections across the entire ecosystem.\\n              </p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              <Select defaultValue=\\\"Last 24H\\\">\\n                <SelectTrigger className=\\\"w-max\\\">\\n                  <SelectValue placeholder=\\\"Select Date\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                  <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                  <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Menu className=\\\"h-4 w-4\\\" />\\n              </Button>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Grid3x3 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {DATA.map(({ price, img, name, title, profileImg, desc }, key) => (\\n              <Card key={key} className=\\\"relative overflow-hidden\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute inset-0 h-full w-full bg-gradient-to-t from-black/80 to-black/20\\\" />\\n                <CardContent className=\\\"relative z-10 flex h-[28rem] flex-col justify-between p-6\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"w-fit border-white/30 bg-white/20 text-white backdrop-blur\\\"\\n                  >\\n                    <Cuboid className=\\\"mr-1 h-4 w-4\\\" />\\n                    Collection\\n                  </Badge>\\n                  <div>\\n                    <h3 className=\\\"mb-1 flex items-center gap-2 text-xl font-semibold text-white\\\">\\n                      {title}\\n                      <Badge\\n                        variant=\\\"outline\\\"\\n                        className=\\\"border-blue-400 text-blue-400\\\"\\n                      >\\n                        ✓\\n                      </Badge>\\n                    </h3>\\n                    <p className=\\\"mb-4 text-sm text-gray-300\\\">{desc}</p>\\n                    <div className=\\\"flex items-center justify-between\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Avatar className=\\\"h-8 w-8\\\">\\n                          <AvatarImage src={profileImg} alt={name} />\\n                          <AvatarFallback>{name[1]}</AvatarFallback>\\n                        </Avatar>\\n                        <p className=\\\"text-sm text-white\\\">{name}</p>\\n                      </div>\\n                      <p className=\\\"text-sm font-semibold text-white\\\">\\n                        {price}\\n                      </p>\\n                    </div>\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            ))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/web3-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    tokenId: \\\"#1\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Tina Andrew\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-4.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#2\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michael\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#3\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    ],\\n  },\\n]\\n\\nexport default function Web305() {\\n  const [timeFrame, setTimeFrame] = useState(\\\"month\\\")\\n\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Creators</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"hour\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"hour\\\")}\\n            >\\n              Last 24h\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"week\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"week\\\")}\\n            >\\n              Last week\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"month\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"month\\\")}\\n            >\\n              Last month\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ tokenId, profileImg, name, desc, imgs }, key) => (\\n            <Card key={key} className=\\\"flex flex-col justify-between py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <p className=\\\"font-semibold\\\">{tokenId}</p>\\n                <div className=\\\"mt-4 flex flex-wrap items-start justify-between gap-4\\\">\\n                  <div className=\\\"flex items-start gap-3\\\">\\n                    <Avatar>\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <div>\\n                      <p className=\\\"font-semibold\\\">{name}</p>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                    </div>\\n                  </div>\\n                  <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                    See Collection\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"grid grid-cols-3 gap-4 px-4\\\">\\n                {imgs.map((img, idx) => (\\n                  <img\\n                    key={idx}\\n                    src={img}\\n                    alt={`nft-${idx}`}\\n                    className=\\\"h-full min-h-24 w-full rounded-lg object-cover object-center\\\"\\n                  />\\n                ))}\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function Cruds01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Edit Apparel Item</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Update product information, pricing, and categorization for your\\n            fashion inventory.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"productName\\\">Product Name</Label>\\n            <Input\\n              id=\\\"productName\\\"\\n              name=\\\"productName\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Slim Fit Denim Jacket\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"brand\\\">Designer Brand</Label>\\n            <Input\\n              id=\\\"brand\\\"\\n              name=\\\"brand\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Balenciaga\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"price\\\">Retail Price ($)</Label>\\n            <Input\\n              id=\\\"price\\\"\\n              name=\\\"price\\\"\\n              type=\\\"number\\\"\\n              placeholder=\\\"e.g. 199\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"category\\\">Category</Label>\\n            <Select name=\\\"category\\\">\\n              <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                <SelectValue placeholder=\\\"Select a category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"outerwear\\\">Outerwear</SelectItem>\\n                <SelectItem value=\\\"tops\\\">Tops</SelectItem>\\n                <SelectItem value=\\\"bottoms\\\">Bottoms</SelectItem>\\n                <SelectItem value=\\\"footwear\\\">Footwear</SelectItem>\\n                <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"description\\\">Product Details</Label>\\n            <Textarea\\n              id=\\\"description\\\"\\n              name=\\\"description\\\"\\n              placeholder=\\\"Material, fit, washing instructions...\\\"\\n              rows={4}\\n            />\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n              Save Changes\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Remove Item\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function Cruds02() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">\\n            Update Retail Staff Profile\\n          </h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage employee account credentials and contact information for\\n            retail team members.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"username\\\">Username</Label>\\n            <Input\\n              id=\\\"username\\\"\\n              name=\\\"username\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. elena.moreno\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Work Email</Label>\\n            <Input\\n              id=\\\"email\\\"\\n              name=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"e.g. elena@fashionco.com\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"password\\\">New Password</Label>\\n            <Input id=\\\"password\\\" name=\\\"password\\\" type=\\\"password\\\" />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"confirmPassword\\\">Confirm Password</Label>\\n            <Input\\n              id=\\\"confirmPassword\\\"\\n              name=\\\"confirmPassword\\\"\\n              type=\\\"password\\\"\\n            />\\n          </div>\\n\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Update Profile\\n          </Button>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/cruds-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Upload } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function Cruds03() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-3xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Stylist Account Settings</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Configure your profile, roles, and permissions for your stylist\\n            account.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"avatar\\\">Profile Photo</Label>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"flex h-24 w-24 items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                <Upload className=\\\"text-muted-foreground h-8 w-8\\\" />\\n              </div>\\n              <div className=\\\"flex-1\\\">\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  PNG, JPG, JPEG or GIF (max. 800x400px)\\n                </p>\\n                <Input\\n                  id=\\\"avatar\\\"\\n                  name=\\\"avatar\\\"\\n                  type=\\\"file\\\"\\n                  accept=\\\".png,.jpg,.jpeg,.gif\\\"\\n                  className=\\\"mt-2\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"firstName\\\">First Name</Label>\\n              <Input id=\\\"firstName\\\" name=\\\"firstName\\\" type=\\\"text\\\" />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"lastName\\\">Last Name</Label>\\n              <Input id=\\\"lastName\\\" name=\\\"lastName\\\" type=\\\"text\\\" />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"contactEmail\\\">Contact Email</Label>\\n            <Input id=\\\"contactEmail\\\" name=\\\"contactEmail\\\" type=\\\"email\\\" />\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"userRole\\\">Role</Label>\\n              <Select name=\\\"userRole\\\">\\n                <SelectTrigger id=\\\"userRole\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a role\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"stylist\\\">Stylist</SelectItem>\\n                  <SelectItem value=\\\"store-manager\\\">Store Manager</SelectItem>\\n                  <SelectItem value=\\\"creative-lead\\\">Creative Lead</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"languages\\\">Languages</Label>\\n              <Input\\n                id=\\\"languages\\\"\\n                name=\\\"languages\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. English, Italian\\\"\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"jobTitle\\\">Job Title</Label>\\n              <Input\\n                id=\\\"jobTitle\\\"\\n                name=\\\"jobTitle\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. Fashion Consultant\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"accountType\\\">Account Type</Label>\\n              <Select name=\\\"accountType\\\">\\n                <SelectTrigger id=\\\"accountType\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select account type\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"basic\\\">Basic</SelectItem>\\n                  <SelectItem value=\\\"pro\\\">Pro</SelectItem>\\n                  <SelectItem value=\\\"executive\\\">Executive</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"permissionLevel\\\">Permission Level</Label>\\n              <Select name=\\\"permissionLevel\\\">\\n                <SelectTrigger id=\\\"permissionLevel\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select permission level\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"admin\\\">Admin</SelectItem>\\n                  <SelectItem value=\\\"operational\\\">Operational</SelectItem>\\n                  <SelectItem value=\\\"viewer\\\">Viewer</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"emailStatus\\\">Email Verified</Label>\\n              <Input\\n                id=\\\"emailStatus\\\"\\n                name=\\\"emailStatus\\\"\\n                type=\\\"text\\\"\\n                value=\\\"Verified\\\"\\n                disabled\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\" className=\\\"flex-1\\\">\\n              Upload New Photo\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Delete Account\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers01() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-2 md:!justify-between\\\">\\n          <p className=\\\"text-foreground text-center text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim.\\n          </p>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers02() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 md:grid-cols-2\\\">\\n          <div className=\\\"grid grid-cols-3 justify-between gap-x-6 gap-y-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title}>\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title} className=\\\"mb-1\\\">\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-2 font-semibold\\\">Subscribe</p>\\n            <p className=\\\"text-foreground max-w-sm [text-wrap:_balance]\\\">\\n              Get access to subscriber exclusive deals and be the first who gets\\n              informed about fresh sales.\\n            </p>\\n            <div className=\\\"mt-4 flex w-full max-w-sm items-end gap-2\\\">\\n              <div className=\\\"w-full\\\">\\n                <Label\\n                  htmlFor=\\\"email\\\"\\n                  className=\\\"mb-2 inline-block text-sm font-semibold\\\"\\n                >\\n                  Your Email\\n                </Label>\\n                <Input\\n                  type=\\\"email\\\"\\n                  id=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <Button className=\\\"shrink-0\\\">Subscribe</Button>\\n            </div>\\n            <div className=\\\"mt-3 flex items-center gap-2\\\">\\n              <Checkbox id=\\\"checkbox-link\\\" />\\n              <Label\\n                htmlFor=\\\"checkbox-link\\\"\\n                className=\\\"text-foreground flex gap-1 select-none\\\"\\n              >\\n                I agree with the\\n                <a href=\\\"#\\\" className=\\\"text-primary\\\">\\n                  terms and conditions\\n                </a>\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-10 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Home\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Service\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers03() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"border-surface flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-3 border-t pt-8 text-center md:!justify-between\\\">\\n          <p className=\\\"text-foreground\\\">\\n            Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-6\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n            <Button className=\\\"w-full sm:max-w-fit\\\">Sign in</Button>\\n          </ul>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers04() {\\n  return (\\n    <section className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Card className=\\\"bg-primary border-primary grid justify-center px-6 py-12 text-center shadow-none\\\">\\n          <h2 className=\\\"text-secondary text-2xl font-semibold\\\">\\n            Be the first who see the news\\n          </h2>\\n          <p className=\\\"text-secondary mt-4 max-w-lg [text-wrap:_balance]\\\">\\n            Your company may not be in the software business, but eventually, a\\n            software company will be in your business.\\n          </p>\\n          <div className=\\\"mx-auto mt-10 flex w-full max-w-sm flex-col gap-x-2 gap-y-4 sm:flex-row\\\">\\n            <Input\\n              type=\\\"email\\\"\\n              id=\\\"email\\\"\\n              placeholder=\\\"someone@example.com\\\"\\n              className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n            />\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </Card>\\n        <div className=\\\"mt-16 mb-6 flex flex-col items-center !justify-center gap-x-10 gap-y-3 lg:flex-row lg:!justify-between\\\">\\n          <p className=\\\"font-semibold\\\">Creative Tim</p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground text-sm\\\">\\n          All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers05() {\\n  return (\\n    <footer className=\\\"bg-primary pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 sm:grid-cols-2\\\">\\n          <div className=\\\"row-start-2 grid grid-cols-2 justify-between gap-6 sm:row-auto lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"text-secondary mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-secondary hover:text-secondary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"text-secondary mb-4 flex font-semibold lg:justify-end\\\">\\n              Language & Currency\\n            </p>\\n            <Select>\\n              <SelectTrigger className=\\\"mb-4 border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Language\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"english\\\">English</SelectItem>\\n                <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                <SelectItem value=\\\"hindi\\\">Hindi</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select>\\n              <SelectTrigger className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Currency\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n                <SelectItem value=\\\"euro\\\">Euro</SelectItem>\\n                <SelectItem value=\\\"rupee\\\">Rupee</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 mt-10 flex flex-col justify-between gap-4 border-t border-b pt-6 pb-8 md:flex-row lg:items-end\\\">\\n          <div>\\n            <p className=\\\"text-secondary mb-2 font-semibold\\\">\\n              Subscribe to our newsletters\\n            </p>\\n            <p className=\\\"text-secondary\\\">\\n              The latest news, articles and resources sent to your inbox weekly.\\n            </p>\\n          </div>\\n          <div className=\\\"flex w-full items-end gap-2 md:max-w-sm\\\">\\n            <div className=\\\"w-full\\\">\\n              <Label\\n                htmlFor=\\\"email\\\"\\n                className=\\\"text-secondary mb-2 inline-block text-sm font-semibold\\\"\\n              >\\n                Your Email\\n              </Label>\\n              <Input\\n                type=\\\"email\\\"\\n                id=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n              />\\n            </div>\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              subscribe\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-secondary mt-8\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers06() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-4 md:grid-cols-2\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-foreground my-4\\\">\\n              The next generation of design systems.\\n            </p>\\n            <div className=\\\"flex gap-1\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-2 justify-between gap-6 lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-20 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nconst COUNTRIES = [\\n  { name: \\\"United States\\\", flag: \\\"🇺🇸\\\" },\\n  { name: \\\"United Kingdom\\\", flag: \\\"🇬🇧\\\" },\\n  { name: \\\"Canada\\\", flag: \\\"🇨🇦\\\" },\\n  { name: \\\"Germany\\\", flag: \\\"🇩🇪\\\" },\\n  { name: \\\"France\\\", flag: \\\"🇫🇷\\\" },\\n  { name: \\\"Japan\\\", flag: \\\"🇯🇵\\\" },\\n  { name: \\\"Australia\\\", flag: \\\"🇦🇺\\\" },\\n  { name: \\\"Spain\\\", flag: \\\"🇪🇸\\\" },\\n]\\n\\nexport default function Footers07() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-start justify-center gap-4 md:justify-between\\\">\\n          <div className=\\\"grid gap-3\\\">\\n            <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-foreground text-center text-sm font-medium md:text-left\\\">\\n              All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n            </p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n            <Select>\\n              <SelectTrigger className=\\\"w-64\\\">\\n                <SelectValue placeholder=\\\"Select Country\\\" />\\n              </SelectTrigger>\\n              <SelectContent className=\\\"max-h-72\\\">\\n                {COUNTRIES.map(({ name, flag }) => (\\n                  <SelectItem key={name} value={name}>\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <span className=\\\"text-lg\\\">{flag}</span>\\n                      <span className=\\\"text-sm\\\">{name}</span>\\n                    </div>\\n                  </SelectItem>\\n                ))}\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers08() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-center justify-between gap-6 md:flex-row\\\">\\n          <p className=\\\"text-muted-foreground text-center text-sm md:text-left\\\">\\n            &copy; {YEAR} Creative Tim. All rights reserved.\\n          </p>\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <Badge variant=\\\"secondary\\\" className=\\\"px-3 py-1\\\">\\n              v3.0.0\\n            </Badge>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" aria-label=\\\"Settings\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers09() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-start justify-between gap-8 md:flex-row md:items-center\\\">\\n          <div className=\\\"space-y-3\\\">\\n            <p className=\\\"text-lg font-semibold\\\">\\n              New Features available! Upgrade to v3.0.0\\n            </p>\\n            <Button size=\\\"default\\\" className=\\\"w-full md:w-auto\\\">\\n              Upgrade Now\\n            </Button>\\n          </div>\\n          <div className=\\\"flex flex-col gap-4 md:items-end\\\">\\n            <ul className=\\\"flex flex-wrap items-center gap-x-8 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              &copy; {YEAR} Creative Tim. All rights reserved.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers10() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"mb-10 flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers11() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 grid grid-cols-1 items-start justify-between gap-8 md:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-muted-foreground mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n          </div>\\n          <div className=\\\"grid grid-cols-3 gap-x-8 gap-y-6 md:ml-auto\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-3\\\">\\n                <p className=\\\"mb-3 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"border-border flex flex-col items-start justify-between gap-6 border-t pt-8 md:flex-row md:items-center\\\">\\n          <p className=\\\"text-muted-foreground max-w-2xl text-sm\\\">\\n            The price of fame is you can&apos;t get off the stage.\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm whitespace-nowrap\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n  { title: \\\"Terms & Conditions\\\", href: \\\"#\\\" },\\n  { title: \\\"FAQ\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers12() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-6 lg:!justify-between\\\">\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a\\n                  href={href}\\n                  className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                >\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <p className=\\\"text-foreground text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers13() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <div className=\\\"my-8 flex gap-1\\\">\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n              <Twitter className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n              <Youtube className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n              <Instagram className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n              <Github className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n        </div>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers14() {\\n  return (\\n    <footer className=\\\"bg-primary pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-8\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold text-white\\\">Creative Tim</h6>\\n            <p className=\\\"text-secondary mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <ul className=\\\"mt-12 flex flex-wrap items-center gap-x-8 gap-y-3\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-secondary transition-colors hover:text-white\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-6 text-lg font-semibold text-white\\\">Get the App</p>\\n            <div className=\\\"grid gap-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  xmlSpace=\\\"preserve\\\"\\n                  viewBox=\\\"0 0 16 16\\\"\\n                  className=\\\"h-14 w-14 shrink-0\\\"\\n                >\\n                  <path\\n                    fill=\\\"#2196F3\\\"\\n                    d=\\\"M8.32 7.68.58 15.42c-.37-.35-.57-.83-.57-1.35V1.93C.01 1.4.22.92.6.56l7.72 7.12z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#FFC107\\\"\\n                    d=\\\"M15.01 8c0 .7-.38 1.32-1.01 1.67l-2.2 1.22-2.73-2.52-.75-.69 2.89-2.89L14 6.33c.63.35 1.01.97 1.01 1.67z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#4CAF50\\\"\\n                    d=\\\"M8.32 7.68.6.56C.7.46.83.37.96.29 1.59-.09 2.35-.1 3 .26l8.21 4.53-2.89 2.89z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#F44336\\\"\\n                    d=\\\"M11.8 10.89 3 15.74c-.31.18-.66.26-1 .26-.36 0-.72-.09-1.04-.29a1.82 1.82 0 0 1-.38-.29l7.74-7.74.75.69 2.73 2.52z\\\"\\n                  />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    GET IT ON\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    Google Play\\n                  </span>\\n                </div>\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  enableBackground=\\\"new 0 0 22.185 27\\\"\\n                  viewBox=\\\"0 0 22.185 27\\\"\\n                  className=\\\"h-14 w-14 shrink-0 fill-white\\\"\\n                >\\n                  <path d=\\\"M18.436 14.271c0-2.225 1.216-4.166 3.02-5.194-.942-1.156-2.359-2.192-3.921-2.496-2.13-.415-3.345.276-4.131.553-.786.277-1.83.526-1.83.526s-1.043-.249-1.83-.526C8.959 6.857 7.744 6.165 5.614 6.58s-3.99 2.192-4.746 3.776c-1.458 3.057-.858 6.903.172 9.669 1.029 2.767 3.75 6.633 5.86 6.944 1.501.221 2.43-.816 4.674-1.079 2.244.263 3.173 1.3 4.674 1.079 2.11-.311 4.831-4.177 5.86-6.944.025-.068.051-.138.076-.208C19.987 18.935 18.436 16.784 18.436 14.271zM11.041 6.075c0 0 2.087.277 3.982-1.875s1.356-4.188 1.356-4.188-2.087-.277-3.982 1.875S11.041 6.075 11.041 6.075z\\\" />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    Download on the\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    App Store\\n                  </span>\\n                </div>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 flex flex-col items-center justify-between gap-6 border-t pt-8 md:flex-row\\\">\\n          <p className=\\\"text-secondary order-2 md:order-1\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n          <div className=\\\"order-1 flex gap-1 md:order-2\\\">\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/footers-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers15() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-4 flex flex-col justify-between gap-4 md:flex-row\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <ul className=\\\"mt-4 flex flex-wrap items-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-medium\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"md:text-right\\\">\\n            <p className=\\\"font-semibold\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <p className=\\\"mb-4 font-semibold\\\">\\n              The price of fame is you can&apos;t get off the stage.\\n            </p>\\n            <div className=\\\"flex gap-1 md:justify-end\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">What Clients Say</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-lg\\\">\\n            We&apos;re constantly trying to express ourselves and actualize our\\n            dreams. If you have the opportunity to play.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-4 h-20 w-20\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { BadgeCheck, Twitter } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardFooter, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    username: \\\"@jessicadevis\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 🎉\\\",\\n    date: \\\"Jan 17, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    username: \\\"@lucianeurel\\\",\\n    quote:\\n      \\\"It's like having a superpower in your toolkit. The ability to craft custom designs quickly and efficiently with simple classes is unparalleled.\\\",\\n    date: \\\"Jan 18, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    username: \\\"@marcelglock\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 😍\\\",\\n    date: \\\"Jan 19, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Linde Michele\\\",\\n    username: \\\"@lindemichele\\\",\\n    quote:\\n      \\\"With its clear and concise classes, I can easily communicate design intentions to my colleagues. It's a must-have tool for any web developer. 👨🏻‍💻\\\",\\n    date: \\\"Jan 20, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-3.jpg\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    username: \\\"@maryjoshiash\\\",\\n    quote:\\n      \\\"I've tried several CSS frameworks, but this is on a whole different level. It strikes the perfect balance between flexibility and design.\\\",\\n    date: \\\"Jan 21, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/woman-profile-3.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    username: \\\"@mishastam\\\",\\n    quote:\\n      \\\"Active community support make it easy to get started. It's the ideal framework for achieving design excellence in web applications.\\\",\\n    date: \\\"Jan 22, 2024\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16\\\">\\n          <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase\\\">\\n            Testimonials\\n          </p>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Think about us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, username, quote, date }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"flex flex-row items-center gap-4 px-6\\\">\\n                <Avatar>\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex-1\\\">\\n                  <div className=\\\"flex items-center gap-1.5\\\">\\n                    <p className=\\\"font-semibold\\\">{name}</p>\\n                    <BadgeCheck className=\\\"h-4 w-4 text-blue-500\\\" />\\n                  </div>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{username}</p>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <blockquote className=\\\"text-muted-foreground\\\">\\n                  {quote}\\n                </blockquote>\\n              </CardContent>\\n              <CardFooter className=\\\"flex items-center justify-between gap-4 px-6\\\">\\n                <a\\n                  href=\\\"#\\\"\\n                  className=\\\"flex items-center gap-1.5 text-sm font-semibold hover:underline\\\"\\n                >\\n                  See on <Twitter className=\\\"h-3.5 w-3.5\\\" />\\n                </a>\\n                <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n              </CardFooter>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst testimonials = [\\n  {\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"The attention to detail and user experience is exceptional. This has transformed how we approach design decisions in our team.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"Outstanding component library that saves us countless hours. The quality and customization options are exactly what we needed.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production builds. The documentation is clear and the components are production-ready.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Loved by Developers & Designers\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of professionals who trust our components for their\\n            projects\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mb-12 flex flex-wrap items-center justify-center gap-8 text-center md:gap-12\\\">\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">1,679,700+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Active Users</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">4.9/5</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Average Rating</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">50K+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Companies</p>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {testimonials.map((testimonial, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"px-6\\\">\\n                <div className=\\\"mb-4 flex items-center gap-1\\\">\\n                  {Array.from({ length: testimonial.rating }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                    />\\n                  ))}\\n                </div>\\n\\n                <Quote className=\\\"text-muted-foreground/30 mb-3 h-8 w-8\\\" />\\n\\n                <blockquote className=\\\"text-foreground/90 mb-6 text-sm leading-relaxed\\\">\\n                  {testimonial.quote}\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <Avatar className=\\\"border-border h-12 w-12 border-2\\\">\\n                    <AvatarImage\\n                      src={testimonial.image}\\n                      alt={testimonial.name}\\n                    />\\n                    <AvatarFallback>\\n                      {testimonial.name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div>\\n                    <p className=\\\"text-foreground font-semibold\\\">\\n                      {testimonial.name}\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {testimonial.role}\\n                    </p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Our Users Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Trusted by thousands of developers and designers worldwide\\n          </p>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-24 w-24 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-background absolute -right-2 -bottom-2 rounded-full p-2 shadow-md\\\">\\n                    <Quote className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-xl font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-foreground/80 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The component library has transformed our design process. The quality and attention to detail in every component is exceptional.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding documentation and TypeScript support. These components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components with excellent customization. The design system is cohesive and well-thought-out.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"bg-black py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white md:text-4xl\\\">\\n            Trusted by Professionals\\n          </h2>\\n          <p className=\\\"mx-auto max-w-2xl text-lg text-white/70\\\">\\n            Hear what developers and designers say about our component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"border-white/10 bg-white/5 backdrop-blur-sm transition-all hover:border-white/20 hover:bg-white/10\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"h-20 w-20 border-4 border-white/20\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback className=\\\"bg-white/10 text-white\\\">\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold text-white\\\">\\n                  {name}\\n                </h3>\\n                <p className=\\\"mb-6 text-sm text-white/60\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-white/20 text-white/20\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-sm leading-relaxed text-white/80\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-12 items-center border-0 bg-transparent shadow-none\\\">\\n          <div className=\\\"col-span-full md:col-span-4\\\">\\n            <img\\n              src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover lg:max-h-[30rem] lg:max-w-full\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"col-span-full px-0 py-6 md:col-span-8 md:px-8 lg:px-12\\\">\\n            <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase lg:mb-4\\\">\\n              Client Success Story\\n            </p>\\n            <h2 className=\\\"mb-6 text-3xl font-bold\\\">\\n              Transforming Our Design System\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-8 text-lg font-normal lg:mb-12\\\">\\n              &quot;This component library has revolutionized how we build\\n              products at scale. The quality, consistency, and developer\\n              experience are exceptional. We've reduced our\\n              design-to-development time by 60% and our entire team loves\\n              working with these components.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <Avatar className=\\\"h-12 w-12\\\">\\n                <AvatarImage\\n                  alt=\\\"Alexandra Martinez\\\"\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                />\\n                <AvatarFallback>AM</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-lg font-semibold\\\">Alexandra Martinez</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Head of Design, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [selectedTestimonial, setSelectedTestimonial] = React.useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-12 items-center gap-y-8 px-4\\\">\\n        <div className=\\\"col-span-full row-start-2 md:col-span-8 md:row-start-auto\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">What Developers Say</h2>\\n          <p className=\\\"text-muted-foreground my-4 max-w-lg\\\">\\n            {TESTIMONIALS[selectedTestimonial].quote}\\n          </p>\\n          <div>\\n            <p className=\\\"font-semibold\\\">\\n              {TESTIMONIALS[selectedTestimonial].name}\\n            </p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              {TESTIMONIALS[selectedTestimonial].role}\\n            </p>\\n          </div>\\n          <div className=\\\"divide-border mt-8 flex items-center divide-x\\\">\\n            {TESTIMONIALS.map((testimonial, index) => (\\n              <div className={index !== 0 ? \\\"px-4\\\" : \\\"pr-4\\\"} key={index}>\\n                <Avatar\\n                  role=\\\"button\\\"\\n                  className=\\\"h-12 w-12 cursor-pointer rounded-lg\\\"\\n                  onClick={() => setSelectedTestimonial(index)}\\n                >\\n                  <AvatarImage src={testimonial.image} />\\n                  <AvatarFallback>\\n                    {testimonial.name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"col-span-full md:col-span-4\\\">\\n          <img\\n            src={TESTIMONIALS[selectedTestimonial].image}\\n            alt=\\\"user profile\\\"\\n            className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover object-center\\\"\\n          />\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"These components have transformed our design workflow. The quality and attention to detail are exceptional, making it easy to build beautiful interfaces quickly.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding component library with excellent TypeScript support. The documentation is clear and the components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components that save countless hours. The customization options are fantastic and the design system is incredibly cohesive. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Developers Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of developers building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-0 bg-transparent shadow-none\\\"\\n            >\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"border-border h-24 w-24 border-4 transition-transform group-hover:scale-105\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-2 -bottom-2 rounded-full p-2 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-4 md:py-6\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-1 items-center gap-4 border-0 bg-transparent shadow-none md:grid-cols-12 md:gap-6\\\">\\n          <div className=\\\"md:col-span-4\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-40 w-full rounded-lg object-cover md:h-56\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"px-0 py-0 md:col-span-8 md:px-4 lg:px-8\\\">\\n            <p className=\\\"text-primary mb-1.5 text-xs font-semibold md:text-sm\\\">\\n              Customer Story\\n            </p>\\n            <h2 className=\\\"mb-2 text-lg font-bold md:text-xl lg:text-2xl\\\">\\n              Revolutionary component library for modern design\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-3 text-sm leading-relaxed font-normal md:text-base\\\">\\n              &quot;This component library has transformed how our design team\\n              works. The attention to detail, seamless integration, and\\n              production-ready components have accelerated our development\\n              workflow by 10x.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-2.5\\\">\\n              <Avatar className=\\\"h-9 w-9 md:h-10 md:w-10\\\">\\n                <AvatarImage\\n                  alt=\\\"spotify\\\"\\n                  src=\\\"https://v3.material-tailwind.com/icon/spotify.svg\\\"\\n                />\\n                <AvatarFallback>SP</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-sm font-semibold md:text-base\\\">\\n                  Sarah Johnson\\n                </p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">\\n                  Design Director, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowRight, Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Alexandra Martinez\\\",\\n    role: \\\"Head of Design\\\",\\n    quote:\\n      \\\"This component library has revolutionized our design system. The quality and consistency have dramatically improved our product development workflow.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"David Kim\\\",\\n    role: \\\"Engineering Lead\\\",\\n    quote:\\n      \\\"Outstanding components with excellent TypeScript support. The documentation is thorough and implementation is seamless across our platforms.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"Marcus Johnson\\\",\\n    role: \\\"Product Director\\\",\\n    quote:\\n      \\\"A game-changer for our development team. These production-ready components have reduced our time-to-market by 50% while maintaining exceptional quality.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Trusted by Industry Leaders\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            See how leading companies are building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, quote, role }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <img\\n                  src={image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"mx-auto mb-6 h-20\\\"\\n                />\\n                <blockquote className=\\\"text-muted-foreground mx-auto mb-6 max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n                <div className=\\\"mb-6\\\">\\n                  <p className=\\\"font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{role}</p>\\n                </div>\\n                <Button variant=\\\"link\\\" className=\\\"group\\\">\\n                  Read More\\n                  <ArrowRight className=\\\"ml-2 h-4 w-4 transition-transform group-hover:translate-x-1\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 27 February\\\",\\n    quote:\\n      \\\"Success is not final, failure is not fatal: it is the courage to continue that counts.\\\",\\n    rating: 4,\\n    isHighlighted: false,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 28 February\\\",\\n    quote:\\n      \\\"If you have the opportunity to play this game of life you need to appreciate every moment.\\\",\\n    rating: 4,\\n    isHighlighted: true,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mathew Glock\\\",\\n    date: \\\"Posted on 29 February\\\",\\n    quote:\\n      \\\"Artist is a term applied to a person who engages in an activity deemed to be an art.\\\",\\n    rating: 5,\\n    isHighlighted: false,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(\\n            ({ name, image, date, quote, rating, isHighlighted }, key) => (\\n              <Card\\n                key={key}\\n                className={\\n                  isHighlighted\\n                    ? \\\"bg-primary text-primary-foreground\\\"\\n                    : \\\"bg-transparent\\\"\\n                }\\n              >\\n                <CardContent className=\\\"px-6\\\">\\n                  <Avatar className=\\\"mb-4 h-16 w-16 rounded-lg\\\">\\n                    <AvatarImage src={image} alt={`${name} image`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <p\\n                    className={`text-lg font-semibold ${isHighlighted ? \\\"text-primary-foreground\\\" : \\\"\\\"}`}\\n                  >\\n                    {name}\\n                  </p>\\n                  <p\\n                    className={`text-sm ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    {date}\\n                  </p>\\n                  <blockquote\\n                    className={`my-4 max-w-lg ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    &quot;{quote}&quot;\\n                  </blockquote>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {Array.from({ length: 5 }).map((_, i) => (\\n                      <Star\\n                        key={i}\\n                        className={`h-5 w-5 ${\\n                          i < rating\\n                            ? \\\"fill-yellow-500 text-yellow-500\\\"\\n                            : isHighlighted\\n                              ? \\\"fill-white/30 text-white/30\\\"\\n                              : \\\"fill-gray-300 text-gray-300\\\"\\n                        }`}\\n                      />\\n                    ))}\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            )\\n          )}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-12/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent, CardFooter } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            The heartfelt testimonials of our community\\n          </h2>\\n          <p className=\\\"text-muted-foreground text-lg\\\">\\n            From life-enhancing gadgets to unparalleled customer support, and\\n            transformative learning opportunities.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;The team went above and beyond to ensure my issue was\\n                resolved quickly and efficiently. Truly outstanding!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Jessica Devis</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Full Stack Developer @Netflix\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/netflix.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;It have broadened my horizons and helped me advance my\\n                career. The community is incredibly supportive.&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Graphic Designer, @Coinbase\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-75 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"col-span-full grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium\\\">\\n                &quot;Its intuitive design and powerful features make it\\n                indispensable. I can&apos;t imagine going back to life before\\n                it!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-center gap-4 px-6 pb-6 text-center\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Emma Roberts</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Chief Executive @Spotify\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-50 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-13/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"rounded-xl bg-black text-white\\\">\\n          <CardContent className=\\\"grid w-full grid-cols-1 items-center gap-8 p-10 md:grid-cols-12\\\">\\n            <div className=\\\"col-span-full text-center md:col-span-8 md:pl-4 md:text-left\\\">\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"spotify logo\\\"\\n                className=\\\"mr-auto mb-2 ml-auto w-32 md:mr-0 md:-ml-3\\\"\\n              />\\n              <blockquote className=\\\"mb-12 text-2xl !leading-snug\\\">\\n                &quot;We&apos;re not always in the position that we want to be\\n                at. We&apos;re constantly growing. We&apos;re constantly making\\n                mistakes. We&apos;re constantly trying to express ourselves and\\n                actualize our dreams. &quot;\\n              </blockquote>\\n              <div>\\n                <p className=\\\"mb-1 text-xl font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-white/80\\\">Chief Executive, Spotify</p>\\n              </div>\\n            </div>\\n            <div className=\\\"col-span-full grid justify-items-center md:col-span-4 md:justify-items-end\\\">\\n              <Avatar className=\\\"h-24 w-24 md:h-64 md:w-64\\\">\\n                <AvatarImage\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                  alt=\\\"user profile\\\"\\n                />\\n                <AvatarFallback>MG</AvatarFallback>\\n              </Avatar>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-14/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    role: \\\"CEO @ Marketing Digital LTD\\\",\\n    quote:\\n      \\\"The connections you make at Web Summit are unparalleled, we met users all over the world.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    role: \\\"Marketing @ Apple INC\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"CFO @ Apple INC\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key}>\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-6 h-24 w-24\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-15/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Plus, Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    role: \\\"CEO Discord\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"CFO Slack\\\",\\n    quote:\\n      \\\"Do not go where the path may lead, go instead where there is no path and leave a trail. You will succeed on it.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    role: \\\"COO Dribbble\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-4 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-20 w-20 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n\\n                <blockquote className=\\\"text-muted-foreground mb-4 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n          <Card className=\\\"group border-border/50 hover:border-border hover:bg-muted/50 cursor-pointer border-2 border-dashed transition-all\\\">\\n            <CardContent className=\\\"grid h-full min-h-[280px] w-full place-items-center p-6\\\">\\n              <div className=\\\"text-center\\\">\\n                <div className=\\\"bg-muted group-hover:bg-muted/80 mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-full transition-colors\\\">\\n                  <Plus className=\\\"text-muted-foreground h-8 w-8\\\" />\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                  Add Testimonial\\n                </p>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-16/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-16/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"Social Media Executive, Netflix\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"Visionary, Coinbase\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"Chief Executive, Spotify\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-black py-16\\\">\\n      <div className=\\\"relative container mx-auto px-4\\\">\\n        <div className=\\\"pb-16\\\">\\n          <img\\n            src={SLIDES[currentSlide].companyLogo}\\n            alt=\\\"company logo\\\"\\n            className=\\\"mx-auto mb-8 h-24\\\"\\n          />\\n          <blockquote className=\\\"mx-auto mb-16 max-w-2xl text-center text-xl font-medium text-white\\\">\\n            &quot;{SLIDES[currentSlide].quote}&quot;\\n          </blockquote>\\n          <p className=\\\"text-center font-medium text-white\\\">\\n            {SLIDES[currentSlide].name}\\n          </p>\\n          <p className=\\\"text-center text-sm text-white/80\\\">\\n            {SLIDES[currentSlide].role}\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mt-8 flex items-center justify-center gap-2\\\">\\n          {SLIDES.map((slide, index) => (\\n            <button\\n              key={index}\\n              onClick={() => setCurrentSlide(index)}\\n              className={`h-8 w-8 rounded object-cover object-center transition-opacity ${\\n                index === currentSlide ? \\\"opacity-100\\\" : \\\"opacity-50\\\"\\n              }`}\\n            >\\n              <img\\n                src={slide.image}\\n                alt={slide.name}\\n                className=\\\"h-full w-full rounded object-cover\\\"\\n              />\\n            </button>\\n          ))}\\n        </div>\\n\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={prevSlide}\\n          className=\\\"!absolute top-1/2 left-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronLeft className=\\\"h-7 w-7\\\" />\\n        </Button>\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={nextSlide}\\n          className=\\\"!absolute top-1/2 right-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronRight className=\\\"h-7 w-7\\\" />\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/testimonials-17/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-17/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Quote } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Louis Miriam\\\",\\n    role: \\\"COO @ Netflix\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"CEO @ Coinbase\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"relative overflow-hidden rounded-2xl bg-[url('https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070')] bg-cover bg-center p-6\\\">\\n          <span className=\\\"absolute inset-0 h-full w-full bg-gradient-to-br from-black/80 to-black/60 backdrop-blur-sm\\\" />\\n\\n          <CardContent className=\\\"relative grid w-full grid-cols-1 items-center gap-8 px-6 py-12 md:grid-cols-12 md:px-12 md:py-16\\\">\\n            <div className=\\\"col-span-full md:col-span-8\\\">\\n              <Quote className=\\\"mb-6 h-12 w-12 text-white/30\\\" />\\n              <blockquote className=\\\"mb-8 text-xl leading-relaxed font-medium text-white md:text-2xl\\\">\\n                &quot;{SLIDES[currentSlide].quote}&quot;\\n              </blockquote>\\n              <div className=\\\"flex flex-col gap-2 md:flex-row md:items-center md:gap-3\\\">\\n                <p className=\\\"text-lg font-semibold text-white\\\">\\n                  {SLIDES[currentSlide].name}\\n                </p>\\n                <span className=\\\"hidden text-white/50 md:inline\\\">•</span>\\n                <p className=\\\"text-sm text-white/70\\\">\\n                  {SLIDES[currentSlide].role}\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"col-span-full flex items-center justify-center md:col-span-4\\\">\\n              <div className=\\\"rounded-xl bg-white/10 p-8 backdrop-blur-sm\\\">\\n                <img\\n                  src={SLIDES[currentSlide].image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"h-16 md:h-20\\\"\\n                />\\n              </div>\\n            </div>\\n          </CardContent>\\n\\n          <div className=\\\"absolute bottom-8 left-1/2 flex -translate-x-1/2 items-center gap-3\\\">\\n            {SLIDES.map((_, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setCurrentSlide(index)}\\n                aria-label={`Go to slide ${index + 1}`}\\n                className={`h-2 rounded-full transition-all ${\\n                  index === currentSlide\\n                    ? \\\"w-8 bg-white\\\"\\n                    : \\\"w-2 bg-white/50 hover:bg-white/75\\\"\\n                }`}\\n              />\\n            ))}\\n          </div>\\n\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={prevSlide}\\n            aria-label=\\\"Previous testimonial\\\"\\n            className=\\\"!absolute top-1/2 left-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronLeft className=\\\"h-8 w-8\\\" />\\n          </Button>\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={nextSlide}\\n            aria-label=\\\"Next testimonial\\\"\\n            className=\\\"!absolute top-1/2 right-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronRight className=\\\"h-8 w-8\\\" />\\n          </Button>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TriangleAlert, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <TriangleAlert className=\\\"text-destructive mb-6 h-14 w-14\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-1 text-xl\\\">\\n                  Reset Settings\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 max-w-xl text-sm\\\">\\n                Are you sure you want to reset all settings to their default\\n                values? This action cannot be undone.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"reset\\\" className=\\\"text-sm\\\">\\n                Please type{\\\" \\\"}\\n                <span className=\\\"text-foreground font-semibold\\\">\\n                  &quot;Reset settings&quot;\\n                </span>{\\\" \\\"}\\n                to confirm.\\n              </Label>\\n              <div className=\\\"flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n                <Input\\n                  id=\\\"reset\\\"\\n                  placeholder=\\\"Reset settings\\\"\\n                  className=\\\"flex-1\\\"\\n                />\\n                <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n                  I understand, reset settings\\n                </Button>\\n              </div>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-02/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst NOTIFICATION = [\\\"Email\\\", \\\"SMS\\\", \\\"Push Notification\\\"]\\nconst TOOLS = [\\\"React\\\", \\\"Material Tailwind\\\", \\\"TailwindCSS\\\", \\\"Next.js\\\"]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Edit Profile</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Update your profile information below.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"font-semibold\\\">\\n                  My Name\\n                </Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Emma Roberts\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"profession\\\" className=\\\"font-semibold\\\">\\n                  I&apos;m\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"profession\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Profession\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                    <SelectItem value=\\\"frontend\\\">Frontend Developer</SelectItem>\\n                    <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                    <SelectItem value=\\\"fullstack\\\">\\n                      Fullstack Developer\\n                    </SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2 border-y py-6\\\">\\n              <p className=\\\"font-semibold\\\">\\n                Interested in the following technologies\\n              </p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose the frameworks you work on\\n              </p>\\n              <div className=\\\"mt-4 flex flex-wrap items-center gap-6\\\">\\n                {TOOLS.map((tool) => (\\n                  <div key={tool} className=\\\"flex items-center gap-2\\\">\\n                    <Checkbox id={tool} />\\n                    <Label\\n                      htmlFor={tool}\\n                      className=\\\"text-muted-foreground cursor-pointer text-sm\\\"\\n                    >\\n                      {tool}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <p className=\\\"font-semibold\\\">Notification preferences</p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Select where you want to be notified\\n              </p>\\n              <RadioGroup className=\\\"mt-4 flex items-center gap-6\\\">\\n                {NOTIFICATION.map((notify) => (\\n                  <div key={notify} className=\\\"flex items-center gap-2\\\">\\n                    <RadioGroupItem value={notify} id={notify} />\\n                    <Label\\n                      htmlFor={notify}\\n                      className=\\\"text-muted-foreground text-sm\\\"\\n                    >\\n                      {notify}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </RadioGroup>\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Profile</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-03/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Pencil, X } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\ninterface UserProps {\\n  name: string\\n  img: string\\n  email: string\\n}\\n\\nfunction User({ name, img, email }: UserProps) {\\n  const [selected, setSelected] = React.useState(\\\"Can View\\\")\\n\\n  return (\\n    <div className=\\\"flex items-center justify-between gap-4\\\">\\n      <div className=\\\"flex items-center gap-4\\\">\\n        <Avatar>\\n          <AvatarImage src={img} alt={name} />\\n          <AvatarFallback>{name.charAt(0)}</AvatarFallback>\\n        </Avatar>\\n        <div className=\\\"space-y-0.5\\\">\\n          <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n          <p className=\\\"text-muted-foreground text-sm\\\">{email}</p>\\n        </div>\\n      </div>\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\" className=\\\"group\\\">\\n            <span className=\\\"hidden items-center gap-1 sm:flex\\\">\\n              {selected}{\\\" \\\"}\\n              <ChevronDown className=\\\"h-4 w-4 transition-transform group-data-[state=open]:rotate-180\\\" />\\n            </span>\\n            <Pencil className=\\\"block h-4 w-4 sm:hidden\\\" />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\">\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can View\\\")}>\\n            Can View\\n          </DropdownMenuItem>\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can Edit\\\")}>\\n            Can Edit\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Share with New Members\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground max-w-xl text-sm\\\">\\n              Welcome new members to your team! Use this modal to seamlessly add\\n              individuals to your dashboard, enabling collaboration and\\n              enhancing productivity.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"my-6 flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n            <Input type=\\\"email\\\" placeholder=\\\"Email, comma separated\\\" />\\n            <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n              Invite\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"w-full shrink-0 sm:w-auto\\\"\\n            >\\n              Copy Link\\n            </Button>\\n          </form>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=1\\\"\\n              name=\\\"Emma Roberts\\\"\\n              email=\\\"emma@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=2\\\"\\n              name=\\\"John Smith\\\"\\n              email=\\\"john@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=3\\\"\\n              name=\\\"Sarah Johnson\\\"\\n              email=\\\"sarah@mail.com\\\"\\n            />\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-04/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"max-h-[90vh] overflow-y-auto sm:max-w-[700px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Update Product Modal\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Edit product features and save it.\\n            </p>\\n          </DialogHeader>\\n\\n          <div className=\\\"my-6 grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3\\\">\\n            {[...new Array(3)].map((_, i) => (\\n              <div\\n                key={i}\\n                className=\\\"bg-muted relative h-44 w-full overflow-hidden rounded-md\\\"\\n              >\\n                <img\\n                  src={`https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&h=400&fit=crop&crop=center&q=80`}\\n                  alt={`Product ${i + 1}`}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant=\\\"ghost\\\"\\n                  className=\\\"!absolute right-2 bottom-2\\\"\\n                >\\n                  <Trash className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <form className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"productName\\\" className=\\\"font-semibold\\\">\\n                  Product Name\\n                </Label>\\n                <Input id=\\\"productName\\\" placeholder=\\\"Laptop\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"category\\\" className=\\\"font-semibold\\\">\\n                  Category\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Category\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"electronics\\\">Electronics</SelectItem>\\n                    <SelectItem value=\\\"clothing\\\">Clothing</SelectItem>\\n                    <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"price\\\" className=\\\"font-semibold\\\">\\n                  Price\\n                </Label>\\n                <Input id=\\\"price\\\" placeholder=\\\"1000\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"brand\\\" className=\\\"font-semibold\\\">\\n                  Brand\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"brand\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Brand\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                    <SelectItem value=\\\"samsung\\\">Samsung</SelectItem>\\n                    <SelectItem value=\\\"microsoft\\\">Microsoft</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"description\\\" className=\\\"font-semibold\\\">\\n                Description\\n              </Label>\\n              <Textarea\\n                id=\\\"description\\\"\\n                placeholder=\\\"Write something about your product.\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"tags\\\" className=\\\"font-semibold\\\">\\n                Tags\\n              </Label>\\n              <Input\\n                id=\\\"tags\\\"\\n                placeholder=\\\"Add up to 10 tags, separated by commas (,)\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Product</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-05/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CloudUpload, Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nconst IMAGES = [\\n  {\\n    name: \\\"cover-1.jpg\\\",\\n    size: \\\"140 KB\\\",\\n  },\\n  {\\n    name: \\\"cover-2.jpg\\\",\\n    size: \\\"288 KB\\\",\\n  },\\n]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Upload Files</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Easily upload files to your account with just a few clicks.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <Card className=\\\"border-2 border-dashed\\\">\\n              <CardContent className=\\\"grid min-h-64 place-items-center p-6\\\">\\n                <label htmlFor=\\\"upload\\\" className=\\\"cursor-pointer\\\">\\n                  <input type=\\\"file\\\" className=\\\"hidden\\\" id=\\\"upload\\\" />\\n                  <div className=\\\"mx-auto max-w-md text-center\\\">\\n                    <CloudUpload className=\\\"text-muted-foreground mx-auto mb-6 h-12 w-12\\\" />\\n                    <p className=\\\"mb-2 font-semibold\\\">\\n                      Drag and Drop or{\\\" \\\"}\\n                      <span className=\\\"underline\\\">Choose a Local File</span>\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Supported formats: .png, .jpg, .svg\\n                    </p>\\n                  </div>\\n                </label>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              {IMAGES.map(({ name, size }) => (\\n                <Card key={name}>\\n                  <CardContent className=\\\"flex items-start justify-between p-3\\\">\\n                    <div className=\\\"flex items-center gap-4\\\">\\n                      <img\\n                        src=\\\"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=100&h=100&fit=crop&crop=center&q=80\\\"\\n                        alt={name}\\n                        className=\\\"h-12 w-12 rounded object-cover object-center\\\"\\n                      />\\n                      <div className=\\\"space-y-1\\\">\\n                        <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{size}</p>\\n                      </div>\\n                    </div>\\n                    <Button\\n                      type=\\\"button\\\"\\n                      variant=\\\"ghost\\\"\\n                      size=\\\"sm\\\"\\n                      className=\\\"shrink-0\\\"\\n                    >\\n                      <Trash className=\\\"h-4 w-4\\\" />\\n                    </Button>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Upload</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-06/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Unlock, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <Unlock className=\\\"text-primary mb-6 h-12 w-12\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-2 text-xl\\\">\\n                  Publish Capsule Collection\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                This action will expose your private capsule collection to\\n                public viewing across all fashion storefronts.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <Card className=\\\"my-6\\\">\\n            <CardContent className=\\\"space-y-3 p-4\\\">\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">\\n                  Collection\\n                </span>\\n                <span className=\\\"text-sm font-medium\\\">fall-winter-vault</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Views</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Likes</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Make Collection Public</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-07/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Visibility Settings\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            This collection is currently restricted to internal collaborators.\\n            You can modify who can view or access it from this setting.\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-6\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Change Visibility</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-08/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Disable Collection Lock Rules\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Removing edit rules will allow unrestricted changes to your seasonal\\n            campaign folders and product groups.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertTriangle className=\\\"text-destructive h-4 w-4\\\" />\\n                Access Restrictions Will Be Removed\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Disabling these rules unlocks direct edits to sensitive assets\\n                and might affect internal syncs.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This will impact:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Designer review checkpoints</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Version freeze policies</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <p className=\\\"text-muted-foreground mb-6 text-xs\\\">\\n            Note: 0 edit lock rules currently active\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Disable Edit Locks</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-09/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Transfer Showroom Ownership\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Switch control of this fashion showroom space to another user or\\n            organization.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"owner\\\" className=\\\"font-semibold\\\">\\n                Select new owner\\n              </Label>\\n              <Select>\\n                <SelectTrigger id=\\\"owner\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Choose owner\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"styling-team\\\">Styling Team</SelectItem>\\n                  <SelectItem value=\\\"content-studio\\\">Content Studio</SelectItem>\\n                  <SelectItem value=\\\"retail-partner\\\">Retail Partner</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"handle\\\" className=\\\"font-semibold\\\">\\n                Confirm collection handle\\n              </Label>\\n              <Input id=\\\"handle\\\" placeholder=\\\"resort-collection-2026\\\" />\\n            </div>\\n\\n            <Card className=\\\"border-yellow-500/50 bg-yellow-500/5\\\">\\n              <CardContent className=\\\"p-4\\\">\\n                <div className=\\\"flex items-start gap-3\\\">\\n                  <AlertTriangle className=\\\"mt-0.5 h-5 w-5 shrink-0 text-yellow-600\\\" />\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Transferring ownership will revoke your access to draft\\n                    sets, unpublished campaigns, and internal analytics.\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Transfer Access\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-10/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertCircle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Permanently Remove Archive\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Erasing this fashion vault will wipe its data across your platform\\n            and collaborators.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertCircle className=\\\"text-destructive h-4 w-4\\\" />\\n                Review Before Deleting\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Once removed, associated content (lookbooks, notes, edits) will\\n                be lost forever.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This action will:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Deletes all digital outfits and metadata</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Disconnects synced creative briefs</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-primary mt-1\\\">•</span>\\n                <span>No change to billing or usage limits</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">I acknowledge and confirm</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/modals-11/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Erase Fashion Vault\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Type the full collection handle to confirm irreversible deletion of\\n            this vault.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"identifier\\\" className=\\\"font-semibold\\\">\\n                Collection identifier\\n              </Label>\\n              <Input id=\\\"identifier\\\" placeholder=\\\"spring-edit-collection\\\" />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Delete Vault\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-basic-info-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-basic-info/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport {\\n  Briefcase,\\n  CalendarIcon,\\n  Globe,\\n  GraduationCap,\\n  Mail,\\n  MapPin,\\n  Phone,\\n  User,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function AccountBasicInfo01() {\\n  const [birthDate, setBirthDate] = React.useState<Date>()\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Personal Information\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Manage your personal details and profile information. This\\n            information will be visible to other users on the platform.\\n          </p>\\n        </div>\\n\\n        <form className=\\\"space-y-8\\\">\\n          {/* Basic Details Section */}\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Basic Details</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"firstName\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    First Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"firstName\\\"\\n                    placeholder=\\\"Emma\\\"\\n                    defaultValue=\\\"Emma\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"lastName\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Last Name\\n                  </Label>\\n                  <Input\\n                    id=\\\"lastName\\\"\\n                    placeholder=\\\"Roberts\\\"\\n                    defaultValue=\\\"Roberts\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Professional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Professional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"gender\\\" className=\\\"flex items-center gap-2\\\">\\n                    <User className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Gender\\n                  </Label>\\n                  <Select defaultValue=\\\"female\\\">\\n                    <SelectTrigger id=\\\"gender\\\">\\n                      <SelectValue placeholder=\\\"Select Gender\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"male\\\">Male</SelectItem>\\n                      <SelectItem value=\\\"female\\\">Female</SelectItem>\\n                      <SelectItem value=\\\"other\\\">Other</SelectItem>\\n                      <SelectItem value=\\\"prefer-not-to-say\\\">\\n                        Prefer not to say\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label className=\\\"flex items-center gap-2\\\">\\n                    <CalendarIcon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Birth Date\\n                  </Label>\\n                  <Popover>\\n                    <PopoverTrigger asChild>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        className=\\\"w-full justify-start text-left font-normal\\\"\\n                      >\\n                        <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\n                        {birthDate ? format(birthDate, \\\"PPP\\\") : \\\"Select a date\\\"}\\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                        initialFocus\\n                      />\\n                    </PopoverContent>\\n                  </Popover>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"profession\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Briefcase className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Profession\\n                  </Label>\\n                  <Select defaultValue=\\\"ui-ux\\\">\\n                    <SelectTrigger id=\\\"profession\\\">\\n                      <SelectValue placeholder=\\\"Select Profession\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                      <SelectItem value=\\\"frontend\\\">\\n                        Frontend Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                      <SelectItem value=\\\"fullstack\\\">\\n                        Fullstack Developer\\n                      </SelectItem>\\n                      <SelectItem value=\\\"product-manager\\\">\\n                        Product Manager\\n                      </SelectItem>\\n                      <SelectItem value=\\\"data-scientist\\\">\\n                        Data Scientist\\n                      </SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"education\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <GraduationCap className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Education\\n                  </Label>\\n                  <Select defaultValue=\\\"university\\\">\\n                    <SelectTrigger id=\\\"education\\\">\\n                      <SelectValue placeholder=\\\"Select Level\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"high-school\\\">High School</SelectItem>\\n                      <SelectItem value=\\\"college\\\">College</SelectItem>\\n                      <SelectItem value=\\\"university\\\">University</SelectItem>\\n                      <SelectItem value=\\\"masters\\\">\\n                        Master&apos;s Degree\\n                      </SelectItem>\\n                      <SelectItem value=\\\"phd\\\">Ph.D.</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Contact Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">Contact Information</h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Email Address\\n                  </Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label\\n                    htmlFor=\\\"confirmEmail\\\"\\n                    className=\\\"flex items-center gap-2\\\"\\n                  >\\n                    <Mail className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Confirm Email\\n                  </Label>\\n                  <Input\\n                    id=\\\"confirmEmail\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"emma@mail.com\\\"\\n                    defaultValue=\\\"emma@mail.com\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"phone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Phone className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Phone Number\\n                  </Label>\\n                  <Input\\n                    id=\\\"phone\\\"\\n                    placeholder=\\\"+1 (555) 123-4567\\\"\\n                    defaultValue=\\\"+1 (555) 123-4567\\\"\\n                  />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"location\\\" className=\\\"flex items-center gap-2\\\">\\n                    <MapPin className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Location\\n                  </Label>\\n                  <Input\\n                    id=\\\"location\\\"\\n                    placeholder=\\\"City, Country\\\"\\n                    defaultValue=\\\"Florida, USA\\\"\\n                  />\\n                </div>\\n              </div>\\n            </div>\\n\\n            {/* Additional Information */}\\n            <div>\\n              <h3 className=\\\"mb-4 text-sm font-medium\\\">\\n                Additional Information\\n              </h3>\\n              <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"language\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Preferred Language\\n                  </Label>\\n                  <Select defaultValue=\\\"english\\\">\\n                    <SelectTrigger id=\\\"language\\\">\\n                      <SelectValue placeholder=\\\"Select Language\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"english\\\">English</SelectItem>\\n                      <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                      <SelectItem value=\\\"french\\\">French</SelectItem>\\n                      <SelectItem value=\\\"german\\\">German</SelectItem>\\n                      <SelectItem value=\\\"chinese\\\">Chinese</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"timezone\\\" className=\\\"flex items-center gap-2\\\">\\n                    <Globe className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                    Timezone\\n                  </Label>\\n                  <Select defaultValue=\\\"est\\\">\\n                    <SelectTrigger id=\\\"timezone\\\">\\n                      <SelectValue placeholder=\\\"Select Timezone\\\" />\\n                    </SelectTrigger>\\n                    <SelectContent>\\n                      <SelectItem value=\\\"est\\\">Eastern Time (ET)</SelectItem>\\n                      <SelectItem value=\\\"cst\\\">Central Time (CT)</SelectItem>\\n                      <SelectItem value=\\\"mst\\\">Mountain Time (MT)</SelectItem>\\n                      <SelectItem value=\\\"pst\\\">Pacific Time (PT)</SelectItem>\\n                      <SelectItem value=\\\"utc\\\">UTC</SelectItem>\\n                    </SelectContent>\\n                  </Select>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button type=\\\"button\\\" variant=\\\"outline\\\">\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Save Changes</Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-2fa-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-2fa/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  AlertCircle,\\n  CheckCircle2,\\n  KeyRound,\\n  MessageSquare,\\n  Shield,\\n  Smartphone,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst TwoFactorMethods = [\\n  {\\n    title: \\\"Security Keys\\\",\\n    description:\\n      \\\"Physical security keys provide the highest level of protection by requiring a hardware device for authentication.\\\",\\n    value: \\\"No security keys configured\\\",\\n    action: \\\"Add\\\",\\n    icon: KeyRound,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"Authenticator App\\\",\\n    description:\\n      \\\"Generate time-based one-time passwords (TOTP) using apps like Google Authenticator or Authy.\\\",\\n    value: \\\"Not configured\\\",\\n    action: \\\"Setup\\\",\\n    icon: Smartphone,\\n    isConfigured: false,\\n    recommended: true,\\n  },\\n  {\\n    title: \\\"SMS Number\\\",\\n    description:\\n      \\\"Receive verification codes via text message to your registered mobile number.\\\",\\n    value: \\\"+1 (555) 123-4567\\\",\\n    action: \\\"Edit\\\",\\n    icon: MessageSquare,\\n    isConfigured: true,\\n    recommended: false,\\n  },\\n]\\n\\nexport default function Account2FA01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4 border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Two-Factor Authentication\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Add an extra layer of security to your account\\n              </p>\\n            </div>\\n          </div>\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n          >\\n            <CheckCircle2 className=\\\"mr-1 h-3 w-3\\\" />\\n            Enabled\\n          </Badge>\\n        </div>\\n\\n        <div className=\\\"space-y-0\\\">\\n          {TwoFactorMethods.map((method, index) => {\\n            const Icon = method.icon\\n            return (\\n              <div\\n                key={method.title}\\n                className={`group flex flex-wrap items-center justify-between gap-6 py-6 ${\\n                  index !== TwoFactorMethods.length - 1\\n                    ? \\\"border-border border-b\\\"\\n                    : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-start gap-4\\\">\\n                  <div\\n                    className={`bg-muted flex h-12 w-12 shrink-0 items-center justify-center rounded-lg ${method.isConfigured ? \\\"bg-primary/10\\\" : \\\"\\\"}`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${method.isConfigured ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n                  <div className=\\\"flex-1 space-y-2\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <p className=\\\"font-semibold\\\">{method.title}</p>\\n                      {method.recommended && (\\n                        <span className=\\\"text-primary border-primary bg-primary/10 rounded-full border px-2 py-0.5 text-xs font-medium\\\">\\n                          Recommended\\n                        </span>\\n                      )}\\n                    </div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {method.description}\\n                    </p>\\n                    <p\\n                      className={`text-sm ${\\n                        method.isConfigured\\n                          ? \\\"font-semibold\\\"\\n                          : \\\"text-muted-foreground\\\"\\n                      }`}\\n                    >\\n                      {method.isConfigured && (\\n                        <CheckCircle2 className=\\\"mr-1 inline h-4 w-4 text-green-500\\\" />\\n                      )}\\n                      {method.value}\\n                    </p>\\n                  </div>\\n                </div>\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant={method.isConfigured ? \\\"outline\\\" : \\\"default\\\"}\\n                >\\n                  {method.action}\\n                </Button>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"mt-8 space-y-4\\\">\\n          <div className=\\\"bg-muted/50 flex items-start gap-3 rounded-lg border p-4\\\">\\n            <AlertCircle className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Recovery Codes</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Generate backup codes that can be used if you lose access to\\n                your 2FA methods. Store them securely in a safe place.\\n              </p>\\n              <Button variant=\\\"link\\\" className=\\\"mt-2 h-auto p-0 text-sm\\\">\\n                Generate Recovery Codes →\\n              </Button>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex justify-end gap-3 border-t pt-6\\\">\\n            <Button variant=\\\"outline\\\">View Activity Log</Button>\\n            <Button>Save Settings</Button>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-change-password-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-change-password/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CheckCircle2, Eye, EyeOff, Lock, Shield, XCircle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nfunction PasswordField({\\n  id,\\n  label,\\n  ...props\\n}: {\\n  id: string\\n  label: string\\n} & React.InputHTMLAttributes<HTMLInputElement>) {\\n  const [showPassword, setShowPassword] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"mb-6 space-y-2\\\">\\n      <Label htmlFor={id} className=\\\"flex items-center gap-2\\\">\\n        <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n        {label}\\n      </Label>\\n      <div className=\\\"relative\\\">\\n        <Input\\n          {...props}\\n          id={id}\\n          type={showPassword ? \\\"text\\\" : \\\"password\\\"}\\n          placeholder=\\\"••••••••\\\"\\n        />\\n        <Button\\n          type=\\\"button\\\"\\n          variant=\\\"ghost\\\"\\n          size=\\\"sm\\\"\\n          className=\\\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\\\"\\n          onClick={() => setShowPassword(!showPassword)}\\n        >\\n          {showPassword ? (\\n            <EyeOff className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          ) : (\\n            <Eye className=\\\"h-4 w-4\\\" aria-hidden=\\\"true\\\" />\\n          )}\\n          <span className=\\\"sr-only\\\">\\n            {showPassword ? \\\"Hide password\\\" : \\\"Show password\\\"}\\n          </span>\\n        </Button>\\n      </div>\\n    </div>\\n  )\\n}\\n\\nconst PASSWORD_REQUIREMENTS = [\\n  {\\n    label: \\\"At least 8 characters long\\\",\\n    regex: /.{8,}/,\\n  },\\n  {\\n    label: \\\"One uppercase letter (A-Z)\\\",\\n    regex: /[A-Z]/,\\n  },\\n  {\\n    label: \\\"One lowercase letter (a-z)\\\",\\n    regex: /[a-z]/,\\n  },\\n  {\\n    label: \\\"One number (0-9)\\\",\\n    regex: /[0-9]/,\\n  },\\n  {\\n    label: \\\"One special character (!@#$%^&*)\\\",\\n    regex: /[!@#$%^&*()_+\\\\-=\\\\[\\\\]{};':\\\"\\\\\\\\|,.<>\\\\/?]/,\\n  },\\n]\\n\\nexport default function AccountChangePassword01() {\\n  const [newPassword, setNewPassword] = React.useState(\\\"\\\")\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Change Password\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your password to keep your account secure\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2\\\">\\n          <div>\\n            <form onSubmit={(e) => e.preventDefault()}>\\n              <PasswordField id=\\\"current-password\\\" label=\\\"Current Password\\\" />\\n              <PasswordField\\n                id=\\\"new-password\\\"\\n                label=\\\"New Password\\\"\\n                onChange={(e) => setNewPassword(e.target.value)}\\n                value={newPassword}\\n              />\\n              <PasswordField\\n                id=\\\"confirm-password\\\"\\n                label=\\\"Confirm New Password\\\"\\n              />\\n              <div className=\\\"mt-8 flex gap-3\\\">\\n                <Button type=\\\"button\\\" variant=\\\"outline\\\" className=\\\"flex-1\\\">\\n                  Cancel\\n                </Button>\\n                <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n                  Update Password\\n                </Button>\\n              </div>\\n            </form>\\n          </div>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 flex items-center gap-2 font-semibold\\\">\\n                <Shield className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                Password Requirements\\n              </h3>\\n              <p className=\\\"text-muted-foreground mb-6 text-sm\\\">\\n                Your password must meet the following criteria for enhanced\\n                security:\\n              </p>\\n              <ul className=\\\"space-y-3\\\">\\n                {PASSWORD_REQUIREMENTS.map((req, index) => {\\n                  const meetsRequirement = req.regex.test(newPassword)\\n                  return (\\n                    <li key={index} className=\\\"flex items-start gap-3\\\">\\n                      {meetsRequirement ? (\\n                        <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 shrink-0 text-green-500\\\" />\\n                      ) : (\\n                        <XCircle className=\\\"text-muted-foreground mt-0.5 h-5 w-5 shrink-0\\\" />\\n                      )}\\n                      <span\\n                        className={`text-sm ${\\n                          meetsRequirement\\n                            ? \\\"text-foreground\\\"\\n                            : \\\"text-muted-foreground\\\"\\n                        }`}\\n                      >\\n                        {req.label}\\n                      </span>\\n                    </li>\\n                  )\\n                })}\\n              </ul>\\n            </div>\\n\\n            <div className=\\\"bg-muted/50 rounded-lg border p-4\\\">\\n              <h4 className=\\\"mb-2 text-sm font-medium\\\">\\n                Security Best Practices\\n              </h4>\\n              <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Change your password regularly (every 90 days)</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Never share your password with anyone</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Use a unique password for each account</span>\\n                </li>\\n                <li className=\\\"flex items-start gap-2\\\">\\n                  <span className=\\\"mt-1\\\">•</span>\\n                  <span>Consider using a password manager</span>\\n                </li>\\n              </ul>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-notifications-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-notifications/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Bell, Mail, MessageSquare, Smartphone } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst TABLE_HEAD = [\\n  { label: \\\"Activity\\\", icon: Bell },\\n  { label: \\\"Email\\\", icon: Mail },\\n  { label: \\\"Push\\\", icon: Smartphone },\\n  { label: \\\"SMS\\\", icon: MessageSquare },\\n]\\n\\nconst NOTIFICATIONS = [\\n  {\\n    title: \\\"Mentions\\\",\\n    description: \\\"Notify when another user mentions you in a comment\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Comments\\\",\\n    description: \\\"Notify when another user comments on your item\\\",\\n    category: \\\"Social\\\",\\n    email: true,\\n    push: false,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"New Follower\\\",\\n    description: \\\"Notify when someone starts following you\\\",\\n    category: \\\"Social\\\",\\n    email: false,\\n    push: true,\\n    sms: false,\\n  },\\n  {\\n    title: \\\"Login Activity\\\",\\n    description: \\\"Alert when logging in from a new device or location\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Password Changed\\\",\\n    description: \\\"Immediate notification when password is updated\\\",\\n    category: \\\"Security\\\",\\n    email: true,\\n    push: true,\\n    sms: true,\\n  },\\n  {\\n    title: \\\"Product Updates\\\",\\n    description: \\\"Get notified about new features and improvements\\\",\\n    category: \\\"Product\\\",\\n    email: true,\\n    push: false,\\n    sms: false,\\n  },\\n]\\n\\nexport default function AccountNotifications01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n            Notification Preferences\\n          </h2>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Customize how you receive notifications. These settings apply to all\\n            activities you&apos;re monitoring across the platform.\\n          </p>\\n        </div>\\n\\n        <div className=\\\"overflow-x-auto\\\">\\n          <table className=\\\"w-full min-w-[40rem] table-auto text-left\\\">\\n            <thead>\\n              <tr className=\\\"border-b\\\">\\n                {TABLE_HEAD.map((head, i) => {\\n                  const Icon = head.icon\\n                  return (\\n                    <th\\n                      key={head.label}\\n                      className={`${\\n                        i === 0 ? \\\"py-4 pr-4\\\" : \\\"p-4 text-center\\\"\\n                      } font-semibold`}\\n                    >\\n                      <div\\n                        className={`flex items-center gap-2 ${\\n                          i !== 0 ? \\\"justify-center\\\" : \\\"\\\"\\n                        }`}\\n                      >\\n                        <Icon className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                        <span className=\\\"text-sm\\\">{head.label}</span>\\n                      </div>\\n                    </th>\\n                  )\\n                })}\\n              </tr>\\n            </thead>\\n            <tbody>\\n              {NOTIFICATIONS.map((notification, index) => {\\n                const isLast = index === NOTIFICATIONS.length - 1\\n                const classes = isLast ? \\\"py-6\\\" : \\\"border-border border-b py-6\\\"\\n\\n                return (\\n                  <tr\\n                    key={notification.title}\\n                    className=\\\"group hover:bg-muted/50\\\"\\n                  >\\n                    <td className={`${classes} pr-4`}>\\n                      <div className=\\\"space-y-1\\\">\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{notification.title}</p>\\n                          <span className=\\\"text-muted-foreground rounded-full border px-2 py-0.5 text-xs\\\">\\n                            {notification.category}\\n                          </span>\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {notification.description}\\n                        </p>\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.email}\\n                          id={`email-${index}`}\\n                          aria-label={`Email notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.push}\\n                          id={`push-${index}`}\\n                          aria-label={`Push notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                    <td className={`${classes} px-4`}>\\n                      <div className=\\\"flex justify-center\\\">\\n                        <Switch\\n                          defaultChecked={notification.sms}\\n                          id={`sms-${index}`}\\n                          aria-label={`SMS notifications for ${notification.title}`}\\n                        />\\n                      </div>\\n                    </td>\\n                  </tr>\\n                )\\n              })}\\n            </tbody>\\n          </table>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Bell className=\\\"text-muted-foreground mt-0.5 h-5 w-5\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">\\n                About Notification Delivery\\n              </h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Email notifications are sent instantly. Push notifications\\n                require the mobile app. SMS notifications may incur carrier\\n                charges. You can change these settings at any time.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-sessions-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-sessions/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Clock,\\n  Computer,\\n  Globe,\\n  ShieldCheck,\\n  Smartphone,\\n  X,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst ACTIVE_SESSIONS = [\\n  {\\n    id: 1,\\n    type: \\\"Laptop\\\",\\n    icon: Computer,\\n    location: \\\"New York, USA\\\",\\n    coordinates: \\\"40.7128° N, 74.0060° W\\\",\\n    isCurrent: true,\\n    lastActive: \\\"2 hours ago\\\",\\n    browser: \\\"Chrome 114.0\\\",\\n    os: \\\"macOS 13.4\\\",\\n  },\\n  {\\n    id: 2,\\n    type: \\\"Smartphone\\\",\\n    icon: Smartphone,\\n    location: \\\"Florida, USA\\\",\\n    coordinates: \\\"27.9944° N, 81.7603° W\\\",\\n    isCurrent: false,\\n    lastActive: \\\"Yesterday at 3:45 PM\\\",\\n    browser: \\\"Safari 16.5\\\",\\n    os: \\\"iOS 16.5\\\",\\n  },\\n  {\\n    id: 3,\\n    type: \\\"Desktop\\\",\\n    icon: Computer,\\n    location: \\\"Tokyo, Japan\\\",\\n    coordinates: \\\"35.6895° N, 139.6917° E\\\",\\n    isCurrent: false,\\n    lastActive: \\\"3 days ago\\\",\\n    browser: \\\"Firefox 112.0\\\",\\n    os: \\\"Windows 11\\\",\\n  },\\n]\\n\\nexport default function AccountSessions01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <ShieldCheck className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Active Sessions\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and monitor devices that have access to your account\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"space-y-6\\\">\\n          {ACTIVE_SESSIONS.map((session, index) => {\\n            const Icon = session.icon\\n            const isLast = index === ACTIVE_SESSIONS.length - 1\\n\\n            return (\\n              <div\\n                key={session.id}\\n                className={`flex items-center justify-between gap-6 py-4 ${\\n                  !isLast ? \\\"border-border border-b\\\" : \\\"\\\"\\n                }`}\\n              >\\n                <div className=\\\"flex items-center gap-4\\\">\\n                  <div\\n                    className={`bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg`}\\n                  >\\n                    <Icon\\n                      className={`h-6 w-6 ${session.isCurrent ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                    />\\n                  </div>\\n\\n                  <div className=\\\"space-y-1\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <h4 className=\\\"font-semibold\\\">{session.type} Session</h4>\\n                      {session.isCurrent && (\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500 bg-green-50 text-green-700\\\"\\n                        >\\n                          Current Session\\n                        </Badge>\\n                      )}\\n                    </div>\\n\\n                    <div className=\\\"text-muted-foreground space-y-1 text-sm\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Globe className=\\\"h-4 w-4\\\" />\\n                        <span>{session.location}</span>\\n                      </div>\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Clock className=\\\"h-4 w-4\\\" />\\n                        <span>Last active: {session.lastActive}</span>\\n                      </div>\\n                      <div>\\n                        {session.browser} on {session.os}\\n                      </div>\\n                    </div>\\n                  </div>\\n                </div>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  {!session.isCurrent && (\\n                    <Button variant=\\\"destructive\\\" size=\\\"sm\\\">\\n                      <X className=\\\"mr-2 h-4 w-4\\\" />\\n                      Remove\\n                    </Button>\\n                  )}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <ShieldCheck className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Security Tip</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                If you notice any suspicious activity, immediately remove the\\n                session and change your account password. Enable two-factor\\n                authentication for additional security.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-avatar-upload-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-avatar-upload/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  CheckCircle2,\\n  Pencil,\\n  Trash2,\\n  Upload,\\n  User,\\n  XCircle,\\n} from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nexport default function AccountAvatarUpload01() {\\n  const [status, setStatus] = React.useState(\\\"Online\\\")\\n  const [avatarPreview, setAvatarPreview] = React.useState<string | null>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onloadend = () => {\\n        setAvatarPreview(reader.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleRemoveAvatar = () => {\\n    setAvatarPreview(null)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <User className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Profile Picture\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Update your profile picture and personal information\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex flex-wrap items-center justify-between gap-6\\\">\\n          <div className=\\\"flex items-center gap-6\\\">\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"relative\\\">\\n                <Avatar className=\\\"border-border h-16 w-16 border-2\\\">\\n                  <AvatarImage\\n                    src={\\n                      avatarPreview ||\\n                      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                    }\\n                    alt=\\\"Profile Picture\\\"\\n                    className=\\\"object-cover\\\"\\n                  />\\n                  <AvatarFallback className=\\\"bg-muted-foreground/10 text-muted-foreground\\\">\\n                    <User className=\\\"h-8 w-8\\\" />\\n                  </AvatarFallback>\\n                </Avatar>\\n                <label\\n                  htmlFor=\\\"avatar-upload\\\"\\n                  className=\\\"absolute right-0 bottom-0 cursor-pointer\\\"\\n                >\\n                  <div className=\\\"bg-primary/10 text-primary hover:bg-primary/20 border-border rounded-full border p-1.5\\\">\\n                    <Pencil className=\\\"h-3.5 w-3.5\\\" />\\n                  </div>\\n                  <input\\n                    type=\\\"file\\\"\\n                    id=\\\"avatar-upload\\\"\\n                    accept=\\\"image/png,image/jpeg,image/svg+xml\\\"\\n                    className=\\\"hidden\\\"\\n                    onChange={handleFileUpload}\\n                  />\\n                </label>\\n              </div>\\n\\n              <div className=\\\"space-y-1\\\">\\n                <h3 className=\\\"font-semibold\\\">Select and Upload Image</h3>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  .svg, .png, .jpg (size 400x400px)\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Button>\\n                <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                Upload Avatar\\n              </Button>\\n              {avatarPreview && (\\n                <Button variant=\\\"destructive\\\" onClick={handleRemoveAvatar}>\\n                  <Trash2 className=\\\"mr-2 h-4 w-4\\\" />\\n                  Remove\\n                </Button>\\n              )}\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Label className=\\\"mb-3 flex items-center gap-2\\\">\\n              <CheckCircle2 className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              Availability Status\\n            </Label>\\n            <div className=\\\"flex items-center gap-3\\\">\\n              <Switch\\n                id=\\\"status\\\"\\n                checked={status === \\\"Online\\\"}\\n                onCheckedChange={() =>\\n                  setStatus((cur) => (cur === \\\"Online\\\" ? \\\"Offline\\\" : \\\"Online\\\"))\\n                }\\n              />\\n              <Label\\n                htmlFor=\\\"status\\\"\\n                className=\\\"flex cursor-pointer items-center gap-2\\\"\\n              >\\n                {status === \\\"Online\\\" ? (\\n                  <CheckCircle2 className=\\\"h-4 w-4 text-green-500\\\" />\\n                ) : (\\n                  <XCircle className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                )}\\n                {status}\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <CheckCircle2 className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Profile Picture Tips</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose a high-quality, professional image that clearly shows\\n                your face. Recommended image size is 400x400 pixels. Only .svg,\\n                .png, and .jpg formats are supported.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/account-integrations-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/account-integrations/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Check,\\n  ChevronDown,\\n  Copy,\\n  ExternalLink,\\n  Github,\\n  MessageCircle,\\n  Shield,\\n} from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Switch } from \\\"@/components/ui/switch\\\"\\n\\nconst INTEGRATIONS = [\\n  {\\n    id: \\\"github\\\",\\n    name: \\\"GitHub\\\",\\n    icon: Github,\\n    category: \\\"Development\\\",\\n    description:\\n      \\\"Connect your GitHub account to sync repositories and track contributions.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n  {\\n    id: \\\"spotify\\\",\\n    name: \\\"Spotify\\\",\\n    icon: MessageCircle, // Replaced Spotify icon with MessageCircle\\n    category: \\\"Music\\\",\\n    description:\\n      \\\"Link your Spotify account to share playlists and sync listening activity.\\\",\\n    isConfigured: true,\\n    connectedEmail: \\\"emma@mail.com\\\",\\n    verificationCode: \\\"1172913\\\",\\n  },\\n  {\\n    id: \\\"discord\\\",\\n    name: \\\"Discord\\\",\\n    icon: MessageCircle,\\n    category: \\\"Communication\\\",\\n    description:\\n      \\\"Integrate your Discord account to manage server connections and notifications.\\\",\\n    isConfigured: false,\\n    connectedEmail: null,\\n    verificationCode: null,\\n  },\\n]\\n\\nexport default function AccountIntegrations01() {\\n  const [activeIntegrations, setActiveIntegrations] = React.useState<\\n    Record<string, boolean>\\n  >(\\n    INTEGRATIONS.reduce(\\n      (acc, integration) => {\\n        acc[integration.id] = integration.isConfigured\\n        return acc\\n      },\\n      {} as Record<string, boolean>\\n    )\\n  )\\n  const [copiedCode, setCopiedCode] = React.useState<string | null>(null)\\n\\n  const toggleIntegration = (id: string) => {\\n    setActiveIntegrations((prev) => ({\\n      ...prev,\\n      [id]: !prev[id],\\n    }))\\n  }\\n\\n  const copyVerificationCode = (code: string) => {\\n    navigator.clipboard.writeText(code)\\n    setCopiedCode(code)\\n    setTimeout(() => setCopiedCode(null), 2000)\\n  }\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-5xl p-6\\\">\\n      <Card className=\\\"bg-card border p-8\\\">\\n        <div className=\\\"border-b pb-6\\\">\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <div className=\\\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n              <Shield className=\\\"text-primary h-6 w-6\\\" />\\n            </div>\\n            <div>\\n              <h2 className=\\\"text-2xl font-semibold tracking-tight\\\">\\n                Third-Party Integrations\\n              </h2>\\n              <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n                Manage and configure connections to external services and\\n                platforms\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <Accordion type=\\\"single\\\" collapsible className=\\\"space-y-4\\\">\\n          {INTEGRATIONS.map((integration) => {\\n            const Icon = integration.icon\\n            const isActive = activeIntegrations[integration.id]\\n\\n            return (\\n              <AccordionItem\\n                key={integration.id}\\n                value={integration.id}\\n                className=\\\"border-border rounded-lg border\\\"\\n              >\\n                <div className=\\\"flex items-center justify-between px-4 py-4\\\">\\n                  <div className=\\\"flex flex-1 items-center gap-4\\\">\\n                    <div className=\\\"bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg\\\">\\n                      <Icon\\n                        className={`h-6 w-6 ${isActive ? \\\"text-primary\\\" : \\\"text-muted-foreground\\\"}`}\\n                      />\\n                    </div>\\n                    <div className=\\\"flex-1 space-y-1 text-left\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <h3 className=\\\"font-semibold\\\">{integration.name}</h3>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          {integration.category}\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground line-clamp-1 text-sm\\\">\\n                        {integration.description}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  <div className=\\\"flex items-center gap-3\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Switch\\n                        id={`${integration.id}-toggle`}\\n                        checked={isActive}\\n                        onCheckedChange={() =>\\n                          toggleIntegration(integration.id)\\n                        }\\n                      />\\n                      <Label\\n                        htmlFor={`${integration.id}-toggle`}\\n                        className=\\\"cursor-pointer text-sm\\\"\\n                      >\\n                        {isActive ? \\\"Enabled\\\" : \\\"Enable\\\"}\\n                      </Label>\\n                    </div>\\n                    <AccordionTrigger className=\\\"hover:bg-muted/50 rounded px-3 py-2\\\">\\n                      <span className=\\\"text-sm font-medium\\\">View More</span>\\n                    </AccordionTrigger>\\n                  </div>\\n                </div>\\n                <AccordionContent className=\\\"px-4 pb-6\\\">\\n                  {!isActive ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        You haven&apos;t added your {integration.name} account\\n                        or you aren&apos;t authorized. Click &quot;Connect&quot;\\n                        to initiate the integration process.\\n                      </p>\\n                      <Button>\\n                        <ExternalLink className=\\\"mr-2 h-4 w-4\\\" />\\n                        Connect {integration.name}\\n                      </Button>\\n                    </div>\\n                  ) : integration.connectedEmail ? (\\n                    <div className=\\\"space-y-4\\\">\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Verification Code</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Use this code to complete the integration\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <code className=\\\"bg-muted/50 rounded px-3 py-1 font-mono text-sm\\\">\\n                              {integration.verificationCode}\\n                            </code>\\n                            <Button\\n                              variant=\\\"outline\\\"\\n                              size=\\\"sm\\\"\\n                              onClick={() =>\\n                                copyVerificationCode(\\n                                  integration.verificationCode!\\n                                )\\n                              }\\n                            >\\n                              {copiedCode === integration.verificationCode ? (\\n                                <Check className=\\\"mr-2 h-4 w-4 text-green-500\\\" />\\n                              ) : (\\n                                <Copy className=\\\"mr-2 h-4 w-4\\\" />\\n                              )}\\n                              {copiedCode === integration.verificationCode\\n                                ? \\\"Copied\\\"\\n                                : \\\"Copy\\\"}\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                      <Card className=\\\"bg-muted/50 border p-4\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <div className=\\\"space-y-1\\\">\\n                            <h4 className=\\\"font-semibold\\\">Connected Account</h4>\\n                            <p className=\\\"text-muted-foreground text-sm\\\">\\n                              Manage your linked {integration.name} account\\n                            </p>\\n                          </div>\\n                          <div className=\\\"flex items-center gap-3\\\">\\n                            <span className=\\\"text-sm font-medium\\\">\\n                              {integration.connectedEmail}\\n                            </span>\\n                            <Button variant=\\\"outline\\\" size=\\\"sm\\\">\\n                              Edit\\n                            </Button>\\n                          </div>\\n                        </div>\\n                      </Card>\\n                    </div>\\n                  ) : null}\\n                </AccordionContent>\\n              </AccordionItem>\\n            )\\n          })}\\n        </Accordion>\\n\\n        <div className=\\\"bg-muted/50 mt-6 rounded-lg border p-4\\\">\\n          <div className=\\\"flex items-start gap-3\\\">\\n            <Shield className=\\\"mt-0.5 h-5 w-5 text-blue-500\\\" />\\n            <div>\\n              <h4 className=\\\"mb-1 text-sm font-medium\\\">Integration Security</h4>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Ensure you trust the applications you connect. Review and manage\\n                third-party access to your account regularly. You can revoke\\n                access at any time by disabling the integration.\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-chat-streaming-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-chat-streaming/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Brain, Loader2, Send } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { ScrollArea } from \\\"@/components/ui/scroll-area\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Gemini\\\" },\\n  { value: \\\"cohere\\\", label: \\\"Cohere\\\" },\\n  { value: \\\"mistral\\\", label: \\\"Mistral AI\\\" },\\n]\\n\\ninterface Message {\\n  id: string\\n  role: \\\"user\\\" | \\\"assistant\\\"\\n  content: string\\n  thinking?: string\\n  isStreaming?: boolean\\n}\\n\\nexport default function AIChatStreamingBlock() {\\n  const [messages, setMessages] = React.useState<Message[]>([\\n    {\\n      id: \\\"1\\\",\\n      role: \\\"assistant\\\",\\n      content:\\n        \\\"Hello! I'm your AI assistant with streaming and thinking capabilities. How can I help you today?\\\",\\n    },\\n  ])\\n  const [input, setInput] = React.useState(\\\"\\\")\\n  const [isLoading, setIsLoading] = React.useState(false)\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [showThinking, setShowThinking] = React.useState(false)\\n  const scrollAreaRef = React.useRef<HTMLDivElement>(null)\\n\\n  const simulateStreaming = async (text: string) => {\\n    const words = text.split(\\\" \\\")\\n    let currentText = \\\"\\\"\\n\\n    const messageId = Date.now().toString()\\n    setMessages((prev) => [\\n      ...prev,\\n      {\\n        id: messageId,\\n        role: \\\"assistant\\\",\\n        content: \\\"\\\",\\n        thinking: showThinking\\n          ? \\\"Analyzing your question and formulating a comprehensive response...\\\"\\n          : undefined,\\n        isStreaming: true,\\n      },\\n    ])\\n\\n    for (let i = 0; i < words.length; i++) {\\n      currentText += (i > 0 ? \\\" \\\" : \\\"\\\") + words[i]\\n      await new Promise((resolve) => setTimeout(resolve, 50))\\n\\n      setMessages((prev) =>\\n        prev.map((msg) =>\\n          msg.id === messageId\\n            ? {\\n                ...msg,\\n                content: currentText,\\n                isStreaming: i < words.length - 1,\\n              }\\n            : msg\\n        )\\n      )\\n    }\\n  }\\n\\n  const handleSend = async () => {\\n    if (!input.trim() || isLoading) return\\n\\n    const userMessage: Message = {\\n      id: Date.now().toString(),\\n      role: \\\"user\\\",\\n      content: input.trim(),\\n    }\\n\\n    setMessages((prev) => [...prev, userMessage])\\n    setInput(\\\"\\\")\\n    setIsLoading(true)\\n\\n    // Simulate AI response\\n    const responses = [\\n      \\\"That's an interesting question. Based on the AI provider you've selected, I can process this with advanced natural language understanding. Let me break this down for you with a detailed analysis.\\\",\\n      \\\"I understand what you're asking. Using the configured API, I can provide you with accurate information. The key aspects to consider are context, relevance, and accuracy in the response.\\\",\\n      \\\"Great question! With streaming enabled, you can see my response in real-time as I process your query. This creates a more interactive and engaging experience for users.\\\",\\n    ]\\n\\n    const randomResponse =\\n      responses[Math.floor(Math.random() * responses.length)]\\n    await simulateStreaming(randomResponse)\\n    setIsLoading(false)\\n  }\\n\\n  React.useEffect(() => {\\n    if (scrollAreaRef.current) {\\n      scrollAreaRef.current.scrollTop = scrollAreaRef.current.scrollHeight\\n    }\\n  }, [messages])\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-4xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Brain className=\\\"h-6 w-6\\\" />\\n            AI Chat with Streaming and Thinking\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n            <input\\n              type=\\\"checkbox\\\"\\n              id=\\\"showThinking\\\"\\n              checked={showThinking}\\n              onChange={(e) => setShowThinking(e.target.checked)}\\n              className=\\\"h-4 w-4 rounded border-gray-300\\\"\\n            />\\n            <Label htmlFor=\\\"showThinking\\\" className=\\\"cursor-pointer text-sm\\\">\\n              Show AI thinking process\\n            </Label>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"space-y-4\\\">\\n          <ScrollArea\\n            className=\\\"h-[400px] rounded-md border p-4\\\"\\n            ref={scrollAreaRef}\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              {messages.map((message) => (\\n                <div\\n                  key={message.id}\\n                  className={`flex gap-3 ${\\n                    message.role === \\\"user\\\" ? \\\"justify-end\\\" : \\\"justify-start\\\"\\n                  }`}\\n                >\\n                  {message.role === \\\"assistant\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                  <div\\n                    className={`max-w-[80%] space-y-2 ${\\n                      message.role === \\\"user\\\" ? \\\"order-first\\\" : \\\"\\\"\\n                    }`}\\n                  >\\n                    {message.thinking && (\\n                      <div className=\\\"bg-muted/50 mb-2 rounded-lg border border-dashed p-3\\\">\\n                        <p className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n                          <Brain className=\\\"h-4 w-4\\\" />\\n                          <span className=\\\"italic\\\">{message.thinking}</span>\\n                        </p>\\n                      </div>\\n                    )}\\n                    <div\\n                      className={`rounded-lg p-3 ${\\n                        message.role === \\\"user\\\"\\n                          ? \\\"bg-primary text-primary-foreground\\\"\\n                          : \\\"bg-muted\\\"\\n                      }`}\\n                    >\\n                      <p className=\\\"text-sm\\\">\\n                        {message.content}\\n                        {message.isStreaming && (\\n                          <span className=\\\"ml-1 inline-block h-4 w-1 animate-pulse bg-current\\\" />\\n                        )}\\n                      </p>\\n                    </div>\\n                  </div>\\n                  {message.role === \\\"user\\\" && (\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback>U</AvatarFallback>\\n                    </Avatar>\\n                  )}\\n                </div>\\n              ))}\\n              {isLoading &&\\n                messages[messages.length - 1]?.role !== \\\"assistant\\\" && (\\n                  <div className=\\\"flex gap-3\\\">\\n                    <Avatar className=\\\"h-8 w-8\\\">\\n                      <AvatarFallback className=\\\"bg-primary text-primary-foreground\\\">\\n                        AI\\n                      </AvatarFallback>\\n                    </Avatar>\\n                    <div className=\\\"bg-muted flex items-center gap-2 rounded-lg p-3\\\">\\n                      <Loader2 className=\\\"h-4 w-4 animate-spin\\\" />\\n                      <span className=\\\"text-sm\\\">Thinking...</span>\\n                    </div>\\n                  </div>\\n                )}\\n            </div>\\n          </ScrollArea>\\n          <form\\n            onSubmit={(e) => {\\n              e.preventDefault()\\n              handleSend()\\n            }}\\n            className=\\\"flex gap-2\\\"\\n          >\\n            <Input\\n              placeholder=\\\"Type your message...\\\"\\n              value={input}\\n              onChange={(e) => setInput(e.target.value)}\\n              disabled={isLoading || !apiKey}\\n            />\\n            <Button\\n              type=\\\"submit\\\"\\n              disabled={isLoading || !apiKey || !input.trim()}\\n            >\\n              <Send className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </form>\\n          {!apiKey && (\\n            <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n              Please enter your API key to start chatting\\n            </p>\\n          )}\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-image-generator-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-image-generator/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Download,\\n  ImageIcon,\\n  Loader2,\\n  Move,\\n  RotateCw,\\n  Upload,\\n  Wand2,\\n  ZoomIn,\\n  ZoomOut,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Slider } from \\\"@/components/ui/slider\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"openai\\\", label: \\\"OpenAI DALL-E\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI\\\" },\\n  { value: \\\"midjourney\\\", label: \\\"Midjourney\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Imagen\\\" },\\n  { value: \\\"anthropic\\\", label: \\\"Anthropic\\\" },\\n]\\n\\nconst IMAGE_SIZES = [\\n  { value: \\\"1024x1024\\\", label: \\\"Square (1024x1024)\\\" },\\n  { value: \\\"1024x1792\\\", label: \\\"Portrait (1024x1792)\\\" },\\n  { value: \\\"1792x1024\\\", label: \\\"Landscape (1792x1024)\\\" },\\n]\\n\\nexport default function AIImageGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"openai\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [imageSize, setImageSize] = React.useState(\\\"1024x1024\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [uploadedImage, setUploadedImage] = React.useState<string | null>(null)\\n  const [generatedImage, setGeneratedImage] = React.useState<string | null>(\\n    null\\n  )\\n  const [brightness, setBrightness] = React.useState([100])\\n  const [contrast, setContrast] = React.useState([100])\\n  const [saturation, setSaturation] = React.useState([100])\\n  const fileInputRef = React.useRef<HTMLInputElement>(null)\\n\\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\\n    const file = event.target.files?.[0]\\n    if (file) {\\n      const reader = new FileReader()\\n      reader.onload = (e) => {\\n        setUploadedImage(e.target?.result as string)\\n      }\\n      reader.readAsDataURL(file)\\n    }\\n  }\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n\\n    // Simulate image generation\\n    await new Promise((resolve) => setTimeout(resolve, 3000))\\n\\n    // Use a placeholder image service\\n    const seed = Math.floor(Math.random() * 1000)\\n    const [width, height] = imageSize.split(\\\"x\\\")\\n    setGeneratedImage(`https://picsum.photos/seed/${seed}/${width}/${height}`)\\n\\n    setIsGenerating(false)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!generatedImage) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = generatedImage\\n    link.download = \\\"ai-generated-image.png\\\"\\n    link.click()\\n  }\\n\\n  const resetEditor = () => {\\n    setBrightness([100])\\n    setContrast([100])\\n    setSaturation([100])\\n  }\\n\\n  const imageStyle = {\\n    filter: `brightness(${brightness[0]}%) contrast(${contrast[0]}%) saturate(${saturation[0]}%)`,\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-6xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <ImageIcon className=\\\"h-6 w-6\\\" />\\n            AI Image Generator with Editor\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-3\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"size\\\">Image Size</Label>\\n              <Select value={imageSize} onValueChange={setImageSize}>\\n                <SelectTrigger id=\\\"size\\\">\\n                  <SelectValue placeholder=\\\"Select size\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {IMAGE_SIZES.map((size) => (\\n                    <SelectItem key={size.value} value={size.value}>\\n                      {size.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <Tabs defaultValue=\\\"generate\\\" className=\\\"w-full\\\">\\n            <TabsList className=\\\"grid w-full grid-cols-2\\\">\\n              <TabsTrigger value=\\\"generate\\\">Generate</TabsTrigger>\\n              <TabsTrigger value=\\\"edit\\\">Edit & Upload</TabsTrigger>\\n            </TabsList>\\n\\n            <TabsContent value=\\\"generate\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Image Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the image you want to generate... (e.g., 'A serene landscape with mountains at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-4 w-4 animate-spin\\\" />\\n                    Generating Image...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Wand2 className=\\\"mr-2 h-4 w-4\\\" />\\n                    Generate Image\\n                  </>\\n                )}\\n              </Button>\\n\\n              {generatedImage && (\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                    <img\\n                      src={generatedImage}\\n                      alt=\\\"Generated\\\"\\n                      className=\\\"h-full w-full object-contain\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                      <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                      Download\\n                    </Button>\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={handleGenerate}\\n                      disabled={isGenerating}\\n                    >\\n                      <RotateCw className=\\\"mr-2 h-4 w-4\\\" />\\n                      Regenerate\\n                    </Button>\\n                  </div>\\n                </div>\\n              )}\\n\\n              {!apiKey && (\\n                <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                  Please enter your API key to start generating images\\n                </p>\\n              )}\\n            </TabsContent>\\n\\n            <TabsContent value=\\\"edit\\\" className=\\\"space-y-4\\\">\\n              <div className=\\\"space-y-4\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label>Upload Image</Label>\\n                  <div className=\\\"flex gap-2\\\">\\n                    <Input\\n                      ref={fileInputRef}\\n                      type=\\\"file\\\"\\n                      accept=\\\"image/*\\\"\\n                      onChange={handleFileUpload}\\n                      className=\\\"flex-1\\\"\\n                    />\\n                    <Button\\n                      variant=\\\"outline\\\"\\n                      onClick={() => fileInputRef.current?.click()}\\n                    >\\n                      <Upload className=\\\"mr-2 h-4 w-4\\\" />\\n                      Browse\\n                    </Button>\\n                  </div>\\n                </div>\\n\\n                {(uploadedImage || generatedImage) && (\\n                  <div className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\\\">\\n                      <img\\n                        src={uploadedImage || generatedImage || \\\"\\\"}\\n                        alt=\\\"Editing\\\"\\n                        className=\\\"h-full w-full object-contain\\\"\\n                        style={imageStyle}\\n                      />\\n                    </div>\\n\\n                    <Card>\\n                      <CardHeader>\\n                        <CardTitle className=\\\"text-sm\\\">Image Editor</CardTitle>\\n                      </CardHeader>\\n                      <CardContent className=\\\"space-y-6\\\">\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Brightness</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {brightness[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={brightness}\\n                            onValueChange={setBrightness}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Contrast</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {contrast[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={contrast}\\n                            onValueChange={setContrast}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"space-y-2\\\">\\n                          <div className=\\\"flex items-center justify-between\\\">\\n                            <Label>Saturation</Label>\\n                            <span className=\\\"text-muted-foreground text-sm\\\">\\n                              {saturation[0]}%\\n                            </span>\\n                          </div>\\n                          <Slider\\n                            value={saturation}\\n                            onValueChange={setSaturation}\\n                            min={0}\\n                            max={200}\\n                            step={1}\\n                          />\\n                        </div>\\n\\n                        <div className=\\\"flex gap-2\\\">\\n                          <Button\\n                            variant=\\\"outline\\\"\\n                            onClick={resetEditor}\\n                            className=\\\"flex-1\\\"\\n                          >\\n                            Reset\\n                          </Button>\\n                          <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                            <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                            Download\\n                          </Button>\\n                        </div>\\n                      </CardContent>\\n                    </Card>\\n                  </div>\\n                )}\\n\\n                {!uploadedImage && !generatedImage && (\\n                  <div className=\\\"border-muted-foreground/25 bg-muted/50 flex h-64 flex-col items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                    <ImageIcon className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Upload an image or generate one to start editing\\n                    </p>\\n                  </div>\\n                )}\\n              </div>\\n            </TabsContent>\\n          </Tabs>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"blocks/ai-video-generator-01/page.tsx\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ai-video-generator/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport {\\n  Clock,\\n  Download,\\n  FileVideo,\\n  Film,\\n  Loader2,\\n  Pause,\\n  Play,\\n  Sparkles,\\n  Video,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Progress } from \\\"@/components/ui/progress\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst AI_PROVIDERS = [\\n  { value: \\\"runway\\\", label: \\\"Runway Gen-3\\\" },\\n  { value: \\\"pika\\\", label: \\\"Pika Labs\\\" },\\n  { value: \\\"stability\\\", label: \\\"Stability AI Video\\\" },\\n  { value: \\\"google\\\", label: \\\"Google Veo\\\" },\\n  { value: \\\"openai\\\", label: \\\"OpenAI Sora\\\" },\\n]\\n\\nconst VIDEO_DURATIONS = [\\n  { value: \\\"3\\\", label: \\\"3 seconds\\\" },\\n  { value: \\\"5\\\", label: \\\"5 seconds\\\" },\\n  { value: \\\"10\\\", label: \\\"10 seconds\\\" },\\n  { value: \\\"15\\\", label: \\\"15 seconds\\\" },\\n]\\n\\nconst VIDEO_STYLES = [\\n  { value: \\\"realistic\\\", label: \\\"Realistic\\\" },\\n  { value: \\\"cinematic\\\", label: \\\"Cinematic\\\" },\\n  { value: \\\"animated\\\", label: \\\"Animated\\\" },\\n  { value: \\\"artistic\\\", label: \\\"Artistic\\\" },\\n  { value: \\\"abstract\\\", label: \\\"Abstract\\\" },\\n]\\n\\ninterface GeneratedVideo {\\n  id: string\\n  prompt: string\\n  url: string\\n  thumbnail: string\\n  duration: string\\n  style: string\\n  timestamp: Date\\n}\\n\\nexport default function AIVideoGeneratorBlock() {\\n  const [prompt, setPrompt] = React.useState(\\\"\\\")\\n  const [provider, setProvider] = React.useState(\\\"runway\\\")\\n  const [apiKey, setApiKey] = React.useState(\\\"\\\")\\n  const [duration, setDuration] = React.useState(\\\"5\\\")\\n  const [style, setStyle] = React.useState(\\\"realistic\\\")\\n  const [isGenerating, setIsGenerating] = React.useState(false)\\n  const [progress, setProgress] = React.useState(0)\\n  const [generatedVideos, setGeneratedVideos] = React.useState<\\n    GeneratedVideo[]\\n  >([])\\n  const [selectedVideo, setSelectedVideo] =\\n    React.useState<GeneratedVideo | null>(null)\\n  const [isPlaying, setIsPlaying] = React.useState(false)\\n  const videoRef = React.useRef<HTMLVideoElement>(null)\\n\\n  const handleGenerate = async () => {\\n    if (!prompt.trim() || !apiKey) return\\n\\n    setIsGenerating(true)\\n    setProgress(0)\\n\\n    // Simulate video generation progress\\n    const interval = setInterval(() => {\\n      setProgress((prev) => {\\n        if (prev >= 100) {\\n          clearInterval(interval)\\n          return 100\\n        }\\n        return prev + 5\\n      })\\n    }, 300)\\n\\n    // Simulate video generation\\n    await new Promise((resolve) => setTimeout(resolve, 6000))\\n\\n    const newVideo: GeneratedVideo = {\\n      id: Date.now().toString(),\\n      prompt: prompt,\\n      url: \\\"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4\\\",\\n      thumbnail: `https://picsum.photos/seed/${Math.floor(Math.random() * 1000)}/640/360`,\\n      duration: duration,\\n      style: style,\\n      timestamp: new Date(),\\n    }\\n\\n    setGeneratedVideos((prev) => [newVideo, ...prev])\\n    setSelectedVideo(newVideo)\\n    setIsGenerating(false)\\n    setProgress(0)\\n  }\\n\\n  const togglePlayPause = () => {\\n    if (!videoRef.current) return\\n\\n    if (isPlaying) {\\n      videoRef.current.pause()\\n    } else {\\n      videoRef.current.play()\\n    }\\n    setIsPlaying(!isPlaying)\\n  }\\n\\n  const handleDownload = () => {\\n    if (!selectedVideo) return\\n    const link = document.createElement(\\\"a\\\")\\n    link.href = selectedVideo.url\\n    link.download = `ai-video-${selectedVideo.id}.mp4`\\n    link.click()\\n  }\\n\\n  return (\\n    <div className=\\\"container mx-auto py-8\\\">\\n      <Card className=\\\"mx-auto max-w-7xl\\\">\\n        <CardHeader>\\n          <CardTitle className=\\\"flex items-center gap-2\\\">\\n            <Video className=\\\"h-6 w-6\\\" />\\n            AI Video Generation Agent\\n          </CardTitle>\\n          <div className=\\\"mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"provider\\\">AI Provider</Label>\\n              <Select value={provider} onValueChange={setProvider}>\\n                <SelectTrigger id=\\\"provider\\\">\\n                  <SelectValue placeholder=\\\"Select provider\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {AI_PROVIDERS.map((p) => (\\n                    <SelectItem key={p.value} value={p.value}>\\n                      {p.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"apiKey\\\">API Key</Label>\\n              <Input\\n                id=\\\"apiKey\\\"\\n                type=\\\"password\\\"\\n                placeholder=\\\"Enter your API key\\\"\\n                value={apiKey}\\n                onChange={(e) => setApiKey(e.target.value)}\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"duration\\\">Duration</Label>\\n              <Select value={duration} onValueChange={setDuration}>\\n                <SelectTrigger id=\\\"duration\\\">\\n                  <SelectValue placeholder=\\\"Select duration\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_DURATIONS.map((d) => (\\n                    <SelectItem key={d.value} value={d.value}>\\n                      {d.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"style\\\">Style</Label>\\n              <Select value={style} onValueChange={setStyle}>\\n                <SelectTrigger id=\\\"style\\\">\\n                  <SelectValue placeholder=\\\"Select style\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {VIDEO_STYLES.map((s) => (\\n                    <SelectItem key={s.value} value={s.value}>\\n                      {s.label}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"grid gap-6 lg:grid-cols-3\\\">\\n            <div className=\\\"space-y-4 lg:col-span-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"prompt\\\">Video Prompt</Label>\\n                <Textarea\\n                  id=\\\"prompt\\\"\\n                  placeholder=\\\"Describe the video you want to generate... (e.g., 'A drone shot flying over a futuristic city at sunset')\\\"\\n                  value={prompt}\\n                  onChange={(e) => setPrompt(e.target.value)}\\n                  rows={4}\\n                  disabled={!apiKey || isGenerating}\\n                />\\n              </div>\\n\\n              <Button\\n                onClick={handleGenerate}\\n                disabled={!prompt.trim() || !apiKey || isGenerating}\\n                className=\\\"w-full\\\"\\n                size=\\\"lg\\\"\\n              >\\n                {isGenerating ? (\\n                  <>\\n                    <Loader2 className=\\\"mr-2 h-5 w-5 animate-spin\\\" />\\n                    Generating Video...\\n                  </>\\n                ) : (\\n                  <>\\n                    <Sparkles className=\\\"mr-2 h-5 w-5\\\" />\\n                    Generate Video\\n                  </>\\n                )}\\n              </Button>\\n\\n              {isGenerating && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"pt-6\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <div className=\\\"flex items-center justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">\\n                          Processing video generation...\\n                        </span>\\n                        <span className=\\\"font-medium\\\">{progress}%</span>\\n                      </div>\\n                      <Progress value={progress} className=\\\"h-2\\\" />\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {selectedVideo && (\\n                <Card>\\n                  <CardHeader>\\n                    <div className=\\\"flex items-start justify-between\\\">\\n                      <div className=\\\"space-y-1\\\">\\n                        <CardTitle className=\\\"text-lg\\\">Preview</CardTitle>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">\\n                          {selectedVideo.prompt}\\n                        </p>\\n                      </div>\\n                      <div className=\\\"flex gap-2\\\">\\n                        <Badge variant=\\\"secondary\\\">\\n                          <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                          {selectedVideo.duration}s\\n                        </Badge>\\n                        <Badge variant=\\\"secondary\\\" className=\\\"capitalize\\\">\\n                          {selectedVideo.style}\\n                        </Badge>\\n                      </div>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"space-y-4\\\">\\n                    <div className=\\\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\\\">\\n                      <video\\n                        ref={videoRef}\\n                        src={selectedVideo.url}\\n                        className=\\\"h-full w-full\\\"\\n                        onPlay={() => setIsPlaying(true)}\\n                        onPause={() => setIsPlaying(false)}\\n                      />\\n                      <div className=\\\"absolute inset-0 flex items-center justify-center\\\">\\n                        <Button\\n                          size=\\\"lg\\\"\\n                          variant=\\\"secondary\\\"\\n                          onClick={togglePlayPause}\\n                          className=\\\"h-16 w-16 rounded-full\\\"\\n                        >\\n                          {isPlaying ? (\\n                            <Pause className=\\\"h-6 w-6\\\" />\\n                          ) : (\\n                            <Play className=\\\"h-6 w-6\\\" />\\n                          )}\\n                        </Button>\\n                      </div>\\n                    </div>\\n                    <div className=\\\"flex gap-2\\\">\\n                      <Button onClick={handleDownload} className=\\\"flex-1\\\">\\n                        <Download className=\\\"mr-2 h-4 w-4\\\" />\\n                        Download Video\\n                      </Button>\\n                      <Button\\n                        variant=\\\"outline\\\"\\n                        onClick={handleGenerate}\\n                        disabled={isGenerating}\\n                        className=\\\"flex-1\\\"\\n                      >\\n                        <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n                        Generate New\\n                      </Button>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              )}\\n\\n              {!apiKey && (\\n                <Card className=\\\"bg-muted/50\\\">\\n                  <CardContent className=\\\"flex flex-col items-center justify-center py-12\\\">\\n                    <FileVideo className=\\\"text-muted-foreground mb-4 h-12 w-12\\\" />\\n                    <p className=\\\"text-muted-foreground text-center text-sm\\\">\\n                      Please enter your API key to start generating videos\\n                    </p>\\n                  </CardContent>\\n                </Card>\\n              )}\\n            </div>\\n\\n            <div className=\\\"space-y-4\\\">\\n              <Card>\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-base\\\">Generated Videos</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"space-y-3\\\">\\n                  {generatedVideos.length === 0 ? (\\n                    <div className=\\\"text-muted-foreground py-8 text-center text-sm\\\">\\n                      No videos generated yet\\n                    </div>\\n                  ) : (\\n                    generatedVideos.map((video) => (\\n                      <Card\\n                        key={video.id}\\n                        className={`cursor-pointer transition-colors ${\\n                          selectedVideo?.id === video.id\\n                            ? \\\"border-primary\\\"\\n                            : \\\"hover:border-primary/50\\\"\\n                        }`}\\n                        onClick={() => setSelectedVideo(video)}\\n                      >\\n                        <CardContent className=\\\"p-3\\\">\\n                          <div className=\\\"relative mb-2 aspect-video overflow-hidden rounded\\\">\\n                            <img\\n                              src={video.thumbnail}\\n                              alt={video.prompt}\\n                              className=\\\"h-full w-full object-cover\\\"\\n                            />\\n                            <div className=\\\"absolute inset-0 flex items-center justify-center bg-black/30\\\">\\n                              <Play className=\\\"h-8 w-8 text-white\\\" />\\n                            </div>\\n                          </div>\\n                          <p className=\\\"line-clamp-2 text-xs\\\">{video.prompt}</p>\\n                          <div className=\\\"mt-2 flex items-center gap-2\\\">\\n                            <Badge variant=\\\"secondary\\\" className=\\\"text-xs\\\">\\n                              <Clock className=\\\"mr-1 h-3 w-3\\\" />\\n                              {video.duration}s\\n                            </Badge>\\n                          </div>\\n                        </CardContent>\\n                      </Card>\\n                    ))\\n                  )}\\n                </CardContent>\\n              </Card>\\n\\n              <Card className=\\\"bg-muted/50\\\">\\n                <CardHeader>\\n                  <CardTitle className=\\\"text-sm\\\">Tips</CardTitle>\\n                </CardHeader>\\n                <CardContent className=\\\"text-muted-foreground space-y-2 text-xs\\\">\\n                  <p>• Be specific and descriptive in your prompts</p>\\n                  <p>• Describe camera movements and angles</p>\\n                  <p>• Mention lighting and atmosphere</p>\\n                  <p>• Specify the mood and style you want</p>\\n                  <p>• Keep prompts under 500 characters</p>\\n                </CardContent>\\n              </Card>\\n            </div>\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/www/public/r/blog-cards-layout-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"blog-cards-layout-01\",\n  \"description\": \"Blog cards with view more button\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/blog-cards-layout-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowDown } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk and Figma looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Bolt launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape view\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project Escher\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366412874-3415097a27e7?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"22 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogCardsLayout01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-12 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Blog Posts</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-3 pb-0\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-56 w-full rounded-lg object-cover object-center\\\"\\n              />\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar className=\\\"h-8 w-8\\\">\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"flex flex-col\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-12 text-center\\\">\\n        <Button variant=\\\"ghost\\\">\\n          <ArrowDown className=\\\"mr-2 h-4 w-4\\\" />\\n          View More\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-cards-layout/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/blog-post-preview-tags-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"blog-post-preview-tags-01\",\n  \"description\": \"Blog posts with tags\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/blog-post-preview-tags-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Otto Gonzalez\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Ryan Samuel\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    category: \\\"Nora Hazel\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    tags: [\\\"Product\\\", \\\"Design\\\", \\\"UX\\\"],\\n  },\\n]\\n\\nexport default function BlogPostPreviewTags01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto mb-16 text-center\\\">\\n        <p className=\\\"text-primary mb-2 text-sm font-semibold\\\">\\n          Latest Blog Posts\\n        </p>\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Explore Our Places</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-3xl text-lg\\\">\\n          This is the paragraph where you can write more details about blogs.\\n          Keep you user engaged by providing meaningful information.\\n        </p>\\n      </div>\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, category, title, desc, tags }) => (\\n          <div key={title} className=\\\"space-y-6\\\">\\n            <div className=\\\"relative h-56 w-full overflow-hidden rounded-lg shadow-lg\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4\\\">\\n              <p className=\\\"text-primary text-sm font-semibold\\\">{category}</p>\\n              <h3 className=\\\"text-2xl font-bold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              {tags.map((tag) => (\\n                <Badge key={tag} variant=\\\"secondary\\\">\\n                  {tag}\\n                </Badge>\\n              ))}\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n      <div className=\\\"mt-24 text-center\\\">\\n        <Button>View More</Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-post-preview-tags/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/blog-rectangular-images-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"blog-rectangular-images-01\",\n  \"description\": \"Blog posts with rectangular images\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/blog-rectangular-images-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Enterprise\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"10 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Startups\\\",\\n    title: \\\"Lyft launching cross-platform service this week\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"12 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Nora Hazel\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Trending\\\",\\n    title: \\\"6 insights into the French Fashion landscape\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"16 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Lifestyle\\\",\\n    title: \\\"Autodesk looks to future of 3D printing with Project\\\",\\n    desc: \\\"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\\\",\\n    date: \\\"18 September 2022\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Ryan Samuel\\\",\\n    },\\n  },\\n]\\n\\nexport default function BlogRectangularImages01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container my-auto grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <div key={title} className=\\\"grid items-center gap-4 sm:grid-cols-2\\\">\\n            <div className=\\\"h-full max-h-72 overflow-hidden rounded-lg lg:max-h-full\\\">\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-4 p-2\\\">\\n              <Badge variant=\\\"secondary\\\">{tag}</Badge>\\n              <h3 className=\\\"text-xl font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n              <div className=\\\"mt-6 flex items-center gap-3 md:mt-8\\\">\\n                <Avatar>\\n                  <AvatarImage src={author.img} alt={author.name} />\\n                  <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex flex-col\\\">\\n                  <p className=\\\"mb-1 text-sm font-semibold\\\">{author.name}</p>\\n                  <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/blog-rectangular-images/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/breadcrumb.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"breadcrumb\",\n  \"files\": [\n    {\n      \"path\": \"components/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\\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        \\\"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words 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 : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"hover:text-foreground transition-colors\\\", 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(\\\"text-foreground font-normal\\\", 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/www/public/r/button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"button\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\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:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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        sm: \\\"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\\\",\\n        lg: \\\"h-10 rounded-md px-6 has-[>svg]:px-4\\\",\\n        icon: \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant,\\n  size,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\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  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/calendar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar\",\n  \"dependencies\": [\n    \"react-day-picker\",\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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 \\\"@/components/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:--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          \\\"flex gap-4 flex-col md:flex-row relative\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex flex-col w-full gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute bg-popover inset-0 opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"select-none font-medium\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>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 rounded-md flex-1 font-normal text-[0.8rem] select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"flex w-full mt-2\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"select-none w-(--cell-size)\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] select-none text-muted-foreground\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\\\",\\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          \\\"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.toISOString().split(\\\"T\\\")[0]}\\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 dark:hover:text-accent-foreground 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:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>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/www/public/r/card-blog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-blog\",\n  \"dependencies\": [\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/card-blog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardBlog() {\\n  return (\\n    <Card className=\\\"w-full max-w-md overflow-hidden\\\">\\n      <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n      <CardHeader>\\n        <div className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n          <Calendar className=\\\"h-4 w-4\\\" />\\n          <span>March 15, 2025</span>\\n          <span>•</span>\\n          <span>5 min read</span>\\n        </div>\\n        <CardTitle>Getting Started with Next.js</CardTitle>\\n        <CardDescription>\\n          Learn how to build modern web applications with Next.js, React, and\\n          TypeScript.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardFooter>\\n        <Button variant=\\\"ghost\\\">Read More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-demo\",\n  \"dependencies\": [\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/card-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardDemo() {\\n  return (\\n    <div className=\\\"grid w-full gap-6 md:grid-cols-2 lg:grid-cols-4\\\">\\n      {/* Plain Card */}\\n      <Card>\\n        <CardContent className=\\\"pt-6\\\">\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            This is a plain card with simple content. Perfect for displaying\\n            basic information.\\n          </p>\\n        </CardContent>\\n      </Card>\\n\\n      {/* Card with Title, Description, and Button */}\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Card Title</CardTitle>\\n          <CardDescription>\\n            This is a brief description of the card content.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            More detailed information goes here in the card content area.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\">Learn More</Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* Blog Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n        <CardHeader>\\n          <div className=\\\"text-muted-foreground flex items-center gap-2 text-xs\\\">\\n            <Calendar className=\\\"h-3 w-3\\\" />\\n            <span>Mar 15, 2025</span>\\n            <span>•</span>\\n            <span>5 min read</span>\\n          </div>\\n          <CardTitle className=\\\"text-lg\\\">\\n            Getting Started with Next.js\\n          </CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            Learn how to build modern web applications with Next.js, React, and\\n            TypeScript.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            Read More\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* E-commerce Product Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"relative\\\">\\n          <div className=\\\"aspect-square w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n          <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n        </div>\\n        <CardHeader>\\n          <CardTitle className=\\\"text-lg\\\">Premium Wireless</CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            High-quality audio with noise cancellation\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex items-center justify-between\\\">\\n            <div className=\\\"flex items-center gap-0.5\\\">\\n              {[...Array(4)].map((_, i) => (\\n                <Star\\n                  key={i}\\n                  className=\\\"h-3 w-3 fill-yellow-400 text-yellow-400\\\"\\n                />\\n              ))}\\n              <Star className=\\\"text-muted-foreground h-3 w-3\\\" />\\n              <span className=\\\"text-muted-foreground ml-1 text-xs\\\">(128)</span>\\n            </div>\\n            <div className=\\\"text-xl font-bold\\\">$299</div>\\n          </div>\\n        </CardContent>\\n        <CardFooter className=\\\"gap-2\\\">\\n          <Button className=\\\"flex-1\\\" size=\\\"sm\\\">\\n            <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n            Add to Cart\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <Heart className=\\\"h-4 w-4\\\" />\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/card-display-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-display-01\",\n  \"description\": \"Credit card display with dark and light themes\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/card-display-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Wifi } from \\\"lucide-react\\\"\\n\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\ninterface CreditCardProps {\\n  variant?: \\\"dark\\\" | \\\"light\\\"\\n  number: string\\n  holder: string\\n  expires: string\\n}\\n\\nfunction CreditCard({\\n  variant = \\\"light\\\",\\n  number,\\n  holder,\\n  expires,\\n}: CreditCardProps) {\\n  const isDark = variant === \\\"dark\\\"\\n\\n  return (\\n    <Card\\n      className={`group relative overflow-hidden transition-all duration-300 hover:scale-[1.02] hover:shadow-2xl ${\\n        isDark\\n          ? \\\"bg-black text-white\\\"\\n          : \\\"border-border/50 bg-white text-black shadow-lg\\\"\\n      }`}\\n    >\\n      <div className=\\\"absolute inset-0 bg-gradient-to-tr from-transparent via-white/5 to-white/10 opacity-0 transition-opacity duration-300 group-hover:opacity-100\\\" />\\n\\n      <div className=\\\"relative m-0 flex w-full items-center justify-between p-6\\\">\\n        <div\\n          className={`rounded-lg p-2 ${isDark ? \\\"bg-white/10\\\" : \\\"bg-gray-100\\\"}`}\\n        >\\n          <Wifi className=\\\"h-6 w-6\\\" />\\n        </div>\\n        <div\\n          className={`h-10 w-14 rounded ${isDark ? \\\"bg-gradient-to-br from-yellow-400 to-yellow-600\\\" : \\\"bg-gradient-to-br from-yellow-300 to-yellow-500\\\"}`}\\n        >\\n          <div className=\\\"h-full w-full rounded bg-gradient-to-tr from-transparent via-white/20 to-white/40\\\" />\\n        </div>\\n      </div>\\n\\n      <div className=\\\"relative px-6 py-4\\\">\\n        <p className=\\\"text-lg font-bold tracking-[0.2em]\\\">\\n          {String(number)\\n            .match(/.{1,4}/g)\\n            ?.join(\\\"  \\\")}\\n        </p>\\n      </div>\\n\\n      <div className=\\\"relative flex items-end justify-between gap-6 p-6 pt-2\\\">\\n        <div className=\\\"flex gap-6\\\">\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Card Holder\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{holder}</p>\\n          </div>\\n          <div className=\\\"space-y-1\\\">\\n            <p\\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \\\"text-gray-400\\\" : \\\"text-gray-500\\\"}`}\\n            >\\n              Expires\\n            </p>\\n            <p className=\\\"text-sm font-bold\\\">{expires}</p>\\n          </div>\\n        </div>\\n        <div className=\\\"flex items-center\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n            alt=\\\"mastercard logo\\\"\\n            className=\\\"h-10 w-auto transition-transform group-hover:scale-110\\\"\\n          />\\n        </div>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function CardDisplay01() {\\n  return (\\n    <div className=\\\"mx-auto grid max-w-5xl grid-cols-1 gap-8 p-6 md:grid-cols-2\\\">\\n      <CreditCard\\n        variant=\\\"dark\\\"\\n        expires=\\\"10/25\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245947852\\\"\\n      />\\n      <CreditCard\\n        variant=\\\"light\\\"\\n        expires=\\\"10/26\\\"\\n        holder=\\\"Jack Peterson\\\"\\n        number=\\\"4562112245948844\\\"\\n      />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/card-display/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"400px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\"\n  },\n  \"categories\": [\n    \"billing\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/card-ecommerce.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-ecommerce\",\n  \"dependencies\": [\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/card-ecommerce.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardEcommerce() {\\n  return (\\n    <Card className=\\\"w-full max-w-sm overflow-hidden\\\">\\n      <div className=\\\"relative\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n        <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n      </div>\\n      <CardHeader>\\n        <CardTitle>Premium Wireless Headphones</CardTitle>\\n        <CardDescription>\\n          High-quality audio with active noise cancellation\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <div className=\\\"flex items-center gap-1\\\">\\n            {[...Array(4)].map((_, i) => (\\n              <Star\\n                key={i}\\n                className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n              />\\n            ))}\\n            <Star className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"text-muted-foreground text-sm\\\">(128)</span>\\n          </div>\\n          <div className=\\\"text-2xl font-bold\\\">$299</div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"gap-2\\\">\\n        <Button className=\\\"flex-1\\\">\\n          <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n          Add to Cart\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Heart className=\\\"h-4 w-4\\\" />\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/card-plain.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-plain\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/card-plain.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function CardPlain() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardContent className=\\\"pt-6\\\">\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          This is a plain card with simple content. Perfect for displaying basic\\n          information.\\n        </p>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/card-with-button.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card-with-button\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/card-with-button.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardWithButton() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Card Title</CardTitle>\\n        <CardDescription>\\n          This is a brief description of the card content.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          More detailed information goes here in the card content area.\\n        </p>\\n      </CardContent>\\n      <CardFooter>\\n        <Button>Learn More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"card\",\n  \"files\": [\n    {\n      \"path\": \"components/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        \\\"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 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-muted-foreground text-sm\\\", 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/www/public/r/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\": \"components/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 \\\"@/components/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/www/public/r/chart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart\",\n  \"dependencies\": [\n    \"recharts\",\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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          \\\"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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        \\\"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border 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                  \\\"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\\\",\\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=\\\"text-foreground font-mono font-medium 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                \\\"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\\\"\\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/www/public/r/checkbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkbox\",\n  \"dependencies\": [\n    \"@radix-ui/react-checkbox\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/checkbox.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as CheckboxPrimitive from \\\"@radix-ui/react-checkbox\\\"\\nimport { CheckIcon } from \\\"lucide-react\\\"\\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 border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"flex items-center justify-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/www/public/r/checkout-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"checkout-01\",\n  \"description\": \"Checkout form with order summary\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"input\",\n    \"label\",\n    \"badge\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/checkout-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  CreditCard,\\n  Lock,\\n  Mail,\\n  MapPin,\\n  Package,\\n  ShoppingBag,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    title: \\\"Classic Suit\\\",\\n    description: \\\"Silk\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$1,300\\\",\\n    quantity: 1,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    title: \\\"Premium Suit\\\",\\n    description: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    price: \\\"$790\\\",\\n    quantity: 1,\\n  },\\n]\\n\\nconst PRICE_OPTIONS = [\\n  { value: \\\"Subtotal\\\", price: \\\"$2,090\\\" },\\n  { value: \\\"Shipping estimate\\\", price: \\\"$0\\\" },\\n  { value: \\\"Tax estimate\\\", price: \\\"$5\\\" },\\n]\\n\\nexport default function Checkout01() {\\n  return (\\n    <section className=\\\"container mx-auto px-4 py-12\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"mb-8\\\">\\n          <h1 className=\\\"text-3xl font-bold\\\">Checkout</h1>\\n          <p className=\\\"text-muted-foreground mt-2\\\">\\n            Complete your order by providing your payment details\\n          </p>\\n        </div>\\n\\n        <div className=\\\"rounded-2xl border bg-white p-6 shadow-lg md:p-8 lg:p-12 dark:bg-gray-950\\\">\\n          <div className=\\\"grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n            <div className=\\\"space-y-8\\\">\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Contact</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      We'll send order updates here\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"email\\\">Email Address</Label>\\n                  <Input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"you@example.com\\\"\\n                    className=\\\"h-11\\\"\\n                  />\\n                </div>\\n                <div className=\\\"flex items-start gap-2\\\">\\n                  <Checkbox id=\\\"terms\\\" className=\\\"mt-1\\\" />\\n                  <Label\\n                    htmlFor=\\\"terms\\\"\\n                    className=\\\"text-muted-foreground text-sm leading-relaxed\\\"\\n                  >\\n                    I agree to the{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Terms & Conditions\\n                    </a>{\\\" \\\"}\\n                    and{\\\" \\\"}\\n                    <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                      Privacy Policy\\n                    </a>\\n                  </Label>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div>\\n                    <h3 className=\\\"text-lg font-semibold\\\">Shipping Address</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Where should we deliver your order?\\n                    </p>\\n                  </div>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"address\\\">Street Address</Label>\\n                    <Input\\n                      id=\\\"address\\\"\\n                      placeholder=\\\"123 Main Street\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-3\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"city\\\">City</Label>\\n                      <Input\\n                        id=\\\"city\\\"\\n                        placeholder=\\\"New York\\\"\\n                        className=\\\"h-11\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"postal\\\">Postal Code</Label>\\n                      <Input id=\\\"postal\\\" placeholder=\\\"10001\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"country\\\">Country</Label>\\n                      <Input id=\\\"country\\\" placeholder=\\\"USA\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator />\\n\\n              <div className=\\\"space-y-6\\\">\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <CreditCard className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"flex-1\\\">\\n                    <h3 className=\\\"text-lg font-semibold\\\">Payment Details</h3>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Your payment information is secure\\n                    </p>\\n                  </div>\\n                  <Badge\\n                    variant=\\\"outline\\\"\\n                    className=\\\"gap-1 border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                  >\\n                    <Lock className=\\\"h-3 w-3\\\" />\\n                    Secure\\n                  </Badge>\\n                </div>\\n                <div className=\\\"space-y-4\\\">\\n                  <div className=\\\"space-y-2\\\">\\n                    <Label htmlFor=\\\"card\\\">Card Number</Label>\\n                    <Input\\n                      id=\\\"card\\\"\\n                      placeholder=\\\"1234 5678 9012 3456\\\"\\n                      className=\\\"h-11\\\"\\n                    />\\n                  </div>\\n                  <div className=\\\"grid gap-4 sm:grid-cols-2\\\">\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"expiry\\\">Expiration Date</Label>\\n                      <Input id=\\\"expiry\\\" placeholder=\\\"MM/YY\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                    <div className=\\\"space-y-2\\\">\\n                      <Label htmlFor=\\\"cvv\\\">CVV</Label>\\n                      <Input id=\\\"cvv\\\" placeholder=\\\"123\\\" className=\\\"h-11\\\" />\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Button className=\\\"mt-4 h-12 w-full text-base\\\" size=\\\"lg\\\">\\n                <Lock className=\\\"mr-2 h-4 w-4\\\" />\\n                Place Order - $2,095\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"lg:sticky lg:top-8 lg:h-fit\\\">\\n              <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                  <div className=\\\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\\\">\\n                    <ShoppingBag className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <h2 className=\\\"text-xl font-bold\\\">Order Summary</h2>\\n                </div>\\n\\n                <div className=\\\"space-y-4\\\">\\n                  {OPTIONS.map(\\n                    (\\n                      { image, title, description, size, price, quantity },\\n                      index\\n                    ) => (\\n                      <div\\n                        key={index}\\n                        className=\\\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\\\"\\n                      >\\n                        <div className=\\\"relative h-20 w-20 overflow-hidden rounded-md border\\\">\\n                          <img\\n                            src={image}\\n                            alt={title}\\n                            className=\\\"h-full w-full object-cover p-1\\\"\\n                          />\\n                        </div>\\n                        <div className=\\\"flex-1 space-y-1\\\">\\n                          <p className=\\\"leading-tight font-semibold\\\">{title}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {description} · Size {size}\\n                          </p>\\n                          <p className=\\\"text-muted-foreground text-xs\\\">\\n                            Qty: {quantity}\\n                          </p>\\n                        </div>\\n                        <p className=\\\"font-semibold\\\">{price}</p>\\n                      </div>\\n                    )\\n                  )}\\n                </div>\\n\\n                <Separator className=\\\"my-6\\\" />\\n\\n                <div className=\\\"space-y-3\\\">\\n                  {PRICE_OPTIONS.map(({ value, price }) => (\\n                    <div key={value} className=\\\"flex justify-between text-sm\\\">\\n                      <span className=\\\"text-muted-foreground\\\">{value}</span>\\n                      <span className=\\\"font-medium\\\">{price}</span>\\n                    </div>\\n                  ))}\\n                </div>\\n\\n                <Separator className=\\\"my-4\\\" />\\n\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <span className=\\\"text-lg font-bold\\\">Total</span>\\n                  <span className=\\\"text-2xl font-bold\\\">$2,095</span>\\n                </div>\\n\\n                <div className=\\\"bg-muted/50 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                  <Package className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                  <div className=\\\"space-y-1\\\">\\n                    <p className=\\\"text-sm font-medium\\\">Free Shipping</p>\\n                    <p className=\\\"text-muted-foreground text-xs\\\">\\n                      Your order qualifies for free standard shipping\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/checkout/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/collapsible.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"collapsible\",\n  \"dependencies\": [\n    \"@radix-ui/react-collapsible\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/collapsible.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as CollapsiblePrimitive from \\\"@radix-ui/react-collapsible\\\"\\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/www/public/r/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\": \"components/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 \\\"@/components/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        \\\"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\\\",\\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=\\\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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          \\\"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden 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        \\\"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        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(\\\"bg-border -mx-1 h-px\\\", 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        \\\"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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/www/public/r/complex-product-description-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"complex-product-description-01\",\n  \"description\": \"Product description with accordion\",\n  \"registryDependencies\": [\n    \"accordion\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/complex-product-description-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, RefreshCw, Shield, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-4.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Package, text: \\\"Premium quality materials\\\" },\\n  { icon: Truck, text: \\\"Free shipping on orders $100+\\\" },\\n  { icon: RefreshCw, text: \\\"30-day return policy\\\" },\\n  { icon: Shield, text: \\\"2-year warranty included\\\" },\\n]\\n\\nconst ACCORDION_DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"Features\\\",\\n    desc: \\\"This premium coat is crafted from weather-resistant fabric with advanced Gore-Tex technology, ensuring you stay dry and comfortable in all conditions. Features include adjustable cuffs, reinforced seams, and breathable lining.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"Product Care\\\",\\n    desc: \\\"Machine wash cold with like colors. Use mild detergent and avoid bleach. Tumble dry on low heat or hang to dry. For best results, store in a cool, dry place and avoid direct sunlight to maintain color and fabric integrity.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"Shipping & Returns\\\",\\n    desc: \\\"Free standard shipping on orders over $100. Express shipping available at checkout. We offer a 30-day return policy with free returns. Items must be unworn, unwashed, and in original packaging with tags attached.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Warranty\\\",\\n    desc: \\\"All our products come with a comprehensive 2-year warranty covering manufacturing defects. This includes issues with stitching, zippers, and fabric quality. Contact our customer service for warranty claims and support.\\\",\\n  },\\n]\\n\\nexport default function ComplexProductDescription01() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(0)\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div className=\\\"flex flex-col-reverse lg:flex-row lg:gap-4\\\">\\n            <div className=\\\"mt-4 flex gap-2 lg:mt-0 lg:flex-col\\\">\\n              {IMAGES.map((img, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setSelectedImage(index)}\\n                  className={`h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg border-2 transition-all ${\\n                    selectedImage === index\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={img}\\n                    alt={`Product view ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex-1\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={IMAGES[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              New Arrival\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,490.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Experience unparalleled comfort and style with our premium winter\\n              coat. Meticulously crafted with attention to detail, this coat\\n              features weather-resistant fabric and a timeless design that\\n              complements any wardrobe. Perfect for both casual and formal\\n              occasions.\\n            </p>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {COLORS[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {COLORS.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Size: <span className=\\\"font-normal\\\">{selectedSize}</span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <button\\n                    key={size}\\n                    onClick={() => setSelectedSize(size)}\\n                    className={`flex h-10 w-12 items-center justify-center rounded-md border-2 text-sm font-medium transition-all ${\\n                      selectedSize === size\\n                        ? \\\"border-neutral-900 bg-neutral-900 text-white\\\"\\n                        : \\\"border-neutral-200 bg-white text-neutral-900 hover:border-neutral-400\\\"\\n                    }`}\\n                  >\\n                    {size}\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-3 sm:grid-cols-2\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4 flex-shrink-0\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <Accordion\\n              type=\\\"single\\\"\\n              defaultValue=\\\"one\\\"\\n              collapsible\\n              className=\\\"w-full border-t border-neutral-200\\\"\\n            >\\n              {ACCORDION_DATA.map(({ value, title, desc }) => (\\n                <AccordionItem key={value} value={value}>\\n                  <AccordionTrigger className=\\\"text-sm font-medium text-neutral-900 hover:text-neutral-600\\\">\\n                    {title}\\n                  </AccordionTrigger>\\n                  <AccordionContent className=\\\"text-sm leading-relaxed text-neutral-600\\\">\\n                    {desc}\\n                  </AccordionContent>\\n                </AccordionItem>\\n              ))}\\n            </Accordion>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/complex-product-description/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-01\",\n  \"description\": \"Simple contact form with contact info\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"checkbox\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone, Ticket } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto lg:max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get in Touch</h2>\\n          <p className=\\\"text-muted-foreground text-lg lg:max-w-lg\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          <div className=\\\"mt-14 space-y-4\\\">\\n            {OPTIONS.map(({ icon: Icon, info }, key) => (\\n              <div key={key} className=\\\"flex items-center gap-4\\\">\\n                <Icon className=\\\"h-5 w-5\\\" />\\n                <span>{info}</span>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-02\",\n  \"description\": \"Contact form with image background\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections02() {\\n  return (\\n    <section className=\\\"grid min-h-screen w-full grid-cols-1 items-center md:grid-cols-2\\\">\\n      <div className=\\\"p-6 sm:p-12 lg:p-16\\\">\\n        <div className=\\\"mb-10\\\">\\n          <h2 className=\\\"my-4 text-3xl font-bold\\\">Contact us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            Whether you have questions or you would just like to say hello,\\n            contact us.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n              <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n              <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Email Address</Label>\\n            <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"someone@example.com\\\" />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n            <Input\\n              id=\\\"phone\\\"\\n              type=\\\"tel\\\"\\n              maxLength={16}\\n              placeholder=\\\"e.g., +1 123-456-7890\\\"\\n              pattern=\\\"^\\\\+\\\\d{1,3}\\\\s\\\\d{1,4}-\\\\d{1,4}-\\\\d{4}$\\\"\\n            />\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Something about your request.\\\"\\n            />\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Checkbox id=\\\"privacy-policy\\\" />\\n            <Label\\n              htmlFor=\\\"privacy-policy\\\"\\n              className=\\\"cursor-pointer text-sm font-normal\\\"\\n            >\\n              You agree to your friendly{\\\" \\\"}\\n              <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                Privacy Policy\\n              </a>\\n            </Label>\\n          </div>\\n          <Button className=\\\"w-full\\\">Send Message</Button>\\n        </form>\\n      </div>\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1658246944389-9e9ac0a85dda?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1064\\\"\\n        alt=\\\"contact\\\"\\n        className=\\\"hidden h-full w-full object-cover object-center md:block\\\"\\n      />\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-03\",\n  \"description\": \"Contact form with dark info panel\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nexport default function ContactSections03() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-4xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-8 shadow-xl lg:grid-cols-2 lg:p-10\\\">\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\" className=\\\"text-base\\\">\\n                  First Name\\n                </Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" className=\\\"h-11\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\" className=\\\"text-base\\\">\\n                  Last Name\\n                </Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" className=\\\"h-11\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\" className=\\\"text-base\\\">\\n                Email Address\\n              </Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"h-11\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-base\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n                rows={5}\\n                className=\\\"resize-none\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full sm:w-auto sm:min-w-[150px]\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"flex flex-col justify-between rounded-xl bg-gradient-to-br from-gray-900 to-black p-8 lg:p-12\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h3>\\n              <p className=\\\"mb-12 max-w-lg text-gray-300\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              <div className=\\\"space-y-6\\\">\\n                {DATA.map(({ icon: Icon, info }, key) => (\\n                  <div key={key} className=\\\"flex items-center gap-4\\\">\\n                    <div className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10\\\">\\n                      <Icon className=\\\"h-5 w-5 text-white\\\" />\\n                    </div>\\n                    <span className=\\\"text-gray-200\\\">{info}</span>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"mt-12 flex items-center gap-6\\\">\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Linkedin className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Dribbble className=\\\"h-5 w-5\\\" />\\n              </a>\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\\\"\\n              >\\n                <Facebook className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-04\",\n  \"description\": \"Minimalist contact with icon cards\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone, User } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: User,\\n    title: \\\"Contact\\\",\\n    description: \\\"Andrew Samian\\\",\\n  },\\n]\\n\\nexport default function ContactSections04() {\\n  return (\\n    <section className=\\\"relative min-h-[70vh] w-full bg-cover bg-center\\\">\\n      <img\\n        src=\\\"https://images.unsplash.com/photo-1635700193352-80564c35434c?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2532\\\"\\n        alt=\\\"Background\\\"\\n        className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n      />\\n      <div className=\\\"absolute inset-0 bg-black/50\\\" />\\n      <div className=\\\"relative flex min-h-[70vh] flex-col items-center justify-center px-4 py-16 text-center\\\">\\n        <h2 className=\\\"mb-6 text-5xl font-bold text-white\\\">Got a Question?</h2>\\n        <p className=\\\"mx-auto mb-12 max-w-xl text-xl text-white/80\\\">\\n          We'd like to talk more about what you need\\n        </p>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-12 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {OPTIONS.map(({ icon: Icon, title, description }, key) => (\\n            <div\\n              key={key}\\n              className=\\\"group text-center transition-transform hover:scale-105\\\"\\n            >\\n              <div className=\\\"mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-xl bg-white/10 shadow-lg transition-all group-hover:bg-white/20 group-hover:shadow-xl\\\">\\n                <Icon className=\\\"h-8 w-8 text-white\\\" />\\n              </div>\\n              <p className=\\\"mb-2 text-xl font-bold text-white\\\">{title}</p>\\n              <p className=\\\"text-base text-gray-300\\\">{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-04/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-05\",\n  \"description\": \"Contact form with map and option selection\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\\"General Inquiry\\\", \\\"Product Support\\\"]\\n\\nexport default function ContactSections05() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"bg-white py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"secondary\\\">Customer Care</Badge>\\n          <h2 className=\\\"mt-8 mb-4 text-3xl font-bold\\\">\\n            We&apos;re Here to Help\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether it&apos;s a question about our services, a request for\\n            technical assistance, or suggestions for improvement, our team is\\n            eager to hear from you.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-x-16 gap-y-10 lg:grid-cols-2\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070\\\"\\n            alt=\\\"Contact\\\"\\n            className=\\\"h-full min-h-[400px] w-full rounded-2xl object-cover\\\"\\n          />\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"mx-auto max-w-lg space-y-6 lg:mx-0 lg:py-2\\\"\\n          >\\n            <div className=\\\"space-y-4\\\">\\n              <Label>Select Options for Business Engagement</Label>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {OPTIONS.map((option) => (\\n                  <Button\\n                    key={option}\\n                    type=\\\"button\\\"\\n                    variant={selectedOption === option ? \\\"default\\\" : \\\"outline\\\"}\\n                    onClick={() =>\\n                      setSelectedOption((cur) => (cur === option ? \\\"\\\" : option))\\n                    }\\n                  >\\n                    {option}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-05/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-06\",\n  \"description\": \"Centered contact with circular icon badges\",\n  \"registryDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Address\\\",\\n    subTitle: \\\"Find us at the office\\\",\\n    description: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email\\\",\\n    subTitle: \\\"Send us your feedback\\\",\\n    description: \\\"hello@email.com\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Phone\\\",\\n    subTitle: \\\"Give us a ring\\\",\\n    description: \\\"+1 (424) 535-3523\\\",\\n  },\\n]\\n\\nexport default function ContactSections06() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <span className=\\\"text-primary block text-sm font-semibold\\\">\\n            Contact Us\\n          </span>\\n          <h2 className=\\\"my-4 text-center text-3xl font-bold\\\">\\n            Got a Question?\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            We&apos;d like to talk more about what you need\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-16 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {OPTIONS.map(({ icon: Icon, title, subTitle, description }, key) => (\\n            <div key={key} className=\\\"text-center\\\">\\n              <div className=\\\"bg-primary mx-auto mb-6 grid h-14 w-14 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n              </div>\\n              <p className=\\\"text-lg font-semibold\\\">{title}</p>\\n              <p className=\\\"text-muted-foreground my-3 block\\\">{subTitle}</p>\\n              <p>{description}</p>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-06/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-07\",\n  \"description\": \"Contact form with office location details\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"checkbox\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections07() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\\\">\\n        <Card className=\\\"mx-auto p-6 lg:max-w-lg lg:p-12\\\">\\n          <h3 className=\\\"mb-2 text-2xl font-semibold\\\">Contact us</h3>\\n          <p className=\\\"text-muted-foreground mb-6\\\">\\n            We'd love to hear from you.\\n          </p>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n        <div className=\\\"mx-auto space-y-10 lg:max-w-lg\\\">\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"flex gap-4\\\">\\n              <div className=\\\"shrink-0\\\">\\n                <Icon className=\\\"h-6 w-6\\\" />\\n              </div>\\n              <div>\\n                <h4 className=\\\"mb-2 font-semibold\\\">{title}</h4>\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-muted-foreground\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-07/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-08\",\n  \"description\": \"Contact form with area of interest selection\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"radio-group\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Dribbble,\\n  Facebook,\\n  Linkedin,\\n  Mail,\\n  Phone,\\n  Ticket,\\n  Twitter,\\n} from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Ticket,\\n    info: \\\"Open Support Ticket\\\",\\n  },\\n]\\n\\nconst OPTIONS = [\\\"Design\\\", \\\"Development\\\", \\\"Support\\\", \\\"Other\\\"]\\n\\nexport default function ContactSections08() {\\n  const [selectedOption, setSelectedOption] = useState(\\\"\\\")\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">Contact Us</h2>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\\\">\\n            Any questions or remarks? Just write us a message!\\n          </p>\\n        </div>\\n        <Card className=\\\"grid grid-cols-1 gap-10 rounded-2xl p-4 lg:grid-cols-2 lg:p-6\\\">\\n          <div className=\\\"grid rounded-lg bg-black p-8 lg:place-items-center lg:p-16\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-2xl font-bold text-white\\\">\\n                Contact Information\\n              </h2>\\n              <p className=\\\"mb-16 max-w-lg text-gray-400\\\">\\n                Fill up the form and our Team will get back to you within 24\\n                hours.\\n              </p>\\n              {DATA.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"mb-4 flex items-center gap-4\\\">\\n                  <Icon className=\\\"h-5 w-5 text-gray-400\\\" />\\n                  <span className=\\\"text-gray-400\\\">{info}</span>\\n                </div>\\n              ))}\\n              <div className=\\\"mt-12 flex items-center gap-6\\\">\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Twitter className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Linkedin className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Dribbble className=\\\"h-6 w-6\\\" />\\n                </a>\\n                <a href=\\\"#\\\" className=\\\"text-gray-400 hover:text-white\\\">\\n                  <Facebook className=\\\"h-6 w-6\\\" />\\n                </a>\\n              </div>\\n            </div>\\n          </div>\\n          <form action=\\\"#\\\" className=\\\"space-y-6 px-2 py-0 lg:py-2\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label>Area of Interest</Label>\\n              <RadioGroup\\n                value={selectedOption}\\n                onValueChange={setSelectedOption}\\n              >\\n                <div className=\\\"grid grid-cols-2 gap-4\\\">\\n                  {OPTIONS.map((option) => (\\n                    <div key={option} className=\\\"flex items-center space-x-2\\\">\\n                      <RadioGroupItem value={option} id={option} />\\n                      <Label\\n                        htmlFor={option}\\n                        className=\\\"cursor-pointer font-normal\\\"\\n                      >\\n                        {option}\\n                      </Label>\\n                    </div>\\n                  ))}\\n                </div>\\n              </RadioGroup>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <Button className=\\\"ml-auto flex max-w-fit\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-08/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-09\",\n  \"description\": \"Dark background contact with detailed info\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"checkbox\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst DATA = [\\n  {\\n    icon: Mail,\\n    title: \\\"Find us at the office\\\",\\n    options: [\\\"Bld Mihail Kogalniceanu, nr. 8,\\\", \\\"7652 Bucharest,\\\", \\\"Romania\\\"],\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"+1(424) 535 3523\\\",\\n    options: [\\\"Michael Jordan\\\", \\\"+40 762 321 762\\\", \\\"Mon - Fri, 8:00-22:00\\\"],\\n  },\\n]\\n\\nexport default function ContactSections09() {\\n  return (\\n    <section className=\\\"p-6\\\">\\n      <div className=\\\"grid items-center gap-6 rounded-xl bg-black p-4 lg:grid-cols-2 lg:p-8\\\">\\n        <div className=\\\"p-8 lg:mx-auto lg:max-w-lg lg:p-0\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white\\\">Get in Touch</h2>\\n          <p className=\\\"text-lg text-white lg:max-w-xl\\\">\\n            You need more information? Check what other persons are saying about\\n            our product. They are very happy with their purchase.\\n          </p>\\n          {DATA.map(({ icon: Icon, title, options }, key) => (\\n            <div key={key} className=\\\"mt-12\\\">\\n              <div className=\\\"mb-6 flex items-center gap-3\\\">\\n                <Icon className=\\\"h-7 w-7 text-white\\\" />\\n                <h4 className=\\\"text-lg font-semibold text-white\\\">{title}</h4>\\n              </div>\\n              <div className=\\\"ml-10 space-y-2\\\">\\n                {options.map((option, idx) => (\\n                  <p key={idx} className=\\\"text-white\\\">\\n                    {option}\\n                  </p>\\n                ))}\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n        <Card className=\\\"p-6 lg:p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Contact us</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Something about your request.\\\"\\n              />\\n            </div>\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Checkbox id=\\\"privacy-policy\\\" />\\n              <Label\\n                htmlFor=\\\"privacy-policy\\\"\\n                className=\\\"cursor-pointer text-sm font-normal\\\"\\n              >\\n                You agree to your friendly{\\\" \\\"}\\n                <a href=\\\"#\\\" className=\\\"text-primary hover:underline\\\">\\n                  Privacy Policy\\n                </a>\\n              </Label>\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-09/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-10\",\n  \"description\": \"Contact form with info cards\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst OPTIONS = [\\n  {\\n    icon: MapPin,\\n    info: \\\"12124 First Street, nr 54\\\",\\n  },\\n  {\\n    icon: Phone,\\n    info: \\\"+1(424) 535 3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    info: \\\"hello@mail.com\\\",\\n  },\\n]\\n\\nexport default function ContactSections10() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"mb-16 text-center text-3xl font-bold\\\">Contact Us</h2>\\n        <div className=\\\"grid grid-cols-1 gap-10 lg:grid-cols-2\\\">\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-semibold\\\">Send us a message</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                  <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n                </div>\\n                <div className=\\\"space-y-2\\\">\\n                  <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                  <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n                </div>\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 123-456-7890\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"message\\\">Message</Label>\\n                <Textarea\\n                  id=\\\"message\\\"\\n                  placeholder=\\\"Write your message here...\\\"\\n                />\\n              </div>\\n              <Button className=\\\"w-full\\\">Send Message</Button>\\n            </form>\\n          </Card>\\n          <div className=\\\"space-y-8\\\">\\n            <div>\\n              <h3 className=\\\"mb-4 text-2xl font-semibold\\\">Get in touch</h3>\\n              <p className=\\\"text-muted-foreground\\\">\\n                We&apos;re here to help and answer any question you might have.\\n                We look forward to hearing from you.\\n              </p>\\n            </div>\\n            <div className=\\\"space-y-6\\\">\\n              {OPTIONS.map(({ icon: Icon, info }, key) => (\\n                <div key={key} className=\\\"flex items-start gap-4\\\">\\n                  <div className=\\\"bg-primary/10 grid h-10 w-10 shrink-0 place-items-center rounded-lg\\\">\\n                    <Icon className=\\\"text-primary h-5 w-5\\\" />\\n                  </div>\\n                  <div className=\\\"pt-2\\\">\\n                    <p className=\\\"font-medium\\\">{info}</p>\\n                  </div>\\n                </div>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-10/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-11\",\n  \"description\": \"Dark gradient contact form with backdrop blur\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Mail, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections11() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-gradient-to-br from-stone-900 to-stone-800 py-16 text-white\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Get In Touch</h2>\\n          <p className=\\\"mx-auto max-w-2xl text-stone-300\\\">\\n            Have a question or want to work together? Leave your details and\\n            we'll get back to you as soon as possible.\\n          </p>\\n        </div>\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"space-y-6 rounded-2xl bg-white/10 p-8 backdrop-blur-sm\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"text-white\\\">\\n                  Name\\n                </Label>\\n                <Input\\n                  id=\\\"name\\\"\\n                  placeholder=\\\"Your name\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\" className=\\\"text-white\\\">\\n                  Email\\n                </Label>\\n                <Input\\n                  id=\\\"email\\\"\\n                  type=\\\"email\\\"\\n                  placeholder=\\\"your@email.com\\\"\\n                  className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n                />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\" className=\\\"text-white\\\">\\n                Subject\\n              </Label>\\n              <Input\\n                id=\\\"subject\\\"\\n                placeholder=\\\"How can we help?\\\"\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\" className=\\\"text-white\\\">\\n                Message\\n              </Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Your message...\\\"\\n                rows={6}\\n                className=\\\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\\\"\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Send Message\\n            </Button>\\n          </form>\\n          <div className=\\\"mt-12 flex justify-center gap-12\\\">\\n            <div className=\\\"text-center\\\">\\n              <Phone className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">+1 (424) 535-3523</p>\\n            </div>\\n            <div className=\\\"text-center\\\">\\n              <Mail className=\\\"mx-auto mb-2 h-6 w-6\\\" />\\n              <p className=\\\"text-sm text-stone-300\\\">hello@mail.com</p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-11/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-12\",\n  \"description\": \"Contact form with background image overlay\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections12() {\\n  return (\\n    <section className=\\\"relative flex min-h-screen items-center py-20\\\">\\n      <div\\n        className=\\\"absolute inset-0 bg-cover bg-center opacity-20\\\"\\n        style={{\\n          backgroundImage:\\n            \\\"url('https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop')\\\",\\n        }}\\n      />\\n      <div className=\\\"relative z-10 container mx-auto\\\">\\n        <div className=\\\"mx-auto max-w-2xl\\\">\\n          <div className=\\\"mb-12 text-center\\\">\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">Let's Talk</h2>\\n            <p className=\\\"text-muted-foreground text-lg\\\">\\n              Fill out the form below and we'll be in touch shortly.\\n            </p>\\n          </div>\\n          <form\\n            action=\\\"#\\\"\\n            className=\\\"bg-card space-y-6 rounded-2xl p-8 shadow-xl\\\"\\n          >\\n            <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"first-name\\\">First Name</Label>\\n                <Input id=\\\"first-name\\\" placeholder=\\\"John\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"last-name\\\">Last Name</Label>\\n                <Input id=\\\"last-name\\\" placeholder=\\\"Doe\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email</Label>\\n              <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"company\\\">Company</Label>\\n              <Input id=\\\"company\\\" placeholder=\\\"Your Company\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">How can we help?</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"Tell us about your project...\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\" size=\\\"lg\\\">\\n              Submit\\n            </Button>\\n          </form>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-12/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-13\",\n  \"description\": \"Contact information cards with form\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Clock, Mail, MapPin, Phone } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nconst CONTACT_INFO = [\\n  {\\n    icon: MapPin,\\n    title: \\\"Visit us\\\",\\n    info: \\\"123 Main Street, New York, NY 10001\\\",\\n  },\\n  {\\n    icon: Phone,\\n    title: \\\"Call us\\\",\\n    info: \\\"+1 (424) 535-3523\\\",\\n  },\\n  {\\n    icon: Mail,\\n    title: \\\"Email us\\\",\\n    info: \\\"hello@mail.com\\\",\\n  },\\n  {\\n    icon: Clock,\\n    title: \\\"Working hours\\\",\\n    info: \\\"Mon - Fri, 9:00 AM - 6:00 PM\\\",\\n  },\\n]\\n\\nexport default function ContactSections13() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Contact Information</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            We're here to answer any questions you may have about our services.\\n            Reach out to us and we'll respond as soon as we can.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {CONTACT_INFO.map(({ icon: Icon, title, info }, key) => (\\n            <Card key={key} className=\\\"p-6 text-center\\\">\\n              <div className=\\\"bg-primary/10 mx-auto mb-4 grid h-12 w-12 place-items-center rounded-full\\\">\\n                <Icon className=\\\"text-primary h-6 w-6\\\" />\\n              </div>\\n              <h3 className=\\\"mb-2 font-semibold\\\">{title}</h3>\\n              <p className=\\\"text-muted-foreground text-sm\\\">{info}</p>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"mx-auto max-w-2xl p-8\\\">\\n          <h3 className=\\\"mb-6 text-2xl font-bold\\\">Send us a message</h3>\\n          <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"your@email.com\\\" />\\n              </div>\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"message\\\">Message</Label>\\n              <Textarea\\n                id=\\\"message\\\"\\n                placeholder=\\\"How can we help you?\\\"\\n                rows={5}\\n              />\\n            </div>\\n            <Button className=\\\"w-full\\\">Send Message</Button>\\n          </form>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-13/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-14\",\n  \"description\": \"Gradient background contact form with asterisk fields\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Send } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ContactSections14() {\\n  return (\\n    <section className=\\\"from-background to-muted/20 bg-gradient-to-b py-20\\\">\\n      <div className=\\\"container mx-auto max-w-4xl\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <span className=\\\"text-primary text-sm font-semibold\\\">\\n            GET IN TOUCH\\n          </span>\\n          <h2 className=\\\"mt-2 mb-4 text-4xl font-bold\\\">\\n            We'd Love to Hear From You\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Whether you have a question about features, pricing, or anything\\n            else, our team is ready to answer all your questions.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-8\\\">\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"name\\\">Full Name *</Label>\\n              <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" required />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"email\\\">Email Address *</Label>\\n              <Input\\n                id=\\\"email\\\"\\n                type=\\\"email\\\"\\n                placeholder=\\\"john@example.com\\\"\\n                required\\n              />\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"phone\\\">Phone Number</Label>\\n              <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"+1 (555) 000-0000\\\" />\\n            </div>\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"subject\\\">Subject</Label>\\n              <Input id=\\\"subject\\\" placeholder=\\\"How can we help?\\\" />\\n            </div>\\n          </div>\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"message\\\">Message *</Label>\\n            <Textarea\\n              id=\\\"message\\\"\\n              placeholder=\\\"Tell us more about your inquiry...\\\"\\n              rows={6}\\n              required\\n            />\\n          </div>\\n          <div className=\\\"flex justify-center\\\">\\n            <Button size=\\\"lg\\\" className=\\\"gap-2\\\">\\n              <Send className=\\\"h-4 w-4\\\" />\\n              Send Message\\n            </Button>\\n          </div>\\n        </form>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-14/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/contact-sections-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contact-sections-15\",\n  \"description\": \"Contact options with quick contact form\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/contact-sections-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { FileText, Headphones, MessageSquare } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst CONTACT_OPTIONS = [\\n  {\\n    icon: MessageSquare,\\n    title: \\\"Chat with Sales\\\",\\n    description: \\\"Speak to our sales team\\\",\\n    action: \\\"Start Chat\\\",\\n  },\\n  {\\n    icon: Headphones,\\n    title: \\\"Get Support\\\",\\n    description: \\\"We're here to help\\\",\\n    action: \\\"Contact Support\\\",\\n  },\\n  {\\n    icon: FileText,\\n    title: \\\"Documentation\\\",\\n    description: \\\"Browse our docs\\\",\\n    action: \\\"View Docs\\\",\\n  },\\n]\\n\\nexport default function ContactSections15() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid items-center gap-12 lg:grid-cols-2\\\">\\n          <div>\\n            <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n              Let's start a conversation\\n            </h2>\\n            <p className=\\\"text-muted-foreground mb-8 text-lg\\\">\\n              We're always happy to help with any questions you might have. Get\\n              in touch with us and we'll respond as soon as possible.\\n            </p>\\n            <div className=\\\"space-y-6\\\">\\n              {CONTACT_OPTIONS.map(\\n                ({ icon: Icon, title, description, action }, key) => (\\n                  <div key={key} className=\\\"flex items-start gap-4\\\">\\n                    <div className=\\\"bg-primary/10 grid h-12 w-12 shrink-0 place-items-center rounded-lg\\\">\\n                      <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                    </div>\\n                    <div className=\\\"flex-1\\\">\\n                      <h3 className=\\\"mb-1 font-semibold\\\">{title}</h3>\\n                      <p className=\\\"text-muted-foreground mb-3 text-sm\\\">\\n                        {description}\\n                      </p>\\n                      <Button variant=\\\"link\\\" className=\\\"h-auto p-0\\\">\\n                        {action} →\\n                      </Button>\\n                    </div>\\n                  </div>\\n                )\\n              )}\\n            </div>\\n          </div>\\n          <Card className=\\\"p-8\\\">\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Quick Contact</h3>\\n            <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\">Your Name</Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Enter your name\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"email\\\">Your Email</Label>\\n                <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"Enter your email\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"phone\\\">Phone Number (Optional)</Label>\\n                <Input id=\\\"phone\\\" type=\\\"tel\\\" placeholder=\\\"Enter your phone\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"inquiry\\\">Your Inquiry</Label>\\n                <Input id=\\\"inquiry\\\" placeholder=\\\"What can we help you with?\\\" />\\n              </div>\\n              <Button className=\\\"w-full\\\">Submit</Button>\\n            </form>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/contact-sections-15/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"contact\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/context-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"context-menu\",\n  \"dependencies\": [\n    \"@radix-ui/react-context-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/context-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ContextMenuPrimitive from \\\"@radix-ui/react-context-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"text-foreground px-2 py-1.5 text-sm font-medium 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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/www/public/r/cruds-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cruds-01\",\n  \"description\": \"Edit apparel item form with product details\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/cruds-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function Cruds01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Edit Apparel Item</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Update product information, pricing, and categorization for your\\n            fashion inventory.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"productName\\\">Product Name</Label>\\n            <Input\\n              id=\\\"productName\\\"\\n              name=\\\"productName\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Slim Fit Denim Jacket\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"brand\\\">Designer Brand</Label>\\n            <Input\\n              id=\\\"brand\\\"\\n              name=\\\"brand\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. Balenciaga\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"price\\\">Retail Price ($)</Label>\\n            <Input\\n              id=\\\"price\\\"\\n              name=\\\"price\\\"\\n              type=\\\"number\\\"\\n              placeholder=\\\"e.g. 199\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"category\\\">Category</Label>\\n            <Select name=\\\"category\\\">\\n              <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                <SelectValue placeholder=\\\"Select a category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"outerwear\\\">Outerwear</SelectItem>\\n                <SelectItem value=\\\"tops\\\">Tops</SelectItem>\\n                <SelectItem value=\\\"bottoms\\\">Bottoms</SelectItem>\\n                <SelectItem value=\\\"footwear\\\">Footwear</SelectItem>\\n                <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"description\\\">Product Details</Label>\\n            <Textarea\\n              id=\\\"description\\\"\\n              name=\\\"description\\\"\\n              placeholder=\\\"Material, fit, washing instructions...\\\"\\n              rows={4}\\n            />\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"submit\\\" className=\\\"flex-1\\\">\\n              Save Changes\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Remove Item\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"cruds\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/cruds-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cruds-02\",\n  \"description\": \"Update retail staff profile form\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/cruds-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function Cruds02() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-2xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">\\n            Update Retail Staff Profile\\n          </h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage employee account credentials and contact information for\\n            retail team members.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"username\\\">Username</Label>\\n            <Input\\n              id=\\\"username\\\"\\n              name=\\\"username\\\"\\n              type=\\\"text\\\"\\n              placeholder=\\\"e.g. elena.moreno\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"email\\\">Work Email</Label>\\n            <Input\\n              id=\\\"email\\\"\\n              name=\\\"email\\\"\\n              type=\\\"email\\\"\\n              placeholder=\\\"e.g. elena@fashionco.com\\\"\\n            />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"password\\\">New Password</Label>\\n            <Input id=\\\"password\\\" name=\\\"password\\\" type=\\\"password\\\" />\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"confirmPassword\\\">Confirm Password</Label>\\n            <Input\\n              id=\\\"confirmPassword\\\"\\n              name=\\\"confirmPassword\\\"\\n              type=\\\"password\\\"\\n            />\\n          </div>\\n\\n          <Button type=\\\"submit\\\" className=\\\"w-full\\\">\\n            Update Profile\\n          </Button>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"cruds\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/cruds-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cruds-03\",\n  \"description\": \"Stylist account settings with profile photo upload\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/cruds-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Upload } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function Cruds03() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center py-16\\\">\\n      <Card className=\\\"mx-auto w-full max-w-3xl p-6 lg:p-8\\\">\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"text-2xl font-semibold\\\">Stylist Account Settings</h3>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Configure your profile, roles, and permissions for your stylist\\n            account.\\n          </p>\\n        </div>\\n        <form action=\\\"#\\\" className=\\\"space-y-6\\\">\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"avatar\\\">Profile Photo</Label>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <div className=\\\"flex h-24 w-24 items-center justify-center rounded-lg border-2 border-dashed\\\">\\n                <Upload className=\\\"text-muted-foreground h-8 w-8\\\" />\\n              </div>\\n              <div className=\\\"flex-1\\\">\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  PNG, JPG, JPEG or GIF (max. 800x400px)\\n                </p>\\n                <Input\\n                  id=\\\"avatar\\\"\\n                  name=\\\"avatar\\\"\\n                  type=\\\"file\\\"\\n                  accept=\\\".png,.jpg,.jpeg,.gif\\\"\\n                  className=\\\"mt-2\\\"\\n                />\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"firstName\\\">First Name</Label>\\n              <Input id=\\\"firstName\\\" name=\\\"firstName\\\" type=\\\"text\\\" />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"lastName\\\">Last Name</Label>\\n              <Input id=\\\"lastName\\\" name=\\\"lastName\\\" type=\\\"text\\\" />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"space-y-2\\\">\\n            <Label htmlFor=\\\"contactEmail\\\">Contact Email</Label>\\n            <Input id=\\\"contactEmail\\\" name=\\\"contactEmail\\\" type=\\\"email\\\" />\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"userRole\\\">Role</Label>\\n              <Select name=\\\"userRole\\\">\\n                <SelectTrigger id=\\\"userRole\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select a role\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"stylist\\\">Stylist</SelectItem>\\n                  <SelectItem value=\\\"store-manager\\\">Store Manager</SelectItem>\\n                  <SelectItem value=\\\"creative-lead\\\">Creative Lead</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"languages\\\">Languages</Label>\\n              <Input\\n                id=\\\"languages\\\"\\n                name=\\\"languages\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. English, Italian\\\"\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"jobTitle\\\">Job Title</Label>\\n              <Input\\n                id=\\\"jobTitle\\\"\\n                name=\\\"jobTitle\\\"\\n                type=\\\"text\\\"\\n                placeholder=\\\"e.g. Fashion Consultant\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"accountType\\\">Account Type</Label>\\n              <Select name=\\\"accountType\\\">\\n                <SelectTrigger id=\\\"accountType\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select account type\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"basic\\\">Basic</SelectItem>\\n                  <SelectItem value=\\\"pro\\\">Pro</SelectItem>\\n                  <SelectItem value=\\\"executive\\\">Executive</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"permissionLevel\\\">Permission Level</Label>\\n              <Select name=\\\"permissionLevel\\\">\\n                <SelectTrigger id=\\\"permissionLevel\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Select permission level\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"admin\\\">Admin</SelectItem>\\n                  <SelectItem value=\\\"operational\\\">Operational</SelectItem>\\n                  <SelectItem value=\\\"viewer\\\">Viewer</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"emailStatus\\\">Email Verified</Label>\\n              <Input\\n                id=\\\"emailStatus\\\"\\n                name=\\\"emailStatus\\\"\\n                type=\\\"text\\\"\\n                value=\\\"Verified\\\"\\n                disabled\\n              />\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex gap-4\\\">\\n            <Button type=\\\"button\\\" variant=\\\"secondary\\\" className=\\\"flex-1\\\">\\n              Upload New Photo\\n            </Button>\\n            <Button type=\\\"button\\\" variant=\\\"destructive\\\" className=\\\"flex-1\\\">\\n              Delete Account\\n            </Button>\\n          </div>\\n        </form>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/cruds-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"cruds\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/dark-product-overview-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dark-product-overview-01\",\n  \"description\": \"Dark themed product overview\",\n  \"registryDependencies\": [\n    \"button\",\n    \"tabs\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/dark-product-overview-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart, Package, Shield, ShoppingCart, Star, Truck } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \\\"@/components/ui/tabs\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"Features\\\",\\n    icon: Package,\\n    desc: `Premium cashmere blend with cable-knit pattern. Features a classic V-neck design, \\n    ribbed cuffs and hem for a perfect fit. Made with sustainable materials and ethically sourced \\n    fibers. Temperature-regulating properties keep you comfortable in any season.`,\\n  },\\n  {\\n    title: \\\"Product Care\\\",\\n    icon: Shield,\\n    desc: `Hand wash in cold water with mild detergent or dry clean for best results. \\n    Lay flat to dry, do not wring or twist. Store folded in a cool, dry place. \\n    Use a fabric shaver to remove any pilling. Steam gently to refresh between wears.`,\\n  },\\n  {\\n    title: \\\"Shipping\\\",\\n    icon: Truck,\\n    desc: `Free standard shipping on all orders over $100. Express shipping available at checkout. \\n    Orders are processed within 1-2 business days. International shipping available to select countries. \\n    30-day hassle-free returns and exchanges.`,\\n  },\\n]\\n\\nexport default function DarkProductOverview01() {\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"bg-primary container mx-auto rounded-2xl\\\">\\n      <div className=\\\"mx-auto max-w-6xl px-6 py-20 md:px-12\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge\\n            variant=\\\"outline\\\"\\n            className=\\\"mb-4 border-white/30 bg-white/10 text-white\\\"\\n          >\\n            Shop Previewer\\n          </Badge>\\n          <h2 className=\\\"my-4 text-4xl font-bold tracking-tight text-white\\\">\\n            New Collection\\n          </h2>\\n          <p className=\\\"mx-auto max-w-3xl text-lg leading-relaxed text-white/80\\\">\\n            Easily preview furniture, decor, and more in your space, ensuring\\n            everything fits perfectly and looks just right. It&apos;s the\\n            ultimate tool for hassle-free home customization and design!\\n          </p>\\n        </div>\\n\\n        <div className=\\\"flex flex-col items-center justify-between gap-x-12 gap-y-12 lg:flex-row\\\">\\n          <div className=\\\"flex-1\\\">\\n            <div className=\\\"mb-4 flex items-center gap-3\\\">\\n              <h3 className=\\\"text-2xl font-bold text-white\\\">Elegant Suite</h3>\\n              <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex items-center gap-2\\\">\\n              <div className=\\\"flex items-center gap-1\\\">\\n                {[1, 2, 3, 4, 5].map((star) => (\\n                  <Star\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\"\\n                  />\\n                ))}\\n              </div>\\n              <span className=\\\"text-sm text-white/70\\\">(127 reviews)</span>\\n            </div>\\n\\n            <div className=\\\"mb-6 flex items-baseline gap-3\\\">\\n              <p className=\\\"text-4xl font-bold text-white\\\">$449.90</p>\\n              <span className=\\\"text-lg text-white/50 line-through\\\">\\n                $599.90\\n              </span>\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-green-500/30 bg-green-500/10 text-green-400\\\"\\n              >\\n                25% OFF\\n              </Badge>\\n            </div>\\n\\n            <p className=\\\"mb-8 max-w-xl text-lg leading-relaxed text-white/80\\\">\\n              Add a touch of sophistication to your home with our handcrafted\\n              ceramic vase. Each piece is uniquely made, blending seamlessly\\n              into both modern and classic decors.\\n            </p>\\n\\n            <div className=\\\"mb-8 flex items-center gap-2 rounded-lg bg-white/10 p-4\\\">\\n              <Truck className=\\\"h-5 w-5 shrink-0 text-white\\\" />\\n              <span className=\\\"text-sm text-white\\\">\\n                Free shipping on orders over $100\\n              </span>\\n            </div>\\n\\n            <div className=\\\"mb-4 flex w-full items-center gap-3\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 gap-2 bg-white text-black hover:bg-white/90 sm:w-64 sm:flex-none\\\"\\n              >\\n                <ShoppingCart className=\\\"h-5 w-5\\\" />\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"ghost\\\"\\n                className={`shrink-0 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-white/80 hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mt-12 max-w-2xl\\\">\\n              <Tabs defaultValue=\\\"Features\\\" className=\\\"w-full\\\">\\n                <TabsList className=\\\"h-auto w-full justify-start rounded-none border-b border-white/20 bg-transparent p-0\\\">\\n                  {DATA.map(({ title, icon: Icon }) => (\\n                    <TabsTrigger\\n                      key={title}\\n                      value={title}\\n                      className=\\\"gap-2 rounded-none px-4 py-3 text-white data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:bg-transparent data-[state=active]:shadow-none\\\"\\n                    >\\n                      <Icon className=\\\"h-4 w-4\\\" />\\n                      {title}\\n                    </TabsTrigger>\\n                  ))}\\n                </TabsList>\\n                {DATA.map(({ title, desc }) => (\\n                  <TabsContent\\n                    key={title}\\n                    value={title}\\n                    className=\\\"mt-6 text-white/80\\\"\\n                  >\\n                    <p className=\\\"leading-relaxed\\\">{desc}</p>\\n                  </TabsContent>\\n                ))}\\n              </Tabs>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"w-full lg:w-auto lg:max-w-lg\\\">\\n            <div className=\\\"group relative overflow-hidden rounded-2xl border-2 border-white/20 bg-white/5 p-4 shadow-2xl backdrop-blur-sm\\\">\\n              <img\\n                src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n                alt=\\\"Elegant Suite\\\"\\n                className=\\\"w-full rounded-xl transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/dark-product-overview/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/dialog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dialog\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/dialog.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DialogPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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          \\\"bg-background 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 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 p-6 shadow-lg duration-200 sm:max-w-lg\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_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({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\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  )\\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-muted-foreground text-sm\\\", 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/www/public/r/digital-product-overview-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"digital-product-overview-01\",\n  \"description\": \"Digital product with plan options\",\n  \"registryDependencies\": [\n    \"button\",\n    \"label\",\n    \"radio-group\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/digital-product-overview-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Eye, Lock, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\n\\nconst data = [\\n  {\\n    name: \\\"HTML Version\\\",\\n    desc: \\\"Pure HTML/CSS with Tailwind, perfect for static websites.\\\",\\n    price: \\\"$39\\\",\\n    popular: false,\\n  },\\n  {\\n    name: \\\"React Version\\\",\\n    desc: \\\"React components with TypeScript support included.\\\",\\n    price: \\\"$49\\\",\\n    popular: true,\\n  },\\n  {\\n    name: \\\"Angular Version\\\",\\n    desc: \\\"Angular components with full type definitions.\\\",\\n    price: \\\"$99\\\",\\n    popular: false,\\n  },\\n]\\n\\nexport default function DigitalProductOverview01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <nav className=\\\"mb-8 flex items-center gap-2 text-sm\\\">\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Home\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <a\\n          href=\\\"#\\\"\\n          className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n        >\\n          Templates\\n        </a>\\n        <span className=\\\"text-muted-foreground\\\">/</span>\\n        <span className=\\\"text-foreground font-medium\\\">Digital Product</span>\\n      </nav>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\\\">\\n        <div className=\\\"group bg-muted/30 relative overflow-hidden rounded-2xl border p-4 shadow-xl transition-all hover:shadow-2xl\\\">\\n          <img\\n            src=\\\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/headers-thumbnail.jpg\\\"\\n            alt=\\\"Digital product preview\\\"\\n            className=\\\"h-full w-full object-contain transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\\\" />\\n        </div>\\n\\n        <div className=\\\"flex flex-col\\\">\\n          <div className=\\\"mb-6\\\">\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold tracking-tight\\\">\\n                Premium UI Kit\\n              </h2>\\n              <Badge\\n                variant=\\\"secondary\\\"\\n                className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\"\\n              >\\n                Best Seller\\n              </Badge>\\n            </div>\\n            <p className=\\\"text-muted-foreground text-base leading-relaxed\\\">\\n              A comprehensive collection of beautifully crafted components and\\n              templates. Built with modern web technologies and best practices\\n              for seamless integration.\\n            </p>\\n          </div>\\n\\n          <div className=\\\"bg-muted/50 mb-6 flex items-center gap-6 rounded-lg p-4\\\">\\n            <div className=\\\"flex items-center gap-2\\\">\\n              <Star className=\\\"h-5 w-5 fill-yellow-400 text-yellow-400\\\" />\\n              <span className=\\\"text-sm font-semibold\\\">4.9/5</span>\\n              <span className=\\\"text-muted-foreground text-sm\\\">\\n                (127 reviews)\\n              </span>\\n            </div>\\n            <div className=\\\"bg-border h-4 w-px\\\" />\\n            <div className=\\\"flex items-center gap-2 text-sm\\\">\\n              <Lock className=\\\"text-muted-foreground h-4 w-4\\\" />\\n              <span className=\\\"font-semibold\\\">1,234</span>\\n              <span className=\\\"text-muted-foreground\\\">sales</span>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"mb-6\\\">\\n            <p className=\\\"mb-4 text-lg font-semibold\\\">Choose your version</p>\\n            <RadioGroup defaultValue=\\\"React Version\\\" className=\\\"gap-3\\\">\\n              {data.map(({ name, desc, price, popular }) => (\\n                <div\\n                  key={name}\\n                  className=\\\"group/item bg-card hover:border-primary rounded-lg border transition-all hover:shadow-md\\\"\\n                >\\n                  <Label\\n                    htmlFor={name}\\n                    className=\\\"flex cursor-pointer items-start gap-4 p-4\\\"\\n                  >\\n                    <RadioGroupItem value={name} id={name} className=\\\"mt-1\\\" />\\n                    <div className=\\\"flex flex-1 items-center justify-between gap-4\\\">\\n                      <div className=\\\"flex-1\\\">\\n                        <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          {popular && (\\n                            <Badge className=\\\"bg-primary text-primary-foreground\\\">\\n                              Popular\\n                            </Badge>\\n                          )}\\n                        </div>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                      </div>\\n                      <div className=\\\"text-right\\\">\\n                        <p className=\\\"text-2xl font-bold\\\">{price}</p>\\n                        <p className=\\\"text-muted-foreground text-xs\\\">\\n                          one-time\\n                        </p>\\n                      </div>\\n                    </div>\\n                  </Label>\\n                </div>\\n              ))}\\n            </RadioGroup>\\n          </div>\\n\\n          <div className=\\\"mt-auto flex flex-col gap-3 sm:flex-row\\\">\\n            <Button size=\\\"lg\\\" className=\\\"flex-1 gap-2\\\">\\n              <ShoppingCart className=\\\"h-4 w-4\\\" />\\n              Buy Now\\n            </Button>\\n            <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"flex-1 gap-2\\\">\\n              <Eye className=\\\"h-4 w-4\\\" />\\n              Live Preview\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/digital-product-overview/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/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\": \"components/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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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 bg-background fixed z-50 flex h-auto flex-col\\\",\\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=\\\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full 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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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/www/public/r/dropdown-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dropdown-menu\",\n  \"dependencies\": [\n    \"@radix-ui/react-dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/dropdown-menu.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DropdownMenuPrimitive from \\\"@radix-ui/react-dropdown-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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/www/public/r/ecommerce-sections-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ecommerce-sections-01\",\n  \"description\": \"Runway video spotlight with product cards\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/ecommerce-sections-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useRef, useState } from \\\"react\\\"\\nimport { Pause, Play, ShoppingBag, Shuffle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    id: \\\"card-1\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1595777457583-95e059d581b8?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Satin Wrap Dress product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Maison Aurore\\\",\\n    title: \\\"Satin Wrap Dress\\\",\\n    description: \\\"Fluid silhouette with tie waist and soft sheen.\\\",\\n    price: \\\"$215.00\\\",\\n  },\\n  {\\n    id: \\\"card-2\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1591369822096-ffd140ec948f?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Structured Blazer product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Atelier No. 9\\\",\\n    title: \\\"Structured Blazer\\\",\\n    description: \\\"Sharp shoulders, single-breasted, polished finish.\\\",\\n    price: \\\"$329.00\\\",\\n  },\\n  {\\n    id: \\\"card-3\\\",\\n    media: {\\n      src: \\\"https://images.unsplash.com/photo-1543163521-1bf539c55dd2?q=80&w=400&h=400&auto=format&fit=crop\\\",\\n      alt: \\\"Chunky Chelsea Boots product thumbnail\\\",\\n    },\\n    eyebrow: \\\"Linea Forte\\\",\\n    title: \\\"Chunky Chelsea Boots\\\",\\n    description: \\\"Elevated lug sole with elastic side panels.\\\",\\n    price: \\\"From $180.00\\\",\\n  },\\n]\\n\\nexport default function EcommerceSectionsBlock() {\\n  const [isPlaying, setIsPlaying] = useState(true)\\n  const playerRef = useRef<any>(null)\\n  const [playerReady, setPlayerReady] = useState(false)\\n\\n  useEffect(() => {\\n    const tag = document.createElement(\\\"script\\\")\\n    tag.src = \\\"https://www.youtube.com/iframe_api\\\"\\n    const firstScriptTag = document.getElementsByTagName(\\\"script\\\")[0]\\n    firstScriptTag.parentNode?.insertBefore(tag, firstScriptTag)\\n    ;(window as any).onYouTubeIframeAPIReady = () => {\\n      playerRef.current = new (window as any).YT.Player(\\\"youtube-player\\\", {\\n        videoId: \\\"YCIuEU2y8XI\\\",\\n        playerVars: {\\n          autoplay: 1,\\n          mute: 1,\\n          loop: 1,\\n          playlist: \\\"YCIuEU2y8XI\\\",\\n          controls: 0,\\n          showinfo: 0,\\n          modestbranding: 1,\\n          playsinline: 1,\\n        },\\n        events: {\\n          onReady: () => {\\n            setPlayerReady(true)\\n          },\\n        },\\n      })\\n    }\\n\\n    return () => {\\n      if (playerRef.current) {\\n        playerRef.current.destroy()\\n      }\\n    }\\n  }, [])\\n\\n  const togglePlay = () => {\\n    if (playerRef.current && playerReady) {\\n      if (isPlaying) {\\n        playerRef.current.pauseVideo()\\n      } else {\\n        playerRef.current.playVideo()\\n      }\\n      setIsPlaying(!isPlaying)\\n    }\\n  }\\n\\n  return (\\n    <section className=\\\"relative w-full overflow-hidden rounded-xl\\\">\\n      <div className=\\\"relative aspect-[16/9] w-full lg:aspect-[16/9]\\\">\\n        <div\\n          id=\\\"youtube-player\\\"\\n          className=\\\"absolute inset-0 h-full w-full rounded-xl\\\"\\n          style={{\\n            pointerEvents: \\\"none\\\",\\n          }}\\n        />\\n\\n        <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\\\" />\\n\\n        <Button\\n          variant=\\\"outline\\\"\\n          size=\\\"icon\\\"\\n          className=\\\"absolute top-4 left-4 rounded-full bg-black/50 text-white backdrop-blur-sm hover:bg-black/70 hover:text-white lg:top-6 lg:left-6\\\"\\n          onClick={togglePlay}\\n        >\\n          {isPlaying ? (\\n            <Pause className=\\\"h-4 w-4\\\" />\\n          ) : (\\n            <Play className=\\\"h-4 w-4\\\" />\\n          )}\\n        </Button>\\n\\n        <div className=\\\"absolute inset-x-0 bottom-0 space-y-6 p-4 lg:p-8\\\">\\n          <div className=\\\"mx-auto grid max-w-6xl gap-4 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {PRODUCTS.map((product) => (\\n              <div\\n                key={product.id}\\n                className=\\\"flex items-center gap-4 rounded-2xl bg-white p-4 shadow-lg dark:bg-white/95\\\"\\n              >\\n                <div className=\\\"h-16 w-16 flex-shrink-0 overflow-hidden rounded-lg\\\">\\n                  <img\\n                    src={product.media.src}\\n                    alt={product.media.alt}\\n                    className=\\\"h-full w-full object-cover\\\"\\n                  />\\n                </div>\\n\\n                <div className=\\\"min-w-0 flex-1\\\">\\n                  <p className=\\\"text-xs font-medium tracking-wide text-gray-500 uppercase\\\">\\n                    {product.eyebrow}\\n                  </p>\\n                  <h3 className=\\\"truncate font-semibold text-gray-900\\\">\\n                    {product.title}\\n                  </h3>\\n                  <p className=\\\"font-semibold text-gray-900\\\">{product.price}</p>\\n                </div>\\n\\n                <div className=\\\"flex flex-shrink-0 items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <ShoppingBag className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                  <Button\\n                    variant=\\\"ghost\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8 text-gray-600 hover:text-gray-900\\\"\\n                  >\\n                    <Shuffle className=\\\"h-4 w-4\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex justify-center\\\">\\n            <Button\\n              variant=\\\"outline\\\"\\n              size=\\\"lg\\\"\\n              className=\\\"rounded-full border-white/80 bg-white/10 px-8 text-white backdrop-blur-sm hover:bg-white/20 hover:text-white\\\"\\n            >\\n              VIEW ALL PRODUCTS\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/ecommerce-sections-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ecommerce-sections-02\",\n  \"description\": \"Luxury product detail page with image gallery\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/ecommerce-sections-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronDown,\\n  MapPin,\\n  Package,\\n  Ruler,\\n  ShoppingBag,\\n  Star,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EcommerceSections02() {\\n  const [selectedImage, setSelectedImage] = useState(0)\\n  const [selectedColor, setSelectedColor] = useState(1)\\n  const [isInfoOpen, setIsInfoOpen] = useState(false)\\n\\n  const thumbnails = [\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+1`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+2`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Detail`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Inside`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Model`,\\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Lifestyle`,\\n  ]\\n\\n  const colors = [\\n    { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n    { name: \\\"Cream\\\", hex: \\\"#f5f0e8\\\" },\\n    { name: \\\"Forest Green\\\", hex: \\\"#7d9488\\\" },\\n    { name: \\\"Gray\\\", hex: \\\"#9ca3af\\\" },\\n    { name: \\\"Navy Blue\\\", hex: \\\"#0f172a\\\" },\\n    { name: \\\"Brown\\\", hex: \\\"#a0522d\\\" },\\n  ]\\n\\n  const features = [\\n    { icon: ShoppingBag, text: \\\"Crossbody style\\\" },\\n    { icon: Package, text: \\\"Premium leather\\\" },\\n    { icon: Ruler, text: \\\"Adjustable strap\\\" },\\n    { icon: MapPin, text: \\\"Crafted in France\\\" },\\n  ]\\n\\n  return (\\n    <div className=\\\"min-h-screen bg-neutral-50 p-4 sm:p-8\\\">\\n      <div className=\\\"mx-auto max-w-7xl\\\">\\n        <div className=\\\"grid gap-8 lg:grid-cols-[auto_1fr_1fr] lg:gap-12\\\">\\n          <div className=\\\"hidden lg:flex lg:flex-col lg:gap-3\\\">\\n            {thumbnails.map((thumb, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setSelectedImage(index)}\\n                className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                  selectedImage === index\\n                    ? \\\"border-neutral-900\\\"\\n                    : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                }`}\\n              >\\n                <img\\n                  src={thumb}\\n                  alt={`Product view ${index + 1}`}\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </button>\\n            ))}\\n          </div>\\n\\n          <div className=\\\"flex items-start justify-center\\\">\\n            <div className=\\\"w-full max-w-lg\\\">\\n              <div className=\\\"aspect-square overflow-hidden rounded-2xl bg-white\\\">\\n                <img\\n                  src={thumbnails[selectedImage]}\\n                  alt=\\\"Product main view\\\"\\n                  className=\\\"h-full w-full object-cover\\\"\\n                />\\n              </div>\\n              <div className=\\\"mt-4 flex gap-2 lg:hidden\\\">\\n                {thumbnails.slice(0, 4).map((thumb, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedImage(index)}\\n                    className={`h-16 w-16 overflow-hidden rounded-lg border-2 ${\\n                      selectedImage === index\\n                        ? \\\"border-neutral-900\\\"\\n                        : \\\"border-neutral-200\\\"\\n                    }`}\\n                  >\\n                    <img\\n                      src={thumb}\\n                      alt={`Thumbnail ${index + 1}`}\\n                      className=\\\"h-full w-full object-cover\\\"\\n                    />\\n                  </button>\\n                ))}\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Trending Now\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Artisan Leather Crossbody\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $385.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-900 text-neutral-900\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(4.7)</span>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                Color:{\\\" \\\"}\\n                <span className=\\\"font-normal\\\">\\n                  {colors[selectedColor].name}\\n                </span>\\n              </p>\\n              <div className=\\\"flex gap-2\\\">\\n                {colors.map((color, index) => (\\n                  <button\\n                    key={index}\\n                    onClick={() => setSelectedColor(index)}\\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\\n                      selectedColor === index\\n                        ? \\\"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\\\"\\n                        : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                    }`}\\n                    style={{ backgroundColor: color.hex }}\\n                    title={color.name}\\n                  />\\n                ))}\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-4 text-sm leading-relaxed text-neutral-600\\\">\\n              Elegant crossbody bag crafted from premium vegetable-tanned\\n              leather with a minimalist silhouette. Features a secure magnetic\\n              clasp closure, interior zip compartment, and an adjustable\\n              shoulder strap for versatile wear.\\n            </p>\\n\\n            <p className=\\\"mb-6 text-sm text-neutral-600\\\">\\n              This is a demo store. To buy this product, visit{\\\" \\\"}\\n              <a\\n                href=\\\"#\\\"\\n                className=\\\"font-medium text-neutral-900 underline underline-offset-2 hover:text-neutral-700\\\"\\n              >\\n                Maison Atelier\\n              </a>{\\\" \\\"}\\n              official store.\\n            </p>\\n\\n            <div className=\\\"mb-6 flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 border-neutral-900 text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Buy it Now\\n              </Button>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-2 gap-3\\\">\\n              {features.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex items-center gap-2 text-sm text-neutral-600\\\"\\n                >\\n                  <feature.icon className=\\\"h-4 w-4\\\" />\\n                  <span>{feature.text}</span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"border-t border-neutral-200\\\">\\n              <button\\n                onClick={() => setIsInfoOpen(!isInfoOpen)}\\n                className=\\\"flex w-full items-center justify-between py-4 text-sm font-medium text-neutral-900 hover:text-neutral-600\\\"\\n              >\\n                More Information\\n                <ChevronDown\\n                  className={`h-4 w-4 transition-transform ${\\n                    isInfoOpen ? \\\"rotate-180\\\" : \\\"\\\"\\n                  }`}\\n                />\\n              </button>\\n              {isInfoOpen && (\\n                <div className=\\\"pb-4 text-sm leading-relaxed text-neutral-600\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Materials & Care:</strong> This bag is made from\\n                    100% full-grain vegetable-tanned leather that develops a\\n                    beautiful patina over time. Clean with a soft, dry cloth and\\n                    condition regularly with leather cream.\\n                  </p>\\n                  <p className=\\\"mb-3\\\">\\n                    <strong>Dimensions:</strong> 9.5\\\" W x 7\\\" H x 3\\\" D. Strap\\n                    drop adjustable from 20\\\" to 24\\\". Weight: 1.2 lbs.\\n                  </p>\\n                  <p>\\n                    <strong>Shipping & Returns:</strong> Free standard shipping\\n                    on orders over $200. 30-day return policy with original\\n                    receipt and tags attached.\\n                  </p>\\n                </div>\\n              )}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/ecommerce-sections/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/empty-shopping-cart-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"empty-shopping-cart-01\",\n  \"description\": \"Empty shopping cart state\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/empty-shopping-cart-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function EmptyShoppingCart01() {\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center justify-center\\\">\\n      <div className=\\\"container mx-auto py-16\\\">\\n        <div className=\\\"text-center\\\">\\n          <p className=\\\"text-primary font-semibold\\\">Store</p>\\n          <h2 className=\\\"mt-4 text-2xl font-bold\\\">\\n            Your Shopping Cart is Empty\\n          </h2>\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/cart-illustration.png\\\"\\n            alt=\\\"Empty cart\\\"\\n            className=\\\"mx-auto my-8 max-h-[30rem]\\\"\\n          />\\n          <Button>Back to Store</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/empty-shopping-cart/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/faq-left-title-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"faq-left-title-01\",\n  \"description\": \"FAQ with left-aligned title and card grid\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/faq-left-title-01/page.tsx\",\n      \"content\": \"import { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqLeftTitle01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto grid justify-between gap-6 lg:grid-cols-5\\\">\\n        <div className=\\\"col-span-2\\\">\\n          <h2 className=\\\"mb-4 text-3xl leading-snug font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground max-w-sm text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"col-span-3 grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key} className=\\\"border-none shadow-none\\\">\\n              <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faq-left-title/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/faqs-cards-icons-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"faqs-cards-icons-01\",\n  \"description\": \"FAQ cards with icons and CTA\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/faqs-cards-icons-01/page.tsx\",\n      \"content\": \"import { CreditCard, ShoppingCart, Users } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    icon: Users,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n]\\n\\nexport default function FaqsCardsIcons01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"my-20 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b gap-0\\\">\\n                <div className=\\\"bg-primary mb-6 grid h-12 w-12 place-items-center rounded-lg\\\">\\n                  <Icon className=\\\"text-primary-foreground h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-base font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-cards-icons/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/faqs-grid-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"faqs-grid-01\",\n  \"description\": \"Simple FAQ grid layout\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/faqs-grid-01/page.tsx\",\n      \"content\": \"import {\\n  CreditCard,\\n  Package,\\n  RefreshCw,\\n  ShoppingCart,\\n  Store,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    icon: ShoppingCart,\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"Browse our collection, add items to your cart, and proceed to checkout. We accept multiple payment methods including credit cards, PayPal, and digital wallets for your convenience.\\\",\\n  },\\n  {\\n    icon: CreditCard,\\n    title: \\\"How can I make the payment?\\\",\\n    desc: \\\"We accept all major credit cards, debit cards, PayPal, Apple Pay, and Google Pay. All transactions are secured with industry-standard encryption to protect your information.\\\",\\n  },\\n  {\\n    icon: Truck,\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"Standard shipping takes 3-5 business days. Express shipping is available for 1-2 day delivery. International orders typically arrive within 7-14 business days depending on your location.\\\",\\n  },\\n  {\\n    icon: Store,\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"Products purchased for personal use cannot be resold without authorization. For wholesale or reseller inquiries, please contact our business development team at business@example.com.\\\",\\n  },\\n  {\\n    icon: Package,\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"Shipping information is available in your account under 'Order History'. You'll receive tracking details via email once your order ships, allowing you to monitor delivery progress.\\\",\\n  },\\n  {\\n    icon: RefreshCw,\\n    title: \\\"What is your return policy?\\\",\\n    desc: \\\"We offer a 30-day return policy on most items. Products must be in original condition with tags attached. Refunds are processed within 5-7 business days after we receive your return.\\\",\\n  },\\n]\\n\\nexport default function FaqsGrid01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-4xl font-bold\\\">\\n            Frequently Asked Questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Find answers to common questions about our products, shipping, and\\n            policies. Can't find what you're looking for? Contact our support\\n            team.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group hover:border-primary/50 transition-all hover:shadow-lg\\\"\\n            >\\n              <CardHeader className=\\\"px-6\\\">\\n                <div className=\\\"bg-primary/10 mb-3 flex h-12 w-12 items-center justify-center rounded-full\\\">\\n                  <Icon className=\\\"text-primary h-6 w-6\\\" />\\n                </div>\\n                <h3 className=\\\"text-xl leading-tight\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent>\\n                <p className=\\\"text-muted-foreground leading-relaxed\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/faqs-grid-cta-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"faqs-grid-cta-01\",\n  \"description\": \"FAQ grid with CTA section\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/faqs-grid-cta-01/page.tsx\",\n      \"content\": \"import { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\\\",\\n  },\\n  {\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\\\",\\n  },\\n  {\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n  {\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment.\\\",\\n  },\\n  {\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n]\\n\\nexport default function FaqsGridCta01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ title, desc }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"border-b px-6 gap-0\\\">\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <p className=\\\"text-muted-foreground\\\">{desc}</p>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n        <div className=\\\"mt-20 text-center\\\">\\n          <h3 className=\\\"text-2xl font-bold\\\">Need more help?</h3>\\n          <p className=\\\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\\\">\\n            Send us an email with more details about your specific needs.\\n          </p>\\n          <Button size=\\\"lg\\\">Submit a Request</Button>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-grid-cta/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/faqs-list-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"faqs-list-01\",\n  \"description\": \"FAQ list with accordion\",\n  \"registryDependencies\": [\n    \"accordion\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/faqs-list-01/page.tsx\",\n      \"content\": \"import {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\n\\nconst DATA = [\\n  {\\n    value: \\\"one\\\",\\n    title: \\\"How do I order?\\\",\\n    desc: \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"two\\\",\\n    title: \\\"How can i make the payment?\\\",\\n    desc: \\\"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\\\",\\n  },\\n  {\\n    value: \\\"three\\\",\\n    title: \\\"How much time does it take to receive the order?\\\",\\n    desc: \\\"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it? If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"four\\\",\\n    title: \\\"Can I resell the products?\\\",\\n    desc: \\\"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything. If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\\\",\\n  },\\n  {\\n    value: \\\"five\\\",\\n    title: \\\"Where do I find the shipping details?\\\",\\n    desc: \\\"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment. I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\\\",\\n  },\\n]\\n\\nexport default function FaqsList01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <Accordion type=\\\"single\\\" collapsible>\\n          {DATA.map(({ title, desc, value }, key) => (\\n            <AccordionItem key={key} value={value}>\\n              <AccordionTrigger>\\n                <h3 className=\\\"text-lg font-semibold\\\">{title}</h3>\\n              </AccordionTrigger>\\n              <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                {desc}\\n              </AccordionContent>\\n            </AccordionItem>\\n          ))}\\n        </Accordion>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/faqs-list/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-01\",\n  \"description\": \"Simple footer with social links\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers01() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-2 md:!justify-between\\\">\\n          <p className=\\\"text-foreground text-center text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim.\\n          </p>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-4 w-4\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-02\",\n  \"description\": \"Footer with navigation links and subscription\",\n  \"registryDependencies\": [\n    \"button\",\n    \"checkbox\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers02() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 md:grid-cols-2\\\">\\n          <div className=\\\"grid grid-cols-3 justify-between gap-x-6 gap-y-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title}>\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title} className=\\\"mb-1\\\">\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-2 font-semibold\\\">Subscribe</p>\\n            <p className=\\\"text-foreground max-w-sm [text-wrap:_balance]\\\">\\n              Get access to subscriber exclusive deals and be the first who gets\\n              informed about fresh sales.\\n            </p>\\n            <div className=\\\"mt-4 flex w-full max-w-sm items-end gap-2\\\">\\n              <div className=\\\"w-full\\\">\\n                <Label\\n                  htmlFor=\\\"email\\\"\\n                  className=\\\"mb-2 inline-block text-sm font-semibold\\\"\\n                >\\n                  Your Email\\n                </Label>\\n                <Input\\n                  type=\\\"email\\\"\\n                  id=\\\"email\\\"\\n                  placeholder=\\\"someone@example.com\\\"\\n                />\\n              </div>\\n              <Button className=\\\"shrink-0\\\">Subscribe</Button>\\n            </div>\\n            <div className=\\\"mt-3 flex items-center gap-2\\\">\\n              <Checkbox id=\\\"checkbox-link\\\" />\\n              <Label\\n                htmlFor=\\\"checkbox-link\\\"\\n                className=\\\"text-foreground flex gap-1 select-none\\\"\\n              >\\n                I agree with the\\n                <a href=\\\"#\\\" className=\\\"text-primary\\\">\\n                  terms and conditions\\n                </a>\\n              </Label>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-10 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-03\",\n  \"description\": \"Website footer with CTA\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Home\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Service\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers03() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"border-surface flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-3 border-t pt-8 text-center md:!justify-between\\\">\\n          <p className=\\\"text-foreground\\\">\\n            Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-6\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n            <Button className=\\\"w-full sm:max-w-fit\\\">Sign in</Button>\\n          </ul>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-04\",\n  \"description\": \"Simple dark footer\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers04() {\\n  return (\\n    <section className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Card className=\\\"bg-primary border-primary grid justify-center px-6 py-12 text-center shadow-none\\\">\\n          <h2 className=\\\"text-secondary text-2xl font-semibold\\\">\\n            Be the first who see the news\\n          </h2>\\n          <p className=\\\"text-secondary mt-4 max-w-lg [text-wrap:_balance]\\\">\\n            Your company may not be in the software business, but eventually, a\\n            software company will be in your business.\\n          </p>\\n          <div className=\\\"mx-auto mt-10 flex w-full max-w-sm flex-col gap-x-2 gap-y-4 sm:flex-row\\\">\\n            <Input\\n              type=\\\"email\\\"\\n              id=\\\"email\\\"\\n              placeholder=\\\"someone@example.com\\\"\\n              className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n            />\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              Subscribe\\n            </Button>\\n          </div>\\n        </Card>\\n        <div className=\\\"mt-16 mb-6 flex flex-col items-center !justify-center gap-x-10 gap-y-3 lg:flex-row lg:!justify-between\\\">\\n          <p className=\\\"font-semibold\\\">Creative Tim</p>\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a href={href} className=\\\"text-foreground hover:text-primary\\\">\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <div className=\\\"flex gap-1\\\">\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\" className=\\\"h-8 w-8\\\">\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground text-sm\\\">\\n          All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-04/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-05\",\n  \"description\": \"Complex dark footer\",\n  \"registryDependencies\": [\n    \"button\",\n    \"input\",\n    \"label\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers05() {\\n  return (\\n    <footer className=\\\"bg-primary pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-10 sm:grid-cols-2\\\">\\n          <div className=\\\"row-start-2 grid grid-cols-2 justify-between gap-6 sm:row-auto lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"text-secondary mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-secondary hover:text-secondary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"text-secondary mb-4 flex font-semibold lg:justify-end\\\">\\n              Language & Currency\\n            </p>\\n            <Select>\\n              <SelectTrigger className=\\\"mb-4 border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Language\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"english\\\">English</SelectItem>\\n                <SelectItem value=\\\"spanish\\\">Spanish</SelectItem>\\n                <SelectItem value=\\\"hindi\\\">Hindi</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select>\\n              <SelectTrigger className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\\\">\\n                <SelectValue placeholder=\\\"Select Currency\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"usd\\\">USD</SelectItem>\\n                <SelectItem value=\\\"euro\\\">Euro</SelectItem>\\n                <SelectItem value=\\\"rupee\\\">Rupee</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 mt-10 flex flex-col justify-between gap-4 border-t border-b pt-6 pb-8 md:flex-row lg:items-end\\\">\\n          <div>\\n            <p className=\\\"text-secondary mb-2 font-semibold\\\">\\n              Subscribe to our newsletters\\n            </p>\\n            <p className=\\\"text-secondary\\\">\\n              The latest news, articles and resources sent to your inbox weekly.\\n            </p>\\n          </div>\\n          <div className=\\\"flex w-full items-end gap-2 md:max-w-sm\\\">\\n            <div className=\\\"w-full\\\">\\n              <Label\\n                htmlFor=\\\"email\\\"\\n                className=\\\"text-secondary mb-2 inline-block text-sm font-semibold\\\"\\n              >\\n                Your Email\\n              </Label>\\n              <Input\\n                type=\\\"email\\\"\\n                id=\\\"email\\\"\\n                placeholder=\\\"someone@example.com\\\"\\n                className=\\\"border-white/20 bg-white/10 text-white placeholder:text-white/60\\\"\\n              />\\n            </div>\\n            <Button variant=\\\"secondary\\\" className=\\\"shrink-0\\\">\\n              subscribe\\n            </Button>\\n          </div>\\n        </div>\\n        <p className=\\\"text-secondary mt-8\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-05/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-06\",\n  \"description\": \"Advanced light footer\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n      { title: \\\"Premium Tools\\\", href: \\\"#\\\" },\\n      { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n      { title: \\\"Add List\\\", href: \\\"#\\\" },\\n      { title: \\\"Contact\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n      { title: \\\"Teams\\\", href: \\\"#\\\" },\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Resources\\\",\\n    items: [\\n      { title: \\\"Blog\\\", href: \\\"#\\\" },\\n      { title: \\\"Services\\\", href: \\\"#\\\" },\\n      { title: \\\"Products\\\", href: \\\"#\\\" },\\n      { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers06() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 justify-between gap-4 md:grid-cols-2\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-foreground my-4\\\">\\n              The next generation of design systems.\\n            </p>\\n            <div className=\\\"flex gap-1\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-4 w-4\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-2 justify-between gap-6 lg:grid-cols-4\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-2\\\">\\n                <p className=\\\"mb-2 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-foreground hover:text-primary\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground mt-20 text-center\\\">\\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-06/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-07\",\n  \"description\": \"Simple footer with country selection\",\n  \"registryDependencies\": [\n    \"button\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nconst COUNTRIES = [\\n  { name: \\\"United States\\\", flag: \\\"🇺🇸\\\" },\\n  { name: \\\"United Kingdom\\\", flag: \\\"🇬🇧\\\" },\\n  { name: \\\"Canada\\\", flag: \\\"🇨🇦\\\" },\\n  { name: \\\"Germany\\\", flag: \\\"🇩🇪\\\" },\\n  { name: \\\"France\\\", flag: \\\"🇫🇷\\\" },\\n  { name: \\\"Japan\\\", flag: \\\"🇯🇵\\\" },\\n  { name: \\\"Australia\\\", flag: \\\"🇦🇺\\\" },\\n  { name: \\\"Spain\\\", flag: \\\"🇪🇸\\\" },\\n]\\n\\nexport default function Footers07() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-start justify-center gap-4 md:justify-between\\\">\\n          <div className=\\\"grid gap-3\\\">\\n            <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-foreground text-center text-sm font-medium md:text-left\\\">\\n              All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n            </p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n            <Select>\\n              <SelectTrigger className=\\\"w-64\\\">\\n                <SelectValue placeholder=\\\"Select Country\\\" />\\n              </SelectTrigger>\\n              <SelectContent className=\\\"max-h-72\\\">\\n                {COUNTRIES.map(({ name, flag }) => (\\n                  <SelectItem key={name} value={name}>\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <span className=\\\"text-lg\\\">{flag}</span>\\n                      <span className=\\\"text-sm\\\">{name}</span>\\n                    </div>\\n                  </SelectItem>\\n                ))}\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-07/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-08\",\n  \"description\": \"Simple footer with version number\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Settings } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers08() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-center justify-between gap-6 md:flex-row\\\">\\n          <p className=\\\"text-muted-foreground text-center text-sm md:text-left\\\">\\n            &copy; {YEAR} Creative Tim. All rights reserved.\\n          </p>\\n          <div className=\\\"flex items-center gap-3\\\">\\n            <Badge variant=\\\"secondary\\\" className=\\\"px-3 py-1\\\">\\n              v3.0.0\\n            </Badge>\\n            <Button variant=\\\"ghost\\\" size=\\\"icon\\\" aria-label=\\\"Settings\\\">\\n              <Settings className=\\\"h-5 w-5\\\" />\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-08/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-09\",\n  \"description\": \"Footer with notification and CTA\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers09() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"flex flex-col items-start justify-between gap-8 md:flex-row md:items-center\\\">\\n          <div className=\\\"space-y-3\\\">\\n            <p className=\\\"text-lg font-semibold\\\">\\n              New Features available! Upgrade to v3.0.0\\n            </p>\\n            <Button size=\\\"default\\\" className=\\\"w-full md:w-auto\\\">\\n              Upgrade Now\\n            </Button>\\n          </div>\\n          <div className=\\\"flex flex-col gap-4 md:items-end\\\">\\n            <ul className=\\\"flex flex-wrap items-center gap-x-8 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              &copy; {YEAR} Creative Tim. All rights reserved.\\n            </p>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-09/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"350px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-10\",\n  \"description\": \"Footer with page links\",\n  \"registryDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers10() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"mb-10 flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-10/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"350px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-11\",\n  \"description\": \"Website footer with statement\",\n  \"registryDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst LINKS = [\\n  {\\n    title: \\\"Company\\\",\\n    items: [\\n      { title: \\\"About Us\\\", href: \\\"#\\\" },\\n      { title: \\\"Careers\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Pages\\\",\\n    items: [\\n      { title: \\\"Login\\\", href: \\\"#\\\" },\\n      { title: \\\"Register\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n  {\\n    title: \\\"Legal\\\",\\n    items: [\\n      { title: \\\"Terms\\\", href: \\\"#\\\" },\\n      { title: \\\"Privacy\\\", href: \\\"#\\\" },\\n    ],\\n  },\\n]\\n\\nconst YEAR = new Date().getFullYear()\\n\\nexport default function Footers11() {\\n  return (\\n    <footer className=\\\"pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-12 grid grid-cols-1 items-start justify-between gap-8 md:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold\\\">Creative Tim</h6>\\n            <p className=\\\"text-muted-foreground mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n          </div>\\n          <div className=\\\"grid grid-cols-3 gap-x-8 gap-y-6 md:ml-auto\\\">\\n            {LINKS.map(({ title, items }) => (\\n              <ul key={title} className=\\\"space-y-3\\\">\\n                <p className=\\\"mb-3 font-semibold\\\">{title}</p>\\n                {items.map(({ title, href }) => (\\n                  <li key={title}>\\n                    <a\\n                      href={href}\\n                      className=\\\"text-muted-foreground hover:text-foreground transition-colors\\\"\\n                    >\\n                      {title}\\n                    </a>\\n                  </li>\\n                ))}\\n              </ul>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"border-border flex flex-col items-start justify-between gap-6 border-t pt-8 md:flex-row md:items-center\\\">\\n          <p className=\\\"text-muted-foreground max-w-2xl text-sm\\\">\\n            The price of fame is you can&apos;t get off the stage.\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm whitespace-nowrap\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-11/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"450px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-12\",\n  \"description\": \"Website footer with navigation\",\n  \"registryDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Contact Information\\\", href: \\\"#\\\" },\\n  { title: \\\"Privacy Policy\\\", href: \\\"#\\\" },\\n  { title: \\\"Terms & Conditions\\\", href: \\\"#\\\" },\\n  { title: \\\"FAQ\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers12() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <div className=\\\"flex flex-row flex-wrap items-center !justify-center gap-6 lg:!justify-between\\\">\\n          <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n            {LINKS.map(({ title, href }, key) => (\\n              <li key={key}>\\n                <a\\n                  href={href}\\n                  className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n                >\\n                  {title}\\n                </a>\\n              </li>\\n            ))}\\n          </ul>\\n          <p className=\\\"text-foreground text-sm font-medium\\\">\\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim\\n          </p>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-12/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"300px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-13\",\n  \"description\": \"Simple centered website footer\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"Company\\\", href: \\\"#\\\" },\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Team\\\", href: \\\"#\\\" },\\n  { title: \\\"Products\\\", href: \\\"#\\\" },\\n  { title: \\\"Blogs\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers13() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto grid place-items-center\\\">\\n        <ul className=\\\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\\\">\\n          {LINKS.map(({ title, href }, key) => (\\n            <li key={key}>\\n              <a\\n                href={href}\\n                className=\\\"text-foreground hover:text-primary font-semibold\\\"\\n              >\\n                {title}\\n              </a>\\n            </li>\\n          ))}\\n        </ul>\\n        <div className=\\\"my-8 flex gap-1\\\">\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n              <Twitter className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n              <Youtube className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n              <Instagram className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n          <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n            <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n              <Github className=\\\"h-5 w-5\\\" />\\n            </a>\\n          </Button>\\n        </div>\\n        <p className=\\\"text-foreground\\\">Copyright &copy; {YEAR} Creative Tim</p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-13/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"450px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-14\",\n  \"description\": \"Website footer for apps\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers14() {\\n  return (\\n    <footer className=\\\"bg-primary pt-20 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-16 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-8\\\">\\n          <div>\\n            <h6 className=\\\"text-2xl font-semibold text-white\\\">Creative Tim</h6>\\n            <p className=\\\"text-secondary mt-3 max-w-md\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <ul className=\\\"mt-12 flex flex-wrap items-center gap-x-8 gap-y-3\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-secondary transition-colors hover:text-white\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"lg:ml-auto\\\">\\n            <p className=\\\"mb-6 text-lg font-semibold text-white\\\">Get the App</p>\\n            <div className=\\\"grid gap-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\\\">\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  xmlSpace=\\\"preserve\\\"\\n                  viewBox=\\\"0 0 16 16\\\"\\n                  className=\\\"h-14 w-14 shrink-0\\\"\\n                >\\n                  <path\\n                    fill=\\\"#2196F3\\\"\\n                    d=\\\"M8.32 7.68.58 15.42c-.37-.35-.57-.83-.57-1.35V1.93C.01 1.4.22.92.6.56l7.72 7.12z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#FFC107\\\"\\n                    d=\\\"M15.01 8c0 .7-.38 1.32-1.01 1.67l-2.2 1.22-2.73-2.52-.75-.69 2.89-2.89L14 6.33c.63.35 1.01.97 1.01 1.67z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#4CAF50\\\"\\n                    d=\\\"M8.32 7.68.6.56C.7.46.83.37.96.29 1.59-.09 2.35-.1 3 .26l8.21 4.53-2.89 2.89z\\\"\\n                  />\\n                  <path\\n                    fill=\\\"#F44336\\\"\\n                    d=\\\"M11.8 10.89 3 15.74c-.31.18-.66.26-1 .26-.36 0-.72-.09-1.04-.29a1.82 1.82 0 0 1-.38-.29l7.74-7.74.75.69 2.73 2.52z\\\"\\n                  />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    GET IT ON\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    Google Play\\n                  </span>\\n                </div>\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className=\\\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\\\"\\n              >\\n                <svg\\n                  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n                  enableBackground=\\\"new 0 0 22.185 27\\\"\\n                  viewBox=\\\"0 0 22.185 27\\\"\\n                  className=\\\"h-14 w-14 shrink-0 fill-white\\\"\\n                >\\n                  <path d=\\\"M18.436 14.271c0-2.225 1.216-4.166 3.02-5.194-.942-1.156-2.359-2.192-3.921-2.496-2.13-.415-3.345.276-4.131.553-.786.277-1.83.526-1.83.526s-1.043-.249-1.83-.526C8.959 6.857 7.744 6.165 5.614 6.58s-3.99 2.192-4.746 3.776c-1.458 3.057-.858 6.903.172 9.669 1.029 2.767 3.75 6.633 5.86 6.944 1.501.221 2.43-.816 4.674-1.079 2.244.263 3.173 1.3 4.674 1.079 2.11-.311 4.831-4.177 5.86-6.944.025-.068.051-.138.076-.208C19.987 18.935 18.436 16.784 18.436 14.271zM11.041 6.075c0 0 2.087.277 3.982-1.875s1.356-4.188 1.356-4.188-2.087-.277-3.982 1.875S11.041 6.075 11.041 6.075z\\\" />\\n                </svg>\\n                <div className=\\\"flex flex-col justify-center\\\">\\n                  <span className=\\\"text-[10px] font-normal tracking-wide uppercase\\\">\\n                    Download on the\\n                  </span>\\n                  <span className=\\\"text-xl leading-tight font-semibold\\\">\\n                    App Store\\n                  </span>\\n                </div>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <div className=\\\"border-surface/50 flex flex-col items-center justify-between gap-6 border-t pt-8 md:flex-row\\\">\\n          <p className=\\\"text-secondary order-2 md:order-1\\\">\\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\\n          </p>\\n          <div className=\\\"order-1 flex gap-1 md:order-2\\\">\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                <Twitter className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                <Youtube className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                <Instagram className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n            <Button\\n              asChild\\n              variant=\\\"ghost\\\"\\n              size=\\\"sm\\\"\\n              className=\\\"text-white hover:text-white\\\"\\n            >\\n              <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                <Github className=\\\"h-5 w-5\\\" />\\n              </a>\\n            </Button>\\n          </div>\\n        </div>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-14/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/footers-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"footers-15\",\n  \"description\": \"Website footer with quote\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/footers-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Github, Instagram, Twitter, Youtube } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nconst YEAR = new Date().getFullYear()\\n\\nconst LINKS = [\\n  { title: \\\"About Us\\\", href: \\\"#\\\" },\\n  { title: \\\"Careers\\\", href: \\\"#\\\" },\\n  { title: \\\"Press\\\", href: \\\"#\\\" },\\n  { title: \\\"Blog\\\", href: \\\"#\\\" },\\n  { title: \\\"Pricing\\\", href: \\\"#\\\" },\\n]\\n\\nexport default function Footers15() {\\n  return (\\n    <footer className=\\\"pt-16 pb-8\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-4 flex flex-col justify-between gap-4 md:flex-row\\\">\\n          <div>\\n            <h6 className=\\\"text-xl font-semibold\\\">Creative Tim</h6>\\n            <ul className=\\\"mt-4 flex flex-wrap items-center gap-x-6 gap-y-2\\\">\\n              {LINKS.map(({ title, href }, key) => (\\n                <li key={key}>\\n                  <a\\n                    href={href}\\n                    className=\\\"text-foreground hover:text-primary font-medium\\\"\\n                  >\\n                    {title}\\n                  </a>\\n                </li>\\n              ))}\\n            </ul>\\n          </div>\\n          <div className=\\\"md:text-right\\\">\\n            <p className=\\\"font-semibold\\\">\\n              The reward for getting on the stage is fame.\\n            </p>\\n            <p className=\\\"mb-4 font-semibold\\\">\\n              The price of fame is you can&apos;t get off the stage.\\n            </p>\\n            <div className=\\\"flex gap-1 md:justify-end\\\">\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Twitter\\\">\\n                  <Twitter className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"YouTube\\\">\\n                  <Youtube className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"Instagram\\\">\\n                  <Instagram className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n              <Button asChild variant=\\\"ghost\\\" size=\\\"icon\\\">\\n                <a href=\\\"#\\\" aria-label=\\\"GitHub\\\">\\n                  <Github className=\\\"h-5 w-5\\\" />\\n                </a>\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n        <p className=\\\"text-foreground\\\">\\n          All rights reserved. &copy; {YEAR} Creative Tim\\n        </p>\\n      </div>\\n    </footer>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/footers-15/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"400px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"footers\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/form-card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form-card-demo\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/form-card-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\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 FormCardDemo() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Create Account</CardTitle>\\n        <CardDescription>\\n          Enter your information to get started with Creative Tim UI\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-4\\\">\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"name\\\">Full Name</Label>\\n          <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"email\\\">Email Address</Label>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"password\\\">Password</Label>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" placeholder=\\\"••••••••\\\" />\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">Sign Up</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/form.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"form\",\n  \"dependencies\": [\n    \"react-hook-form\",\n    \"@hookform/resolvers\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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  useFormState,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/components/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>) {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot\\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-muted-foreground text-sm\\\", 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-destructive text-sm\\\", 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/www/public/r/grid-ecommerce-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"grid-ecommerce-01\",\n  \"description\": \"Product grid with filters\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/grid-ecommerce-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\n\\nconst CARDS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    title: \\\"New\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"Shop Sales\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1535220459927-c8428851fd45?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    title: \\\"50% off\\\",\\n    subtitle: \\\"Urban Chick Collection\\\",\\n  },\\n]\\n\\nexport default function GridEcommerce01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <p className=\\\"mb-8 font-semibold\\\">\\n          Gear Up and Enjoy Savings | Get up to 50% off on select items\\n        </p>\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {CARDS.map(({ image, title, subtitle }, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"group relative h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\"\\n            >\\n              <img\\n                src={image}\\n                alt={title}\\n                className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n              />\\n              <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n              <div className=\\\"absolute inset-x-0 bottom-0 p-6 text-white\\\">\\n                <p className=\\\"mb-2 text-sm font-semibold tracking-wider text-white/90 uppercase\\\">\\n                  {title}\\n                </p>\\n                <h3 className=\\\"mb-4 text-2xl font-bold\\\">{subtitle}</h3>\\n                <Button variant=\\\"link\\\" className=\\\"p-0 text-white\\\">\\n                  Read More\\n                </Button>\\n              </div>\\n            </Card>\\n          ))}\\n        </div>\\n        <Card className=\\\"group relative mt-6 h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\\\">\\n          <img\\n            src=\\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\"\\n            alt=\\\"Formal Elegance\\\"\\n            className=\\\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\\\"\\n          />\\n          <div className=\\\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\\\" />\\n          <div className=\\\"absolute inset-0 flex items-center justify-center p-8 text-white\\\">\\n            <div className=\\\"text-center\\\">\\n              <p className=\\\"mb-3 text-lg font-bold tracking-wider uppercase\\\">\\n                UP TO 70%\\n              </p>\\n              <h3 className=\\\"mb-6 text-3xl font-bold md:text-4xl\\\">\\n                Formal Elegance Series\\n              </h3>\\n              <Button variant=\\\"link\\\" size=\\\"lg\\\" className=\\\"p-0 text-white\\\">\\n                Discover\\n              </Button>\\n            </div>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/grid-ecommerce/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/highlighted-blog-posts-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"highlighted-blog-posts-01\",\n  \"description\": \"Highlighted blog posts with icons\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/highlighted-blog-posts-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Globe, Heart, Mic, Puzzle } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&auto=format&fit=crop\\\",\\n    icon: Heart,\\n    title: \\\"Cultural\\\",\\n    desc: \\\"257 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1511593358241-7eea1f3c84e5?w=800&auto=format&fit=crop\\\",\\n    icon: Puzzle,\\n    title: \\\"Modern Life\\\",\\n    desc: \\\"117 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&auto=format&fit=crop\\\",\\n    icon: Globe,\\n    title: \\\"Popularity\\\",\\n    desc: \\\"363 spots\\\",\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=800&auto=format&fit=crop\\\",\\n    icon: Mic,\\n    title: \\\"Good Vibes\\\",\\n    desc: \\\"215 spots\\\",\\n  },\\n]\\n\\nexport default function HighlightedBlogPosts01() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <div className=\\\"mb-16 grid place-items-center text-center\\\">\\n        <h2 className=\\\"my-4 text-3xl font-bold\\\">Check out what&apos;s new</h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-xl\\\">\\n          We get insulted by others, lose trust for those others. We get back\\n          freezes every winter\\n        </p>\\n      </div>\\n      <div className=\\\"grid grid-cols-1 gap-x-0 gap-y-6 md:grid-cols-3 md:gap-x-6\\\">\\n        <Card className=\\\"bg-primary text-primary-foreground flex flex-col justify-between py-0\\\">\\n          <CardHeader className=\\\"p-6 sm:p-8\\\">\\n            <p className=\\\"block text-center font-semibold opacity-80\\\">\\n              Landscape\\n            </p>\\n          </CardHeader>\\n          <CardContent className=\\\"p-6 sm:p-8\\\">\\n            <CardTitle className=\\\"text-center text-2xl\\\">\\n              Nature&apos;s Light\\n            </CardTitle>\\n            <CardDescription className=\\\"py-6 text-center opacity-80\\\">\\n              It really matters and then like it really doesn&apos;t matter.\\n              What matters is the people who are sparked by it.\\n            </CardDescription>\\n          </CardContent>\\n          <CardFooter className=\\\"p-6 text-center sm:p-8\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant=\\\"secondary\\\"\\n              className=\\\"bg-background text-foreground hover:bg-background/90\\\"\\n            >\\n              Read More\\n            </Button>\\n          </CardFooter>\\n        </Card>\\n        <div className=\\\"col-span-2 grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n          {POSTS.map(({ img, icon: Icon, title, desc }) => (\\n            <Card\\n              key={title}\\n              className=\\\"relative grid min-h-48 w-full overflow-hidden border-0 py-0\\\"\\n            >\\n              <img\\n                src={img}\\n                alt={title}\\n                className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n              />\\n              <div className=\\\"absolute inset-0 h-full w-full bg-black/60\\\" />\\n              <CardContent className=\\\"relative flex h-full flex-col justify-between p-6\\\">\\n                <Icon className=\\\"h-8 w-8 stroke-2 text-white\\\" />\\n                <div className=\\\"space-y-0.5\\\">\\n                  <CardTitle className=\\\"text-xl text-white\\\">{title}</CardTitle>\\n                  <CardDescription className=\\\"text-sm text-white/80\\\">\\n                    {desc}\\n                  </CardDescription>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/highlighted-blog-posts/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/hover-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hover-card\",\n  \"dependencies\": [\n    \"@radix-ui/react-hover-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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          \\\"bg-popover 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\\\",\\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/www/public/r/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  ],\n  \"devDependencies\": [\n    \"tw-animate-css\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/www/public/r/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  \"registryDependencies\": [\n    \"input\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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        \\\"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 dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center 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]:z-10 data-[active=true]:ring-[3px]\\\",\\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=\\\"animate-caret-blink bg-foreground h-4 w-px 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/www/public/r/input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"input\",\n  \"files\": [\n    {\n      \"path\": \"components/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        \\\"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 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 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        \\\"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\\\",\\n        \\\"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\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/www/public/r/interactive-product-preview-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"interactive-product-preview-01\",\n  \"description\": \"Interactive room product preview\",\n  \"registryDependencies\": [\n    \"button\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/interactive-product-preview-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  Eye,\\n  Heart,\\n  Minus,\\n  Plus,\\n  ShoppingCart,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\n\\nexport default function InteractiveProductPreview01() {\\n  const [quantity, setQuantity] = useState(1)\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto text-center\\\">\\n        <Badge\\n          variant=\\\"outline\\\"\\n          className=\\\"border-primary/30 bg-primary/10 text-primary mb-4\\\"\\n        >\\n          Room Previewer\\n        </Badge>\\n        <h2 className=\\\"my-4 text-4xl font-bold tracking-tight\\\">\\n          Visualize Your Space\\n        </h2>\\n        <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg leading-relaxed\\\">\\n          Easily preview furniture, decor, and more in your space, ensuring\\n          everything fits perfectly and looks just right. It&apos;s the ultimate\\n          tool for hassle-free home customization and design!\\n        </p>\\n      </div>\\n\\n      <div className=\\\"container mx-auto mt-14\\\">\\n        <div className=\\\"relative\\\">\\n          <img\\n            src=\\\"https://v3.material-tailwind.com/room.png\\\"\\n            alt=\\\"Room preview\\\"\\n            className=\\\"h-[680px] w-full rounded-2xl object-cover object-center shadow-2xl\\\"\\n          />\\n          <div className=\\\"absolute inset-0 h-full w-full rounded-2xl bg-gradient-to-tr from-black/30 via-black/10 to-transparent\\\" />\\n\\n          <div className=\\\"absolute top-6 right-6 bottom-6 left-6 !ml-auto flex max-w-[26rem] flex-col justify-between rounded-2xl border border-white/30 bg-white/90 px-6 py-6 shadow-2xl backdrop-blur-xl dark:bg-gray-900/90\\\">\\n            <div>\\n              <div className=\\\"mb-4 flex items-start justify-between\\\">\\n                <Badge className=\\\"bg-green-500 text-white\\\">New Arrival</Badge>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  className={`h-9 w-9 transition-colors ${\\n                    isFavorite\\n                      ? \\\"text-red-500 hover:text-red-600\\\"\\n                      : \\\"text-muted-foreground hover:text-red-500\\\"\\n                  }`}\\n                  onClick={() => setIsFavorite(!isFavorite)}\\n                >\\n                  <Heart\\n                    className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                  />\\n                </Button>\\n              </div>\\n\\n              <div className=\\\"mx-auto mb-6 grid place-items-center\\\">\\n                <div className=\\\"bg-muted/50 mb-4 rounded-xl p-6\\\">\\n                  <img\\n                    src=\\\"https://v3.material-tailwind.com/vase.svg\\\"\\n                    alt=\\\"Vase\\\"\\n                    className=\\\"h-32 w-32\\\"\\n                  />\\n                </div>\\n                <h3 className=\\\"text-2xl font-bold\\\">Elegant Ceramic Vase</h3>\\n\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {[1, 2, 3, 4, 5].map((star) => (\\n                      <Star\\n                        key={star}\\n                        className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                      />\\n                    ))}\\n                  </div>\\n                  <span className=\\\"text-muted-foreground text-sm\\\">\\n                    (127 reviews)\\n                  </span>\\n                </div>\\n\\n                <div className=\\\"mt-4 flex items-baseline gap-2\\\">\\n                  <p className=\\\"text-3xl font-bold\\\">$149.90</p>\\n                  <span className=\\\"text-muted-foreground text-sm line-through\\\">\\n                    $199.90\\n                  </span>\\n                </div>\\n              </div>\\n\\n              <p className=\\\"text-muted-foreground mx-auto max-w-xs text-center text-sm leading-relaxed\\\">\\n                Add a touch of sophistication to your home with our handcrafted\\n                ceramic vase.\\n              </p>\\n\\n              <div className=\\\"bg-muted/50 mb-2 flex items-center justify-center gap-2 rounded-lg py-3\\\">\\n                <Truck className=\\\"h-4 w-4 text-green-600 dark:text-green-400\\\" />\\n                <span className=\\\"text-sm font-medium\\\">\\n                  Free shipping on orders over $100\\n                </span>\\n              </div>\\n\\n              <div className=\\\"mb-4 flex items-center justify-center gap-3\\\">\\n                <span className=\\\"text-sm font-medium\\\">Quantity:</span>\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(Math.max(1, quantity - 1))}\\n                  >\\n                    <Minus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                  <span className=\\\"w-8 text-center font-semibold\\\">\\n                    {quantity}\\n                  </span>\\n                  <Button\\n                    variant=\\\"outline\\\"\\n                    size=\\\"icon\\\"\\n                    className=\\\"h-8 w-8\\\"\\n                    onClick={() => setQuantity(quantity + 1)}\\n                  >\\n                    <Plus className=\\\"h-3 w-3\\\" />\\n                  </Button>\\n                </div>\\n              </div>\\n\\n              <div className=\\\"flex items-center gap-2\\\">\\n                <Button className=\\\"flex-1 gap-2\\\" size=\\\"lg\\\">\\n                  <ShoppingCart className=\\\"h-4 w-4\\\" />\\n                  Add to Cart\\n                </Button>\\n                <Button variant=\\\"outline\\\" size=\\\"lg\\\" className=\\\"shrink-0 gap-2\\\">\\n                  <Eye className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"absolute hidden lg:flex\\\">\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[17rem] -translate-y-[30rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Ceramic Vase\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[26rem] -translate-y-[26rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Wall Art\\n              </div>\\n            </div>\\n            <div className=\\\"group relative grid h-12 w-12 translate-x-[5rem] -translate-y-[21rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\\\">\\n              <div className=\\\"bg-primary h-4 w-4 animate-pulse rounded-full\\\"></div>\\n              <div className=\\\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\\\">\\n                Table Lamp\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/interactive-product-preview/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/invoices-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"invoices-01\",\n  \"description\": \"Invoice overview with status badges and download\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/invoices-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Download } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst DATA = [\\n  {\\n    name: \\\"INV-24 #MS-415646\\\",\\n    date: \\\"October 15, 2024\\\",\\n    amount: 2500,\\n    badge: \\\"24 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-23 #MS-415740\\\",\\n    date: \\\"October 10, 2024\\\",\\n    amount: 1750,\\n    badge: \\\"20 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-22 #MS-946285\\\",\\n    date: \\\"September 15, 2024\\\",\\n    amount: 1500,\\n    badge: \\\"18 Days\\\",\\n    isOverdue: false,\\n  },\\n  {\\n    name: \\\"INV-21 #MS-739734\\\",\\n    date: \\\"September 10, 2024\\\",\\n    amount: 2990,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n  {\\n    name: \\\"INV-20 #MS-848649\\\",\\n    date: \\\"August 15, 2024\\\",\\n    amount: 3500,\\n    badge: \\\"3 Days Overdue\\\",\\n    isOverdue: true,\\n  },\\n]\\n\\nexport default function Invoices01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">Invoices</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n            Export\\n          </Button>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {DATA.map(({ name, date, amount, badge, isOverdue }, index) => (\\n            <div key={name}>\\n              <div className=\\\"flex flex-wrap items-center justify-between gap-6 py-6\\\">\\n                <div className=\\\"basis-full space-y-0.5 sm:basis-auto\\\">\\n                  <p className=\\\"text-lg font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n                </div>\\n                <Badge\\n                  variant={isOverdue ? \\\"destructive\\\" : \\\"default\\\"}\\n                  className={\\n                    isOverdue\\n                      ? \\\"w-max sm:ml-auto\\\"\\n                      : \\\"w-max bg-green-100 text-green-800 hover:bg-green-100 sm:ml-auto\\\"\\n                  }\\n                >\\n                  {badge}\\n                </Badge>\\n                <p className=\\\"text-end text-sm font-semibold\\\">\\n                  {new Intl.NumberFormat(\\\"en-US\\\", {\\n                    style: \\\"currency\\\",\\n                    currency: \\\"USD\\\",\\n                  }).format(amount)}\\n                </p>\\n                <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-8 w-8\\\">\\n                  <Download className=\\\"h-5 w-5\\\" />\\n                </Button>\\n              </div>\\n              {index < DATA.length - 1 && <Separator />}\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/invoices/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\"\n  },\n  \"categories\": [\n    \"billing\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/label.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"label\",\n  \"dependencies\": [\n    \"@radix-ui/react-label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/label.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\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/www/public/r/large-blog-preview-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"large-blog-preview-01\",\n  \"description\": \"Large blog post preview\",\n  \"registryDependencies\": [\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/large-blog-preview-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nexport default function LargeBlogPreview01() {\\n  return (\\n    <div className=\\\"container mx-auto grid h-full w-full grid-cols-1 items-center gap-x-16 gap-y-6 py-16 lg:grid-cols-2\\\">\\n      <img\\n        alt=\\\"blog preview\\\"\\n        src=\\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop\\\"\\n        className=\\\"h-full w-full rounded-lg object-cover object-center shadow-lg\\\"\\n      />\\n      <div>\\n        <p className=\\\"text-primary block font-semibold\\\">Business</p>\\n        <h2 className=\\\"my-4 text-3xl font-bold lg:text-4xl\\\">\\n          Autodesk looks to future of 3D with Project Escher\\n        </h2>\\n        <p className=\\\"text-muted-foreground mb-6 w-full max-w-lg text-lg\\\">\\n          Warner Music Group announced today it&apos;s acquiring the selected\\n          assets of the music platform Songkick, including its app for finding\\n          concerts and the company&apos;s trademark. Songkick has been involved\\n          in a lawsuit against the major…{\\\" \\\"}\\n          <a\\n            href=\\\"#\\\"\\n            className=\\\"text-foreground ml-2 inline-block font-semibold hover:underline\\\"\\n          >\\n            Read More\\n          </a>\\n        </p>\\n        <div className=\\\"flex items-center gap-3\\\">\\n          <Avatar>\\n            <AvatarImage\\n              src=\\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\"\\n              alt=\\\"Otto Gonzalez\\\"\\n            />\\n            <AvatarFallback>OG</AvatarFallback>\\n          </Avatar>\\n          <div className=\\\"space-y-0.5\\\">\\n            <p className=\\\"text-sm font-semibold\\\">Otto Gonzalez</p>\\n            <p className=\\\"text-muted-foreground text-xs\\\">10 October 2024</p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/large-blog-preview/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/menubar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menubar\",\n  \"dependencies\": [\n    \"@radix-ui/react-menubar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/menubar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as MenubarPrimitive from \\\"@radix-ui/react-menubar\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"bg-background 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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium 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          \\\"bg-popover text-popover-foreground 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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -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(\\n        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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/www/public/r/modals-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-01\",\n  \"description\": \"Alert modal with confirmation input for reset settings\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { TriangleAlert, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <TriangleAlert className=\\\"text-destructive mb-6 h-14 w-14\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-1 text-xl\\\">\\n                  Reset Settings\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 max-w-xl text-sm\\\">\\n                Are you sure you want to reset all settings to their default\\n                values? This action cannot be undone.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"reset\\\" className=\\\"text-sm\\\">\\n                Please type{\\\" \\\"}\\n                <span className=\\\"text-foreground font-semibold\\\">\\n                  &quot;Reset settings&quot;\\n                </span>{\\\" \\\"}\\n                to confirm.\\n              </Label>\\n              <div className=\\\"flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n                <Input\\n                  id=\\\"reset\\\"\\n                  placeholder=\\\"Reset settings\\\"\\n                  className=\\\"flex-1\\\"\\n                />\\n                <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n                  I understand, reset settings\\n                </Button>\\n              </div>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-02\",\n  \"description\": \"Edit profile modal with form inputs and preferences\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"checkbox\",\n    \"radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Checkbox } from \\\"@/components/ui/checkbox\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport { RadioGroup, RadioGroupItem } from \\\"@/components/ui/radio-group\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst NOTIFICATION = [\\\"Email\\\", \\\"SMS\\\", \\\"Push Notification\\\"]\\nconst TOOLS = [\\\"React\\\", \\\"Material Tailwind\\\", \\\"TailwindCSS\\\", \\\"Next.js\\\"]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Edit Profile</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Update your profile information below.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"name\\\" className=\\\"font-semibold\\\">\\n                  My Name\\n                </Label>\\n                <Input id=\\\"name\\\" placeholder=\\\"Emma Roberts\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"profession\\\" className=\\\"font-semibold\\\">\\n                  I&apos;m\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"profession\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Profession\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"ui-ux\\\">UI/UX Designer</SelectItem>\\n                    <SelectItem value=\\\"frontend\\\">Frontend Developer</SelectItem>\\n                    <SelectItem value=\\\"backend\\\">Backend Developer</SelectItem>\\n                    <SelectItem value=\\\"fullstack\\\">\\n                      Fullstack Developer\\n                    </SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2 border-y py-6\\\">\\n              <p className=\\\"font-semibold\\\">\\n                Interested in the following technologies\\n              </p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Choose the frameworks you work on\\n              </p>\\n              <div className=\\\"mt-4 flex flex-wrap items-center gap-6\\\">\\n                {TOOLS.map((tool) => (\\n                  <div key={tool} className=\\\"flex items-center gap-2\\\">\\n                    <Checkbox id={tool} />\\n                    <Label\\n                      htmlFor={tool}\\n                      className=\\\"text-muted-foreground cursor-pointer text-sm\\\"\\n                    >\\n                      {tool}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <p className=\\\"font-semibold\\\">Notification preferences</p>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Select where you want to be notified\\n              </p>\\n              <RadioGroup className=\\\"mt-4 flex items-center gap-6\\\">\\n                {NOTIFICATION.map((notify) => (\\n                  <div key={notify} className=\\\"flex items-center gap-2\\\">\\n                    <RadioGroupItem value={notify} id={notify} />\\n                    <Label\\n                      htmlFor={notify}\\n                      className=\\\"text-muted-foreground text-sm\\\"\\n                    >\\n                      {notify}\\n                    </Label>\\n                  </div>\\n                ))}\\n              </RadioGroup>\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Profile</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-03\",\n  \"description\": \"Invite members modal with team management\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"avatar\",\n    \"dropdown-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronDown, Pencil, X } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport {\\n  DropdownMenu,\\n  DropdownMenuContent,\\n  DropdownMenuItem,\\n  DropdownMenuTrigger,\\n} from \\\"@/components/ui/dropdown-menu\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\n\\ninterface UserProps {\\n  name: string\\n  img: string\\n  email: string\\n}\\n\\nfunction User({ name, img, email }: UserProps) {\\n  const [selected, setSelected] = React.useState(\\\"Can View\\\")\\n\\n  return (\\n    <div className=\\\"flex items-center justify-between gap-4\\\">\\n      <div className=\\\"flex items-center gap-4\\\">\\n        <Avatar>\\n          <AvatarImage src={img} alt={name} />\\n          <AvatarFallback>{name.charAt(0)}</AvatarFallback>\\n        </Avatar>\\n        <div className=\\\"space-y-0.5\\\">\\n          <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n          <p className=\\\"text-muted-foreground text-sm\\\">{email}</p>\\n        </div>\\n      </div>\\n      <DropdownMenu>\\n        <DropdownMenuTrigger asChild>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\" className=\\\"group\\\">\\n            <span className=\\\"hidden items-center gap-1 sm:flex\\\">\\n              {selected}{\\\" \\\"}\\n              <ChevronDown className=\\\"h-4 w-4 transition-transform group-data-[state=open]:rotate-180\\\" />\\n            </span>\\n            <Pencil className=\\\"block h-4 w-4 sm:hidden\\\" />\\n          </Button>\\n        </DropdownMenuTrigger>\\n        <DropdownMenuContent align=\\\"end\\\">\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can View\\\")}>\\n            Can View\\n          </DropdownMenuItem>\\n          <DropdownMenuItem onClick={() => setSelected(\\\"Can Edit\\\")}>\\n            Can Edit\\n          </DropdownMenuItem>\\n        </DropdownMenuContent>\\n      </DropdownMenu>\\n    </div>\\n  )\\n}\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Share with New Members\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground max-w-xl text-sm\\\">\\n              Welcome new members to your team! Use this modal to seamlessly add\\n              individuals to your dashboard, enabling collaboration and\\n              enhancing productivity.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"my-6 flex w-full flex-col items-center gap-2 sm:flex-row\\\">\\n            <Input type=\\\"email\\\" placeholder=\\\"Email, comma separated\\\" />\\n            <Button type=\\\"submit\\\" className=\\\"w-full shrink-0 sm:w-auto\\\">\\n              Invite\\n            </Button>\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              className=\\\"w-full shrink-0 sm:w-auto\\\"\\n            >\\n              Copy Link\\n            </Button>\\n          </form>\\n\\n          <div className=\\\"space-y-6\\\">\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=1\\\"\\n              name=\\\"Emma Roberts\\\"\\n              email=\\\"emma@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=2\\\"\\n              name=\\\"John Smith\\\"\\n              email=\\\"john@mail.com\\\"\\n            />\\n            <User\\n              img=\\\"https://i.pravatar.cc/150?img=3\\\"\\n              name=\\\"Sarah Johnson\\\"\\n              email=\\\"sarah@mail.com\\\"\\n            />\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-04\",\n  \"description\": \"Update product modal with image gallery and form\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"textarea\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Textarea } from \\\"@/components/ui/textarea\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"max-h-[90vh] overflow-y-auto sm:max-w-[700px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">\\n              Update Product Modal\\n            </DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Edit product features and save it.\\n            </p>\\n          </DialogHeader>\\n\\n          <div className=\\\"my-6 grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3\\\">\\n            {[...new Array(3)].map((_, i) => (\\n              <div\\n                key={i}\\n                className=\\\"bg-muted relative h-44 w-full overflow-hidden rounded-md\\\"\\n              >\\n                <img\\n                  src={`https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&h=400&fit=crop&crop=center&q=80`}\\n                  alt={`Product ${i + 1}`}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n                <Button\\n                  size=\\\"sm\\\"\\n                  variant=\\\"ghost\\\"\\n                  className=\\\"!absolute right-2 bottom-2\\\"\\n                >\\n                  <Trash className=\\\"h-4 w-4\\\" />\\n                </Button>\\n              </div>\\n            ))}\\n          </div>\\n\\n          <form className=\\\"space-y-6\\\">\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"productName\\\" className=\\\"font-semibold\\\">\\n                  Product Name\\n                </Label>\\n                <Input id=\\\"productName\\\" placeholder=\\\"Laptop\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"category\\\" className=\\\"font-semibold\\\">\\n                  Category\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"category\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Category\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"electronics\\\">Electronics</SelectItem>\\n                    <SelectItem value=\\\"clothing\\\">Clothing</SelectItem>\\n                    <SelectItem value=\\\"accessories\\\">Accessories</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"price\\\" className=\\\"font-semibold\\\">\\n                  Price\\n                </Label>\\n                <Input id=\\\"price\\\" placeholder=\\\"1000\\\" />\\n              </div>\\n              <div className=\\\"space-y-2\\\">\\n                <Label htmlFor=\\\"brand\\\" className=\\\"font-semibold\\\">\\n                  Brand\\n                </Label>\\n                <Select>\\n                  <SelectTrigger id=\\\"brand\\\" className=\\\"w-full\\\">\\n                    <SelectValue placeholder=\\\"Select Brand\\\" />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    <SelectItem value=\\\"apple\\\">Apple</SelectItem>\\n                    <SelectItem value=\\\"samsung\\\">Samsung</SelectItem>\\n                    <SelectItem value=\\\"microsoft\\\">Microsoft</SelectItem>\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"description\\\" className=\\\"font-semibold\\\">\\n                Description\\n              </Label>\\n              <Textarea\\n                id=\\\"description\\\"\\n                placeholder=\\\"Write something about your product.\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"tags\\\" className=\\\"font-semibold\\\">\\n                Tags\\n              </Label>\\n              <Input\\n                id=\\\"tags\\\"\\n                placeholder=\\\"Add up to 10 tags, separated by commas (,)\\\"\\n              />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Update Product</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-04/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-05\",\n  \"description\": \"Upload files modal with drag and drop\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { CloudUpload, Trash, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nconst IMAGES = [\\n  {\\n    name: \\\"cover-1.jpg\\\",\\n    size: \\\"140 KB\\\",\\n  },\\n  {\\n    name: \\\"cover-2.jpg\\\",\\n    size: \\\"288 KB\\\",\\n  },\\n]\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[600px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-1 text-xl\\\">Upload Files</DialogTitle>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Easily upload files to your account with just a few clicks.\\n            </p>\\n          </DialogHeader>\\n\\n          <form className=\\\"mt-6 space-y-4\\\">\\n            <Card className=\\\"border-2 border-dashed\\\">\\n              <CardContent className=\\\"grid min-h-64 place-items-center p-6\\\">\\n                <label htmlFor=\\\"upload\\\" className=\\\"cursor-pointer\\\">\\n                  <input type=\\\"file\\\" className=\\\"hidden\\\" id=\\\"upload\\\" />\\n                  <div className=\\\"mx-auto max-w-md text-center\\\">\\n                    <CloudUpload className=\\\"text-muted-foreground mx-auto mb-6 h-12 w-12\\\" />\\n                    <p className=\\\"mb-2 font-semibold\\\">\\n                      Drag and Drop or{\\\" \\\"}\\n                      <span className=\\\"underline\\\">Choose a Local File</span>\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Supported formats: .png, .jpg, .svg\\n                    </p>\\n                  </div>\\n                </label>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              {IMAGES.map(({ name, size }) => (\\n                <Card key={name}>\\n                  <CardContent className=\\\"flex items-start justify-between p-3\\\">\\n                    <div className=\\\"flex items-center gap-4\\\">\\n                      <img\\n                        src=\\\"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=100&h=100&fit=crop&crop=center&q=80\\\"\\n                        alt={name}\\n                        className=\\\"h-12 w-12 rounded object-cover object-center\\\"\\n                      />\\n                      <div className=\\\"space-y-1\\\">\\n                        <p className=\\\"text-sm font-semibold\\\">{name}</p>\\n                        <p className=\\\"text-muted-foreground text-sm\\\">{size}</p>\\n                      </div>\\n                    </div>\\n                    <Button\\n                      type=\\\"button\\\"\\n                      variant=\\\"ghost\\\"\\n                      size=\\\"sm\\\"\\n                      className=\\\"shrink-0\\\"\\n                    >\\n                      <Trash className=\\\"h-4 w-4\\\" />\\n                    </Button>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\">Upload</Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-05/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-06\",\n  \"description\": \"Publish capsule collection modal with metadata display\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Unlock, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <div className=\\\"flex items-start gap-4\\\">\\n            <div className=\\\"flex-1\\\">\\n              <Unlock className=\\\"text-primary mb-6 h-12 w-12\\\" />\\n              <DialogHeader>\\n                <DialogTitle className=\\\"mb-2 text-xl\\\">\\n                  Publish Capsule Collection\\n                </DialogTitle>\\n              </DialogHeader>\\n              <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                This action will expose your private capsule collection to\\n                public viewing across all fashion storefronts.\\n              </p>\\n            </div>\\n          </div>\\n\\n          <Card className=\\\"my-6\\\">\\n            <CardContent className=\\\"space-y-3 p-4\\\">\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">\\n                  Collection\\n                </span>\\n                <span className=\\\"text-sm font-medium\\\">fall-winter-vault</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Views</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n              <div className=\\\"flex items-center justify-between\\\">\\n                <span className=\\\"text-muted-foreground text-sm\\\">Likes</span>\\n                <span className=\\\"text-sm font-medium\\\">0</span>\\n              </div>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">Make Collection Public</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-06/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"650px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-07\",\n  \"description\": \"Change collection visibility settings modal\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Visibility Settings\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            This collection is currently restricted to internal collaborators.\\n            You can modify who can view or access it from this setting.\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-6\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Change Visibility</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-07/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-08\",\n  \"description\": \"Disable collection lock rules modal with alert and impact list\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Disable Collection Lock Rules\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Removing edit rules will allow unrestricted changes to your seasonal\\n            campaign folders and product groups.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertTriangle className=\\\"text-destructive h-4 w-4\\\" />\\n                Access Restrictions Will Be Removed\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Disabling these rules unlocks direct edits to sensitive assets\\n                and might affect internal syncs.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This will impact:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Designer review checkpoints</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Version freeze policies</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <p className=\\\"text-muted-foreground mb-6 text-xs\\\">\\n            Note: 0 edit lock rules currently active\\n          </p>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button variant=\\\"destructive\\\">Disable Edit Locks</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-08/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"750px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-09\",\n  \"description\": \"Transfer showroom ownership modal with form fields and warning\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\",\n    \"select\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertTriangle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Transfer Showroom Ownership\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Switch control of this fashion showroom space to another user or\\n            organization.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"owner\\\" className=\\\"font-semibold\\\">\\n                Select new owner\\n              </Label>\\n              <Select>\\n                <SelectTrigger id=\\\"owner\\\" className=\\\"w-full\\\">\\n                  <SelectValue placeholder=\\\"Choose owner\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"styling-team\\\">Styling Team</SelectItem>\\n                  <SelectItem value=\\\"content-studio\\\">Content Studio</SelectItem>\\n                  <SelectItem value=\\\"retail-partner\\\">Retail Partner</SelectItem>\\n                </SelectContent>\\n              </Select>\\n            </div>\\n\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"handle\\\" className=\\\"font-semibold\\\">\\n                Confirm collection handle\\n              </Label>\\n              <Input id=\\\"handle\\\" placeholder=\\\"resort-collection-2026\\\" />\\n            </div>\\n\\n            <Card className=\\\"border-yellow-500/50 bg-yellow-500/5\\\">\\n              <CardContent className=\\\"p-4\\\">\\n                <div className=\\\"flex items-start gap-3\\\">\\n                  <AlertTriangle className=\\\"mt-0.5 h-5 w-5 shrink-0 text-yellow-600\\\" />\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Transferring ownership will revoke your access to draft\\n                    sets, unpublished campaigns, and internal analytics.\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Transfer Access\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-09/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"750px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-10\",\n  \"description\": \"Permanently remove archive modal with effects list\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { AlertCircle, X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader, CardTitle } from \\\"@/components/ui/card\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[550px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Permanently Remove Archive\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Erasing this fashion vault will wipe its data across your platform\\n            and collaborators.\\n          </p>\\n\\n          <Card className=\\\"border-destructive/50 bg-destructive/5 my-6\\\">\\n            <CardHeader className=\\\"pb-3\\\">\\n              <CardTitle className=\\\"flex items-center gap-2 text-base\\\">\\n                <AlertCircle className=\\\"text-destructive h-4 w-4\\\" />\\n                Review Before Deleting\\n              </CardTitle>\\n            </CardHeader>\\n            <CardContent>\\n              <p className=\\\"text-muted-foreground text-sm\\\">\\n                Once removed, associated content (lookbooks, notes, edits) will\\n                be lost forever.\\n              </p>\\n            </CardContent>\\n          </Card>\\n\\n          <div className=\\\"mb-6 space-y-3\\\">\\n            <p className=\\\"text-sm font-semibold\\\">This action will:</p>\\n            <ul className=\\\"text-muted-foreground space-y-2 text-sm\\\">\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Deletes all digital outfits and metadata</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-destructive mt-1\\\">•</span>\\n                <span>Disconnects synced creative briefs</span>\\n              </li>\\n              <li className=\\\"flex items-start gap-2\\\">\\n                <span className=\\\"text-primary mt-1\\\">•</span>\\n                <span>No change to billing or usage limits</span>\\n              </li>\\n            </ul>\\n          </div>\\n\\n          <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n            <Button\\n              type=\\\"button\\\"\\n              variant=\\\"outline\\\"\\n              onClick={() => setIsOpen(false)}\\n            >\\n              Cancel\\n            </Button>\\n            <Button type=\\\"submit\\\">I acknowledge and confirm</Button>\\n          </div>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-10/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"750px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/modals-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"modals-11\",\n  \"description\": \"Confirm vault deletion modal with text input verification\",\n  \"registryDependencies\": [\n    \"dialog\",\n    \"button\",\n    \"input\",\n    \"label\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/modals-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { X } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Dialog,\\n  DialogContent,\\n  DialogHeader,\\n  DialogTitle,\\n  DialogTrigger,\\n} from \\\"@/components/ui/dialog\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Label } from \\\"@/components/ui/label\\\"\\n\\nexport default function ModalsBlock() {\\n  const [isOpen, setIsOpen] = React.useState(false)\\n\\n  return (\\n    <div className=\\\"grid min-h-screen w-full place-items-center\\\">\\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\\n        <DialogTrigger asChild>\\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\\n        </DialogTrigger>\\n        <DialogContent className=\\\"sm:max-w-[500px]\\\">\\n          <button\\n            onClick={() => setIsOpen(false)}\\n            className=\\\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\\\"\\n          >\\n            <X className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"sr-only\\\">Close</span>\\n          </button>\\n          <DialogHeader>\\n            <DialogTitle className=\\\"mb-2 text-xl\\\">\\n              Erase Fashion Vault\\n            </DialogTitle>\\n          </DialogHeader>\\n          <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n            Type the full collection handle to confirm irreversible deletion of\\n            this vault.\\n          </p>\\n\\n          <form className=\\\"mt-6 space-y-6\\\">\\n            <div className=\\\"space-y-2\\\">\\n              <Label htmlFor=\\\"identifier\\\" className=\\\"font-semibold\\\">\\n                Collection identifier\\n              </Label>\\n              <Input id=\\\"identifier\\\" placeholder=\\\"spring-edit-collection\\\" />\\n            </div>\\n\\n            <div className=\\\"flex items-center justify-end gap-2 pt-4\\\">\\n              <Button\\n                type=\\\"button\\\"\\n                variant=\\\"outline\\\"\\n                onClick={() => setIsOpen(false)}\\n              >\\n                Cancel\\n              </Button>\\n              <Button type=\\\"submit\\\" variant=\\\"destructive\\\">\\n                Delete Vault\\n              </Button>\\n            </div>\\n          </form>\\n        </DialogContent>\\n      </Dialog>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/modals-11/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"550px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"modals\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/navigation-menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"navigation-menu\",\n  \"dependencies\": [\n    \"@radix-ui/react-navigation-menu\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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 { ChevronDownIcon } from \\\"lucide-react\\\"\\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 hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\\\"\\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        \\\"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 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\\\",\\n        \\\"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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: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\\\",\\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 bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow 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        \\\"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_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        \\\"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm 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/www/public/r/order-details-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"order-details-01\",\n  \"description\": \"Order details with timeline\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"badge\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/order-details-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useEffect, useState } from \\\"react\\\"\\nimport {\\n  Archive,\\n  CheckCircle,\\n  Clock,\\n  FileText,\\n  Home,\\n  Mail,\\n  MapPin,\\n  Package,\\n  Phone,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst OPTIONS = [\\n  { title: \\\"Subtotal\\\", value: \\\"$1,780.00\\\" },\\n  { title: \\\"Shipping estimate\\\", value: \\\"$0\\\" },\\n  { title: \\\"Tax estimate\\\", value: \\\"$5\\\" },\\n]\\n\\nexport default function OrderDetails01() {\\n  const [step, setStep] = useState(\\\"3\\\")\\n  const [isVertical, setIsVertical] = useState(false)\\n\\n  useEffect(() => {\\n    const handleResize = () => {\\n      setIsVertical(window.innerWidth <= 768)\\n    }\\n    handleResize()\\n    window.addEventListener(\\\"resize\\\", handleResize)\\n    return () => window.removeEventListener(\\\"resize\\\", handleResize)\\n  }, [])\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <div className=\\\"mb-3 flex items-center gap-3\\\">\\n              <h2 className=\\\"text-3xl font-bold\\\">Order #1234</h2>\\n              <Badge className=\\\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\\\">\\n                In Transit\\n              </Badge>\\n            </div>\\n            <div className=\\\"flex items-center gap-4 text-sm\\\">\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Clock className=\\\"h-4 w-4\\\" />\\n                <span>\\n                  Placed on <span className=\\\"font-semibold\\\">April 1, 2024</span>\\n                </span>\\n              </div>\\n              <div className=\\\"text-muted-foreground flex items-center gap-2\\\">\\n                <Package className=\\\"h-4 w-4\\\" />\\n                <span className=\\\"font-semibold\\\">1 item</span>\\n              </div>\\n            </div>\\n          </div>\\n          <Button className=\\\"gap-2\\\">\\n            <FileText className=\\\"h-4 w-4\\\" />\\n            View Invoice\\n          </Button>\\n        </div>\\n\\n        <Card className=\\\"shadow-lg\\\">\\n          <CardHeader className=\\\"grid w-full grid-cols-1 gap-8 border-b p-6 md:grid-cols-2\\\">\\n            <div className=\\\"flex gap-4\\\">\\n              <div className=\\\"bg-muted/30 relative h-32 w-32 overflow-hidden rounded-xl border p-2 md:h-40 md:w-40\\\">\\n                <img\\n                  src=\\\"https://v3.material-tailwind.com/coat-2.png\\\"\\n                  alt=\\\"Premium Suit\\\"\\n                  className=\\\"h-full w-full object-contain\\\"\\n                />\\n              </div>\\n              <div className=\\\"flex flex-1 flex-col justify-between\\\">\\n                <div className=\\\"space-y-2\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Premium Suit</h3>\\n                  <p className=\\\"text-2xl font-bold\\\">$790</p>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    The time is now for it to be okay to be great. People in\\n                    this world shun people for being great.\\n                  </p>\\n                </div>\\n                <div className=\\\"mt-3 flex items-center gap-2\\\">\\n                  <Badge variant=\\\"outline\\\">Size: M</Badge>\\n                  <Badge variant=\\\"outline\\\">Qty: 1</Badge>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"grid gap-6 sm:grid-cols-2\\\">\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <MapPin className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Delivery Address</p>\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                  362 Ridgewood Avenue\\n                  <br />\\n                  Alaska 99669, USA\\n                </p>\\n              </div>\\n\\n              <div className=\\\"space-y-3\\\">\\n                <div className=\\\"flex items-center gap-2\\\">\\n                  <div className=\\\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\\\">\\n                    <Mail className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                  <p className=\\\"font-semibold\\\">Shipping Updates</p>\\n                </div>\\n                <div className=\\\"space-y-1 text-sm\\\">\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Mail className=\\\"h-3.5 w-3.5\\\" />\\n                    michael@email.com\\n                  </p>\\n                  <p className=\\\"text-muted-foreground flex items-center gap-1.5\\\">\\n                    <Phone className=\\\"h-3.5 w-3.5\\\" />\\n                    (307) 682-8835\\n                  </p>\\n                </div>\\n                <Button variant=\\\"outline\\\" size=\\\"sm\\\" className=\\\"mt-2\\\">\\n                  Edit Contact\\n                </Button>\\n              </div>\\n            </div>\\n          </CardHeader>\\n\\n          <CardContent className=\\\"w-full p-6 sm:p-8\\\">\\n            <div className=\\\"flex flex-col gap-8 lg:flex-row\\\">\\n              <div className=\\\"flex-1\\\">\\n                <h3 className=\\\"mb-6 text-lg font-semibold\\\">Order Timeline</h3>\\n                <div className=\\\"space-y-6\\\">\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Home className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Placed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order was placed on April 1, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <CheckCircle className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-primary my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Confirmed</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\\\"\\n                        >\\n                          Complete\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been confirmed on April 2, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\\\">\\n                        <Archive className=\\\"h-5 w-5 text-white\\\" />\\n                      </div>\\n                      <div className=\\\"bg-border my-2 w-0.5 flex-1\\\" />\\n                    </div>\\n                    <div className=\\\"pb-6\\\">\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"font-semibold\\\">Order Shipped</p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"border-blue-500/30 bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400\\\"\\n                        >\\n                          In Progress\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Your order has been shipped on April 3, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n\\n                  <div className=\\\"flex gap-4\\\">\\n                    <div className=\\\"flex flex-col items-center\\\">\\n                      <div className=\\\"bg-muted flex h-10 w-10 items-center justify-center rounded-full border-2 border-dashed\\\">\\n                        <Truck className=\\\"text-muted-foreground h-5 w-5\\\" />\\n                      </div>\\n                    </div>\\n                    <div>\\n                      <div className=\\\"mb-1 flex items-center gap-2\\\">\\n                        <p className=\\\"text-muted-foreground font-semibold\\\">\\n                          Order Delivered\\n                        </p>\\n                        <Badge\\n                          variant=\\\"outline\\\"\\n                          className=\\\"text-muted-foreground\\\"\\n                        >\\n                          Pending\\n                        </Badge>\\n                      </div>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">\\n                        Expected delivery on April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n\\n              <Separator className=\\\"lg:hidden\\\" />\\n\\n              <div className=\\\"w-full lg:w-80\\\">\\n                <div className=\\\"bg-muted/30 rounded-xl border p-6\\\">\\n                  <h3 className=\\\"mb-4 text-lg font-semibold\\\">Order Summary</h3>\\n                  <div className=\\\"space-y-3\\\">\\n                    {OPTIONS.map(({ title, value }) => (\\n                      <div key={title} className=\\\"flex justify-between text-sm\\\">\\n                        <span className=\\\"text-muted-foreground\\\">{title}</span>\\n                        <span className=\\\"font-medium\\\">{value}</span>\\n                      </div>\\n                    ))}\\n                  </div>\\n                  <Separator className=\\\"my-4\\\" />\\n                  <div className=\\\"flex items-center justify-between\\\">\\n                    <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                    <span className=\\\"text-2xl font-bold\\\">$1,785.00</span>\\n                  </div>\\n\\n                  <div className=\\\"bg-primary/10 mt-6 flex items-start gap-2 rounded-lg p-4\\\">\\n                    <Truck className=\\\"text-primary mt-0.5 h-5 w-5 shrink-0\\\" />\\n                    <div className=\\\"space-y-1\\\">\\n                      <p className=\\\"text-sm font-medium\\\">Track Your Order</p>\\n                      <p className=\\\"text-muted-foreground text-xs\\\">\\n                        Estimated delivery: April 6, 2024\\n                      </p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-details/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/order-history-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"order-history-01\",\n  \"description\": \"Order history table\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/order-history-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Table,\\n  TableBody,\\n  TableCell,\\n  TableHead,\\n  TableHeader,\\n  TableRow,\\n} from \\\"@/components/ui/table\\\"\\n\\nconst OPTIONS = [\\n  {\\n    data: \\\"Order ID\\\",\\n    value: \\\"1234\\\",\\n  },\\n  {\\n    data: \\\"Date of Placement\\\",\\n    value: \\\"April 3, 2024\\\",\\n  },\\n  {\\n    data: \\\"Amount\\\",\\n    value: \\\"$2,570\\\",\\n  },\\n]\\n\\nconst TABLE_ROW = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    product: \\\"Premium Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    product: \\\"Linen Suit\\\",\\n    amount: \\\"$790\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n    product: \\\"Tweed Suit\\\",\\n    amount: \\\"$990\\\",\\n    date: \\\"Apr 6, 2024\\\",\\n  },\\n]\\n\\nconst TABLE_HEAD = [\\\"Product\\\", \\\"Amount\\\", \\\"Status\\\", \\\"Date\\\", \\\"Details\\\"]\\n\\nexport default function OrderHistory01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <h2 className=\\\"text-lg font-semibold\\\">Order History</h2>\\n        <p className=\\\"text-muted-foreground mt-2\\\">\\n          See your recent orders, download your invoices.\\n        </p>\\n        <Card className=\\\"mt-8 mb-4 py-0\\\">\\n          <CardContent className=\\\"flex flex-wrap items-center justify-between gap-4 p-4\\\">\\n            <div className=\\\"flex gap-10\\\">\\n              {OPTIONS.map((option, i) => (\\n                <div key={i}>\\n                  <p className=\\\"text-muted-foreground mb-0.5 text-sm\\\">\\n                    {option.data}\\n                  </p>\\n                  <p className=\\\"font-semibold\\\">{option.value}</p>\\n                </div>\\n              ))}\\n            </div>\\n            <Button>View Invoice</Button>\\n          </CardContent>\\n        </Card>\\n        <Card>\\n          <div className=\\\"overflow-x-auto\\\">\\n            <Table>\\n              <TableHeader>\\n                <TableRow>\\n                  {TABLE_HEAD.map((head) => (\\n                    <TableHead key={head}>{head}</TableHead>\\n                  ))}\\n                </TableRow>\\n              </TableHeader>\\n              <TableBody>\\n                {TABLE_ROW.map(({ img, product, amount, date }) => (\\n                  <TableRow key={product}>\\n                    <TableCell>\\n                      <div className=\\\"flex items-center gap-3\\\">\\n                        <img src={img} alt={product} className=\\\"h-16\\\" />\\n                        <span className=\\\"text-sm font-semibold\\\">{product}</span>\\n                      </div>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {amount}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Badge\\n                        variant=\\\"secondary\\\"\\n                        className=\\\"bg-green-100 text-green-700\\\"\\n                      >\\n                        Delivered\\n                      </Badge>\\n                    </TableCell>\\n                    <TableCell className=\\\"text-muted-foreground text-sm\\\">\\n                      {date}\\n                    </TableCell>\\n                    <TableCell>\\n                      <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                        View\\n                      </Button>\\n                    </TableCell>\\n                  </TableRow>\\n                ))}\\n              </TableBody>\\n            </Table>\\n          </div>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/order-history/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/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\": \"components/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 { Button, buttonVariants } from \\\"@/components/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/www/public/r/payment-method-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"payment-method-01\",\n  \"description\": \"Payment method management with edit and delete\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/payment-method-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Check, Pencil, Plus, Trash2 } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\n\\ninterface PaymentMethodProps {\\n  type: \\\"visa\\\" | \\\"mastercard\\\"\\n  number: string\\n  isDefault?: boolean\\n}\\n\\nfunction PaymentMethod({ type, number, isDefault }: PaymentMethodProps) {\\n  const cardImg =\\n    type === \\\"visa\\\"\\n      ? \\\"https://v3.material-tailwind.com/visa.webp\\\"\\n      : \\\"https://v3.material-tailwind.com/mastercard.webp\\\"\\n\\n  return (\\n    <Card className=\\\"group hover:border-primary/50 relative flex flex-col gap-4 border p-6 transition-all hover:shadow-md\\\">\\n      {isDefault && (\\n        <div className=\\\"bg-primary absolute -top-px -right-px rounded-tr-lg rounded-bl-lg px-3 py-1\\\">\\n          <div className=\\\"flex items-center gap-1.5 text-xs font-semibold text-white\\\">\\n            <Check className=\\\"h-3 w-3\\\" />\\n            Default\\n          </div>\\n        </div>\\n      )}\\n\\n      <div className=\\\"flex items-center gap-3\\\">\\n        <div className=\\\"flex h-12 w-16 items-center justify-center rounded-lg bg-gray-50 p-2\\\">\\n          <img\\n            src={cardImg}\\n            alt={type}\\n            className=\\\"h-full w-auto object-contain\\\"\\n          />\\n        </div>\\n\\n        <div className=\\\"flex flex-1 flex-col gap-1\\\">\\n          <p className=\\\"text-base font-bold tracking-wider\\\">\\n            **** **** **** {number}\\n          </p>\\n          <p className=\\\"text-muted-foreground text-sm capitalize\\\">\\n            {type} Card\\n          </p>\\n        </div>\\n      </div>\\n\\n      <div className=\\\"flex items-center gap-1\\\">\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button size=\\\"icon\\\" variant=\\\"ghost\\\" className=\\\"h-9 w-9\\\">\\n                <Pencil className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Edit Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n\\n        <TooltipProvider>\\n          <Tooltip>\\n            <TooltipTrigger asChild>\\n              <Button\\n                size=\\\"icon\\\"\\n                variant=\\\"ghost\\\"\\n                className=\\\"text-destructive hover:bg-destructive/10 hover:text-destructive h-9 w-9\\\"\\n              >\\n                <Trash2 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </TooltipTrigger>\\n            <TooltipContent>\\n              <p>Remove Card</p>\\n            </TooltipContent>\\n          </Tooltip>\\n        </TooltipProvider>\\n      </div>\\n    </Card>\\n  )\\n}\\n\\nexport default function PaymentMethod01() {\\n  return (\\n    <div className=\\\"mx-auto max-w-4xl p-6\\\">\\n      <div className=\\\"flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center\\\">\\n        <div>\\n          <h2 className=\\\"text-2xl font-bold\\\">Payment Methods</h2>\\n          <p className=\\\"text-muted-foreground mt-1 text-sm\\\">\\n            Manage your preferred payment methods securely and conveniently.\\n          </p>\\n        </div>\\n        <Button className=\\\"w-full sm:w-auto\\\">\\n          <Plus className=\\\"mr-2 h-4 w-4\\\" /> Add New Card\\n        </Button>\\n      </div>\\n\\n      <div className=\\\"mt-8 grid grid-cols-1 gap-4 md:grid-cols-2\\\">\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"7852\\\" isDefault />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"9831\\\" />\\n        <PaymentMethod type=\\\"visa\\\" number=\\\"8362\\\" />\\n        <PaymentMethod type=\\\"mastercard\\\" number=\\\"0098\\\" />\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/payment-method/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\"\n  },\n  \"categories\": [\n    \"billing\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/popover.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"popover\",\n  \"dependencies\": [\n    \"@radix-ui/react-popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return (\\n    <PopoverPrimitive.Trigger\\n      data-slot=\\\"popover-trigger\\\"\\n      asChild={asChild}\\n      {...props}\\n    />\\n  )\\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          \\\"bg-popover 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md 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\\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/product-description-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"product-description-01\",\n  \"description\": \"Product description with gallery\",\n  \"registryDependencies\": [\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/product-description-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport {\\n  ChevronRight,\\n  Heart,\\n  RotateCcw,\\n  Shield,\\n  Star,\\n  Truck,\\n} from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst IMAGES = [\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-1.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-2.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-3.png\\\" },\\n  { imgelink: \\\"https://v3.material-tailwind.com/coat-4.png\\\" },\\n]\\n\\nconst SIZES = [\\\"32\\\", \\\"34\\\", \\\"36\\\", \\\"38\\\", \\\"40\\\", \\\"42\\\", \\\"44\\\"]\\n\\nconst COLORS = [\\n  { name: \\\"Black\\\", hex: \\\"#1a1a1a\\\" },\\n  { name: \\\"White\\\", hex: \\\"#ffffff\\\" },\\n  { name: \\\"Gray\\\", hex: \\\"#e5e7eb\\\" },\\n  { name: \\\"Navy\\\", hex: \\\"#1e3a8a\\\" },\\n  { name: \\\"Brown\\\", hex: \\\"#92400e\\\" },\\n]\\n\\nconst FEATURES = [\\n  { icon: Truck, text: \\\"Free shipping over $150\\\" },\\n  { icon: RotateCcw, text: \\\"Easy 30-day returns\\\" },\\n  { icon: Shield, text: \\\"1-year warranty\\\" },\\n]\\n\\nexport default function ProductDescription01() {\\n  const [active, setActive] = useState(\\n    \\\"https://v3.material-tailwind.com/coat-1.png\\\"\\n  )\\n  const [selectedSize, setSelectedSize] = useState(\\\"36\\\")\\n  const [selectedColor, setSelectedColor] = useState(\\\"Black\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"min-h-screen bg-neutral-50 py-12\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <nav className=\\\"mb-8 flex items-center gap-2 text-sm text-neutral-500\\\">\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Home\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Women\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <a href=\\\"#\\\" className=\\\"hover:text-neutral-900\\\">\\n            Outerwear\\n          </a>\\n          <ChevronRight className=\\\"h-4 w-4\\\" />\\n          <span className=\\\"text-neutral-900\\\">Premium Winter Coat</span>\\n        </nav>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\\\">\\n          <div>\\n            <div className=\\\"overflow-hidden rounded-2xl bg-white\\\">\\n              <img\\n                src={active}\\n                alt=\\\"Product\\\"\\n                className=\\\"h-[500px] w-full object-cover object-center\\\"\\n              />\\n            </div>\\n            <div className=\\\"mt-4 flex justify-center gap-3\\\">\\n              {IMAGES.map(({ imgelink }, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setActive(imgelink)}\\n                  className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\\n                    active === imgelink\\n                      ? \\\"border-neutral-900\\\"\\n                      : \\\"border-neutral-200 hover:border-neutral-400\\\"\\n                  }`}\\n                >\\n                  <img\\n                    src={imgelink}\\n                    alt={`Gallery ${index + 1}`}\\n                    className=\\\"h-full w-full object-cover object-center\\\"\\n                  />\\n                </button>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"mt-8 space-y-6\\\">\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Product Description\\n                </h3>\\n                <p className=\\\"leading-relaxed text-neutral-600\\\">\\n                  Experience luxury and comfort with this premium winter coat.\\n                  Crafted from high-quality materials with meticulous attention\\n                  to detail, this coat features a modern silhouette that\\n                  flatters all body types. The water-resistant outer shell keeps\\n                  you dry in light rain, while the insulated lining provides\\n                  warmth without bulk.\\n                </p>\\n              </div>\\n              <div>\\n                <h3 className=\\\"mb-3 text-lg font-medium text-neutral-900\\\">\\n                  Key Features\\n                </h3>\\n                <ul className=\\\"space-y-2 text-neutral-600\\\">\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Water-resistant fabric with breathable membrane technology\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Premium insulation for optimal warmth in cold weather\\n                    </span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>Adjustable cuffs and hem for personalized fit</span>\\n                  </li>\\n                  <li className=\\\"flex items-start gap-2\\\">\\n                    <span className=\\\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\\\" />\\n                    <span>\\n                      Multiple interior and exterior pockets for storage\\n                    </span>\\n                  </li>\\n                </ul>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <div className=\\\"flex flex-col\\\">\\n            <Badge\\n              variant=\\\"outline\\\"\\n              className=\\\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\\\"\\n            >\\n              Limited Edition\\n            </Badge>\\n\\n            <h1 className=\\\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\\\">\\n              Premium Winter Coat\\n            </h1>\\n\\n            <div className=\\\"mb-6 flex items-center gap-4\\\">\\n              <span className=\\\"text-2xl font-normal text-neutral-900\\\">\\n                $1,290.00\\n              </span>\\n              <div className=\\\"flex items-center gap-1\\\">\\n                <div className=\\\"flex\\\">\\n                  {[...Array(5)].map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < 4\\n                          ? \\\"fill-neutral-900 text-neutral-900\\\"\\n                          : \\\"fill-neutral-300 text-neutral-300\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n                <span className=\\\"text-sm text-neutral-500\\\">(100 reviews)</span>\\n              </div>\\n            </div>\\n\\n            <p className=\\\"mb-6 text-sm leading-relaxed text-neutral-600\\\">\\n              Elevate your winter wardrobe with this sophisticated coat that\\n              seamlessly blends style and functionality. Perfect for both\\n              professional settings and casual outings.\\n            </p>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-2\\\">\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Color\\n                </p>\\n                <Select value={selectedColor} onValueChange={setSelectedColor}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {COLORS.map((color) => (\\n                      <SelectItem key={color.name} value={color.name}>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <div\\n                            className=\\\"h-4 w-4 rounded-full border border-neutral-200\\\"\\n                            style={{ backgroundColor: color.hex }}\\n                          />\\n                          <span>{color.name}</span>\\n                        </div>\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n\\n              <div>\\n                <p className=\\\"mb-3 text-sm font-medium text-neutral-900\\\">\\n                  Size\\n                </p>\\n                <Select value={selectedSize} onValueChange={setSelectedSize}>\\n                  <SelectTrigger className=\\\"w-full border-neutral-200\\\">\\n                    <SelectValue />\\n                  </SelectTrigger>\\n                  <SelectContent>\\n                    {SIZES.map((size) => (\\n                      <SelectItem key={size} value={size}>\\n                        {size}\\n                      </SelectItem>\\n                    ))}\\n                  </SelectContent>\\n                </Select>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-3\\\">\\n              {FEATURES.map((feature, index) => (\\n                <div\\n                  key={index}\\n                  className=\\\"flex flex-col items-center gap-2 rounded-lg border border-neutral-200 bg-white p-4 text-center\\\"\\n                >\\n                  <feature.icon className=\\\"h-5 w-5 flex-shrink-0 text-neutral-900\\\" />\\n                  <span className=\\\"text-xs text-neutral-600\\\">\\n                    {feature.text}\\n                  </span>\\n                </div>\\n              ))}\\n            </div>\\n\\n            <div className=\\\"flex flex-col gap-3 sm:flex-row\\\">\\n              <Button\\n                size=\\\"lg\\\"\\n                className=\\\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n              >\\n                Add to Cart\\n              </Button>\\n              <Button\\n                size=\\\"lg\\\"\\n                variant=\\\"outline\\\"\\n                className={`border-neutral-900 transition-colors ${\\n                  isFavorite\\n                    ? \\\"bg-neutral-900 text-white hover:bg-neutral-800\\\"\\n                    : \\\"text-neutral-900 hover:bg-neutral-900 hover:text-white\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-description/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/product-details-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"product-details-01\",\n  \"description\": \"Product details with image carousel\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/product-details-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Heart } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst IMAGES = [\\n  \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n  \\\"https://v3.material-tailwind.com/coat-3.png\\\",\\n]\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\"]\\n\\nexport default function ProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"S\\\")\\n  const [currentIndex, setCurrentIndex] = useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentIndex((prev) => (prev + 1) % IMAGES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentIndex((prev) => (prev - 1 + IMAGES.length) % IMAGES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <nav className=\\\"mb-4 flex text-sm\\\">\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Store\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <a href=\\\"#\\\" className=\\\"text-muted-foreground hover:text-foreground\\\">\\n            Designers\\n          </a>\\n          <span className=\\\"mx-2\\\">/</span>\\n          <span className=\\\"text-foreground\\\">Pink Blouse</span>\\n        </nav>\\n        <div className=\\\"mt-4 grid grid-cols-1 items-center gap-10 md:grid-cols-2\\\">\\n          <div>\\n            <Card className=\\\"py-10\\\">\\n              <CardContent className=\\\"relative p-0\\\">\\n                <div className=\\\"overflow-hidden\\\">\\n                  <img\\n                    src={IMAGES[currentIndex]}\\n                    alt={`Product ${currentIndex + 1}`}\\n                    className=\\\"mx-auto h-[30rem] object-cover transition-transform duration-300\\\"\\n                  />\\n                </div>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={prevSlide}\\n                  className=\\\"absolute top-1/2 left-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronLeft className=\\\"h-7 w-7\\\" />\\n                </Button>\\n                <Button\\n                  variant=\\\"ghost\\\"\\n                  size=\\\"icon\\\"\\n                  onClick={nextSlide}\\n                  className=\\\"absolute top-1/2 right-2 -translate-y-1/2 rounded-full\\\"\\n                >\\n                  <ChevronRight className=\\\"h-7 w-7\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          </div>\\n          <div className=\\\"text-center\\\">\\n            <h2 className=\\\"mb-6 text-2xl font-bold\\\">Pink Blouse</h2>\\n            <p className=\\\"text-primary text-2xl font-semibold\\\">$1,290</p>\\n            <div className=\\\"my-8 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <span className=\\\"text-sm font-semibold\\\">100 Reviews</span>\\n            </div>\\n            <p className=\\\"text-muted-foreground [text-wrap:_balance]\\\">\\n              There&apos;s nothing I really wanted to do in life that I\\n              wasn&apos;t able to get good at. That&apos;s my skill. I&apos;m\\n              not really specifically talented at anything except for the\\n              ability to learn.\\n            </p>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Color\\n            </h3>\\n            <div className=\\\"flex justify-center gap-2\\\">\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded bg-black\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-white\\\" />\\n              <div className=\\\"h-5 w-5 cursor-pointer rounded border bg-gray-200\\\" />\\n            </div>\\n            <h3 className=\\\"mt-8 mb-4 text-center text-lg font-semibold\\\">\\n              Size\\n            </h3>\\n            <div className=\\\"flex items-center justify-center gap-4\\\">\\n              {SIZES.map((size) => (\\n                <Button\\n                  key={size}\\n                  onClick={() => setSelectedSize(size)}\\n                  variant={size === selectedSize ? \\\"default\\\" : \\\"outline\\\"}\\n                >\\n                  {size}\\n                </Button>\\n              ))}\\n            </div>\\n            <div className=\\\"my-6 flex items-center justify-center gap-2\\\">\\n              <Button size=\\\"lg\\\" className=\\\"w-full max-w-60\\\">\\n                Add to Cart\\n              </Button>\\n              <Button size=\\\"lg\\\" variant=\\\"outline\\\" className=\\\"text-red-500\\\">\\n                <Heart className=\\\"h-5 w-5\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-details/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/product-listing-filters-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"product-listing-filters-01\",\n  \"description\": \"Product listing with filters and sort\",\n  \"registryDependencies\": [\n    \"button\",\n    \"badge\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/product-listing-filters-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst FILTERS = [\\n  {\\n    id: \\\"categories\\\",\\n    label: \\\"Categories\\\",\\n    options: [\\\"All\\\", \\\"Shirts\\\", \\\"Pants\\\", \\\"Sweaters\\\", \\\"Jackets\\\"],\\n  },\\n  {\\n    id: \\\"size\\\",\\n    label: \\\"Size\\\",\\n    options: [\\\"All Sizes\\\", \\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"],\\n  },\\n  {\\n    id: \\\"material\\\",\\n    label: \\\"Material\\\",\\n    options: [\\\"All Materials\\\", \\\"Cotton\\\", \\\"Cashmere\\\", \\\"Wool\\\", \\\"Silk\\\", \\\"Linen\\\"],\\n  },\\n  {\\n    id: \\\"color\\\",\\n    label: \\\"Color\\\",\\n    options: [\\\"All Colors\\\", \\\"Black\\\", \\\"Blue\\\", \\\"Gray\\\", \\\"Brown\\\", \\\"White\\\", \\\"Navy\\\"],\\n  },\\n  {\\n    id: \\\"pattern\\\",\\n    label: \\\"Pattern\\\",\\n    options: [\\\"All Patterns\\\", \\\"Solid\\\", \\\"Striped\\\", \\\"Cable-knit\\\", \\\"Printed\\\"],\\n  },\\n]\\n\\nconst PRODUCTS = [\\n  {\\n    id: 1,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cable-knit cashmere cardigan\\\",\\n    price: \\\"€3,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 2,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cotton and cashmere shirt\\\",\\n    price: \\\"€675\\\",\\n    badge: null,\\n  },\\n  {\\n    id: 3,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1737608734653-d1eaad541d46?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1027\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Wool straight pants\\\",\\n    price: \\\"€1,450\\\",\\n    badge: \\\"Exclusive\\\",\\n  },\\n  {\\n    id: 4,\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    brand: \\\"Zegna\\\",\\n    name: \\\"Cashmere sweater\\\",\\n    price: \\\"€1,950\\\",\\n    badge: \\\"New Arrival\\\",\\n  },\\n]\\n\\nexport default function ProductListingFilters01() {\\n  const [favorites, setFavorites] = useState<number[]>([])\\n  const [selectedFilters, setSelectedFilters] = useState<\\n    Record<string, string>\\n  >({})\\n\\n  const toggleFavorite = (productId: number) => {\\n    setFavorites((prev) =>\\n      prev.includes(productId)\\n        ? prev.filter((id) => id !== productId)\\n        : [...prev, productId]\\n    )\\n  }\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"mb-8 flex flex-wrap items-center justify-between gap-4\\\">\\n          <div className=\\\"flex flex-wrap gap-2\\\">\\n            {FILTERS.map((filter) => (\\n              <Select\\n                key={filter.id}\\n                value={selectedFilters[filter.id] || filter.options[0]}\\n                onValueChange={(value) =>\\n                  setSelectedFilters((prev) => ({\\n                    ...prev,\\n                    [filter.id]: value,\\n                  }))\\n                }\\n              >\\n                <SelectTrigger className=\\\"w-[140px]\\\">\\n                  <SelectValue placeholder={filter.label} />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  {filter.options.map((option) => (\\n                    <SelectItem key={option} value={option}>\\n                      {option}\\n                    </SelectItem>\\n                  ))}\\n                </SelectContent>\\n              </Select>\\n            ))}\\n          </div>\\n          <div className=\\\"flex items-center gap-4\\\">\\n            <span className=\\\"text-muted-foreground text-sm\\\">462 Products</span>\\n            <Select defaultValue=\\\"featured\\\">\\n              <SelectTrigger className=\\\"w-[180px]\\\">\\n                <SelectValue placeholder=\\\"Sort by\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"featured\\\">Featured</SelectItem>\\n                <SelectItem value=\\\"price-low\\\">Price: Low to High</SelectItem>\\n                <SelectItem value=\\\"price-high\\\">Price: High to Low</SelectItem>\\n                <SelectItem value=\\\"newest\\\">Newest</SelectItem>\\n              </SelectContent>\\n            </Select>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {PRODUCTS.map((product) => (\\n            <div\\n              key={product.id}\\n              className=\\\"group bg-card relative overflow-hidden rounded-lg border transition-all hover:shadow-lg\\\"\\n            >\\n              {product.badge && (\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute top-3 left-3 z-10 bg-white dark:bg-gray-900\\\"\\n                >\\n                  {product.badge}\\n                </Badge>\\n              )}\\n              <button\\n                onClick={() => toggleFavorite(product.id)}\\n                className=\\\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/90 backdrop-blur-sm transition-colors hover:bg-white dark:bg-gray-900/90 dark:hover:bg-gray-900\\\"\\n              >\\n                <Heart\\n                  className={`h-4 w-4 transition-colors ${\\n                    favorites.includes(product.id)\\n                      ? \\\"fill-red-500 text-red-500\\\"\\n                      : \\\"text-gray-600 dark:text-gray-400\\\"\\n                  }`}\\n                />\\n              </button>\\n\\n              <div className=\\\"bg-muted/30 aspect-square overflow-hidden\\\">\\n                <img\\n                  src={product.image}\\n                  alt={product.name}\\n                  className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                />\\n              </div>\\n\\n              <div className=\\\"border-t p-4\\\">\\n                <div className=\\\"mb-2 flex items-start justify-between gap-2\\\">\\n                  <div className=\\\"flex-1\\\">\\n                    <p className=\\\"text-sm font-semibold\\\">{product.brand}</p>\\n                    <p className=\\\"text-muted-foreground mt-1 text-sm leading-tight\\\">\\n                      {product.name}\\n                    </p>\\n                  </div>\\n                </div>\\n                <p className=\\\"mt-2 font-semibold\\\">{product.price}</p>\\n              </div>\\n            </div>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/product-listing-filters/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/progress.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"progress\",\n  \"dependencies\": [\n    \"@radix-ui/react-progress\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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        \\\"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"bg-primary h-full w-full flex-1 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/www/public/r/promotional-cards-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"promotional-cards-01\",\n  \"description\": \"Promotional product cards\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/promotional-cards-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nconst PRODUCTS = [\\n  {\\n    name: \\\"Active toning essence\\\",\\n    price: \\\"$59.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1620916566398-39f1143ab7be?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Hydrating face serum\\\",\\n    price: \\\"$49.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1571781926291-c477ebfd024b?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n  {\\n    name: \\\"Vitamin C moisturizer\\\",\\n    price: \\\"$65.00\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1608571423902-eed4a5ad8108?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\\\",\\n  },\\n]\\n\\nexport default function PromotionalCards01() {\\n  const [currentProduct, setCurrentProduct] = useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <div className=\\\"grid grid-cols-1 overflow-hidden rounded-2xl shadow-xl lg:grid-cols-2\\\">\\n          {/* Left: Product Showcase */}\\n          <div className=\\\"flex flex-col items-center justify-center bg-[#e8e3dc] p-16\\\">\\n            <div className=\\\"mb-8 flex h-80 w-80 items-center justify-center\\\">\\n              <img\\n                src={PRODUCTS[currentProduct].image}\\n                alt={PRODUCTS[currentProduct].name}\\n                className=\\\"h-full w-full object-contain drop-shadow-2xl transition-all duration-500\\\"\\n              />\\n            </div>\\n            <h3 className=\\\"mb-2 text-center text-lg font-medium text-gray-800\\\">\\n              {PRODUCTS[currentProduct].name}\\n            </h3>\\n            <p className=\\\"mb-6 text-center text-xl font-semibold text-gray-900\\\">\\n              {PRODUCTS[currentProduct].price}\\n            </p>\\n            <div className=\\\"flex gap-2\\\">\\n              {PRODUCTS.map((_, index) => (\\n                <button\\n                  key={index}\\n                  onClick={() => setCurrentProduct(index)}\\n                  className={`h-2.5 w-2.5 rounded-full transition-all ${\\n                    currentProduct === index\\n                      ? \\\"w-8 bg-gray-800\\\"\\n                      : \\\"bg-gray-400 hover:bg-gray-600\\\"\\n                  }`}\\n                  aria-label={`View product ${index + 1}`}\\n                />\\n              ))}\\n            </div>\\n          </div>\\n\\n          {/* Right: Hero Image with Text */}\\n          <div className=\\\"relative flex min-h-[500px] items-center justify-center lg:min-h-[600px]\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1581182815808-b6eb627a8798?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1065\\\"\\n              alt=\\\"Beauty model\\\"\\n              className=\\\"absolute inset-0 h-full w-full object-cover\\\"\\n            />\\n            <div className=\\\"relative z-10 px-8 text-center lg:px-16\\\">\\n              <h2 className=\\\"font-serif text-5xl leading-tight font-light text-white drop-shadow-lg lg:text-6xl\\\">\\n                Glow up with\\n                <br />\\n                nature\\n              </h2>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/promotional-cards/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/radio-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-group\",\n  \"dependencies\": [\n    \"@radix-ui/react-radio-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/radio-group.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RadioGroupPrimitive from \\\"@radix-ui/react-radio-group\\\"\\nimport { CircleIcon } from \\\"lucide-react\\\"\\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        \\\"border-input text-primary 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:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\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=\\\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\\\" />\\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/www/public/r/registry.json",
    "content": "{\n  \"name\": \"creative-tim/ui\",\n  \"homepage\": \"https://creative-tim.com/ui\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"devDependencies\": [\n        \"tw-animate-css\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"style\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"devDependencies\": [\n        \"tw-animate-css\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\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/creative-tim/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-day-picker\",\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/card.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"recharts\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/command.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"vaul\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-hook-form\",\n        \"@hookform/resolvers\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/form.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/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/creative-tim/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"input-otp\"\n      ],\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/label.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-resizable-panels\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/select.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/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      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/table.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/software-purchase-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-plain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-plain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-button\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-with-button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-blog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-blog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-ecommerce\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-ecommerce.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-card-demo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/form-card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Software purchase approval card\",\n      \"registryDependencies\": [\n        \"software-purchase-card\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/software-purchase-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/software-purchase/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\"\n      },\n      \"categories\": [\n        \"forms\"\n      ]\n    },\n    {\n      \"name\": \"billing-information-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Manage billing contacts and company information\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/billing-information-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/billing-information/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"card-display-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Credit card display with dark and light themes\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/card-display-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/card-display/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"payment-method-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Payment method management with edit and delete\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/payment-method-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/payment-method/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"transaction-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Financial transaction history with trend indicators\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/transaction-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/transaction-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"invoices-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invoice overview with status badges and download\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/invoices-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/invoices/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"simple-blog-content-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple blog content cards\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-blog-content-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-blog-content/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-cards-layout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog cards with view more button\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-cards-layout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-cards-layout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-post-preview-tags-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with tags\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-post-preview-tags-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-post-preview-tags/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"highlighted-blog-posts-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Highlighted blog posts with icons\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/highlighted-blog-posts-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/highlighted-blog-posts/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-rectangular-images-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with rectangular images\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-rectangular-images-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-rectangular-images/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"large-blog-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Large blog post preview\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/large-blog-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/large-blog-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"simple-product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple product details grid\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"accordion\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"grid-ecommerce-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product grid with filters\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/grid-ecommerce-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/grid-ecommerce/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"promotional-cards-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Promotional product cards\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/promotional-cards-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/promotional-cards/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"order-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order history table\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"empty-shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Empty shopping cart state\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/empty-shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/empty-shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"digital-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Digital product with plan options\",\n      \"registryDependencies\": [\n        \"button\",\n        \"label\",\n        \"radio-group\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/digital-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/digital-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with gallery\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"dark-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark themed product overview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"tabs\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/dark-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dark-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Shopping cart with summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"select\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"checkout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Checkout form with order summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/checkout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/checkout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"complex-product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with accordion\",\n      \"registryDependencies\": [\n        \"accordion\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/complex-product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/complex-product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"interactive-product-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive room product preview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/interactive-product-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/interactive-product-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"order-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order details with timeline\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product details with image carousel\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-listing-filters-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product listing with filters and sort\",\n      \"registryDependencies\": [\n        \"button\",\n        \"badge\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-listing-filters-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-listing-filters/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"ecommerce-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Runway video spotlight with product cards\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"ecommerce-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Luxury product detail page with image gallery\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"simple-faq-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ with dividers\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-faq-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-faq/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-list-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ list with accordion\",\n      \"registryDependencies\": [\n        \"accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-list-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-list/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faq-left-title-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ with left-aligned title and card grid\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faq-left-title-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faq-left-title/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-grid-cta-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ grid with CTA section\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-cta-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid-cta/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-cards-icons-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ cards with icons and CTA\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-cards-icons-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-cards-icons/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-grid-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ grid layout\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple contact form with contact info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with image background\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with dark info panel\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Minimalist contact with icon cards\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with map and option selection\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Centered contact with circular icon badges\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with office location details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with area of interest selection\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"radio-group\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark background contact with detailed info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with info cards\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark gradient contact form with backdrop blur\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with background image overlay\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact information cards with form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Gradient background contact form with asterisk fields\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact options with quick contact form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"web3-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT collection preview with pixel art\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT creator profile with collection gallery\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top crypto auctions with countdown timer\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Trending NFT collections with gradient overlay\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top NFT creators with time filter\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"cruds-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit apparel item form with product details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"cruds-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update retail staff profile form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"cruds-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Stylist account settings with profile photo upload\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"footers-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with social links\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with navigation links and subscription\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with CTA\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple dark footer\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Complex dark footer\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Advanced light footer\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with country selection\",\n      \"registryDependencies\": [\n        \"button\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with version number\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with notification and CTA\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with page links\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with statement\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with navigation\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered website footer\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer for apps\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with quote\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered testimonials with avatars\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with social proof badges\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial with statistics and metrics\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Three column testimonials with star ratings\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark testimonials with avatar and star ratings\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Company logo testimonial with large quote\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive testimonials with profile switcher\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with star ratings\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Customer story with large heading and avatar\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Monochromatic testimonials with company logos\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with focus state\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Grid layout testimonials with company logos\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark card testimonial with rounded avatar\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with card shadow\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonials with submit button\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark carousel testimonials with navigation\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-16/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-17\",\n      \"type\": \"registry:block\",\n      \"description\": \"Background image carousel testimonials\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-17/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-17/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"modals-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Alert modal with confirmation input for reset settings\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit profile modal with form inputs and preferences\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"checkbox\",\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invite members modal with team management\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"avatar\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update product modal with image gallery and form\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Upload files modal with drag and drop\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Publish capsule collection modal with metadata display\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"650px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change collection visibility settings modal\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Disable collection lock rules modal with alert and impact list\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Transfer showroom ownership modal with form fields and warning\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Permanently remove archive modal with effects list\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Confirm vault deletion modal with text input verification\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"550px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"account-basic-info-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Personal information management form\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-basic-info-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-basic-info/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-2fa-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Two-factor authentication setup\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-2fa-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-2fa/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-change-password-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change password form with validation\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-change-password-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-change-password/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-notifications-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Notification preferences management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-notifications-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-notifications/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-sessions-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Active sessions and devices management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-sessions-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-sessions/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-avatar-upload-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Profile avatar upload and management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-avatar-upload-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-avatar-upload/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-integrations-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Third-party integrations management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-integrations-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-integrations/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"ai-chat-streaming-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI chat with streaming responses and thinking process\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"scroll-area\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-chat-streaming-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-chat-streaming/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"ai-image-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI image generator with upload and editor capabilities\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"slider\",\n        \"tabs\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-image-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-image-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"ai-video-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI video generation agent with preview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\",\n        \"progress\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-video-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-video-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"software-purchase-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/software-purchase-card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "apps/www/public/r/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\": \"components/ui/resizable.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\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}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\\n  return (\\n    <ResizablePrimitive.PanelGroup\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.PanelResizeHandle\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center 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-offset-1 focus-visible:outline-hidden 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-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\\\">\\n          <GripVerticalIcon className=\\\"size-2.5\\\" />\\n        </div>\\n      )}\\n    </ResizablePrimitive.PanelResizeHandle>\\n  )\\n}\\n\\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/scroll-area.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scroll-area\",\n  \"dependencies\": [\n    \"@radix-ui/react-scroll-area\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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=\\\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] 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=\\\"bg-border relative flex-1 rounded-full\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/select.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"select\",\n  \"dependencies\": [\n    \"@radix-ui/react-select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/select.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SelectPrimitive from \\\"@radix-ui/react-select\\\"\\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \\\"lucide-react\\\"\\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        \\\"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 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 [&_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=\\\"size-4 opacity-50\\\" />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"popper\\\",\\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          \\\"bg-popover 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 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 shadow-md\\\",\\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)] 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(\\\"text-muted-foreground px-2 py-1.5 text-xs\\\", 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        \\\"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[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=\\\"absolute right-2 flex size-3.5 items-center justify-center\\\">\\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(\\\"bg-border pointer-events-none -mx-1 my-1 h-px\\\", 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/www/public/r/separator.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"separator\",\n  \"dependencies\": [\n    \"@radix-ui/react-separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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        \\\"bg-border shrink-0 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/www/public/r/sheet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sheet\",\n  \"dependencies\": [\n    \"@radix-ui/react-dialog\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/sheet.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SheetPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        className={cn(\\n          \\\"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\\\",\\n          side === \\\"right\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\\\",\\n          side === \\\"left\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\\\",\\n          side === \\\"top\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\\\",\\n          side === \\\"bottom\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <SheetPrimitive.Close className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\\\">\\n          <XIcon className=\\\"size-4\\\" />\\n          <span className=\\\"sr-only\\\">Close</span>\\n        </SheetPrimitive.Close>\\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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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/www/public/r/shopping-cart-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"shopping-cart-01\",\n  \"description\": \"Shopping cart with summary\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"input\",\n    \"select\",\n    \"badge\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/shopping-cart-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Lock, Package, ShoppingBag, Tag, Truck, X } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\n\\nconst CHECKOUT_PRODUCTS = [\\n  {\\n    name: \\\"Wool Suit\\\",\\n    price: \\\"$1,300\\\",\\n    product: \\\"Silk\\\",\\n    size: \\\"XS\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-2.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n  {\\n    name: \\\"Premium Suit\\\",\\n    price: \\\"$700\\\",\\n    product: \\\"Linen\\\",\\n    size: \\\"M\\\",\\n    img: \\\"https://v3.material-tailwind.com/coat-1.png\\\",\\n    stock: \\\"In Stock\\\",\\n  },\\n]\\n\\nexport default function ShoppingCart01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        <Card className=\\\"rounded-2xl shadow-lg\\\">\\n          <CardHeader className=\\\"text-center\\\">\\n            <div className=\\\"mb-4 flex items-center justify-center gap-2\\\">\\n              <div className=\\\"bg-primary/10 flex h-14 w-14 items-center justify-center rounded-full\\\">\\n                <ShoppingBag className=\\\"text-primary h-7 w-7\\\" />\\n              </div>\\n            </div>\\n            <CardTitle className=\\\"text-4xl\\\">Shopping Cart</CardTitle>\\n            <div className=\\\"mt-4 inline-flex items-center gap-2 rounded-full bg-green-50 px-5 py-2.5\\\">\\n              <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n              <p className=\\\"text-sm font-semibold text-green-700\\\">\\n                You are eligible for Free Shipping\\n              </p>\\n            </div>\\n          </CardHeader>\\n          <CardContent>\\n\\n            <div className=\\\"grid w-full grid-cols-1 gap-8 lg:grid-cols-3\\\">\\n              <div className=\\\"col-span-2\\\">\\n                <Card className=\\\"border-2\\\">\\n                  <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                    <div className=\\\"flex items-center gap-2\\\">\\n                      <Package className=\\\"text-primary h-5 w-5\\\" />\\n                      <CardTitle className=\\\"text-xl\\\">\\n                        Cart Items ({CHECKOUT_PRODUCTS.length})\\n                      </CardTitle>\\n                    </div>\\n                  </CardHeader>\\n                  <CardContent className=\\\"p-0\\\">\\n                    {CHECKOUT_PRODUCTS.map(\\n                      ({ name, price, img, product, size, stock }, index) => (\\n                        <div key={index}>\\n                          <div className=\\\"p-6\\\">\\n                            <div className=\\\"flex flex-col items-stretch gap-6 sm:flex-row\\\">\\n                              <div className=\\\"bg-muted/50 h-36 w-36 shrink-0 overflow-hidden rounded-xl p-3\\\">\\n                                <img\\n                                  src={img}\\n                                  alt={name}\\n                                  className=\\\"h-full w-full object-cover\\\"\\n                                />\\n                              </div>\\n                              <div className=\\\"flex h-auto flex-1 flex-col gap-4\\\">\\n                                <div className=\\\"flex items-start justify-between gap-4\\\">\\n                                  <div className=\\\"flex-1\\\">\\n                                    <h4 className=\\\"text-xl font-bold\\\">\\n                                      {name}\\n                                    </h4>\\n                                    <p className=\\\"text-muted-foreground mt-1.5 text-sm\\\">\\n                                      {product}\\n                                    </p>\\n                                  </div>\\n                                  <Button\\n                                    size=\\\"icon\\\"\\n                                    variant=\\\"ghost\\\"\\n                                    className=\\\"text-muted-foreground hover:bg-destructive/10 hover:text-destructive h-9 w-9 rounded-full\\\"\\n                                  >\\n                                    <X className=\\\"h-5 w-5\\\" />\\n                                  </Button>\\n                                </div>\\n\\n                                <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n                                  <Badge\\n                                    variant=\\\"outline\\\"\\n                                    className=\\\"gap-1.5 px-3 py-1\\\"\\n                                  >\\n                                    <span className=\\\"text-xs\\\">Size:</span>\\n                                    <span className=\\\"font-semibold\\\">\\n                                      {size}\\n                                    </span>\\n                                  </Badge>\\n                                  <Badge className=\\\"gap-1.5 border-green-200 bg-green-50 px-3 py-1 text-green-700 hover:bg-green-100\\\">\\n                                    {stock}\\n                                  </Badge>\\n                                </div>\\n\\n                                <div className=\\\"mt-auto flex items-center justify-between\\\">\\n                                  <div className=\\\"flex items-center gap-3\\\">\\n                                    <span className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                                      Quantity:\\n                                    </span>\\n                                    <Select defaultValue=\\\"1\\\">\\n                                      <SelectTrigger className=\\\"h-10 w-28\\\">\\n                                        <SelectValue placeholder=\\\"Qty\\\" />\\n                                      </SelectTrigger>\\n                                      <SelectContent>\\n                                        <SelectItem value=\\\"1\\\">1</SelectItem>\\n                                        <SelectItem value=\\\"2\\\">2</SelectItem>\\n                                        <SelectItem value=\\\"3\\\">3</SelectItem>\\n                                        <SelectItem value=\\\"4\\\">4</SelectItem>\\n                                        <SelectItem value=\\\"5\\\">5</SelectItem>\\n                                      </SelectContent>\\n                                    </Select>\\n                                  </div>\\n                                  <p className=\\\"text-primary text-2xl font-bold\\\">\\n                                    {price}\\n                                  </p>\\n                                </div>\\n                              </div>\\n                            </div>\\n                          </div>\\n                          {index < CHECKOUT_PRODUCTS.length - 1 && (\\n                            <Separator />\\n                          )}\\n                        </div>\\n                      )\\n                    )}\\n                  </CardContent>\\n                </Card>\\n              </div>\\n\\n              <div className=\\\"col-span-1\\\">\\n                <div className=\\\"sticky top-4\\\">\\n                  <Card className=\\\"border-2\\\">\\n                    <CardHeader className=\\\"px-6 gap-0 border-b\\\">\\n                      <CardTitle className=\\\"text-xl\\\">Order Summary</CardTitle>\\n                    </CardHeader>\\n                    <CardContent className=\\\"p-0\\\">\\n                      <div className=\\\"space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Subtotal\\n                          </span>\\n                          <span className=\\\"font-semibold\\\">$2,090</span>\\n                        </div>\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-muted-foreground\\\">\\n                            Shipping Tax\\n                          </span>\\n                          <span className=\\\"font-semibold text-green-600\\\">\\n                            $0\\n                          </span>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"p-6\\\">\\n                        <div className=\\\"mb-3 flex items-center gap-2\\\">\\n                          <Tag className=\\\"text-muted-foreground h-4 w-4\\\" />\\n                          <label className=\\\"text-sm font-semibold\\\">\\n                            Promo Code\\n                          </label>\\n                        </div>\\n                        <div className=\\\"flex items-center gap-2\\\">\\n                          <Input\\n                            type=\\\"text\\\"\\n                            placeholder=\\\"Enter code\\\"\\n                            className=\\\"flex-1\\\"\\n                          />\\n                          <Button variant=\\\"outline\\\" className=\\\"shrink-0\\\">\\n                            Apply\\n                          </Button>\\n                        </div>\\n                      </div>\\n\\n                      <Separator />\\n\\n                      <div className=\\\"bg-muted/30 space-y-4 p-6\\\">\\n                        <div className=\\\"flex items-center justify-between\\\">\\n                          <span className=\\\"text-lg font-bold\\\">Order Total</span>\\n                          <span className=\\\"text-primary text-3xl font-bold\\\">\\n                            $2,090\\n                          </span>\\n                        </div>\\n                        <Button className=\\\"w-full gap-2\\\" size=\\\"lg\\\">\\n                          <Lock className=\\\"h-5 w-5\\\" />\\n                          Proceed to Checkout\\n                        </Button>\\n                      </div>\\n                    </CardContent>\\n                    <CardFooter className=\\\"bg-green-50\\\">\\n                      <div className=\\\"flex items-start gap-3\\\">\\n                        <div className=\\\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-green-100\\\">\\n                          <Truck className=\\\"h-5 w-5 text-green-600\\\" />\\n                        </div>\\n                        <div>\\n                          <p className=\\\"font-semibold text-green-900\\\">\\n                            Free Shipping Applied\\n                          </p>\\n                          <p className=\\\"mt-1 text-sm text-green-700\\\">\\n                            Estimated delivery: 3-5 business days\\n                          </p>\\n                        </div>\\n                      </div>\\n                    </CardFooter>\\n                  </Card>\\n                </div>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/shopping-cart/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1200px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/sidebar.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sidebar\",\n  \"dependencies\": [\n    \"@radix-ui/react-slot\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/sidebar.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeftIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/components/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/components/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\nimport { useIsMobile } from \\\"@/registry/creative-tim/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/lib/utils\\\"\\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 has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\\\",\\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          \\\"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\\\",\\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=\\\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>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 text-sidebar-foreground hidden 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=\\\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]: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        \\\"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]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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        \\\"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\\\",\\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        \\\"bg-background relative flex w-full flex-1 flex-col\\\",\\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(\\\"bg-background h-8 w-full 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(\\\"bg-sidebar-border mx-2 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        \\\"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 : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium 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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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 outline-hidden 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\\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 : \\\"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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"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 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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          \\\"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 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        \\\"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium 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        \\\"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l 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 : \\\"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        \\\"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 flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 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\\\",\\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  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/simple-blog-content-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"simple-blog-content-01\",\n  \"description\": \"Simple blog content cards\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/simple-blog-content-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nconst POSTS = [\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"House\\\",\\n    title: \\\"Shared Coworking\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 26 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Otto Gonzalez\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Office\\\",\\n    title: \\\"Really Housekeeping\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 03 May\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Chriss Smahos\\\",\\n    },\\n  },\\n  {\\n    img: \\\"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\\\",\\n    tag: \\\"Hub\\\",\\n    title: \\\"Coworking Office\\\",\\n    desc: \\\"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\\\",\\n    date: \\\"Posted on 12 April\\\",\\n    author: {\\n      img: \\\"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\\\",\\n      name: \\\"Elijah Miller\\\",\\n    },\\n  },\\n]\\n\\nexport default function SimpleBlogContent01() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-1 items-start gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\\n          <Card key={title} className=\\\"overflow-hidden py-0\\\">\\n            <CardHeader className=\\\"p-4 pb-0\\\">\\n              <div className=\\\"relative h-60 w-full overflow-hidden rounded-lg\\\">\\n                <img\\n                  src={img}\\n                  alt={title}\\n                  className=\\\"h-full w-full object-cover object-center\\\"\\n                />\\n              </div>\\n            </CardHeader>\\n            <CardContent className=\\\"px-6\\\">\\n              <Badge variant=\\\"secondary\\\" className=\\\"mb-2\\\">\\n                {tag}\\n              </Badge>\\n              <CardTitle className=\\\"mb-2 text-xl\\\">{title}</CardTitle>\\n              <CardDescription>{desc}</CardDescription>\\n            </CardContent>\\n            <CardFooter className=\\\"flex items-center gap-3 p-6 pt-0\\\">\\n              <Avatar>\\n                <AvatarImage src={author.img} alt={author.name} />\\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\\n              </Avatar>\\n              <div className=\\\"space-y-0.5\\\">\\n                <p className=\\\"text-sm font-semibold\\\">{author.name}</p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">{date}</p>\\n              </div>\\n            </CardFooter>\\n          </Card>\\n        ))}\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-blog-content/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"blog\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/simple-faq-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"simple-faq-01\",\n  \"description\": \"Simple FAQ with dividers\",\n  \"registryDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/simple-faq-01/page.tsx\",\n      \"content\": \"export default function SimpleFaq01() {\\n  return (\\n    <section className=\\\"px-6 py-16\\\">\\n      <div className=\\\"mx-auto max-w-3xl\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            Frequently asked questions\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            A lot of people don&apos;t appreciate the moment until it&apos;s\\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\\n            do\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How do I order?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            We&apos;re not always in the position that we want to be at.\\n            We&apos;re constantly growing. We&apos;re constantly making\\n            mistakes. We&apos;re constantly trying to express ourselves and\\n            actualize our dreams. If you have the opportunity to play this game\\n            of life you need to appreciate every moment. A lot of people\\n            don&apos;t appreciate the moment until it&apos;s passed.\\n          </p>\\n        </div>\\n        <div className=\\\"mb-6\\\">\\n          <h3 className=\\\"border-b py-6 text-lg font-semibold\\\">\\n            How can i make the payment?\\n          </h3>\\n          <p className=\\\"text-muted-foreground py-6 leading-relaxed\\\">\\n            It really matters and then like it really doesn&apos;t matter. What\\n            matters is the people who are sparked by it. And the people who are\\n            like offended by it, it doesn&apos;t matter. Because it&apos;s about\\n            motivating the doers. Because I&apos;m here to follow my dreams and\\n            inspire other people to follow their dreams, too. We&apos;re not\\n            always in the position that we want to be at. We&apos;re constantly\\n            growing. We&apos;re constantly making mistakes. We&apos;re\\n            constantly trying to express ourselves and actualize our dreams. If\\n            you have the opportunity to play this game of life you need to\\n            appreciate every moment. A lot of people don&apos;t appreciate the\\n            moment until it&apos;s passed.\\n          </p>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-faq/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"faqs\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/simple-product-details-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"simple-product-details-01\",\n  \"description\": \"Simple product details grid\",\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"accordion\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/simple-product-details-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\nimport { Heart } from \\\"lucide-react\\\"\\n\\nimport {\\n  Accordion,\\n  AccordionContent,\\n  AccordionItem,\\n  AccordionTrigger,\\n} from \\\"@/components/ui/accordion\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SIZES = [\\\"XS\\\", \\\"S\\\", \\\"M\\\", \\\"L\\\", \\\"XL\\\", \\\"XXL\\\"]\\n\\nconst SIMILAR_ITEMS = [\\n  {\\n    name: \\\"Black Bustier Top\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 5 size\\\",\\n  },\\n  {\\n    name: \\\"Black High-Waist Jeans\\\",\\n    price: \\\"€49.95\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1578508637199-240a8f25eff6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    sizes: \\\"Available in 8 taille\\\",\\n  },\\n]\\n\\nexport default function SimpleProductDetails01() {\\n  const [selectedSize, setSelectedSize] = useState(\\\"M\\\")\\n  const [isFavorite, setIsFavorite] = useState(false)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto\\\">\\n        {/* Main Product Section */}\\n        <div className=\\\"mb-16 grid grid-cols-1 items-start gap-x-8 gap-y-10 md:grid-cols-2\\\">\\n          <div className=\\\"bg-muted/30 h-full max-h-[32rem] w-full overflow-hidden rounded-xl border\\\">\\n            <img\\n              alt=\\\"Pink Blouse\\\"\\n              src=\\\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\\\"\\n              className=\\\"h-full w-full object-cover\\\"\\n            />\\n          </div>\\n          <div className=\\\"md:p-2\\\">\\n            <h3 className=\\\"text-3xl font-bold\\\">Pink Blouse</h3>\\n            <p className=\\\"text-primary my-4 text-3xl font-bold\\\">$1,490</p>\\n            <p className=\\\"text-muted-foreground leading-relaxed [text-wrap:_balance]\\\">\\n              Whether you're closing deals or attending formal events, its\\n              breathable lining and natural stretch keep you comfortable and\\n              sharp from day to night.\\n            </p>\\n\\n            <div className=\\\"my-6 flex items-center gap-2\\\">\\n              <div className=\\\"flex\\\">\\n                {[1, 2, 3, 4].map((star) => (\\n                  <svg\\n                    key={star}\\n                    className=\\\"h-5 w-5 fill-yellow-400\\\"\\n                    viewBox=\\\"0 0 20 20\\\"\\n                  >\\n                    <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                  </svg>\\n                ))}\\n                <svg className=\\\"h-5 w-5 fill-gray-300\\\" viewBox=\\\"0 0 20 20\\\">\\n                  <path d=\\\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\\\" />\\n                </svg>\\n              </div>\\n              <p className=\\\"text-sm font-semibold\\\">100 Reviews</p>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Size</h4>\\n              <div className=\\\"flex flex-wrap gap-2\\\">\\n                {SIZES.map((size) => (\\n                  <Button\\n                    key={size}\\n                    variant={selectedSize === size ? \\\"default\\\" : \\\"outline\\\"}\\n                    size=\\\"sm\\\"\\n                    className=\\\"min-w-[3rem]\\\"\\n                    onClick={() => setSelectedSize(size)}\\n                  >\\n                    {size}\\n                  </Button>\\n                ))}\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mb-6\\\">\\n              <h4 className=\\\"mb-3 text-lg font-semibold\\\">Color</h4>\\n              <div className=\\\"flex gap-2\\\">\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-black transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-white transition-transform hover:scale-110\\\" />\\n                <div className=\\\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-gray-200 transition-transform hover:scale-110\\\" />\\n              </div>\\n            </div>\\n\\n            <div className=\\\"mt-8 flex items-center gap-3\\\">\\n              <Button className=\\\"w-full max-w-sm\\\" size=\\\"lg\\\">\\n                Add to Cart\\n              </Button>\\n              <Button\\n                variant=\\\"outline\\\"\\n                size=\\\"icon\\\"\\n                className={`h-11 w-11 ${\\n                  isFavorite\\n                    ? \\\"text-red-500 hover:text-red-600\\\"\\n                    : \\\"text-muted-foreground hover:text-red-500\\\"\\n                }`}\\n                onClick={() => setIsFavorite(!isFavorite)}\\n              >\\n                <Heart\\n                  className={`h-5 w-5 ${isFavorite ? \\\"fill-current\\\" : \\\"\\\"}`}\\n                />\\n              </Button>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* More Info & Similar Items Section */}\\n        <div className=\\\"grid grid-cols-1 gap-8 lg:grid-cols-2\\\">\\n          {/* More Info Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">More Info</h3>\\n            <Accordion\\n              type=\\\"single\\\"\\n              collapsible\\n              defaultValue=\\\"description\\\"\\n              className=\\\"w-full\\\"\\n            >\\n              <AccordionItem value=\\\"description\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Description\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    Whether you're navigating city streets or embarking on\\n                    outdoor adventures, this puffer jacket ensures you stay cozy\\n                    and comfortable wherever you go. The versatile black hue\\n                    effortlessly complements any outfit, making it a go-to\\n                    choice for everyday wear.\\n                  </p>\\n                  <p>\\n                    Equipped with practical features, including a front zipper\\n                    closure and zippered pockets, the MidnightShield Jacket\\n                    offers convenient storage for your essentials while on the\\n                    move. Its adjustable cuffs and hem allow for a customizable\\n                    fit, ensuring maximum comfort and versatility.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"delivery\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Delivery & Returns\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Free Standard Delivery:</strong> Orders over $100\\n                    qualify for free standard shipping. Delivery typically takes\\n                    3-5 business days.\\n                  </p>\\n                  <p className=\\\"mb-4\\\">\\n                    <strong>Express Shipping:</strong> Available at checkout for\\n                    faster delivery (1-2 business days).\\n                  </p>\\n                  <p>\\n                    <strong>Returns:</strong> We offer a 30-day return policy.\\n                    Items must be in original condition with tags attached. Free\\n                    returns for defective items.\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n\\n              <AccordionItem value=\\\"contact\\\" className=\\\"border-b-0\\\">\\n                <AccordionTrigger className=\\\"text-base font-semibold\\\">\\n                  Contact Us\\n                </AccordionTrigger>\\n                <AccordionContent className=\\\"text-muted-foreground leading-relaxed\\\">\\n                  <p className=\\\"mb-3\\\">\\n                    Have questions about this product? We're here to help!\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Email:</strong> support@example.com\\n                  </p>\\n                  <p className=\\\"mb-2\\\">\\n                    <strong>Phone:</strong> +1 (555) 123-4567\\n                  </p>\\n                  <p>\\n                    <strong>Hours:</strong> Mon-Fri, 9AM-6PM EST\\n                  </p>\\n                </AccordionContent>\\n              </AccordionItem>\\n            </Accordion>\\n          </div>\\n\\n          {/* Similar Items Section */}\\n          <div>\\n            <h3 className=\\\"mb-6 text-2xl font-bold\\\">Similar Items</h3>\\n            <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2\\\">\\n              {SIMILAR_ITEMS.map((item, index) => (\\n                <Card\\n                  key={index}\\n                  className=\\\"group cursor-pointer overflow-hidden transition-shadow hover:shadow-lg py-0\\\"\\n                >\\n                  <CardContent className=\\\"p-0\\\">\\n                    <div className=\\\"bg-muted aspect-[4/5] overflow-hidden\\\">\\n                      <img\\n                        src={item.image}\\n                        alt={item.name}\\n                        className=\\\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\\\"\\n                      />\\n                    </div>\\n                    <div className=\\\"p-4\\\">\\n                      <h4 className=\\\"font-semibold tracking-wide uppercase\\\">\\n                        {item.name}\\n                      </h4>\\n                      <p className=\\\"mt-2 text-lg font-bold\\\">{item.price}</p>\\n                      <p className=\\\"text-muted-foreground mt-2 text-sm\\\">\\n                        {item.sizes}\\n                      </p>\\n                    </div>\\n                  </CardContent>\\n                </Card>\\n              ))}\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/simple-product-details/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"ecommerce\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/skeleton.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"skeleton\",\n  \"files\": [\n    {\n      \"path\": \"components/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(\\\"bg-accent animate-pulse rounded-md\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/slider.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"slider\",\n  \"dependencies\": [\n    \"@radix-ui/react-slider\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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          \\\"bg-muted relative grow overflow-hidden rounded-full 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            \\\"bg-primary absolute 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=\\\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm 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/www/public/r/software-purchase-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"software-purchase-01\",\n  \"description\": \"Software purchase approval card\",\n  \"registryDependencies\": [\n    \"software-purchase-card\",\n    \"separator\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/software-purchase-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport { SoftwarePurchaseCard } from \\\"@/components/ui/software-purchase-card\\\"\\n\\nexport default function Page() {\\n  const handleApprove = () => {\\n    console.log(\\\"Purchase approved\\\")\\n  }\\n\\n  const handleDiscard = () => {\\n    console.log(\\\"Purchase discarded\\\")\\n  }\\n\\n  return (\\n    <div className=\\\"flex min-h-screen w-full items-center justify-center p-6\\\">\\n      <div className=\\\"flex w-full max-w-6xl flex-col gap-8 lg:flex-row\\\">\\n        {/* Left side - Purchase Details */}\\n        <div className=\\\"flex flex-1 flex-col gap-6\\\">\\n          <div className=\\\"flex flex-col gap-2\\\">\\n            <h1 className=\\\"text-3xl font-bold\\\">Software Purchase Request</h1>\\n            <p className=\\\"text-muted-foreground\\\">\\n              Review and approve the software purchase details below\\n            </p>\\n          </div>\\n\\n          <Separator />\\n\\n          <div className=\\\"flex flex-col gap-6\\\">\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">Purchase Details</h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Software Name</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Enterprise Cloud Suite\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Vendor</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    CloudTech Solutions Inc.\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">License Type</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Commercial License\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Contract Duration</span>\\n                  <span className=\\\"text-muted-foreground\\\">12 months</span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Billing Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Billing Cycle</span>\\n                  <span className=\\\"text-muted-foreground\\\">Monthly</span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Payment Method</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Corporate Credit Card\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Cost Center</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    Engineering Department\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Annual Total</span>\\n                  <span className=\\\"text-muted-foreground font-semibold\\\">\\n                    $30,000\\n                  </span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <Separator />\\n\\n            <div>\\n              <h2 className=\\\"mb-4 text-xl font-semibold\\\">\\n                Additional Information\\n              </h2>\\n              <div className=\\\"grid gap-4\\\">\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Requested By</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    John Smith (Engineering Manager)\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Request Date</span>\\n                  <span className=\\\"text-muted-foreground\\\">\\n                    December 28, 2024\\n                  </span>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Status</span>\\n                  <Badge variant=\\\"secondary\\\" className=\\\"w-fit\\\">\\n                    Pending Approval\\n                  </Badge>\\n                </div>\\n                <div className=\\\"flex flex-col gap-1.5\\\">\\n                  <span className=\\\"text-sm font-medium\\\">Justification</span>\\n                  <p className=\\\"text-muted-foreground text-sm leading-relaxed\\\">\\n                    This software is critical for our cloud infrastructure\\n                    management and will enable the engineering team to scale\\n                    operations more efficiently. The per-seat pricing model\\n                    aligns with our team growth projections for Q1 2025.\\n                  </p>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n\\n        {/* Right side - Software Purchase Card */}\\n        <div className=\\\"flex items-start justify-center lg:sticky lg:top-6 lg:h-fit lg:w-[400px]\\\">\\n          <SoftwarePurchaseCard\\n            softwareName=\\\"Enterprise Cloud Suite\\\"\\n            startDate=\\\"2025-01-15\\\"\\n            seats={50}\\n            pricingType=\\\"per-seat\\\"\\n            price=\\\"$2,500\\\"\\n            onApprove={handleApprove}\\n            onDiscard={handleDiscard}\\n          />\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/software-purchase/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\"\n  },\n  \"categories\": [\n    \"forms\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/software-purchase-card-demo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"software-purchase-card-demo\",\n  \"registryDependencies\": [\n    \"software-purchase-card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/examples/software-purchase-card-demo.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { SoftwarePurchaseCard } from \\\"@/components/ui/software-purchase-card\\\"\\n\\nexport default function SoftwarePurchaseCardDemo() {\\n  const handleApprove = () => {\\n    console.log(\\\"Purchase approved\\\")\\n  }\\n\\n  const handleDiscard = () => {\\n    console.log(\\\"Purchase discarded\\\")\\n  }\\n\\n  return (\\n    <div className=\\\"flex items-center justify-center p-6\\\">\\n      <SoftwarePurchaseCard\\n        softwareName=\\\"Enterprise Cloud Suite\\\"\\n        startDate=\\\"2025-01-15\\\"\\n        seats={50}\\n        pricingType=\\\"per-seat\\\"\\n        price=\\\"$2,500\\\"\\n        onApprove={handleApprove}\\n        onDiscard={handleDiscard}\\n      />\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:example\"\n    }\n  ],\n  \"type\": \"registry:example\"\n}"
  },
  {
    "path": "apps/www/public/r/software-purchase-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"software-purchase-card\",\n  \"dependencies\": [\n    \"lucide-react\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"card\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/software-purchase-card.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, CreditCard, DollarSign, Users } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport interface SoftwarePurchaseCardProps {\\n  softwareName?: string\\n  startDate?: string\\n  seats?: number\\n  pricingType?: \\\"per-seat\\\" | \\\"flat-rate\\\" | \\\"usage-based\\\"\\n  price?: string\\n  onApprove?: () => void\\n  onDiscard?: () => void\\n}\\n\\nexport function SoftwarePurchaseCard({\\n  softwareName = \\\"Enterprise Cloud Suite\\\",\\n  startDate = \\\"2025-01-15\\\",\\n  seats = 50,\\n  pricingType = \\\"per-seat\\\",\\n  price = \\\"$2,500\\\",\\n  onApprove,\\n  onDiscard,\\n}: SoftwarePurchaseCardProps) {\\n  const pricingTypeLabel = {\\n    \\\"per-seat\\\": \\\"Per Seat\\\",\\n    \\\"flat-rate\\\": \\\"Flat Rate\\\",\\n    \\\"usage-based\\\": \\\"Usage Based\\\",\\n  }[pricingType]\\n\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle className=\\\"flex items-center justify-between\\\">\\n          {softwareName}\\n          <Badge variant=\\\"secondary\\\">{pricingTypeLabel}</Badge>\\n        </CardTitle>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Calendar className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Start Date</span>\\n            <span className=\\\"font-medium\\\">\\n              {new Date(startDate).toLocaleDateString(\\\"en-US\\\", {\\n                month: \\\"long\\\",\\n                day: \\\"numeric\\\",\\n                year: \\\"numeric\\\",\\n              })}\\n            </span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Users className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Seats</span>\\n            <span className=\\\"font-medium\\\">{seats} users</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <CreditCard className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Pricing Type</span>\\n            <span className=\\\"font-medium\\\">{pricingTypeLabel}</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <DollarSign className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">\\n              {pricingType === \\\"per-seat\\\" ? \\\"Monthly Cost\\\" : \\\"Price\\\"}\\n            </span>\\n            <span className=\\\"text-lg font-semibold\\\">{price}</span>\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex gap-3\\\">\\n        <Button variant=\\\"outline\\\" className=\\\"flex-1\\\" onClick={onDiscard}>\\n          Discard\\n        </Button>\\n        <Button className=\\\"flex-1\\\" onClick={onApprove}>\\n          Approve\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/sonner.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sonner\",\n  \"dependencies\": [\n    \"sonner\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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, ToasterProps } from \\\"sonner\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className={cn(\\n        \\\"toaster group [&>li]:flex [&>li]:items-start [&>li]:gap-3\\\"\\n      )}\\n      icons={{\\n        success: (\\n          <CircleCheckIcon className=\\\"mt-0.5 size-4 shrink-0 text-green-500\\\" />\\n        ),\\n        info: <InfoIcon className=\\\"mt-0.5 size-4 shrink-0 text-blue-500\\\" />,\\n        warning: (\\n          <TriangleAlertIcon className=\\\"mt-0.5 size-4 shrink-0 text-yellow-500\\\" />\\n        ),\\n        error: <OctagonXIcon className=\\\"mt-0.5 size-4 shrink-0 text-red-500\\\" />,\\n        loading: (\\n          <Loader2Icon className=\\\"mt-0.5 size-4 shrink-0 animate-spin\\\" />\\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      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/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  ],\n  \"devDependencies\": [\n    \"tw-animate-css\"\n  ],\n  \"registryDependencies\": [\n    \"utils\"\n  ],\n  \"files\": [],\n  \"cssVars\": {},\n  \"type\": \"registry:style\"\n}"
  },
  {
    "path": "apps/www/public/r/styles/creative-tim/registry.json",
    "content": "{\n  \"name\": \"creative-tim/ui\",\n  \"homepage\": \"https://creative-tim.com/ui\",\n  \"items\": [\n    {\n      \"name\": \"index\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"devDependencies\": [\n        \"tw-animate-css\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\n      \"cssVars\": {}\n    },\n    {\n      \"name\": \"style\",\n      \"type\": \"registry:style\",\n      \"dependencies\": [\n        \"class-variance-authority\",\n        \"lucide-react\"\n      ],\n      \"devDependencies\": [\n        \"tw-animate-css\"\n      ],\n      \"registryDependencies\": [\n        \"utils\"\n      ],\n      \"files\": [],\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/creative-tim/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/alert.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/alert-dialog.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/aspect-ratio.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/breadcrumb.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-day-picker\",\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/card.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"recharts\",\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/chart.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/checkbox.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/collapsible.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/command.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/context-menu.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/dialog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drawer\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"vaul\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/drawer.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-hook-form\",\n        \"@hookform/resolvers\",\n        \"zod\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/form.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/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/creative-tim/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"input-otp\"\n      ],\n      \"registryDependencies\": [\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/input-otp.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/label.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/menubar.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/navigation-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pagination\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/pagination.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/popover.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/progress.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/radio-group.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"resizable\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"react-resizable-panels\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/resizable.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/scroll-area.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/select.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/separator.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/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      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/skeleton.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"sonner\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sonner.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/table.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/textarea.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/toggle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"toggle-group\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"@radix-ui/react-toggle-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/toggle-group.tsx\",\n          \"type\": \"registry:ui\"\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/creative-tim/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/software-purchase-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-plain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-plain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-button\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-with-button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-blog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-blog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-ecommerce\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\n        \"lucide-react\"\n      ],\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-ecommerce.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-card-demo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/form-card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Software purchase approval card\",\n      \"registryDependencies\": [\n        \"software-purchase-card\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/software-purchase-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/software-purchase/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\"\n      },\n      \"categories\": [\n        \"forms\"\n      ]\n    },\n    {\n      \"name\": \"billing-information-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Manage billing contacts and company information\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/billing-information-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/billing-information/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"card-display-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Credit card display with dark and light themes\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/card-display-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/card-display/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"payment-method-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Payment method management with edit and delete\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/payment-method-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/payment-method/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"transaction-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Financial transaction history with trend indicators\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"calendar\",\n        \"card\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/transaction-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/transaction-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"invoices-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invoice overview with status badges and download\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/invoices-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/invoices/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\"\n      },\n      \"categories\": [\n        \"billing\"\n      ]\n    },\n    {\n      \"name\": \"simple-blog-content-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple blog content cards\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-blog-content-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-blog-content/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-cards-layout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog cards with view more button\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-cards-layout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-cards-layout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-post-preview-tags-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with tags\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-post-preview-tags-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-post-preview-tags/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"highlighted-blog-posts-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Highlighted blog posts with icons\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/highlighted-blog-posts-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/highlighted-blog-posts/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"blog-rectangular-images-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with rectangular images\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-rectangular-images-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-rectangular-images/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"large-blog-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Large blog post preview\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/large-blog-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/large-blog-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"blog\"\n      ]\n    },\n    {\n      \"name\": \"simple-product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple product details grid\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"accordion\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"grid-ecommerce-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product grid with filters\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/grid-ecommerce-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/grid-ecommerce/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"promotional-cards-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Promotional product cards\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/promotional-cards-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/promotional-cards/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"order-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order history table\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"empty-shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Empty shopping cart state\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/empty-shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/empty-shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"digital-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Digital product with plan options\",\n      \"registryDependencies\": [\n        \"button\",\n        \"label\",\n        \"radio-group\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/digital-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/digital-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with gallery\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"dark-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark themed product overview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"tabs\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/dark-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dark-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Shopping cart with summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"select\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"checkout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Checkout form with order summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/checkout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/checkout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"complex-product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with accordion\",\n      \"registryDependencies\": [\n        \"accordion\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/complex-product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/complex-product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"interactive-product-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive room product preview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/interactive-product-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/interactive-product-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"order-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order details with timeline\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product details with image carousel\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"product-listing-filters-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product listing with filters and sort\",\n      \"registryDependencies\": [\n        \"button\",\n        \"badge\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-listing-filters-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-listing-filters/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"ecommerce-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Runway video spotlight with product cards\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"ecommerce-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Luxury product detail page with image gallery\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"ecommerce\"\n      ]\n    },\n    {\n      \"name\": \"simple-faq-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ with dividers\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-faq-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-faq/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-list-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ list with accordion\",\n      \"registryDependencies\": [\n        \"accordion\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-list-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-list/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faq-left-title-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ with left-aligned title and card grid\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faq-left-title-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faq-left-title/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-grid-cta-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ grid with CTA section\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-cta-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid-cta/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-cards-icons-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ cards with icons and CTA\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-cards-icons-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-cards-icons/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"faqs-grid-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ grid layout\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"faqs\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple contact form with contact info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with image background\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with dark info panel\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Minimalist contact with icon cards\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with map and option selection\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Centered contact with circular icon badges\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with office location details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with area of interest selection\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"radio-group\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark background contact with detailed info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with info cards\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark gradient contact form with backdrop blur\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with background image overlay\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact information cards with form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Gradient background contact form with asterisk fields\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"contact-sections-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact options with quick contact form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"contact\"\n      ]\n    },\n    {\n      \"name\": \"web3-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT collection preview with pixel art\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT creator profile with collection gallery\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top crypto auctions with countdown timer\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Trending NFT collections with gradient overlay\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"badge\",\n        \"button\",\n        \"card\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"web3-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top NFT creators with time filter\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"web3\"\n      ]\n    },\n    {\n      \"name\": \"cruds-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit apparel item form with product details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"cruds-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update retail staff profile form\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"cruds-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Stylist account settings with profile photo upload\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"cruds\"\n      ]\n    },\n    {\n      \"name\": \"footers-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with social links\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with navigation links and subscription\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with CTA\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple dark footer\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Complex dark footer\",\n      \"registryDependencies\": [\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Advanced light footer\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with country selection\",\n      \"registryDependencies\": [\n        \"button\",\n        \"select\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with version number\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with notification and CTA\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with page links\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with statement\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with navigation\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered website footer\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer for apps\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"footers-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with quote\",\n      \"registryDependencies\": [\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"footers\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered testimonials with avatars\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with social proof badges\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial with statistics and metrics\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Three column testimonials with star ratings\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark testimonials with avatar and star ratings\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Company logo testimonial with large quote\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive testimonials with profile switcher\",\n      \"registryDependencies\": [\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with star ratings\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Customer story with large heading and avatar\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Monochromatic testimonials with company logos\",\n      \"registryDependencies\": [\n        \"badge\",\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with focus state\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Grid layout testimonials with company logos\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark card testimonial with rounded avatar\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with card shadow\",\n      \"registryDependencies\": [\n        \"avatar\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonials with submit button\",\n      \"registryDependencies\": [\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark carousel testimonials with navigation\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-16/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"testimonials-17\",\n      \"type\": \"registry:block\",\n      \"description\": \"Background image carousel testimonials\",\n      \"registryDependencies\": [\n        \"card\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-17/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-17/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"testimonials\"\n      ]\n    },\n    {\n      \"name\": \"modals-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Alert modal with confirmation input for reset settings\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit profile modal with form inputs and preferences\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"checkbox\",\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invite members modal with team management\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"avatar\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update product modal with image gallery and form\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Upload files modal with drag and drop\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Publish capsule collection modal with metadata display\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"650px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change collection visibility settings modal\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Disable collection lock rules modal with alert and impact list\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Transfer showroom ownership modal with form fields and warning\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Permanently remove archive modal with effects list\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"modals-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Confirm vault deletion modal with text input verification\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"550px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"modals\"\n      ]\n    },\n    {\n      \"name\": \"account-basic-info-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Personal information management form\",\n      \"dependencies\": [\n        \"date-fns\"\n      ],\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-basic-info-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-basic-info/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-2fa-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Two-factor authentication setup\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-2fa-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-2fa/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-change-password-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change password form with validation\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-change-password-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-change-password/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-notifications-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Notification preferences management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-notifications-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-notifications/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-sessions-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Active sessions and devices management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-sessions-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-sessions/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-avatar-upload-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Profile avatar upload and management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-avatar-upload-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-avatar-upload/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"account-integrations-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Third-party integrations management\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"switch\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-integrations-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-integrations/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\n        \"account\"\n      ]\n    },\n    {\n      \"name\": \"ai-chat-streaming-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI chat with streaming responses and thinking process\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"scroll-area\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-chat-streaming-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-chat-streaming/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"ai-image-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI image generator with upload and editor capabilities\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"slider\",\n        \"tabs\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-image-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-image-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"ai-video-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI video generation agent with preview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\",\n        \"progress\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-video-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-video-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\"\n      },\n      \"categories\": [\n        \"ai-agents\"\n      ]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\n        \"software-purchase-card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/software-purchase-card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "apps/www/public/r/switch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"switch\",\n  \"dependencies\": [\n    \"@radix-ui/react-switch\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/switch.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SwitchPrimitive from \\\"@radix-ui/react-switch\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      className={cn(\\n        \\\"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className={cn(\\n          \\\"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\\\"\\n        )}\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/table.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"table\",\n  \"files\": [\n    {\n      \"path\": \"components/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        \\\"bg-muted/50 border-t 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        \\\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\\\",\\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        \\\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&: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(\\\"text-muted-foreground mt-4 text-sm\\\", 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/www/public/r/tabs.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tabs\",\n  \"dependencies\": [\n    \"@radix-ui/react-tabs\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\nfunction Tabs({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      className={cn(\\n        \\\"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\\\",\\n        className\\n      )}\\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        \\\"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground 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 transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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 }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-01\",\n  \"description\": \"Simple centered testimonials with avatars\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\",\n    \"badge\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-20 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">What Clients Say</h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-lg\\\">\\n            We&apos;re constantly trying to express ourselves and actualize our\\n            dreams. If you have the opportunity to play.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-4 h-20 w-20\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-02\",\n  \"description\": \"Testimonial cards with social proof badges\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { BadgeCheck, Twitter } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardFooter, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    username: \\\"@jessicadevis\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 🎉\\\",\\n    date: \\\"Jan 17, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    username: \\\"@lucianeurel\\\",\\n    quote:\\n      \\\"It's like having a superpower in your toolkit. The ability to craft custom designs quickly and efficiently with simple classes is unparalleled.\\\",\\n    date: \\\"Jan 18, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    username: \\\"@marcelglock\\\",\\n    quote:\\n      \\\"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 😍\\\",\\n    date: \\\"Jan 19, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Linde Michele\\\",\\n    username: \\\"@lindemichele\\\",\\n    quote:\\n      \\\"With its clear and concise classes, I can easily communicate design intentions to my colleagues. It's a must-have tool for any web developer. 👨🏻‍💻\\\",\\n    date: \\\"Jan 20, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-3.jpg\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    username: \\\"@maryjoshiash\\\",\\n    quote:\\n      \\\"I've tried several CSS frameworks, but this is on a whole different level. It strikes the perfect balance between flexibility and design.\\\",\\n    date: \\\"Jan 21, 2024\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/woman-profile-3.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    username: \\\"@mishastam\\\",\\n    quote:\\n      \\\"Active community support make it easy to get started. It's the ideal framework for achieving design excellence in web applications.\\\",\\n    date: \\\"Jan 22, 2024\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16\\\">\\n          <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase\\\">\\n            Testimonials\\n          </p>\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">Think about us</h2>\\n          <p className=\\\"text-muted-foreground max-w-lg text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, username, quote, date }, key) => (\\n            <Card key={key}>\\n              <CardHeader className=\\\"flex flex-row items-center gap-4 px-6\\\">\\n                <Avatar>\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <div className=\\\"flex-1\\\">\\n                  <div className=\\\"flex items-center gap-1.5\\\">\\n                    <p className=\\\"font-semibold\\\">{name}</p>\\n                    <BadgeCheck className=\\\"h-4 w-4 text-blue-500\\\" />\\n                  </div>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{username}</p>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-6\\\">\\n                <blockquote className=\\\"text-muted-foreground\\\">\\n                  {quote}\\n                </blockquote>\\n              </CardContent>\\n              <CardFooter className=\\\"flex items-center justify-between gap-4 px-6\\\">\\n                <a\\n                  href=\\\"#\\\"\\n                  className=\\\"flex items-center gap-1.5 text-sm font-semibold hover:underline\\\"\\n                >\\n                  See on <Twitter className=\\\"h-3.5 w-3.5\\\" />\\n                </a>\\n                <p className=\\\"text-muted-foreground text-sm\\\">{date}</p>\\n              </CardFooter>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-03\",\n  \"description\": \"Testimonial with statistics and metrics\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst testimonials = [\\n  {\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"The attention to detail and user experience is exceptional. This has transformed how we approach design decisions in our team.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"Outstanding component library that saves us countless hours. The quality and customization options are exactly what we needed.\\\",\\n    rating: 5,\\n  },\\n  {\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production builds. The documentation is clear and the components are production-ready.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-12 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Loved by Developers & Designers\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of professionals who trust our components for their\\n            projects\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mb-12 flex flex-wrap items-center justify-center gap-8 text-center md:gap-12\\\">\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">1,679,700+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Active Users</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">4.9/5</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Average Rating</p>\\n          </div>\\n          <div className=\\\"bg-border hidden h-12 w-px md:block\\\"></div>\\n          <div>\\n            <p className=\\\"text-3xl font-bold\\\">50K+</p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">Companies</p>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {testimonials.map((testimonial, index) => (\\n            <Card\\n              key={index}\\n              className=\\\"border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"px-6\\\">\\n                <div className=\\\"mb-4 flex items-center gap-1\\\">\\n                  {Array.from({ length: testimonial.rating }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n                    />\\n                  ))}\\n                </div>\\n\\n                <Quote className=\\\"text-muted-foreground/30 mb-3 h-8 w-8\\\" />\\n\\n                <blockquote className=\\\"text-foreground/90 mb-6 text-sm leading-relaxed\\\">\\n                  {testimonial.quote}\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center gap-3\\\">\\n                  <Avatar className=\\\"border-border h-12 w-12 border-2\\\">\\n                    <AvatarImage\\n                      src={testimonial.image}\\n                      alt={testimonial.name}\\n                    />\\n                    <AvatarFallback>\\n                      {testimonial.name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div>\\n                    <p className=\\\"text-foreground font-semibold\\\">\\n                      {testimonial.name}\\n                    </p>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      {testimonial.role}\\n                    </p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\",\n    \"private\": true\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-04\",\n  \"description\": \"Three column testimonials with star ratings\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Our Users Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Trusted by thousands of developers and designers worldwide\\n          </p>\\n        </div>\\n\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-24 w-24 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-background absolute -right-2 -bottom-2 rounded-full p-2 shadow-md\\\">\\n                    <Quote className=\\\"text-primary h-4 w-4\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-xl font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-foreground/80 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-04/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\",\n    \"private\": true\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-05\",\n  \"description\": \"Dark testimonials with avatar and star ratings\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The component library has transformed our design process. The quality and attention to detail in every component is exceptional.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding documentation and TypeScript support. These components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components with excellent customization. The design system is cohesive and well-thought-out.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"bg-black py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold text-white md:text-4xl\\\">\\n            Trusted by Professionals\\n          </h2>\\n          <p className=\\\"mx-auto max-w-2xl text-lg text-white/70\\\">\\n            Hear what developers and designers say about our component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"border-white/10 bg-white/5 backdrop-blur-sm transition-all hover:border-white/20 hover:bg-white/10\\\"\\n            >\\n              <CardContent className=\\\"p-8 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"h-20 w-20 border-4 border-white/20\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback className=\\\"bg-white/10 text-white\\\">\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold text-white\\\">\\n                  {name}\\n                </h3>\\n                <p className=\\\"mb-6 text-sm text-white/60\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-white/20 text-white/20\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-sm leading-relaxed text-white/80\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-05/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-06.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-06\",\n  \"description\": \"Company logo testimonial with large quote\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-06/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-12 items-center border-0 bg-transparent shadow-none\\\">\\n          <div className=\\\"col-span-full md:col-span-4\\\">\\n            <img\\n              src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover lg:max-h-[30rem] lg:max-w-full\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"col-span-full px-0 py-6 md:col-span-8 md:px-8 lg:px-12\\\">\\n            <p className=\\\"mb-2 text-sm font-semibold tracking-wide uppercase lg:mb-4\\\">\\n              Client Success Story\\n            </p>\\n            <h2 className=\\\"mb-6 text-3xl font-bold\\\">\\n              Transforming Our Design System\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-8 text-lg font-normal lg:mb-12\\\">\\n              &quot;This component library has revolutionized how we build\\n              products at scale. The quality, consistency, and developer\\n              experience are exceptional. We've reduced our\\n              design-to-development time by 60% and our entire team loves\\n              working with these components.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-4\\\">\\n              <Avatar className=\\\"h-12 w-12\\\">\\n                <AvatarImage\\n                  alt=\\\"Alexandra Martinez\\\"\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                />\\n                <AvatarFallback>AM</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-lg font-semibold\\\">Alexandra Martinez</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Head of Design, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-06/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-07.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-07\",\n  \"description\": \"Interactive testimonials with profile switcher\",\n  \"registryDependencies\": [\n    \"avatar\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-07/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\\\",\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [selectedTestimonial, setSelectedTestimonial] = React.useState(0)\\n\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto grid grid-cols-12 items-center gap-y-8 px-4\\\">\\n        <div className=\\\"col-span-full row-start-2 md:col-span-8 md:row-start-auto\\\">\\n          <h2 className=\\\"text-3xl font-bold\\\">What Developers Say</h2>\\n          <p className=\\\"text-muted-foreground my-4 max-w-lg\\\">\\n            {TESTIMONIALS[selectedTestimonial].quote}\\n          </p>\\n          <div>\\n            <p className=\\\"font-semibold\\\">\\n              {TESTIMONIALS[selectedTestimonial].name}\\n            </p>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              {TESTIMONIALS[selectedTestimonial].role}\\n            </p>\\n          </div>\\n          <div className=\\\"divide-border mt-8 flex items-center divide-x\\\">\\n            {TESTIMONIALS.map((testimonial, index) => (\\n              <div className={index !== 0 ? \\\"px-4\\\" : \\\"pr-4\\\"} key={index}>\\n                <Avatar\\n                  role=\\\"button\\\"\\n                  className=\\\"h-12 w-12 cursor-pointer rounded-lg\\\"\\n                  onClick={() => setSelectedTestimonial(index)}\\n                >\\n                  <AvatarImage src={testimonial.image} />\\n                  <AvatarFallback>\\n                    {testimonial.name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n              </div>\\n            ))}\\n          </div>\\n        </div>\\n        <div className=\\\"col-span-full md:col-span-4\\\">\\n          <img\\n            src={TESTIMONIALS[selectedTestimonial].image}\\n            alt=\\\"user profile\\\"\\n            className=\\\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover object-center\\\"\\n          />\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-07/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-08.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-08\",\n  \"description\": \"Light testimonials with star ratings\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-08/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Sarah Johnson\\\",\\n    role: \\\"Product Designer\\\",\\n    quote:\\n      \\\"These components have transformed our design workflow. The quality and attention to detail are exceptional, making it easy to build beautiful interfaces quickly.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Michael Chen\\\",\\n    role: \\\"Tech Lead at Stripe\\\",\\n    quote:\\n      \\\"Outstanding component library with excellent TypeScript support. The documentation is clear and the components integrate seamlessly into our enterprise applications.\\\",\\n    rating: 5,\\n  },\\n  {\\n    image:\\n      \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Emma Rodriguez\\\",\\n    role: \\\"Frontend Developer\\\",\\n    quote:\\n      \\\"Production-ready components that save countless hours. The customization options are fantastic and the design system is incredibly cohesive. Highly recommend!\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            What Developers Say\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            Join thousands of developers building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-0 bg-transparent shadow-none\\\"\\n            >\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-6 inline-block\\\">\\n                  <Avatar className=\\\"border-border h-24 w-24 border-4 transition-transform group-hover:scale-105\\\">\\n                    <AvatarImage src={image} alt={`${name} profile`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"bg-primary absolute -right-2 -bottom-2 rounded-full p-2 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-6 text-sm\\\">{role}</p>\\n\\n                <div className=\\\"mb-6 flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-08/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-09.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-09\",\n  \"description\": \"Customer story with large heading and avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-09/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-4 md:py-6\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"grid grid-cols-1 items-center gap-4 border-0 bg-transparent shadow-none md:grid-cols-12 md:gap-6\\\">\\n          <div className=\\\"md:col-span-4\\\">\\n            <img\\n              src=\\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n              alt=\\\"user profile\\\"\\n              className=\\\"h-40 w-full rounded-lg object-cover md:h-56\\\"\\n            />\\n          </div>\\n          <CardContent className=\\\"px-0 py-0 md:col-span-8 md:px-4 lg:px-8\\\">\\n            <p className=\\\"text-primary mb-1.5 text-xs font-semibold md:text-sm\\\">\\n              Customer Story\\n            </p>\\n            <h2 className=\\\"mb-2 text-lg font-bold md:text-xl lg:text-2xl\\\">\\n              Revolutionary component library for modern design\\n            </h2>\\n            <blockquote className=\\\"text-muted-foreground mb-3 text-sm leading-relaxed font-normal md:text-base\\\">\\n              &quot;This component library has transformed how our design team\\n              works. The attention to detail, seamless integration, and\\n              production-ready components have accelerated our development\\n              workflow by 10x.&quot;\\n            </blockquote>\\n            <div className=\\\"flex items-center gap-2.5\\\">\\n              <Avatar className=\\\"h-9 w-9 md:h-10 md:w-10\\\">\\n                <AvatarImage\\n                  alt=\\\"spotify\\\"\\n                  src=\\\"https://v3.material-tailwind.com/icon/spotify.svg\\\"\\n                />\\n                <AvatarFallback>SP</AvatarFallback>\\n              </Avatar>\\n              <div>\\n                <p className=\\\"text-sm font-semibold md:text-base\\\">\\n                  Sarah Johnson\\n                </p>\\n                <p className=\\\"text-muted-foreground text-xs\\\">\\n                  Design Director, Spotify\\n                </p>\\n              </div>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-09/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-10.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-10\",\n  \"description\": \"Monochromatic testimonials with company logos\",\n  \"registryDependencies\": [\n    \"badge\",\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-10/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { ArrowRight, Sparkles } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Alexandra Martinez\\\",\\n    role: \\\"Head of Design\\\",\\n    quote:\\n      \\\"This component library has revolutionized our design system. The quality and consistency have dramatically improved our product development workflow.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"David Kim\\\",\\n    role: \\\"Engineering Lead\\\",\\n    quote:\\n      \\\"Outstanding components with excellent TypeScript support. The documentation is thorough and implementation is seamless across our platforms.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"Marcus Johnson\\\",\\n    role: \\\"Product Director\\\",\\n    quote:\\n      \\\"A game-changer for our development team. These production-ready components have reduced our time-to-market by 50% while maintaining exceptional quality.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <Badge variant=\\\"outline\\\" className=\\\"mx-auto mb-8 w-max\\\">\\n            <Sparkles className=\\\"mr-2 h-4 w-4\\\" />\\n            Testimonials\\n          </Badge>\\n          <h2 className=\\\"mb-4 text-3xl font-bold md:text-4xl\\\">\\n            Trusted by Industry Leaders\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-2xl text-lg\\\">\\n            See how leading companies are building exceptional products with our\\n            component library\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, quote, role }, key) => (\\n            <Card key={key} className=\\\"border-0 bg-transparent shadow-none\\\">\\n              <CardContent className=\\\"p-0 text-center\\\">\\n                <img\\n                  src={image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"mx-auto mb-6 h-20\\\"\\n                />\\n                <blockquote className=\\\"text-muted-foreground mx-auto mb-6 max-w-sm text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n                <div className=\\\"mb-6\\\">\\n                  <p className=\\\"font-semibold\\\">{name}</p>\\n                  <p className=\\\"text-muted-foreground text-sm\\\">{role}</p>\\n                </div>\\n                <Button variant=\\\"link\\\" className=\\\"group\\\">\\n                  Read More\\n                  <ArrowRight className=\\\"ml-2 h-4 w-4 transition-transform group-hover:translate-x-1\\\" />\\n                </Button>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-10/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-11.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-11\",\n  \"description\": \"Testimonial cards with focus state\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-11/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Star } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 27 February\\\",\\n    quote:\\n      \\\"Success is not final, failure is not fatal: it is the courage to continue that counts.\\\",\\n    rating: 4,\\n    isHighlighted: false,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    date: \\\"Posted on 28 February\\\",\\n    quote:\\n      \\\"If you have the opportunity to play this game of life you need to appreciate every moment.\\\",\\n    rating: 4,\\n    isHighlighted: true,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mathew Glock\\\",\\n    date: \\\"Posted on 29 February\\\",\\n    quote:\\n      \\\"Artist is a term applied to a person who engages in an activity deemed to be an art.\\\",\\n    rating: 5,\\n    isHighlighted: false,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(\\n            ({ name, image, date, quote, rating, isHighlighted }, key) => (\\n              <Card\\n                key={key}\\n                className={\\n                  isHighlighted\\n                    ? \\\"bg-primary text-primary-foreground\\\"\\n                    : \\\"bg-transparent\\\"\\n                }\\n              >\\n                <CardContent className=\\\"px-6\\\">\\n                  <Avatar className=\\\"mb-4 h-16 w-16 rounded-lg\\\">\\n                    <AvatarImage src={image} alt={`${name} image`} />\\n                    <AvatarFallback>\\n                      {name\\n                        .split(\\\" \\\")\\n                        .map((n) => n[0])\\n                        .join(\\\"\\\")}\\n                    </AvatarFallback>\\n                  </Avatar>\\n                  <p\\n                    className={`text-lg font-semibold ${isHighlighted ? \\\"text-primary-foreground\\\" : \\\"\\\"}`}\\n                  >\\n                    {name}\\n                  </p>\\n                  <p\\n                    className={`text-sm ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    {date}\\n                  </p>\\n                  <blockquote\\n                    className={`my-4 max-w-lg ${isHighlighted ? \\\"opacity-80\\\" : \\\"text-muted-foreground\\\"}`}\\n                  >\\n                    &quot;{quote}&quot;\\n                  </blockquote>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    {Array.from({ length: 5 }).map((_, i) => (\\n                      <Star\\n                        key={i}\\n                        className={`h-5 w-5 ${\\n                          i < rating\\n                            ? \\\"fill-yellow-500 text-yellow-500\\\"\\n                            : isHighlighted\\n                              ? \\\"fill-white/30 text-white/30\\\"\\n                              : \\\"fill-gray-300 text-gray-300\\\"\\n                        }`}\\n                      />\\n                    ))}\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            )\\n          )}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-11/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-12.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-12\",\n  \"description\": \"Grid layout testimonials with company logos\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-12/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent, CardFooter } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 max-w-lg\\\">\\n          <h2 className=\\\"mb-4 text-3xl font-bold\\\">\\n            The heartfelt testimonials of our community\\n          </h2>\\n          <p className=\\\"text-muted-foreground text-lg\\\">\\n            From life-enhancing gadgets to unparalleled customer support, and\\n            transformative learning opportunities.\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2\\\">\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;The team went above and beyond to ensure my issue was\\n                resolved quickly and efficiently. Truly outstanding!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Jessica Devis</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Full Stack Developer @Netflix\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/netflix.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium md:text-start\\\">\\n                &quot;It have broadened my horizons and helped me advance my\\n                career. The community is incredibly supportive.&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Graphic Designer, @Coinbase\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-75 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n          <Card className=\\\"col-span-full grid bg-white\\\">\\n            <CardContent className=\\\"p-6\\\">\\n              <blockquote className=\\\"text-center text-2xl font-medium\\\">\\n                &quot;Its intuitive design and powerful features make it\\n                indispensable. I can&apos;t imagine going back to life before\\n                it!&quot;\\n              </blockquote>\\n            </CardContent>\\n            <CardFooter className=\\\"mt-auto flex flex-col items-center justify-center gap-4 px-6 pb-6 text-center\\\">\\n              <div>\\n                <p className=\\\"font-semibold\\\">Emma Roberts</p>\\n                <p className=\\\"text-muted-foreground text-sm\\\">\\n                  Chief Executive @Spotify\\n                </p>\\n              </div>\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"logo\\\"\\n                className=\\\"h-14 brightness-50 grayscale\\\"\\n              />\\n            </CardFooter>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-12/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-13.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-13\",\n  \"description\": \"Dark card testimonial with rounded avatar\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-13/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"rounded-xl bg-black text-white\\\">\\n          <CardContent className=\\\"grid w-full grid-cols-1 items-center gap-8 p-10 md:grid-cols-12\\\">\\n            <div className=\\\"col-span-full text-center md:col-span-8 md:pl-4 md:text-left\\\">\\n              <img\\n                src=\\\"https://v3.material-tailwind.com/logo/spotify.svg\\\"\\n                alt=\\\"spotify logo\\\"\\n                className=\\\"mr-auto mb-2 ml-auto w-32 md:mr-0 md:-ml-3\\\"\\n              />\\n              <blockquote className=\\\"mb-12 text-2xl !leading-snug\\\">\\n                &quot;We&apos;re not always in the position that we want to be\\n                at. We&apos;re constantly growing. We&apos;re constantly making\\n                mistakes. We&apos;re constantly trying to express ourselves and\\n                actualize our dreams. &quot;\\n              </blockquote>\\n              <div>\\n                <p className=\\\"mb-1 text-xl font-semibold\\\">Marcell Glock</p>\\n                <p className=\\\"text-white/80\\\">Chief Executive, Spotify</p>\\n              </div>\\n            </div>\\n            <div className=\\\"col-span-full grid justify-items-center md:col-span-4 md:justify-items-end\\\">\\n              <Avatar className=\\\"h-24 w-24 md:h-64 md:w-64\\\">\\n                <AvatarImage\\n                  src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                  alt=\\\"user profile\\\"\\n                />\\n                <AvatarFallback>MG</AvatarFallback>\\n              </Avatar>\\n            </div>\\n          </CardContent>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-13/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"500px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-14.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-14\",\n  \"description\": \"Light testimonials with card shadow\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-14/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Jessica Devis\\\",\\n    role: \\\"CEO @ Marketing Digital LTD\\\",\\n    quote:\\n      \\\"The connections you make at Web Summit are unparalleled, we met users all over the world.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Mary Joshiash\\\",\\n    role: \\\"Marketing @ Apple INC\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"CFO @ Apple INC\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-16\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"mb-16 text-center\\\">\\n          <h2 className=\\\"mb-4 text-center text-3xl font-bold\\\">\\n            Think about us\\n          </h2>\\n          <p className=\\\"text-muted-foreground mx-auto max-w-lg text-center text-lg\\\">\\n            That&apos;s the main thing people are controlled by! Thoughts -\\n            their perception of themselves!\\n          </p>\\n        </div>\\n        <div className=\\\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\\n            <Card key={key}>\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <Avatar className=\\\"mx-auto mb-6 h-24 w-24\\\">\\n                  <AvatarImage src={image} alt={`${name} image`} />\\n                  <AvatarFallback>\\n                    {name\\n                      .split(\\\" \\\")\\n                      .map((n) => n[0])\\n                      .join(\\\"\\\")}\\n                  </AvatarFallback>\\n                </Avatar>\\n                <p className=\\\"mb-1 text-lg font-semibold\\\">{name}</p>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n                <blockquote className=\\\"text-muted-foreground mx-auto max-w-lg\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-14/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"700px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-15.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-15\",\n  \"description\": \"Testimonials with submit button\",\n  \"registryDependencies\": [\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-15/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Plus, Quote, Star } from \\\"lucide-react\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst TESTIMONIALS = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Lucian Eurel\\\",\\n    role: \\\"CEO Discord\\\",\\n    quote:\\n      \\\"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"CFO Slack\\\",\\n    quote:\\n      \\\"Do not go where the path may lead, go instead where there is no path and leave a trail. You will succeed on it.\\\",\\n    rating: 4,\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    role: \\\"COO Dribbble\\\",\\n    quote:\\n      \\\"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\\\",\\n    rating: 5,\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <div className=\\\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\\\">\\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\\n            <Card\\n              key={key}\\n              className=\\\"group border-border/50 hover:border-border transition-all hover:shadow-lg\\\"\\n            >\\n              <CardContent className=\\\"p-6 text-center\\\">\\n                <div className=\\\"relative mx-auto mb-4 inline-block\\\">\\n                  <img\\n                    src={image}\\n                    alt={`${name} profile`}\\n                    className=\\\"border-border mx-auto h-20 w-20 rounded-full border-4 object-cover transition-transform group-hover:scale-105\\\"\\n                  />\\n                  <div className=\\\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\\\">\\n                    <Quote className=\\\"text-primary-foreground h-3 w-3\\\" />\\n                  </div>\\n                </div>\\n\\n                <h3 className=\\\"mb-1 text-lg font-semibold\\\">{name}</h3>\\n                <p className=\\\"text-muted-foreground mb-4 text-sm\\\">{role}</p>\\n\\n                <blockquote className=\\\"text-muted-foreground mb-4 text-sm leading-relaxed\\\">\\n                  &quot;{quote}&quot;\\n                </blockquote>\\n\\n                <div className=\\\"flex items-center justify-center gap-1\\\">\\n                  {Array.from({ length: 5 }).map((_, i) => (\\n                    <Star\\n                      key={i}\\n                      className={`h-4 w-4 ${\\n                        i < rating\\n                          ? \\\"fill-yellow-400 text-yellow-400\\\"\\n                          : \\\"fill-muted text-muted\\\"\\n                      }`}\\n                    />\\n                  ))}\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n          <Card className=\\\"group border-border/50 hover:border-border hover:bg-muted/50 cursor-pointer border-2 border-dashed transition-all\\\">\\n            <CardContent className=\\\"grid h-full min-h-[280px] w-full place-items-center p-6\\\">\\n              <div className=\\\"text-center\\\">\\n                <div className=\\\"bg-muted group-hover:bg-muted/80 mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-full transition-colors\\\">\\n                  <Plus className=\\\"text-muted-foreground h-8 w-8\\\" />\\n                </div>\\n                <p className=\\\"text-muted-foreground text-sm font-medium\\\">\\n                  Add Testimonial\\n                </p>\\n              </div>\\n            </CardContent>\\n          </Card>\\n        </div>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-15/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-16.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-16\",\n  \"description\": \"Dark carousel testimonials with navigation\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-16/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Linde Michel\\\",\\n    role: \\\"Social Media Executive, Netflix\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"Visionary, Coinbase\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n  {\\n    image: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    companyLogo: \\\"https://v3.material-tailwind.com/logo/spotify.svg\\\",\\n    name: \\\"Marcell Glock\\\",\\n    role: \\\"Chief Executive, Spotify\\\",\\n    quote:\\n      \\\"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"grid min-h-screen place-items-center bg-black py-16\\\">\\n      <div className=\\\"relative container mx-auto px-4\\\">\\n        <div className=\\\"pb-16\\\">\\n          <img\\n            src={SLIDES[currentSlide].companyLogo}\\n            alt=\\\"company logo\\\"\\n            className=\\\"mx-auto mb-8 h-24\\\"\\n          />\\n          <blockquote className=\\\"mx-auto mb-16 max-w-2xl text-center text-xl font-medium text-white\\\">\\n            &quot;{SLIDES[currentSlide].quote}&quot;\\n          </blockquote>\\n          <p className=\\\"text-center font-medium text-white\\\">\\n            {SLIDES[currentSlide].name}\\n          </p>\\n          <p className=\\\"text-center text-sm text-white/80\\\">\\n            {SLIDES[currentSlide].role}\\n          </p>\\n        </div>\\n\\n        <div className=\\\"mt-8 flex items-center justify-center gap-2\\\">\\n          {SLIDES.map((slide, index) => (\\n            <button\\n              key={index}\\n              onClick={() => setCurrentSlide(index)}\\n              className={`h-8 w-8 rounded object-cover object-center transition-opacity ${\\n                index === currentSlide ? \\\"opacity-100\\\" : \\\"opacity-50\\\"\\n              }`}\\n            >\\n              <img\\n                src={slide.image}\\n                alt={slide.name}\\n                className=\\\"h-full w-full rounded object-cover\\\"\\n              />\\n            </button>\\n          ))}\\n        </div>\\n\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={prevSlide}\\n          className=\\\"!absolute top-1/2 left-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronLeft className=\\\"h-7 w-7\\\" />\\n        </Button>\\n        <Button\\n          size=\\\"icon\\\"\\n          variant=\\\"ghost\\\"\\n          onClick={nextSlide}\\n          className=\\\"!absolute top-1/2 right-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\\\"\\n        >\\n          <ChevronRight className=\\\"h-7 w-7\\\" />\\n        </Button>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-16/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/testimonials-17.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"testimonials-17\",\n  \"description\": \"Background image carousel testimonials\",\n  \"registryDependencies\": [\n    \"card\",\n    \"button\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/testimonials-17/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { ChevronLeft, ChevronRight, Quote } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nconst SLIDES = [\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/netflix.svg\\\",\\n    name: \\\"Louis Miriam\\\",\\n    role: \\\"COO @ Netflix\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n  {\\n    image: \\\"https://v3.material-tailwind.com/logo/coinbase.svg\\\",\\n    name: \\\"John Down\\\",\\n    role: \\\"CEO @ Coinbase\\\",\\n    quote:\\n      \\\"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\\\",\\n  },\\n]\\n\\nexport default function TestimonialsBlock() {\\n  const [currentSlide, setCurrentSlide] = React.useState(0)\\n\\n  const nextSlide = () => {\\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\\n  }\\n\\n  const prevSlide = () => {\\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\\n  }\\n\\n  return (\\n    <section className=\\\"py-20\\\">\\n      <div className=\\\"container mx-auto px-4\\\">\\n        <Card className=\\\"relative overflow-hidden rounded-2xl bg-[url('https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070')] bg-cover bg-center p-6\\\">\\n          <span className=\\\"absolute inset-0 h-full w-full bg-gradient-to-br from-black/80 to-black/60 backdrop-blur-sm\\\" />\\n\\n          <CardContent className=\\\"relative grid w-full grid-cols-1 items-center gap-8 px-6 py-12 md:grid-cols-12 md:px-12 md:py-16\\\">\\n            <div className=\\\"col-span-full md:col-span-8\\\">\\n              <Quote className=\\\"mb-6 h-12 w-12 text-white/30\\\" />\\n              <blockquote className=\\\"mb-8 text-xl leading-relaxed font-medium text-white md:text-2xl\\\">\\n                &quot;{SLIDES[currentSlide].quote}&quot;\\n              </blockquote>\\n              <div className=\\\"flex flex-col gap-2 md:flex-row md:items-center md:gap-3\\\">\\n                <p className=\\\"text-lg font-semibold text-white\\\">\\n                  {SLIDES[currentSlide].name}\\n                </p>\\n                <span className=\\\"hidden text-white/50 md:inline\\\">•</span>\\n                <p className=\\\"text-sm text-white/70\\\">\\n                  {SLIDES[currentSlide].role}\\n                </p>\\n              </div>\\n            </div>\\n\\n            <div className=\\\"col-span-full flex items-center justify-center md:col-span-4\\\">\\n              <div className=\\\"rounded-xl bg-white/10 p-8 backdrop-blur-sm\\\">\\n                <img\\n                  src={SLIDES[currentSlide].image}\\n                  alt=\\\"company logo\\\"\\n                  className=\\\"h-16 md:h-20\\\"\\n                />\\n              </div>\\n            </div>\\n          </CardContent>\\n\\n          <div className=\\\"absolute bottom-8 left-1/2 flex -translate-x-1/2 items-center gap-3\\\">\\n            {SLIDES.map((_, index) => (\\n              <button\\n                key={index}\\n                onClick={() => setCurrentSlide(index)}\\n                aria-label={`Go to slide ${index + 1}`}\\n                className={`h-2 rounded-full transition-all ${\\n                  index === currentSlide\\n                    ? \\\"w-8 bg-white\\\"\\n                    : \\\"w-2 bg-white/50 hover:bg-white/75\\\"\\n                }`}\\n              />\\n            ))}\\n          </div>\\n\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={prevSlide}\\n            aria-label=\\\"Previous testimonial\\\"\\n            className=\\\"!absolute top-1/2 left-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronLeft className=\\\"h-8 w-8\\\" />\\n          </Button>\\n          <Button\\n            size=\\\"icon\\\"\\n            variant=\\\"ghost\\\"\\n            onClick={nextSlide}\\n            aria-label=\\\"Next testimonial\\\"\\n            className=\\\"!absolute top-1/2 right-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\\\"\\n          >\\n            <ChevronRight className=\\\"h-8 w-8\\\" />\\n          </Button>\\n        </Card>\\n      </div>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/testimonials-17/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"600px\",\n    \"container\": \"w-full bg-surface\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"testimonials\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/textarea.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"textarea\",\n  \"files\": [\n    {\n      \"path\": \"components/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        \\\"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\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/www/public/r/toggle-group.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle-group\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle-group\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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 \\\"@/components/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants>\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider value={{ variant, size }}>\\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      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        \\\"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-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/www/public/r/toggle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"toggle\",\n  \"dependencies\": [\n    \"@radix-ui/react-toggle\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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 hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\\\",\\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 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\\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/www/public/r/tooltip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tooltip\",\n  \"dependencies\": [\n    \"@radix-ui/react-tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/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\\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 (\\n    <TooltipProvider>\\n      <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n    </TooltipProvider>\\n  )\\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          \\\"bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ],\n  \"type\": \"registry:ui\"\n}"
  },
  {
    "path": "apps/www/public/r/transaction-history-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"transaction-history-01\",\n  \"description\": \"Financial transaction history with trend indicators\",\n  \"dependencies\": [\n    \"date-fns\"\n  ],\n  \"registryDependencies\": [\n    \"button\",\n    \"calendar\",\n    \"card\",\n    \"popover\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/transaction-history-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { format } from \\\"date-fns\\\"\\nimport { CalendarIcon, ChevronDown, ChevronUp, Clock } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Calendar } from \\\"@/components/ui/calendar\\\"\\nimport { Card } from \\\"@/components/ui/card\\\"\\nimport {\\n  Popover,\\n  PopoverContent,\\n  PopoverTrigger,\\n} from \\\"@/components/ui/popover\\\"\\n\\nconst DATA = {\\n  \\\"March 2023\\\": [\\n    {\\n      name: \\\"Netflix\\\",\\n      date: \\\"27 March 2026, at 12:30 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Apple\\\",\\n      date: \\\"27 March 2026, at 04:30 AM\\\",\\n      value: 2000,\\n      status: \\\"increasing\\\" as const,\\n    },\\n  ],\\n  \\\"February 2023\\\": [\\n    {\\n      name: \\\"Stripe\\\",\\n      date: \\\"26 March 2026, at 13:45 PM\\\",\\n      value: 2500,\\n      status: \\\"decreasing\\\" as const,\\n    },\\n    {\\n      name: \\\"HubSpot\\\",\\n      date: \\\"26 March 2023, at 12:30 PM\\\",\\n      value: 750,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Figma\\\",\\n      date: \\\"26 March 2023, at 08:30 AM\\\",\\n      value: 1400,\\n      status: \\\"increasing\\\" as const,\\n    },\\n    {\\n      name: \\\"Webflow\\\",\\n      date: \\\"26 March 2023, at 05:00 AM\\\",\\n      value: 0,\\n      status: \\\"pending\\\" as const,\\n    },\\n  ],\\n}\\n\\nconst ICONS = {\\n  increasing: ChevronUp,\\n  decreasing: ChevronDown,\\n  pending: Clock,\\n}\\n\\nconst COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-muted-foreground\\\",\\n}\\n\\nconst ICON_COLORS = {\\n  increasing: \\\"text-green-600\\\",\\n  decreasing: \\\"text-red-600\\\",\\n  pending: \\\"text-black dark:text-white\\\",\\n}\\n\\nconst PREFIX = {\\n  increasing: \\\"+\\\",\\n  decreasing: \\\"-\\\",\\n  pending: \\\"\\\",\\n}\\n\\nexport default function TransactionHistory01() {\\n  const [date, setDate] = React.useState<Date>(new Date(2024, 9, 10))\\n\\n  return (\\n    <div className=\\\"mx-auto max-w-xl p-6\\\">\\n      <div className=\\\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\\\">\\n        <div className=\\\"flex flex-wrap items-start justify-between gap-4\\\">\\n          <div>\\n            <h2 className=\\\"font-semibold\\\">History Transactions</h2>\\n            <p className=\\\"text-muted-foreground text-sm\\\">\\n              Track and monitor your financial activity.\\n            </p>\\n          </div>\\n          <Popover>\\n            <PopoverTrigger asChild>\\n              <Button\\n                variant=\\\"outline\\\"\\n                className={cn(\\n                  \\\"w-full justify-start text-left font-normal sm:w-48\\\",\\n                  !date && \\\"text-muted-foreground\\\"\\n                )}\\n              >\\n                <CalendarIcon className=\\\"mr-2 h-4 w-4\\\" />\\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={(day) => day && setDate(day)}\\n                initialFocus\\n              />\\n            </PopoverContent>\\n          </Popover>\\n        </div>\\n        <div className=\\\"mt-6\\\">\\n          {(Object.keys(DATA) as Array<keyof typeof DATA>).map((month, key) => {\\n            return (\\n              <div key={key} className=\\\"mb-6 last:mb-0\\\">\\n                <p className=\\\"text-muted-foreground mb-2 ml-2.5 font-semibold\\\">\\n                  {month}\\n                </p>\\n                <div className=\\\"space-y-2\\\">\\n                  {DATA[month].map(({ name, value, date, status }) => {\\n                    const Icon = ICONS[status]\\n\\n                    return (\\n                      <div\\n                        key={name}\\n                        className=\\\"flex items-center gap-4 rounded-lg border p-4\\\"\\n                      >\\n                        <div className=\\\"bg-card text-card-foreground hidden h-12 w-12 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex\\\">\\n                          <Icon\\n                            className={cn(\\\"h-5 w-5\\\", ICON_COLORS[status])}\\n                          />\\n                        </div>\\n                        <div className=\\\"mx-0 space-y-0.5 sm:mx-2\\\">\\n                          <p className=\\\"font-semibold\\\">{name}</p>\\n                          <p className=\\\"text-muted-foreground text-sm\\\">\\n                            {date}\\n                          </p>\\n                        </div>\\n                        <p\\n                          className={cn(\\n                            \\\"mx-2 ml-auto text-sm font-semibold\\\",\\n                            COLORS[status]\\n                          )}\\n                        >\\n                          {PREFIX[status]}{\\\" \\\"}\\n                          {value\\n                            ? new Intl.NumberFormat(\\\"en-US\\\", {\\n                                style: \\\"currency\\\",\\n                                currency: \\\"USD\\\",\\n                              }).format(value)\\n                            : \\\"Pending\\\"}\\n                        </p>\\n                      </div>\\n                    )\\n                  })}\\n                </div>\\n              </div>\\n            )\\n          })}\\n        </div>\\n      </div>\\n    </div>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/transaction-history/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"800px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\",\n    \"details\": \"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\"\n  },\n  \"categories\": [\n    \"billing\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/ui.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ui\",\n  \"type\": \"registry:ui\",\n  \"description\": \"All UI components from @creative-tim/ui\",\n  \"dependencies\": [\n    \"@hookform/resolvers\",\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    \"cmdk\",\n    \"date-fns\",\n    \"embla-carousel-react\",\n    \"input-otp\",\n    \"lucide-react\",\n    \"react-day-picker\",\n    \"react-hook-form\",\n    \"react-resizable-panels\",\n    \"recharts\",\n    \"sonner\",\n    \"vaul\",\n    \"zod\"\n  ],\n  \"registryDependencies\": [\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"dialog\",\n    \"input\",\n    \"label\",\n    \"separator\",\n    \"sheet\",\n    \"skeleton\",\n    \"tooltip\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"components/ui/accordion.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as AccordionPrimitive from \\\"@radix-ui/react-accordion\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\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          \\\"focus-visible:border-ring focus-visible:ring-ring/50 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:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <ChevronDownIcon className=\\\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 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=\\\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\\\"\\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    },\n    {\n      \"path\": \"components/ui/alert.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>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          \\\"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\\\",\\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        \\\"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Alert, AlertTitle, AlertDescription }\\n\"\n    },\n    {\n      \"path\": \"components/ui/alert-dialog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogContent({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\\n  return (\\n    <AlertDialogPortal>\\n      <AlertDialogOverlay />\\n      <AlertDialogPrimitive.Content\\n        data-slot=\\\"alert-dialog-content\\\"\\n        className={cn(\\n          \\\"bg-background 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 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 p-6 shadow-lg duration-200 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(\\\"flex flex-col gap-2 text-center sm:text-left\\\", 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        \\\"flex flex-col-reverse gap-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(\\\"text-lg font-semibold\\\", 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(\\\"text-muted-foreground text-sm\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogAction({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\\n  return (\\n    <AlertDialogPrimitive.Action\\n      className={cn(buttonVariants(), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction AlertDialogCancel({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\\n  return (\\n    <AlertDialogPrimitive.Cancel\\n      className={cn(buttonVariants({ variant: \\\"outline\\\" }), className)}\\n      {...props}\\n    />\\n  )\\n}\\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    },\n    {\n      \"path\": \"components/ui/aspect-ratio.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as AspectRatioPrimitive from \\\"@radix-ui/react-aspect-ratio\\\"\\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    },\n    {\n      \"path\": \"components/ui/avatar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Avatar({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\\n  return (\\n    <AvatarPrimitive.Root\\n      data-slot=\\\"avatar\\\"\\n      className={cn(\\n        \\\"relative flex size-8 shrink-0 overflow-hidden rounded-full\\\",\\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        \\\"bg-muted flex size-full items-center justify-center rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Avatar, AvatarImage, AvatarFallback }\\n\"\n    },\n    {\n      \"path\": \"components/ui/badge.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 badgeVariants = cva(\\n  \\\"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\\\",\\n  {\\n    variants: {\\n      variant: {\\n        default:\\n          \\\"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\\\",\\n        secondary:\\n          \\\"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\\\",\\n        destructive:\\n          \\\"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Badge({\\n  className,\\n  variant,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"span\\\"> &\\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\\n  const Comp = asChild ? Slot : \\\"span\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"badge\\\"\\n      className={cn(badgeVariants({ variant }), className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Badge, badgeVariants }\\n\"\n    },\n    {\n      \"path\": \"components/ui/breadcrumb.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words 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 : \\\"a\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"breadcrumb-link\\\"\\n      className={cn(\\\"hover:text-foreground transition-colors\\\", 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(\\\"text-foreground font-normal\\\", 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    },\n    {\n      \"path\": \"components/ui/button.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\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:focus-visible:ring-destructive/40 dark:bg-destructive/60\\\",\\n        outline:\\n          \\\"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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        sm: \\\"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\\\",\\n        lg: \\\"h-10 rounded-md px-6 has-[>svg]:px-4\\\",\\n        icon: \\\"size-9\\\",\\n      },\\n    },\\n    defaultVariants: {\\n      variant: \\\"default\\\",\\n      size: \\\"default\\\",\\n    },\\n  }\\n)\\n\\nfunction Button({\\n  className,\\n  variant,\\n  size,\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<\\\"button\\\"> &\\n  VariantProps<typeof buttonVariants> & {\\n    asChild?: boolean\\n  }) {\\n  const Comp = asChild ? Slot : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"button\\\"\\n      className={cn(buttonVariants({ variant, size, className }))}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Button, buttonVariants }\\n\"\n    },\n    {\n      \"path\": \"components/ui/calendar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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:--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          \\\"flex gap-4 flex-col md:flex-row relative\\\",\\n          defaultClassNames.months\\n        ),\\n        month: cn(\\\"flex flex-col w-full gap-4\\\", defaultClassNames.month),\\n        nav: cn(\\n          \\\"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\\\",\\n          defaultClassNames.nav\\n        ),\\n        button_previous: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_previous\\n        ),\\n        button_next: cn(\\n          buttonVariants({ variant: buttonVariant }),\\n          \\\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\\\",\\n          defaultClassNames.button_next\\n        ),\\n        month_caption: cn(\\n          \\\"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\\\",\\n          defaultClassNames.month_caption\\n        ),\\n        dropdowns: cn(\\n          \\\"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\\\",\\n          defaultClassNames.dropdowns\\n        ),\\n        dropdown_root: cn(\\n          \\\"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\\\",\\n          defaultClassNames.dropdown_root\\n        ),\\n        dropdown: cn(\\n          \\\"absolute bg-popover inset-0 opacity-0\\\",\\n          defaultClassNames.dropdown\\n        ),\\n        caption_label: cn(\\n          \\\"select-none font-medium\\\",\\n          captionLayout === \\\"label\\\"\\n            ? \\\"text-sm\\\"\\n            : \\\"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>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 rounded-md flex-1 font-normal text-[0.8rem] select-none\\\",\\n          defaultClassNames.weekday\\n        ),\\n        week: cn(\\\"flex w-full mt-2\\\", defaultClassNames.week),\\n        week_number_header: cn(\\n          \\\"select-none w-(--cell-size)\\\",\\n          defaultClassNames.week_number_header\\n        ),\\n        week_number: cn(\\n          \\\"text-[0.8rem] select-none text-muted-foreground\\\",\\n          defaultClassNames.week_number\\n        ),\\n        day: cn(\\n          \\\"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\\\",\\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          \\\"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.toISOString().split(\\\"T\\\")[0]}\\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 dark:hover:text-accent-foreground 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:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\\\",\\n        defaultClassNames.day,\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Calendar, CalendarDayButton }\\n\"\n    },\n    {\n      \"path\": \"components/ui/card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/carousel.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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    },\n    {\n      \"path\": \"components/ui/chart.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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          \\\"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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        \\\"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border 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                  \\\"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\\\",\\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=\\\"text-foreground font-mono font-medium 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                \\\"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\\\"\\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    },\n    {\n      \"path\": \"components/ui/checkbox.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as CheckboxPrimitive from \\\"@radix-ui/react-checkbox\\\"\\nimport { CheckIcon } from \\\"lucide-react\\\"\\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 border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <CheckboxPrimitive.Indicator\\n        data-slot=\\\"checkbox-indicator\\\"\\n        className=\\\"flex items-center justify-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    },\n    {\n      \"path\": \"components/ui/collapsible.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as CollapsiblePrimitive from \\\"@radix-ui/react-collapsible\\\"\\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    },\n    {\n      \"path\": \"components/ui/command.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/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        \\\"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\\\",\\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=\\\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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          \\\"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden 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        \\\"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        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(\\\"bg-border -mx-1 h-px\\\", 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        \\\"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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    },\n    {\n      \"path\": \"components/ui/context-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as ContextMenuPrimitive from \\\"@radix-ui/react-context-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"text-foreground px-2 py-1.5 text-sm font-medium 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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    },\n    {\n      \"path\": \"components/ui/dialog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DialogPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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          \\\"bg-background 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 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 p-6 shadow-lg duration-200 sm:max-w-lg\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        {showCloseButton && (\\n          <DialogPrimitive.Close\\n            data-slot=\\\"dialog-close\\\"\\n            className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_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({ className, ...props }: React.ComponentProps<\\\"div\\\">) {\\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  )\\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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/drawer.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\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 bg-background fixed z-50 flex h-auto flex-col\\\",\\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=\\\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full 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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/dropdown-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as DropdownMenuPrimitive from \\\"@radix-ui/react-dropdown-menu\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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          \\\"bg-popover 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 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 p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -mx-1 my-1 h-px\\\", 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        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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    },\n    {\n      \"path\": \"components/ui/form.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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  useFormState,\\n  type ControllerProps,\\n  type FieldPath,\\n  type FieldValues,\\n} from \\\"react-hook-form\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\nimport { Label } from \\\"@/components/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>) {\\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\\n\\n  return (\\n    <Slot\\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-muted-foreground text-sm\\\", 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-destructive text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/hover-card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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          \\\"bg-popover 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\\\",\\n          className\\n        )}\\n        {...props}\\n      />\\n    </HoverCardPrimitive.Portal>\\n  )\\n}\\n\\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\\n\"\n    },\n    {\n      \"path\": \"components/ui/input.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 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 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        \\\"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\\\",\\n        \\\"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Input }\\n\"\n    },\n    {\n      \"path\": \"components/ui/input-otp.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"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 dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center 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]:z-10 data-[active=true]:ring-[3px]\\\",\\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=\\\"animate-caret-blink bg-foreground h-4 w-px 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    },\n    {\n      \"path\": \"components/ui/label.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as LabelPrimitive from \\\"@radix-ui/react-label\\\"\\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    },\n    {\n      \"path\": \"components/ui/menubar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as MenubarPrimitive from \\\"@radix-ui/react-menubar\\\"\\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \\\"lucide-react\\\"\\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        \\\"bg-background 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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium 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          \\\"bg-popover text-popover-foreground 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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\\\",\\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        \\\"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \\\"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\\\"bg-border -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(\\n        \\\"text-muted-foreground ml-auto text-xs tracking-widest\\\",\\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        \\\"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\\\",\\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        \\\"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\\\",\\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    },\n    {\n      \"path\": \"components/ui/navigation-menu.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"import * as React from \\\"react\\\"\\nimport * as NavigationMenuPrimitive from \\\"@radix-ui/react-navigation-menu\\\"\\nimport { cva } from \\\"class-variance-authority\\\"\\nimport { ChevronDownIcon } from \\\"lucide-react\\\"\\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 hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\\\"\\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        \\\"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 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\\\",\\n        \\\"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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: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\\\",\\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 bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow 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        \\\"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_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        \\\"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <div className=\\\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm 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    },\n    {\n      \"path\": \"components/ui/pagination.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 { Button, buttonVariants } from \\\"@/components/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    },\n    {\n      \"path\": \"components/ui/popover.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Popover({\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\\n  return <PopoverPrimitive.Root data-slot=\\\"popover\\\" {...props} />\\n}\\n\\nfunction PopoverTrigger({\\n  asChild = false,\\n  ...props\\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\\n  return (\\n    <PopoverPrimitive.Trigger\\n      data-slot=\\\"popover-trigger\\\"\\n      asChild={asChild}\\n      {...props}\\n    />\\n  )\\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          \\\"bg-popover 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md 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\\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\\n\"\n    },\n    {\n      \"path\": \"components/ui/progress.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ProgressPrimitive.Indicator\\n        data-slot=\\\"progress-indicator\\\"\\n        className=\\\"bg-primary h-full w-full flex-1 transition-all\\\"\\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\\n      />\\n    </ProgressPrimitive.Root>\\n  )\\n}\\n\\nexport { Progress }\\n\"\n    },\n    {\n      \"path\": \"components/ui/radio-group.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as RadioGroupPrimitive from \\\"@radix-ui/react-radio-group\\\"\\nimport { CircleIcon } from \\\"lucide-react\\\"\\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        \\\"border-input text-primary 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:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\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=\\\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\\\" />\\n      </RadioGroupPrimitive.Indicator>\\n    </RadioGroupPrimitive.Item>\\n  )\\n}\\n\\nexport { RadioGroup, RadioGroupItem }\\n\"\n    },\n    {\n      \"path\": \"components/ui/resizable.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\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}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\\n  return (\\n    <ResizablePrimitive.PanelGroup\\n      data-slot=\\\"resizable-panel-group\\\"\\n      className={cn(\\n        \\\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction ResizablePanel({\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\\n  return <ResizablePrimitive.Panel data-slot=\\\"resizable-panel\\\" {...props} />\\n}\\n\\nfunction ResizableHandle({\\n  withHandle,\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\\n  withHandle?: boolean\\n}) {\\n  return (\\n    <ResizablePrimitive.PanelResizeHandle\\n      data-slot=\\\"resizable-handle\\\"\\n      className={cn(\\n        \\\"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center 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-offset-1 focus-visible:outline-hidden 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-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      {withHandle && (\\n        <div className=\\\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\\\">\\n          <GripVerticalIcon className=\\\"size-2.5\\\" />\\n        </div>\\n      )}\\n    </ResizablePrimitive.PanelResizeHandle>\\n  )\\n}\\n\\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\\n\"\n    },\n    {\n      \"path\": \"components/ui/scroll-area.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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=\\\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] 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=\\\"bg-border relative flex-1 rounded-full\\\"\\n      />\\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\\n  )\\n}\\n\\nexport { ScrollArea, ScrollBar }\\n\"\n    },\n    {\n      \"path\": \"components/ui/select.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SelectPrimitive from \\\"@radix-ui/react-select\\\"\\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \\\"lucide-react\\\"\\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        \\\"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 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 [&_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=\\\"size-4 opacity-50\\\" />\\n      </SelectPrimitive.Icon>\\n    </SelectPrimitive.Trigger>\\n  )\\n}\\n\\nfunction SelectContent({\\n  className,\\n  children,\\n  position = \\\"popper\\\",\\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          \\\"bg-popover 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 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 shadow-md\\\",\\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)] 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(\\\"text-muted-foreground px-2 py-1.5 text-xs\\\", 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        \\\"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[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=\\\"absolute right-2 flex size-3.5 items-center justify-center\\\">\\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(\\\"bg-border pointer-events-none -mx-1 my-1 h-px\\\", 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    },\n    {\n      \"path\": \"components/ui/separator.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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        \\\"bg-border shrink-0 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    },\n    {\n      \"path\": \"components/ui/sheet.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SheetPrimitive from \\\"@radix-ui/react-dialog\\\"\\nimport { XIcon } from \\\"lucide-react\\\"\\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        \\\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction SheetContent({\\n  className,\\n  children,\\n  side = \\\"right\\\",\\n  ...props\\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\\n  side?: \\\"top\\\" | \\\"right\\\" | \\\"bottom\\\" | \\\"left\\\"\\n}) {\\n  return (\\n    <SheetPortal>\\n      <SheetOverlay />\\n      <SheetPrimitive.Content\\n        data-slot=\\\"sheet-content\\\"\\n        className={cn(\\n          \\\"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\\\",\\n          side === \\\"right\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\\\",\\n          side === \\\"left\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\\\",\\n          side === \\\"top\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\\\",\\n          side === \\\"bottom\\\" &&\\n            \\\"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <SheetPrimitive.Close className=\\\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\\\">\\n          <XIcon className=\\\"size-4\\\" />\\n          <span className=\\\"sr-only\\\">Close</span>\\n        </SheetPrimitive.Close>\\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(\\\"text-foreground font-semibold\\\", 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-muted-foreground text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/sidebar.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport { Slot } from \\\"@radix-ui/react-slot\\\"\\nimport { cva, VariantProps } from \\\"class-variance-authority\\\"\\nimport { PanelLeftIcon } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Input } from \\\"@/components/ui/input\\\"\\nimport { Separator } from \\\"@/components/ui/separator\\\"\\nimport {\\n  Sheet,\\n  SheetContent,\\n  SheetDescription,\\n  SheetHeader,\\n  SheetTitle,\\n} from \\\"@/components/ui/sheet\\\"\\nimport { Skeleton } from \\\"@/components/ui/skeleton\\\"\\nimport {\\n  Tooltip,\\n  TooltipContent,\\n  TooltipProvider,\\n  TooltipTrigger,\\n} from \\\"@/components/ui/tooltip\\\"\\nimport { useIsMobile } from \\\"@/registry/creative-tim/hooks/use-mobile\\\"\\nimport { cn } from \\\"@/lib/utils\\\"\\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 has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\\\",\\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          \\\"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\\\",\\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=\\\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>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 text-sidebar-foreground hidden 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=\\\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]: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        \\\"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]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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        \\\"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\\\",\\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        \\\"bg-background relative flex w-full flex-1 flex-col\\\",\\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(\\\"bg-background h-8 w-full 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(\\\"bg-sidebar-border mx-2 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        \\\"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 : \\\"div\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-label\\\"\\n      data-sidebar=\\\"group-label\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium 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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-group-action\\\"\\n      data-sidebar=\\\"group-action\\\"\\n      className={cn(\\n        \\\"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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 outline-hidden 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\\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 : \\\"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 : \\\"button\\\"\\n\\n  return (\\n    <Comp\\n      data-slot=\\\"sidebar-menu-action\\\"\\n      data-sidebar=\\\"menu-action\\\"\\n      className={cn(\\n        \\\"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 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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          \\\"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 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        \\\"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium 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        \\\"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l 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 : \\\"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        \\\"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 flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 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\\\",\\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    },\n    {\n      \"path\": \"components/ui/skeleton.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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(\\\"bg-accent animate-pulse rounded-md\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Skeleton }\\n\"\n    },\n    {\n      \"path\": \"components/ui/slider.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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          \\\"bg-muted relative grow overflow-hidden rounded-full 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            \\\"bg-primary absolute 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=\\\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm 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    },\n    {\n      \"path\": \"components/ui/sonner.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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, ToasterProps } from \\\"sonner\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nconst Toaster = ({ ...props }: ToasterProps) => {\\n  const { theme = \\\"system\\\" } = useTheme()\\n\\n  return (\\n    <Sonner\\n      theme={theme as ToasterProps[\\\"theme\\\"]}\\n      className={cn(\\n        \\\"toaster group [&>li]:flex [&>li]:items-start [&>li]:gap-3\\\"\\n      )}\\n      icons={{\\n        success: (\\n          <CircleCheckIcon className=\\\"mt-0.5 size-4 shrink-0 text-green-500\\\" />\\n        ),\\n        info: <InfoIcon className=\\\"mt-0.5 size-4 shrink-0 text-blue-500\\\" />,\\n        warning: (\\n          <TriangleAlertIcon className=\\\"mt-0.5 size-4 shrink-0 text-yellow-500\\\" />\\n        ),\\n        error: <OctagonXIcon className=\\\"mt-0.5 size-4 shrink-0 text-red-500\\\" />,\\n        loading: (\\n          <Loader2Icon className=\\\"mt-0.5 size-4 shrink-0 animate-spin\\\" />\\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      {...props}\\n    />\\n  )\\n}\\n\\nexport { Toaster }\\n\"\n    },\n    {\n      \"path\": \"components/ui/switch.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport * as React from \\\"react\\\"\\nimport * as SwitchPrimitive from \\\"@radix-ui/react-switch\\\"\\n\\nimport { cn } from \\\"@/lib/utils\\\"\\n\\nfunction Switch({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\\n  return (\\n    <SwitchPrimitive.Root\\n      data-slot=\\\"switch\\\"\\n      className={cn(\\n        \\\"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <SwitchPrimitive.Thumb\\n        data-slot=\\\"switch-thumb\\\"\\n        className={cn(\\n          \\\"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\\\"\\n        )}\\n      />\\n    </SwitchPrimitive.Root>\\n  )\\n}\\n\\nexport { Switch }\\n\"\n    },\n    {\n      \"path\": \"components/ui/table.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"bg-muted/50 border-t 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        \\\"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\\\",\\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        \\\"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&: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(\\\"text-muted-foreground mt-4 text-sm\\\", 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    },\n    {\n      \"path\": \"components/ui/tabs.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\nfunction Tabs({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\\n  return (\\n    <TabsPrimitive.Root\\n      data-slot=\\\"tabs\\\"\\n      className={cn(\\\"flex flex-col gap-2\\\", className)}\\n      {...props}\\n    />\\n  )\\n}\\n\\nfunction TabsList({\\n  className,\\n  ...props\\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\\n  return (\\n    <TabsPrimitive.List\\n      data-slot=\\\"tabs-list\\\"\\n      className={cn(\\n        \\\"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\\\",\\n        className\\n      )}\\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        \\\"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground 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 transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\\\",\\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 }\\n\"\n    },\n    {\n      \"path\": \"components/ui/textarea.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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        \\\"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\\\",\\n        className\\n      )}\\n      {...props}\\n    />\\n  )\\n}\\n\\nexport { Textarea }\\n\"\n    },\n    {\n      \"path\": \"components/ui/toggle.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\\\",\\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 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\\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    },\n    {\n      \"path\": \"components/ui/toggle-group.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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 \\\"@/components/ui/toggle\\\"\\n\\nconst ToggleGroupContext = React.createContext<\\n  VariantProps<typeof toggleVariants>\\n>({\\n  size: \\\"default\\\",\\n  variant: \\\"default\\\",\\n})\\n\\nfunction ToggleGroup({\\n  className,\\n  variant,\\n  size,\\n  children,\\n  ...props\\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\\n  VariantProps<typeof toggleVariants>) {\\n  return (\\n    <ToggleGroupPrimitive.Root\\n      data-slot=\\\"toggle-group\\\"\\n      data-variant={variant}\\n      data-size={size}\\n      className={cn(\\n        \\\"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\\\",\\n        className\\n      )}\\n      {...props}\\n    >\\n      <ToggleGroupContext.Provider value={{ variant, size }}>\\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      className={cn(\\n        toggleVariants({\\n          variant: context.variant || variant,\\n          size: context.size || size,\\n        }),\\n        \\\"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-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    },\n    {\n      \"path\": \"components/ui/tooltip.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\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\\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 (\\n    <TooltipProvider>\\n      <TooltipPrimitive.Root data-slot=\\\"tooltip\\\" {...props} />\\n    </TooltipProvider>\\n  )\\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          \\\"bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\\\",\\n          className\\n        )}\\n        {...props}\\n      >\\n        {children}\\n        <TooltipPrimitive.Arrow className=\\\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\\\" />\\n      </TooltipPrimitive.Content>\\n    </TooltipPrimitive.Portal>\\n  )\\n}\\n\\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\\n\"\n    },\n    {\n      \"path\": \"components/ui/software-purchase-card.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, CreditCard, DollarSign, Users } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport interface SoftwarePurchaseCardProps {\\n  softwareName?: string\\n  startDate?: string\\n  seats?: number\\n  pricingType?: \\\"per-seat\\\" | \\\"flat-rate\\\" | \\\"usage-based\\\"\\n  price?: string\\n  onApprove?: () => void\\n  onDiscard?: () => void\\n}\\n\\nexport function SoftwarePurchaseCard({\\n  softwareName = \\\"Enterprise Cloud Suite\\\",\\n  startDate = \\\"2025-01-15\\\",\\n  seats = 50,\\n  pricingType = \\\"per-seat\\\",\\n  price = \\\"$2,500\\\",\\n  onApprove,\\n  onDiscard,\\n}: SoftwarePurchaseCardProps) {\\n  const pricingTypeLabel = {\\n    \\\"per-seat\\\": \\\"Per Seat\\\",\\n    \\\"flat-rate\\\": \\\"Flat Rate\\\",\\n    \\\"usage-based\\\": \\\"Usage Based\\\",\\n  }[pricingType]\\n\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle className=\\\"flex items-center justify-between\\\">\\n          {softwareName}\\n          <Badge variant=\\\"secondary\\\">{pricingTypeLabel}</Badge>\\n        </CardTitle>\\n      </CardHeader>\\n      <CardContent className=\\\"flex flex-col gap-4\\\">\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Calendar className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Start Date</span>\\n            <span className=\\\"font-medium\\\">\\n              {new Date(startDate).toLocaleDateString(\\\"en-US\\\", {\\n                month: \\\"long\\\",\\n                day: \\\"numeric\\\",\\n                year: \\\"numeric\\\",\\n              })}\\n            </span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <Users className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Seats</span>\\n            <span className=\\\"font-medium\\\">{seats} users</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <CreditCard className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">Pricing Type</span>\\n            <span className=\\\"font-medium\\\">{pricingTypeLabel}</span>\\n          </div>\\n        </div>\\n\\n        <div className=\\\"flex items-center gap-3 text-sm\\\">\\n          <DollarSign className=\\\"text-muted-foreground size-4\\\" />\\n          <div className=\\\"flex flex-col gap-0.5\\\">\\n            <span className=\\\"text-muted-foreground text-xs\\\">\\n              {pricingType === \\\"per-seat\\\" ? \\\"Monthly Cost\\\" : \\\"Price\\\"}\\n            </span>\\n            <span className=\\\"text-lg font-semibold\\\">{price}</span>\\n          </div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"flex gap-3\\\">\\n        <Button variant=\\\"outline\\\" className=\\\"flex-1\\\" onClick={onDiscard}>\\n          Discard\\n        </Button>\\n        <Button className=\\\"flex-1\\\" onClick={onApprove}>\\n          Approve\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-demo.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar, Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardDemo() {\\n  return (\\n    <div className=\\\"grid w-full gap-6 md:grid-cols-2 lg:grid-cols-4\\\">\\n      {/* Plain Card */}\\n      <Card>\\n        <CardContent className=\\\"pt-6\\\">\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            This is a plain card with simple content. Perfect for displaying\\n            basic information.\\n          </p>\\n        </CardContent>\\n      </Card>\\n\\n      {/* Card with Title, Description, and Button */}\\n      <Card>\\n        <CardHeader>\\n          <CardTitle>Card Title</CardTitle>\\n          <CardDescription>\\n            This is a brief description of the card content.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <p className=\\\"text-muted-foreground text-sm\\\">\\n            More detailed information goes here in the card content area.\\n          </p>\\n        </CardContent>\\n        <CardFooter>\\n          <Button size=\\\"sm\\\">Learn More</Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* Blog Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n        <CardHeader>\\n          <div className=\\\"text-muted-foreground flex items-center gap-2 text-xs\\\">\\n            <Calendar className=\\\"h-3 w-3\\\" />\\n            <span>Mar 15, 2025</span>\\n            <span>•</span>\\n            <span>5 min read</span>\\n          </div>\\n          <CardTitle className=\\\"text-lg\\\">\\n            Getting Started with Next.js\\n          </CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            Learn how to build modern web applications with Next.js, React, and\\n            TypeScript.\\n          </CardDescription>\\n        </CardHeader>\\n        <CardFooter>\\n          <Button variant=\\\"ghost\\\" size=\\\"sm\\\">\\n            Read More\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n\\n      {/* E-commerce Product Card */}\\n      <Card className=\\\"overflow-hidden\\\">\\n        <div className=\\\"relative\\\">\\n          <div className=\\\"aspect-square w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n          <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n        </div>\\n        <CardHeader>\\n          <CardTitle className=\\\"text-lg\\\">Premium Wireless</CardTitle>\\n          <CardDescription className=\\\"line-clamp-2\\\">\\n            High-quality audio with noise cancellation\\n          </CardDescription>\\n        </CardHeader>\\n        <CardContent>\\n          <div className=\\\"flex items-center justify-between\\\">\\n            <div className=\\\"flex items-center gap-0.5\\\">\\n              {[...Array(4)].map((_, i) => (\\n                <Star\\n                  key={i}\\n                  className=\\\"h-3 w-3 fill-yellow-400 text-yellow-400\\\"\\n                />\\n              ))}\\n              <Star className=\\\"text-muted-foreground h-3 w-3\\\" />\\n              <span className=\\\"text-muted-foreground ml-1 text-xs\\\">(128)</span>\\n            </div>\\n            <div className=\\\"text-xl font-bold\\\">$299</div>\\n          </div>\\n        </CardContent>\\n        <CardFooter className=\\\"gap-2\\\">\\n          <Button className=\\\"flex-1\\\" size=\\\"sm\\\">\\n            <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n            Add to Cart\\n          </Button>\\n          <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n            <Heart className=\\\"h-4 w-4\\\" />\\n          </Button>\\n        </CardFooter>\\n      </Card>\\n    </div>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-plain.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\n\\nexport default function CardPlain() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardContent className=\\\"pt-6\\\">\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          This is a plain card with simple content. Perfect for displaying basic\\n          information.\\n        </p>\\n      </CardContent>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-with-button.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardWithButton() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Card Title</CardTitle>\\n        <CardDescription>\\n          This is a brief description of the card content.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <p className=\\\"text-muted-foreground text-sm\\\">\\n          More detailed information goes here in the card content area.\\n        </p>\\n      </CardContent>\\n      <CardFooter>\\n        <Button>Learn More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-blog.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Calendar } from \\\"lucide-react\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardBlog() {\\n  return (\\n    <Card className=\\\"w-full max-w-md overflow-hidden\\\">\\n      <div className=\\\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\\\" />\\n      <CardHeader>\\n        <div className=\\\"text-muted-foreground flex items-center gap-2 text-sm\\\">\\n          <Calendar className=\\\"h-4 w-4\\\" />\\n          <span>March 15, 2025</span>\\n          <span>•</span>\\n          <span>5 min read</span>\\n        </div>\\n        <CardTitle>Getting Started with Next.js</CardTitle>\\n        <CardDescription>\\n          Learn how to build modern web applications with Next.js, React, and\\n          TypeScript.\\n        </CardDescription>\\n      </CardHeader>\\n      <CardFooter>\\n        <Button variant=\\\"ghost\\\">Read More</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/card-ecommerce.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Heart, ShoppingCart, Star } from \\\"lucide-react\\\"\\n\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\n  CardHeader,\\n  CardTitle,\\n} from \\\"@/components/ui/card\\\"\\n\\nexport default function CardEcommerce() {\\n  return (\\n    <Card className=\\\"w-full max-w-sm overflow-hidden\\\">\\n      <div className=\\\"relative\\\">\\n        <div className=\\\"aspect-video w-full bg-gradient-to-br from-amber-400 to-orange-500\\\" />\\n        <Badge className=\\\"absolute top-2 right-2\\\">New</Badge>\\n      </div>\\n      <CardHeader>\\n        <CardTitle>Premium Wireless Headphones</CardTitle>\\n        <CardDescription>\\n          High-quality audio with active noise cancellation\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent>\\n        <div className=\\\"flex items-center justify-between\\\">\\n          <div className=\\\"flex items-center gap-1\\\">\\n            {[...Array(4)].map((_, i) => (\\n              <Star\\n                key={i}\\n                className=\\\"h-4 w-4 fill-yellow-400 text-yellow-400\\\"\\n              />\\n            ))}\\n            <Star className=\\\"h-4 w-4\\\" />\\n            <span className=\\\"text-muted-foreground text-sm\\\">(128)</span>\\n          </div>\\n          <div className=\\\"text-2xl font-bold\\\">$299</div>\\n        </div>\\n      </CardContent>\\n      <CardFooter className=\\\"gap-2\\\">\\n        <Button className=\\\"flex-1\\\">\\n          <ShoppingCart className=\\\"mr-2 h-4 w-4\\\" />\\n          Add to Cart\\n        </Button>\\n        <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n          <Heart className=\\\"h-4 w-4\\\" />\\n        </Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    },\n    {\n      \"path\": \"components/examples/form-card-demo.tsx\",\n      \"type\": \"registry:ui\",\n      \"target\": \"\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport {\\n  Card,\\n  CardContent,\\n  CardDescription,\\n  CardFooter,\\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 FormCardDemo() {\\n  return (\\n    <Card className=\\\"w-full max-w-md\\\">\\n      <CardHeader>\\n        <CardTitle>Create Account</CardTitle>\\n        <CardDescription>\\n          Enter your information to get started with Creative Tim UI\\n        </CardDescription>\\n      </CardHeader>\\n      <CardContent className=\\\"space-y-4\\\">\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"name\\\">Full Name</Label>\\n          <Input id=\\\"name\\\" placeholder=\\\"John Doe\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"email\\\">Email Address</Label>\\n          <Input id=\\\"email\\\" type=\\\"email\\\" placeholder=\\\"john@example.com\\\" />\\n        </div>\\n        <div className=\\\"space-y-2\\\">\\n          <Label htmlFor=\\\"password\\\">Password</Label>\\n          <Input id=\\\"password\\\" type=\\\"password\\\" placeholder=\\\"••••••••\\\" />\\n        </div>\\n      </CardContent>\\n      <CardFooter>\\n        <Button className=\\\"w-full\\\">Sign Up</Button>\\n      </CardFooter>\\n    </Card>\\n  )\\n}\\n\"\n    }\n  ]\n}"
  },
  {
    "path": "apps/www/public/r/use-mobile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"use-mobile\",\n  \"files\": [\n    {\n      \"path\": \"creative-tim/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/www/public/r/web3-01.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"web3-01\",\n  \"description\": \"NFT collection preview with pixel art\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/web3-01/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"475\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"476\\\",\\n    profession: \\\"owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    name: \\\"yqaw...09v\\\",\\n    tokenId: \\\"477\\\",\\n    profession: \\\"trader\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n  },\\n]\\n\\nexport default function Web301() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"p-6\\\">\\n          <Avatar className=\\\"h-12 w-12\\\">\\n            <AvatarImage\\n              src=\\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\"\\n              alt=\\\"pixel art collection\\\"\\n            />\\n            <AvatarFallback>PA</AvatarFallback>\\n          </Avatar>\\n          <h1 className=\\\"mt-4 mb-1 text-2xl font-bold\\\">Pixelated Art</h1>\\n          <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n            These NFTs capture the essence of imagination and innovation,\\n            offering a glimpse into the boundless potential of the digital\\n            world.\\n          </p>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, profession, profileImg }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-64 w-full rounded-md object-cover object-center\\\"\\n                />\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <p className=\\\"text-muted-foreground mb-1 text-sm\\\">\\n                  Pixelated Art\\n                </p>\\n                <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                <div className=\\\"mt-4 flex items-center justify-between\\\">\\n                  <div className=\\\"flex items-center gap-4\\\">\\n                    <Avatar className=\\\"h-6 w-6\\\">\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">{name}</p>\\n                  </div>\\n                  <p className=\\\"text-primary text-sm capitalize\\\">\\n                    {profession}\\n                  </p>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-01/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"900px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"web3\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/web3-02.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"web3-02\",\n  \"description\": \"NFT creator profile with collection gallery\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/web3-02/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Heart, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    tokenId: \\\"876\\\",\\n    price: \\\"1,6 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    tokenId: \\\"877\\\",\\n    price: \\\"0,9 ETH\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    tokenId: \\\"878\\\",\\n    price: \\\"1,3 ETH\\\",\\n  },\\n]\\n\\nexport default function Web302() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <Avatar className=\\\"h-10 w-10\\\">\\n              <AvatarImage\\n                src=\\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\"\\n                alt=\\\"emma\\\"\\n              />\\n              <AvatarFallback>EM</AvatarFallback>\\n            </Avatar>\\n            <h1 className=\\\"mt-4 mb-1 flex items-center gap-2 text-2xl font-bold\\\">\\n              Emma\\n              <Badge\\n                variant=\\\"outline\\\"\\n                className=\\\"border-blue-500 text-blue-500\\\"\\n              >\\n                ✓\\n              </Badge>\\n            </h1>\\n            <p className=\\\"text-muted-foreground text-lg\\\">130 Collections</p>\\n          </div>\\n          <div className=\\\"flex items-center gap-2\\\">\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button>Follow Me</Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, tokenId, price }, key) => (\\n            <Card key={key} className=\\\"py-4\\\">\\n              <CardHeader className=\\\"relative px-4 gap-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-72 w-full rounded-md object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute top-6 right-6 flex items-center gap-2\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"border-white/50 bg-white/70 text-black backdrop-blur\\\"\\n                  >\\n                    Auction ends in 23h:03m:33s\\n                  </Badge>\\n                  <Button\\n                    size=\\\"icon\\\"\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"h-7 w-7 bg-white text-black hover:bg-white\\\"\\n                  >\\n                    <Heart className=\\\"h-3.5 w-3.5\\\" />\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4\\\">\\n                <div className=\\\"mb-2 flex items-center justify-between gap-4\\\">\\n                  <p className=\\\"text-muted-foreground text-sm\\\">\\n                    Cosmic creatures\\n                  </p>\\n                  <div className=\\\"flex items-center gap-1\\\">\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <div className=\\\"flex gap-1\\\">\\n                      <img\\n                        src=\\\"https://v3.material-tailwind.com/icon/eth.svg\\\"\\n                        alt=\\\"ethereum\\\"\\n                        className=\\\"h-4 w-4\\\"\\n                      />\\n                      <p className=\\\"text-sm font-semibold\\\">{price}</p>\\n                    </div>\\n                  </div>\\n                </div>\\n                <div className=\\\"flex items-center justify-between gap-4\\\">\\n                  <h3 className=\\\"text-lg font-semibold\\\">Picture #{tokenId}</h3>\\n                  <Button size=\\\"sm\\\">Place a Bid</Button>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-02/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"web3\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/web3-03.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"web3-03\",\n  \"description\": \"Top crypto auctions with countdown timer\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/web3-03/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"1,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@lindemichael\\\",\\n    desc: \\\"Creator\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    price: \\\"0,4 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n  {\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@mishastam\\\",\\n    desc: \\\"Owner\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    price: \\\"0,3 BTC\\\",\\n    time: \\\"23h:03m:33s\\\",\\n  },\\n]\\n\\nexport default function Web303() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Auctions</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Select defaultValue=\\\"Last 24H\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Select Date\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Select defaultValue=\\\"Category 1\\\">\\n              <SelectTrigger className=\\\"w-max\\\">\\n                <SelectValue placeholder=\\\"Category\\\" />\\n              </SelectTrigger>\\n              <SelectContent>\\n                <SelectItem value=\\\"Category 1\\\">Category 1</SelectItem>\\n                <SelectItem value=\\\"Category 2\\\">Category 2</SelectItem>\\n                <SelectItem value=\\\"Category 3\\\">Category 3</SelectItem>\\n              </SelectContent>\\n            </Select>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Menu className=\\\"h-4 w-4\\\" />\\n            </Button>\\n            <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n              <Grid3x3 className=\\\"h-4 w-4\\\" />\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ img, name, desc, profileImg, price, time }, key) => (\\n            <Card key={key} className=\\\"overflow-hidden py-0\\\">\\n              <CardHeader className=\\\"relative p-0\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"h-80 w-full object-cover object-center\\\"\\n                />\\n                <Badge\\n                  variant=\\\"secondary\\\"\\n                  className=\\\"absolute bottom-4 left-4 flex items-center gap-2 border-white/50 bg-white/70 backdrop-blur\\\"\\n                >\\n                  <Avatar className=\\\"h-7 w-7\\\">\\n                    <AvatarImage src={profileImg} alt={name} />\\n                    <AvatarFallback>{name[1]}</AvatarFallback>\\n                  </Avatar>\\n                  <div className=\\\"flex flex-col\\\">\\n                    <span className=\\\"text-xs font-semibold text-black\\\">\\n                      {name}\\n                    </span>\\n                    <span className=\\\"text-muted-foreground text-xs\\\">\\n                      {desc}\\n                    </span>\\n                  </div>\\n                </Badge>\\n              </CardHeader>\\n              <CardContent className=\\\"px-4 pb-4\\\">\\n                <div className=\\\"flex items-center justify-between\\\">\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">Current bid</p>\\n                    <p className=\\\"text-lg font-bold\\\">{price}</p>\\n                  </div>\\n                  <div>\\n                    <p className=\\\"text-muted-foreground text-sm\\\">\\n                      Auction ends in\\n                    </p>\\n                    <p className=\\\"text-sm font-semibold\\\">{time}</p>\\n                  </div>\\n                </div>\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-03/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"web3\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/web3-04.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"web3-04\",\n  \"description\": \"Trending NFT collections with gradient overlay\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"badge\",\n    \"button\",\n    \"card\",\n    \"select\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/web3-04/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { Cuboid, Grid3x3, Menu } from \\\"lucide-react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Badge } from \\\"@/components/ui/badge\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent } from \\\"@/components/ui/card\\\"\\nimport {\\n  Select,\\n  SelectContent,\\n  SelectItem,\\n  SelectTrigger,\\n  SelectValue,\\n} from \\\"@/components/ui/select\\\"\\n\\nconst DATA = [\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n    name: \\\"@thedreamytrees\\\",\\n    title: \\\"Dreamy Trees\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"3,000 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n    name: \\\"@3dfaces\\\",\\n    title: \\\"Face NFTs\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n  {\\n    price: \\\"9,999 NFTs\\\",\\n    img: \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    name: \\\"@theplanetsoftheuniverse\\\",\\n    title: \\\"The Planets Of The Universe\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    desc: \\\"Website visitors today demand a frictionless user experience.\\\",\\n  },\\n]\\n\\nexport default function Web304() {\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardContent className=\\\"p-6\\\">\\n          <div className=\\\"mb-6 flex flex-wrap items-start justify-between gap-6\\\">\\n            <div>\\n              <h1 className=\\\"mb-1 text-2xl font-bold\\\">Trending Collections</h1>\\n              <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n                The most sought-after collections across the entire ecosystem.\\n              </p>\\n            </div>\\n            <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n              <Select defaultValue=\\\"Last 24H\\\">\\n                <SelectTrigger className=\\\"w-max\\\">\\n                  <SelectValue placeholder=\\\"Select Date\\\" />\\n                </SelectTrigger>\\n                <SelectContent>\\n                  <SelectItem value=\\\"Last 6H\\\">Last 6H</SelectItem>\\n                  <SelectItem value=\\\"Last 12H\\\">Last 12H</SelectItem>\\n                  <SelectItem value=\\\"Last 24H\\\">Last 24H</SelectItem>\\n                </SelectContent>\\n              </Select>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Menu className=\\\"h-4 w-4\\\" />\\n              </Button>\\n              <Button variant=\\\"outline\\\" size=\\\"icon\\\">\\n                <Grid3x3 className=\\\"h-4 w-4\\\" />\\n              </Button>\\n            </div>\\n          </div>\\n          <div className=\\\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n            {DATA.map(({ price, img, name, title, profileImg, desc }, key) => (\\n              <Card key={key} className=\\\"relative overflow-hidden\\\">\\n                <img\\n                  src={img}\\n                  alt={name}\\n                  className=\\\"absolute inset-0 h-full w-full object-cover object-center\\\"\\n                />\\n                <div className=\\\"absolute inset-0 h-full w-full bg-gradient-to-t from-black/80 to-black/20\\\" />\\n                <CardContent className=\\\"relative z-10 flex h-[28rem] flex-col justify-between p-6\\\">\\n                  <Badge\\n                    variant=\\\"secondary\\\"\\n                    className=\\\"w-fit border-white/30 bg-white/20 text-white backdrop-blur\\\"\\n                  >\\n                    <Cuboid className=\\\"mr-1 h-4 w-4\\\" />\\n                    Collection\\n                  </Badge>\\n                  <div>\\n                    <h3 className=\\\"mb-1 flex items-center gap-2 text-xl font-semibold text-white\\\">\\n                      {title}\\n                      <Badge\\n                        variant=\\\"outline\\\"\\n                        className=\\\"border-blue-400 text-blue-400\\\"\\n                      >\\n                        ✓\\n                      </Badge>\\n                    </h3>\\n                    <p className=\\\"mb-4 text-sm text-gray-300\\\">{desc}</p>\\n                    <div className=\\\"flex items-center justify-between\\\">\\n                      <div className=\\\"flex items-center gap-2\\\">\\n                        <Avatar className=\\\"h-8 w-8\\\">\\n                          <AvatarImage src={profileImg} alt={name} />\\n                          <AvatarFallback>{name[1]}</AvatarFallback>\\n                        </Avatar>\\n                        <p className=\\\"text-sm text-white\\\">{name}</p>\\n                      </div>\\n                      <p className=\\\"text-sm font-semibold text-white\\\">\\n                        {price}\\n                      </p>\\n                    </div>\\n                  </div>\\n                </CardContent>\\n              </Card>\\n            ))}\\n          </div>\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-04/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1100px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"web3\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/public/r/web3-05.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"web3-05\",\n  \"description\": \"Top NFT creators with time filter\",\n  \"registryDependencies\": [\n    \"avatar\",\n    \"button\",\n    \"card\"\n  ],\n  \"files\": [\n    {\n      \"path\": \"creative-tim/blocks/web3-05/page.tsx\",\n      \"content\": \"\\\"use client\\\"\\n\\nimport { useState } from \\\"react\\\"\\n\\nimport { Avatar, AvatarFallback, AvatarImage } from \\\"@/components/ui/avatar\\\"\\nimport { Button } from \\\"@/components/ui/button\\\"\\nimport { Card, CardContent, CardHeader } from \\\"@/components/ui/card\\\"\\n\\nconst DATA = [\\n  {\\n    tokenId: \\\"#1\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Tina Andrew\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-4.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#2\\\",\\n    profileImg: \\\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\\\",\\n    name: \\\"Linde Michael\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/pixel-art-1.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-2.svg\\\",\\n      \\\"https://v3.material-tailwind.com/pixel-art-3.svg\\\",\\n    ],\\n  },\\n  {\\n    tokenId: \\\"#3\\\",\\n    profileImg: \\\"https://v3.material-tailwind.com/man-profile-2.jpg\\\",\\n    name: \\\"Misha Stam\\\",\\n    desc: \\\"Creator\\\",\\n    imgs: [\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n      \\\"https://v3.material-tailwind.com/nft-3.svg\\\",\\n    ],\\n  },\\n]\\n\\nexport default function Web305() {\\n  const [timeFrame, setTimeFrame] = useState(\\\"month\\\")\\n\\n  return (\\n    <section className=\\\"container mx-auto py-16\\\">\\n      <Card className=\\\"border shadow-sm\\\">\\n        <CardHeader className=\\\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\\\">\\n          <div>\\n            <h1 className=\\\"mb-1 text-2xl font-bold\\\">Top Creators</h1>\\n            <p className=\\\"text-muted-foreground max-w-2xl text-lg\\\">\\n              The most sought-after collections across the entire ecosystem.\\n            </p>\\n          </div>\\n          <div className=\\\"flex flex-wrap items-center gap-2\\\">\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"hour\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"hour\\\")}\\n            >\\n              Last 24h\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"week\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"week\\\")}\\n            >\\n              Last week\\n            </Button>\\n            <Button\\n              size=\\\"sm\\\"\\n              variant={timeFrame === \\\"month\\\" ? \\\"default\\\" : \\\"outline\\\"}\\n              onClick={() => setTimeFrame(\\\"month\\\")}\\n            >\\n              Last month\\n            </Button>\\n          </div>\\n        </CardHeader>\\n        <CardContent className=\\\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\\\">\\n          {DATA.map(({ tokenId, profileImg, name, desc, imgs }, key) => (\\n            <Card key={key} className=\\\"flex flex-col justify-between py-4\\\">\\n              <CardHeader className=\\\"px-4 gap-0\\\">\\n                <p className=\\\"font-semibold\\\">{tokenId}</p>\\n                <div className=\\\"mt-4 flex flex-wrap items-start justify-between gap-4\\\">\\n                  <div className=\\\"flex items-start gap-3\\\">\\n                    <Avatar>\\n                      <AvatarImage src={profileImg} alt={name} />\\n                      <AvatarFallback>{name[0]}</AvatarFallback>\\n                    </Avatar>\\n                    <div>\\n                      <p className=\\\"font-semibold\\\">{name}</p>\\n                      <p className=\\\"text-muted-foreground text-sm\\\">{desc}</p>\\n                    </div>\\n                  </div>\\n                  <Button size=\\\"sm\\\" variant=\\\"outline\\\">\\n                    See Collection\\n                  </Button>\\n                </div>\\n              </CardHeader>\\n              <CardContent className=\\\"grid grid-cols-3 gap-4 px-4\\\">\\n                {imgs.map((img, idx) => (\\n                  <img\\n                    key={idx}\\n                    src={img}\\n                    alt={`nft-${idx}`}\\n                    className=\\\"h-full min-h-24 w-full rounded-lg object-cover object-center\\\"\\n                  />\\n                ))}\\n              </CardContent>\\n            </Card>\\n          ))}\\n        </CardContent>\\n      </Card>\\n    </section>\\n  )\\n}\\n\",\n      \"type\": \"registry:page\",\n      \"target\": \"app/web3-05/page.tsx\"\n    }\n  ],\n  \"meta\": {\n    \"iframeHeight\": \"1000px\",\n    \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n    \"mobile\": \"component\"\n  },\n  \"categories\": [\n    \"web3\"\n  ],\n  \"type\": \"registry:block\"\n}"
  },
  {
    "path": "apps/www/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: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: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  },\n  \"required\": [\"name\", \"type\"],\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/www/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/www/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\"]\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    \"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/www/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/www/registry/__blocks__.json",
    "content": "[\n  {\n    \"name\": \"software-purchase-01\",\n    \"description\": \"Software purchase approval card\",\n    \"categories\": [\"forms\"]\n  },\n  {\n    \"name\": \"billing-information-01\",\n    \"description\": \"Manage billing contacts and company information\",\n    \"categories\": [\"billing\"]\n  },\n  {\n    \"name\": \"card-display-01\",\n    \"description\": \"Credit card display with dark and light themes\",\n    \"categories\": [\"billing\"]\n  },\n  {\n    \"name\": \"payment-method-01\",\n    \"description\": \"Payment method management with edit and delete\",\n    \"categories\": [\"billing\"]\n  },\n  {\n    \"name\": \"transaction-history-01\",\n    \"description\": \"Financial transaction history with trend indicators\",\n    \"categories\": [\"billing\"]\n  },\n  {\n    \"name\": \"invoices-01\",\n    \"description\": \"Invoice overview with status badges and download\",\n    \"categories\": [\"billing\"]\n  },\n  {\n    \"name\": \"simple-blog-content-01\",\n    \"description\": \"Simple blog content cards\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"blog-cards-layout-01\",\n    \"description\": \"Blog cards with view more button\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"blog-post-preview-tags-01\",\n    \"description\": \"Blog posts with tags\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"highlighted-blog-posts-01\",\n    \"description\": \"Highlighted blog posts with icons\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"blog-rectangular-images-01\",\n    \"description\": \"Blog posts with rectangular images\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"large-blog-preview-01\",\n    \"description\": \"Large blog post preview\",\n    \"categories\": [\"blog\"]\n  },\n  {\n    \"name\": \"simple-product-details-01\",\n    \"description\": \"Simple product details grid\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"grid-ecommerce-01\",\n    \"description\": \"Product grid with filters\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"promotional-cards-01\",\n    \"description\": \"Promotional product cards\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"order-history-01\",\n    \"description\": \"Order history table\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"empty-shopping-cart-01\",\n    \"description\": \"Empty shopping cart state\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"digital-product-overview-01\",\n    \"description\": \"Digital product with plan options\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"product-description-01\",\n    \"description\": \"Product description with gallery\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"dark-product-overview-01\",\n    \"description\": \"Dark themed product overview\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"shopping-cart-01\",\n    \"description\": \"Shopping cart with summary\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"checkout-01\",\n    \"description\": \"Checkout form with order summary\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"complex-product-description-01\",\n    \"description\": \"Product description with accordion\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"interactive-product-preview-01\",\n    \"description\": \"Interactive room product preview\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"order-details-01\",\n    \"description\": \"Order details with timeline\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"product-details-01\",\n    \"description\": \"Product details with image carousel\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"product-listing-filters-01\",\n    \"description\": \"Product listing with filters and sort\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"ecommerce-sections-01\",\n    \"description\": \"Runway video spotlight with product cards\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"ecommerce-sections-02\",\n    \"description\": \"Luxury product detail page with image gallery\",\n    \"categories\": [\"ecommerce\"]\n  },\n  {\n    \"name\": \"simple-faq-01\",\n    \"description\": \"Simple FAQ with dividers\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"faqs-list-01\",\n    \"description\": \"FAQ list with accordion\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"faq-left-title-01\",\n    \"description\": \"FAQ with left-aligned title and card grid\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"faqs-grid-cta-01\",\n    \"description\": \"FAQ grid with CTA section\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"faqs-cards-icons-01\",\n    \"description\": \"FAQ cards with icons and CTA\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"faqs-grid-01\",\n    \"description\": \"Simple FAQ grid layout\",\n    \"categories\": [\"faqs\"]\n  },\n  {\n    \"name\": \"contact-sections-01\",\n    \"description\": \"Simple contact form with contact info\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-02\",\n    \"description\": \"Contact form with image background\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-03\",\n    \"description\": \"Contact form with dark info panel\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-04\",\n    \"description\": \"Minimalist contact with icon cards\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-05\",\n    \"description\": \"Contact form with map and option selection\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-06\",\n    \"description\": \"Centered contact with circular icon badges\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-07\",\n    \"description\": \"Contact form with office location details\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-08\",\n    \"description\": \"Contact form with area of interest selection\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-09\",\n    \"description\": \"Dark background contact with detailed info\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-10\",\n    \"description\": \"Contact form with info cards\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-11\",\n    \"description\": \"Dark gradient contact form with backdrop blur\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-12\",\n    \"description\": \"Contact form with background image overlay\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-13\",\n    \"description\": \"Contact information cards with form\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-14\",\n    \"description\": \"Gradient background contact form with asterisk fields\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"contact-sections-15\",\n    \"description\": \"Contact options with quick contact form\",\n    \"categories\": [\"contact\"]\n  },\n  {\n    \"name\": \"web3-01\",\n    \"description\": \"NFT collection preview with pixel art\",\n    \"categories\": [\"web3\"]\n  },\n  {\n    \"name\": \"web3-02\",\n    \"description\": \"NFT creator profile with collection gallery\",\n    \"categories\": [\"web3\"]\n  },\n  {\n    \"name\": \"web3-03\",\n    \"description\": \"Top crypto auctions with countdown timer\",\n    \"categories\": [\"web3\"]\n  },\n  {\n    \"name\": \"web3-04\",\n    \"description\": \"Trending NFT collections with gradient overlay\",\n    \"categories\": [\"web3\"]\n  },\n  {\n    \"name\": \"web3-05\",\n    \"description\": \"Top NFT creators with time filter\",\n    \"categories\": [\"web3\"]\n  },\n  {\n    \"name\": \"cruds-01\",\n    \"description\": \"Edit apparel item form with product details\",\n    \"categories\": [\"cruds\"]\n  },\n  {\n    \"name\": \"cruds-02\",\n    \"description\": \"Update retail staff profile form\",\n    \"categories\": [\"cruds\"]\n  },\n  {\n    \"name\": \"cruds-03\",\n    \"description\": \"Stylist account settings with profile photo upload\",\n    \"categories\": [\"cruds\"]\n  },\n  {\n    \"name\": \"footers-01\",\n    \"description\": \"Simple footer with social links\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-02\",\n    \"description\": \"Footer with navigation links and subscription\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-03\",\n    \"description\": \"Website footer with CTA\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-04\",\n    \"description\": \"Simple dark footer\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-05\",\n    \"description\": \"Complex dark footer\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-06\",\n    \"description\": \"Advanced light footer\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-07\",\n    \"description\": \"Simple footer with country selection\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-08\",\n    \"description\": \"Simple footer with version number\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-09\",\n    \"description\": \"Footer with notification and CTA\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-10\",\n    \"description\": \"Footer with page links\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-11\",\n    \"description\": \"Website footer with statement\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-12\",\n    \"description\": \"Website footer with navigation\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-13\",\n    \"description\": \"Simple centered website footer\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-14\",\n    \"description\": \"Website footer for apps\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"footers-15\",\n    \"description\": \"Website footer with quote\",\n    \"categories\": [\"footers\"]\n  },\n  {\n    \"name\": \"testimonials-01\",\n    \"description\": \"Simple centered testimonials with avatars\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-02\",\n    \"description\": \"Testimonial cards with social proof badges\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-03\",\n    \"description\": \"Testimonial with statistics and metrics\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-04\",\n    \"description\": \"Three column testimonials with star ratings\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-05\",\n    \"description\": \"Dark testimonials with avatar and star ratings\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-06\",\n    \"description\": \"Company logo testimonial with large quote\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-07\",\n    \"description\": \"Interactive testimonials with profile switcher\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-08\",\n    \"description\": \"Light testimonials with star ratings\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-09\",\n    \"description\": \"Customer story with large heading and avatar\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-10\",\n    \"description\": \"Monochromatic testimonials with company logos\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-11\",\n    \"description\": \"Testimonial cards with focus state\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-12\",\n    \"description\": \"Grid layout testimonials with company logos\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-13\",\n    \"description\": \"Dark card testimonial with rounded avatar\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-14\",\n    \"description\": \"Light testimonials with card shadow\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-15\",\n    \"description\": \"Testimonials with submit button\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-16\",\n    \"description\": \"Dark carousel testimonials with navigation\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"testimonials-17\",\n    \"description\": \"Background image carousel testimonials\",\n    \"categories\": [\"testimonials\"]\n  },\n  {\n    \"name\": \"modals-01\",\n    \"description\": \"Alert modal with confirmation input for reset settings\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-02\",\n    \"description\": \"Edit profile modal with form inputs and preferences\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-03\",\n    \"description\": \"Invite members modal with team management\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-04\",\n    \"description\": \"Update product modal with image gallery and form\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-05\",\n    \"description\": \"Upload files modal with drag and drop\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-06\",\n    \"description\": \"Publish capsule collection modal with metadata display\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-07\",\n    \"description\": \"Change collection visibility settings modal\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-08\",\n    \"description\": \"Disable collection lock rules modal with alert and impact list\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-09\",\n    \"description\": \"Transfer showroom ownership modal with form fields and warning\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-10\",\n    \"description\": \"Permanently remove archive modal with effects list\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"modals-11\",\n    \"description\": \"Confirm vault deletion modal with text input verification\",\n    \"categories\": [\"modals\"]\n  },\n  {\n    \"name\": \"account-basic-info-01\",\n    \"description\": \"Personal information management form\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-2fa-01\",\n    \"description\": \"Two-factor authentication setup\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-change-password-01\",\n    \"description\": \"Change password form with validation\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-notifications-01\",\n    \"description\": \"Notification preferences management\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-sessions-01\",\n    \"description\": \"Active sessions and devices management\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-avatar-upload-01\",\n    \"description\": \"Profile avatar upload and management\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"account-integrations-01\",\n    \"description\": \"Third-party integrations management\",\n    \"categories\": [\"account\"]\n  },\n  {\n    \"name\": \"ai-chat-streaming-01\",\n    \"description\": \"AI chat with streaming responses and thinking process\",\n    \"categories\": [\"ai-agents\"]\n  },\n  {\n    \"name\": \"ai-image-generator-01\",\n    \"description\": \"AI image generator with upload and editor capabilities\",\n    \"categories\": [\"ai-agents\"]\n  },\n  {\n    \"name\": \"ai-video-generator-01\",\n    \"description\": \"AI video generation agent with preview\",\n    \"categories\": [\"ai-agents\"]\n  }\n]\n"
  },
  {
    "path": "apps/www/registry/__index__.tsx",
    "content": "/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @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, any> = {\n  \"index\": {\n    name: \"index\",\n    description: \"\",\n    type: \"registry:style\",\n    registryDependencies: [\"utils\"],\n    files: [],\n    component: null,\n    categories: undefined,\n    meta: undefined,\n  },\n  \"style\": {\n    name: \"style\",\n    description: \"\",\n    type: \"registry:style\",\n    registryDependencies: [\"utils\"],\n    files: [],\n    component: null,\n    categories: undefined,\n    meta: undefined,\n  },\n  \"accordion\": {\n    name: \"accordion\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/accordion.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/alert.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/ui/alert-dialog.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/aspect-ratio.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/avatar.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/badge.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/breadcrumb.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/button.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"calendar\": {\n    name: \"calendar\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/ui/calendar.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/card.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/ui/carousel.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/ui/chart.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/checkbox.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/collapsible.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"command\": {\n    name: \"command\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"dialog\"],\n    files: [{\n      path: \"registry/creative-tim/ui/command.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/context-menu.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/dialog.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/drawer.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/dropdown-menu.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"form\": {\n    name: \"form\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/ui/form.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/hover-card.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/input.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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-otp\": {\n    name: \"input-otp\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"input\"],\n    files: [{\n      path: \"registry/creative-tim/ui/input-otp.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"label\": {\n    name: \"label\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/label.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/menubar.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/navigation-menu.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/ui/pagination.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/popover.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/progress.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/radio-group.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/resizable.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/scroll-area.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/select.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/separator.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/sheet.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\",\"separator\",\"sheet\",\"skeleton\",\"tooltip\"],\n    files: [{\n      path: \"registry/creative-tim/ui/sidebar.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/skeleton.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/slider.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/sonner.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"switch\": {\n    name: \"switch\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/switch.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/table.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/tabs.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/textarea.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/toggle.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/toggle-group.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/ui/tooltip.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"software-purchase-card\": {\n    name: \"software-purchase-card\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\",\"card\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/ui/software-purchase-card.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/ui/software-purchase-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  \"card-demo\": {\n    name: \"card-demo\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\",\"button\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/examples/card-demo.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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-plain\": {\n    name: \"card-plain\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/examples/card-plain.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/card-plain.tsx\")\n      const exportName = Object.keys(mod).find(key => typeof mod[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-button\": {\n    name: \"card-with-button\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/examples/card-with-button.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/card-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  \"card-blog\": {\n    name: \"card-blog\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/examples/card-blog.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/card-blog.tsx\")\n      const exportName = Object.keys(mod).find(key => typeof mod[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-ecommerce\": {\n    name: \"card-ecommerce\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\",\"button\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/examples/card-ecommerce.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/card-ecommerce.tsx\")\n      const exportName = Object.keys(mod).find(key => typeof mod[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-card-demo\": {\n    name: \"form-card-demo\",\n    description: \"\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\",\"button\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/examples/form-card-demo.tsx\",\n      type: \"registry:ui\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/form-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  \"software-purchase-01\": {\n    name: \"software-purchase-01\",\n    description: \"Software purchase approval card\",\n    type: \"registry:block\",\n    registryDependencies: [\"software-purchase-card\",\"separator\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/software-purchase-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/software-purchase/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/software-purchase-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: [\"forms\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\"},\n  },\n  \"billing-information-01\": {\n    name: \"billing-information-01\",\n    description: \"Manage billing contacts and company information\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/billing-information-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/billing-information/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/billing-information-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: [\"billing\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\"},\n  },\n  \"card-display-01\": {\n    name: \"card-display-01\",\n    description: \"Credit card display with dark and light themes\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/card-display-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/card-display/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/card-display-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: [\"billing\"],\n    meta: {\"iframeHeight\":\"400px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\"},\n  },\n  \"payment-method-01\": {\n    name: \"payment-method-01\",\n    description: \"Payment method management with edit and delete\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"tooltip\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/payment-method-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/payment-method/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/payment-method-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: [\"billing\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\"},\n  },\n  \"transaction-history-01\": {\n    name: \"transaction-history-01\",\n    description: \"Financial transaction history with trend indicators\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"calendar\",\"card\",\"popover\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/transaction-history-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/transaction-history/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/transaction-history-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: [\"billing\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\"},\n  },\n  \"invoices-01\": {\n    name: \"invoices-01\",\n    description: \"Invoice overview with status badges and download\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\",\"separator\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/invoices-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/invoices/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/invoices-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: [\"billing\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\"},\n  },\n  \"simple-blog-content-01\": {\n    name: \"simple-blog-content-01\",\n    description: \"Simple blog content cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/simple-blog-content-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/simple-blog-content/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/simple-blog-content-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"blog-cards-layout-01\": {\n    name: \"blog-cards-layout-01\",\n    description: \"Blog cards with view more button\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/blog-cards-layout-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/blog-cards-layout/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/blog-cards-layout-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"blog-post-preview-tags-01\": {\n    name: \"blog-post-preview-tags-01\",\n    description: \"Blog posts with tags\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/blog-post-preview-tags-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/blog-post-preview-tags/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/blog-post-preview-tags-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"highlighted-blog-posts-01\": {\n    name: \"highlighted-blog-posts-01\",\n    description: \"Highlighted blog posts with icons\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/highlighted-blog-posts-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/highlighted-blog-posts/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/highlighted-blog-posts-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"blog-rectangular-images-01\": {\n    name: \"blog-rectangular-images-01\",\n    description: \"Blog posts with rectangular images\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/blog-rectangular-images-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/blog-rectangular-images/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/blog-rectangular-images-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"large-blog-preview-01\": {\n    name: \"large-blog-preview-01\",\n    description: \"Large blog post preview\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/large-blog-preview-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/large-blog-preview/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/large-blog-preview-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: [\"blog\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"simple-product-details-01\": {\n    name: \"simple-product-details-01\",\n    description: \"Simple product details grid\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"accordion\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/simple-product-details-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/simple-product-details/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/simple-product-details-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"grid-ecommerce-01\": {\n    name: \"grid-ecommerce-01\",\n    description: \"Product grid with filters\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/grid-ecommerce-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/grid-ecommerce/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/grid-ecommerce-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"promotional-cards-01\": {\n    name: \"promotional-cards-01\",\n    description: \"Promotional product cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/promotional-cards-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/promotional-cards/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/promotional-cards-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"order-history-01\": {\n    name: \"order-history-01\",\n    description: \"Order history table\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/order-history-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/order-history/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/order-history-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"empty-shopping-cart-01\": {\n    name: \"empty-shopping-cart-01\",\n    description: \"Empty shopping cart state\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/empty-shopping-cart-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/empty-shopping-cart/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/empty-shopping-cart-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"digital-product-overview-01\": {\n    name: \"digital-product-overview-01\",\n    description: \"Digital product with plan options\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"label\",\"radio-group\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/digital-product-overview-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/digital-product-overview/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/digital-product-overview-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"product-description-01\": {\n    name: \"product-description-01\",\n    description: \"Product description with gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/product-description-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/product-description/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/product-description-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"dark-product-overview-01\": {\n    name: \"dark-product-overview-01\",\n    description: \"Dark themed product overview\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"tabs\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/dark-product-overview-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/dark-product-overview/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/dark-product-overview-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"shopping-cart-01\": {\n    name: \"shopping-cart-01\",\n    description: \"Shopping cart with summary\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"select\",\"badge\",\"separator\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/shopping-cart-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/shopping-cart/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/shopping-cart-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"checkout-01\": {\n    name: \"checkout-01\",\n    description: \"Checkout form with order summary\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"checkbox\",\"input\",\"label\",\"badge\",\"separator\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/checkout-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/checkout/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/checkout-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"complex-product-description-01\": {\n    name: \"complex-product-description-01\",\n    description: \"Product description with accordion\",\n    type: \"registry:block\",\n    registryDependencies: [\"accordion\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/complex-product-description-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/complex-product-description/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/complex-product-description-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"interactive-product-preview-01\": {\n    name: \"interactive-product-preview-01\",\n    description: \"Interactive room product preview\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/interactive-product-preview-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/interactive-product-preview/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/interactive-product-preview-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"order-details-01\": {\n    name: \"order-details-01\",\n    description: \"Order details with timeline\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"badge\",\"separator\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/order-details-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/order-details/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/order-details-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"product-details-01\": {\n    name: \"product-details-01\",\n    description: \"Product details with image carousel\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/product-details-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/product-details/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/product-details-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"product-listing-filters-01\": {\n    name: \"product-listing-filters-01\",\n    description: \"Product listing with filters and sort\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"badge\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/product-listing-filters-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/product-listing-filters/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/product-listing-filters-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"ecommerce-sections-01\": {\n    name: \"ecommerce-sections-01\",\n    description: \"Runway video spotlight with product cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/ecommerce-sections-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/ecommerce-sections/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/ecommerce-sections-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"ecommerce-sections-02\": {\n    name: \"ecommerce-sections-02\",\n    description: \"Luxury product detail page with image gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/ecommerce-sections-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/ecommerce-sections/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/ecommerce-sections-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: [\"ecommerce\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"simple-faq-01\": {\n    name: \"simple-faq-01\",\n    description: \"Simple FAQ with dividers\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [{\n      path: \"registry/creative-tim/blocks/simple-faq-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/simple-faq/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/simple-faq-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"faqs-list-01\": {\n    name: \"faqs-list-01\",\n    description: \"FAQ list with accordion\",\n    type: \"registry:block\",\n    registryDependencies: [\"accordion\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/faqs-list-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/faqs-list/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/faqs-list-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"faq-left-title-01\": {\n    name: \"faq-left-title-01\",\n    description: \"FAQ with left-aligned title and card grid\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/faq-left-title-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/faq-left-title/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/faq-left-title-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"faqs-grid-cta-01\": {\n    name: \"faqs-grid-cta-01\",\n    description: \"FAQ grid with CTA section\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/faqs-grid-cta-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/faqs-grid-cta/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/faqs-grid-cta-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"faqs-cards-icons-01\": {\n    name: \"faqs-cards-icons-01\",\n    description: \"FAQ cards with icons and CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/faqs-cards-icons-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/faqs-cards-icons/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/faqs-cards-icons-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"faqs-grid-01\": {\n    name: \"faqs-grid-01\",\n    description: \"Simple FAQ grid layout\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/faqs-grid-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/faqs-grid/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/faqs-grid-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: [\"faqs\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-01\": {\n    name: \"contact-sections-01\",\n    description: \"Simple contact form with contact info\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"checkbox\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-02\": {\n    name: \"contact-sections-02\",\n    description: \"Contact form with image background\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"checkbox\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-03\": {\n    name: \"contact-sections-03\",\n    description: \"Contact form with dark info panel\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-04\": {\n    name: \"contact-sections-04\",\n    description: \"Minimalist contact with icon cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-04/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-04/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-05\": {\n    name: \"contact-sections-05\",\n    description: \"Contact form with map and option selection\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-05/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-05/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-06\": {\n    name: \"contact-sections-06\",\n    description: \"Centered contact with circular icon badges\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-06/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-06/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-07\": {\n    name: \"contact-sections-07\",\n    description: \"Contact form with office location details\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"checkbox\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-07/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-07/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-08\": {\n    name: \"contact-sections-08\",\n    description: \"Contact form with area of interest selection\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"radio-group\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-08/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-08/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-09\": {\n    name: \"contact-sections-09\",\n    description: \"Dark background contact with detailed info\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"checkbox\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-09/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-09/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-10\": {\n    name: \"contact-sections-10\",\n    description: \"Contact form with info cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-10/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-10/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-11\": {\n    name: \"contact-sections-11\",\n    description: \"Dark gradient contact form with backdrop blur\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-11/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-11/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-12\": {\n    name: \"contact-sections-12\",\n    description: \"Contact form with background image overlay\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-12/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-12/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-13\": {\n    name: \"contact-sections-13\",\n    description: \"Contact information cards with form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-13/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-13/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-14\": {\n    name: \"contact-sections-14\",\n    description: \"Gradient background contact form with asterisk fields\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"input\",\"label\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-14/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-14/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"contact-sections-15\": {\n    name: \"contact-sections-15\",\n    description: \"Contact options with quick contact form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/contact-sections-15/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/contact-sections-15/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/contact-sections-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: [\"contact\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"web3-01\": {\n    name: \"web3-01\",\n    description: \"NFT collection preview with pixel art\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/web3-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/web3-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/web3-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: [\"web3\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"web3-02\": {\n    name: \"web3-02\",\n    description: \"NFT creator profile with collection gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/web3-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/web3-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/web3-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: [\"web3\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"web3-03\": {\n    name: \"web3-03\",\n    description: \"Top crypto auctions with countdown timer\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\",\"button\",\"card\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/web3-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/web3-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/web3-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: [\"web3\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"web3-04\": {\n    name: \"web3-04\",\n    description: \"Trending NFT collections with gradient overlay\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"badge\",\"button\",\"card\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/web3-04/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/web3-04/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/web3-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: [\"web3\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"web3-05\": {\n    name: \"web3-05\",\n    description: \"Top NFT creators with time filter\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/web3-05/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/web3-05/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/web3-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: [\"web3\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"cruds-01\": {\n    name: \"cruds-01\",\n    description: \"Edit apparel item form with product details\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/cruds-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/cruds-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/cruds-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: [\"cruds\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"cruds-02\": {\n    name: \"cruds-02\",\n    description: \"Update retail staff profile form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/cruds-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/cruds-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/cruds-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: [\"cruds\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"cruds-03\": {\n    name: \"cruds-03\",\n    description: \"Stylist account settings with profile photo upload\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/cruds-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/cruds-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/cruds-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: [\"cruds\"],\n    meta: {\"iframeHeight\":\"1200px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"footers-01\": {\n    name: \"footers-01\",\n    description: \"Simple footer with social links\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"300px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-02\": {\n    name: \"footers-02\",\n    description: \"Footer with navigation links and subscription\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"checkbox\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-03\": {\n    name: \"footers-03\",\n    description: \"Website footer with CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"300px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-04\": {\n    name: \"footers-04\",\n    description: \"Simple dark footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-04/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-04/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-05\": {\n    name: \"footers-05\",\n    description: \"Complex dark footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"input\",\"label\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-05/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-05/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-06\": {\n    name: \"footers-06\",\n    description: \"Advanced light footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-06/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-06/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-07\": {\n    name: \"footers-07\",\n    description: \"Simple footer with country selection\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"select\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-07/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-07/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"300px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-08\": {\n    name: \"footers-08\",\n    description: \"Simple footer with version number\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-08/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-08/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"300px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-09\": {\n    name: \"footers-09\",\n    description: \"Footer with notification and CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-09/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-09/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"350px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-10\": {\n    name: \"footers-10\",\n    description: \"Footer with page links\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-10/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-10/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"350px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-11\": {\n    name: \"footers-11\",\n    description: \"Website footer with statement\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-11/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-11/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"450px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-12\": {\n    name: \"footers-12\",\n    description: \"Website footer with navigation\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-12/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-12/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"300px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-13\": {\n    name: \"footers-13\",\n    description: \"Simple centered website footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-13/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-13/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"450px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-14\": {\n    name: \"footers-14\",\n    description: \"Website footer for apps\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-14/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-14/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"footers-15\": {\n    name: \"footers-15\",\n    description: \"Website footer with quote\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/footers-15/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/footers-15/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/footers-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: [\"footers\"],\n    meta: {\"iframeHeight\":\"400px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-01\": {\n    name: \"testimonials-01\",\n    description: \"Simple centered testimonials with avatars\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-02\": {\n    name: \"testimonials-02\",\n    description: \"Testimonial cards with social proof badges\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-03\": {\n    name: \"testimonials-03\",\n    description: \"Testimonial with statistics and metrics\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\",\"private\":true},\n  },\n  \"testimonials-04\": {\n    name: \"testimonials-04\",\n    description: \"Three column testimonials with star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-04/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-04/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\",\"private\":true},\n  },\n  \"testimonials-05\": {\n    name: \"testimonials-05\",\n    description: \"Dark testimonials with avatar and star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-05/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-05/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-06\": {\n    name: \"testimonials-06\",\n    description: \"Company logo testimonial with large quote\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-06/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-06/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-07\": {\n    name: \"testimonials-07\",\n    description: \"Interactive testimonials with profile switcher\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-07/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-07/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-08\": {\n    name: \"testimonials-08\",\n    description: \"Light testimonials with star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-08/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-08/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-09\": {\n    name: \"testimonials-09\",\n    description: \"Customer story with large heading and avatar\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-09/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-09/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-10\": {\n    name: \"testimonials-10\",\n    description: \"Monochromatic testimonials with company logos\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\",\"card\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-10/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-10/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-11\": {\n    name: \"testimonials-11\",\n    description: \"Testimonial cards with focus state\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-11/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-11/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-12\": {\n    name: \"testimonials-12\",\n    description: \"Grid layout testimonials with company logos\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-12/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-12/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-13\": {\n    name: \"testimonials-13\",\n    description: \"Dark card testimonial with rounded avatar\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-13/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-13/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-14\": {\n    name: \"testimonials-14\",\n    description: \"Light testimonials with card shadow\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-14/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-14/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-15\": {\n    name: \"testimonials-15\",\n    description: \"Testimonials with submit button\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-15/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-15/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-16\": {\n    name: \"testimonials-16\",\n    description: \"Dark carousel testimonials with navigation\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-16/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-16/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"testimonials-17\": {\n    name: \"testimonials-17\",\n    description: \"Background image carousel testimonials\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/testimonials-17/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/testimonials-17/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/testimonials-17/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: [\"testimonials\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-01\": {\n    name: \"modals-01\",\n    description: \"Alert modal with confirmation input for reset settings\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-01/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-02\": {\n    name: \"modals-02\",\n    description: \"Edit profile modal with form inputs and preferences\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"label\",\"select\",\"checkbox\",\"radio-group\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-02/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-02/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-03\": {\n    name: \"modals-03\",\n    description: \"Invite members modal with team management\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"avatar\",\"dropdown-menu\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-03/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-03/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-04\": {\n    name: \"modals-04\",\n    description: \"Update product modal with image gallery and form\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"label\",\"select\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-04/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-04/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-05\": {\n    name: \"modals-05\",\n    description: \"Upload files modal with drag and drop\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-05/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-05/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-06\": {\n    name: \"modals-06\",\n    description: \"Publish capsule collection modal with metadata display\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-06/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-06/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"650px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-07\": {\n    name: \"modals-07\",\n    description: \"Change collection visibility settings modal\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-07/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-07/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"500px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-08\": {\n    name: \"modals-08\",\n    description: \"Disable collection lock rules modal with alert and impact list\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-08/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-08/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"750px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-09\": {\n    name: \"modals-09\",\n    description: \"Transfer showroom ownership modal with form fields and warning\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"label\",\"select\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-09/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-09/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"750px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-10\": {\n    name: \"modals-10\",\n    description: \"Permanently remove archive modal with effects list\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-10/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-10/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"750px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"modals-11\": {\n    name: \"modals-11\",\n    description: \"Confirm vault deletion modal with text input verification\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\",\"button\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/modals-11/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/modals-11/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/modals-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: [\"modals\"],\n    meta: {\"iframeHeight\":\"550px\",\"container\":\"w-full bg-surface\",\"mobile\":\"component\"},\n  },\n  \"account-basic-info-01\": {\n    name: \"account-basic-info-01\",\n    description: \"Personal information management form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\",\"calendar\",\"popover\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-basic-info-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-basic-info/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-basic-info-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: [\"account\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"account-2fa-01\": {\n    name: \"account-2fa-01\",\n    description: \"Two-factor authentication setup\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"switch\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-2fa-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-2fa/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-2fa-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: [\"account\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\"},\n  },\n  \"account-change-password-01\": {\n    name: \"account-change-password-01\",\n    description: \"Change password form with validation\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-change-password-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-change-password/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-change-password-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: [\"account\"],\n    meta: {\"iframeHeight\":\"700px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"account-notifications-01\": {\n    name: \"account-notifications-01\",\n    description: \"Notification preferences management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"switch\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-notifications-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-notifications/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-notifications-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: [\"account\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"account-sessions-01\": {\n    name: \"account-sessions-01\",\n    description: \"Active sessions and devices management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-sessions-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-sessions/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-sessions-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: [\"account\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"account-avatar-upload-01\": {\n    name: \"account-avatar-upload-01\",\n    description: \"Profile avatar upload and management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-avatar-upload-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-avatar-upload/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-avatar-upload-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: [\"account\"],\n    meta: {\"iframeHeight\":\"600px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"account-integrations-01\": {\n    name: \"account-integrations-01\",\n    description: \"Third-party integrations management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"switch\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/account-integrations-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/account-integrations/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/account-integrations-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: [\"account\"],\n    meta: {\"iframeHeight\":\"900px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\"},\n  },\n  \"ai-chat-streaming-01\": {\n    name: \"ai-chat-streaming-01\",\n    description: \"AI chat with streaming responses and thinking process\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\",\"scroll-area\",\"avatar\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/ai-chat-streaming-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/ai-chat-streaming/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/ai-chat-streaming-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: [\"ai-agents\"],\n    meta: {\"iframeHeight\":\"800px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\"},\n  },\n  \"ai-image-generator-01\": {\n    name: \"ai-image-generator-01\",\n    description: \"AI image generator with upload and editor capabilities\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\",\"slider\",\"tabs\",\"textarea\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/ai-image-generator-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/ai-image-generator/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/ai-image-generator-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: [\"ai-agents\"],\n    meta: {\"iframeHeight\":\"1000px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\"},\n  },\n  \"ai-video-generator-01\": {\n    name: \"ai-video-generator-01\",\n    description: \"AI video generation agent with preview\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\",\"card\",\"input\",\"label\",\"select\",\"textarea\",\"progress\",\"badge\"],\n    files: [{\n      path: \"registry/creative-tim/blocks/ai-video-generator-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/ai-video-generator/page.tsx\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/blocks/ai-video-generator-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: [\"ai-agents\"],\n    meta: {\"iframeHeight\":\"1100px\",\"container\":\"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\"mobile\":\"component\",\"details\":\"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\"},\n  },\n  \"use-mobile\": {\n    name: \"use-mobile\",\n    description: \"\",\n    type: \"registry:hook\",\n    registryDependencies: undefined,\n    files: [{\n      path: \"registry/creative-tim/hooks/use-mobile.ts\",\n      type: \"registry:hook\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/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  \"software-purchase-card-demo\": {\n    name: \"software-purchase-card-demo\",\n    description: \"\",\n    type: \"registry:example\",\n    registryDependencies: [\"software-purchase-card\"],\n    files: [{\n      path: \"registry/creative-tim/examples/software-purchase-card-demo.tsx\",\n      type: \"registry:example\",\n      target: \"\"\n    }],\n    component: React.lazy(async () => {\n      const mod = await import(\"@/registry/creative-tim/examples/software-purchase-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  }"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-2fa-01/page.tsx",
    "content": "\"use client\"\n\nimport {\n  AlertCircle,\n  CheckCircle2,\n  KeyRound,\n  MessageSquare,\n  Shield,\n  Smartphone,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\n\nconst TwoFactorMethods = [\n  {\n    title: \"Security Keys\",\n    description:\n      \"Physical security keys provide the highest level of protection by requiring a hardware device for authentication.\",\n    value: \"No security keys configured\",\n    action: \"Add\",\n    icon: KeyRound,\n    isConfigured: false,\n    recommended: true,\n  },\n  {\n    title: \"Authenticator App\",\n    description:\n      \"Generate time-based one-time passwords (TOTP) using apps like Google Authenticator or Authy.\",\n    value: \"Not configured\",\n    action: \"Setup\",\n    icon: Smartphone,\n    isConfigured: false,\n    recommended: true,\n  },\n  {\n    title: \"SMS Number\",\n    description:\n      \"Receive verification codes via text message to your registered mobile number.\",\n    value: \"+1 (555) 123-4567\",\n    action: \"Edit\",\n    icon: MessageSquare,\n    isConfigured: true,\n    recommended: false,\n  },\n]\n\nexport default function Account2FA01() {\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"flex flex-wrap items-start justify-between gap-4 border-b pb-6\">\n          <div className=\"flex items-center gap-3\">\n            <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n              <Shield className=\"text-primary h-6 w-6\" />\n            </div>\n            <div>\n              <h2 className=\"text-2xl font-semibold tracking-tight\">\n                Two-Factor Authentication\n              </h2>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Add an extra layer of security to your account\n              </p>\n            </div>\n          </div>\n          <Badge\n            variant=\"outline\"\n            className=\"border-green-500 bg-green-50 text-green-700\"\n          >\n            <CheckCircle2 className=\"mr-1 h-3 w-3\" />\n            Enabled\n          </Badge>\n        </div>\n\n        <div className=\"space-y-0\">\n          {TwoFactorMethods.map((method, index) => {\n            const Icon = method.icon\n            return (\n              <div\n                key={method.title}\n                className={`group flex flex-wrap items-center justify-between gap-6 py-6 ${\n                  index !== TwoFactorMethods.length - 1\n                    ? \"border-border border-b\"\n                    : \"\"\n                }`}\n              >\n                <div className=\"flex items-start gap-4\">\n                  <div\n                    className={`bg-muted flex h-12 w-12 shrink-0 items-center justify-center rounded-lg ${method.isConfigured ? \"bg-primary/10\" : \"\"}`}\n                  >\n                    <Icon\n                      className={`h-6 w-6 ${method.isConfigured ? \"text-primary\" : \"text-muted-foreground\"}`}\n                    />\n                  </div>\n                  <div className=\"flex-1 space-y-2\">\n                    <div className=\"flex items-center gap-2\">\n                      <p className=\"font-semibold\">{method.title}</p>\n                      {method.recommended && (\n                        <span className=\"text-primary border-primary bg-primary/10 rounded-full border px-2 py-0.5 text-xs font-medium\">\n                          Recommended\n                        </span>\n                      )}\n                    </div>\n                    <p className=\"text-muted-foreground text-sm\">\n                      {method.description}\n                    </p>\n                    <p\n                      className={`text-sm ${\n                        method.isConfigured\n                          ? \"font-semibold\"\n                          : \"text-muted-foreground\"\n                      }`}\n                    >\n                      {method.isConfigured && (\n                        <CheckCircle2 className=\"mr-1 inline h-4 w-4 text-green-500\" />\n                      )}\n                      {method.value}\n                    </p>\n                  </div>\n                </div>\n                <Button\n                  size=\"sm\"\n                  variant={method.isConfigured ? \"outline\" : \"default\"}\n                >\n                  {method.action}\n                </Button>\n              </div>\n            )\n          })}\n        </div>\n\n        <div className=\"mt-8 space-y-4\">\n          <div className=\"bg-muted/50 flex items-start gap-3 rounded-lg border p-4\">\n            <AlertCircle className=\"mt-0.5 h-5 w-5 text-blue-500\" />\n            <div>\n              <h4 className=\"mb-1 text-sm font-medium\">Recovery Codes</h4>\n              <p className=\"text-muted-foreground text-sm\">\n                Generate backup codes that can be used if you lose access to\n                your 2FA methods. Store them securely in a safe place.\n              </p>\n              <Button variant=\"link\" className=\"mt-2 h-auto p-0 text-sm\">\n                Generate Recovery Codes →\n              </Button>\n            </div>\n          </div>\n\n          <div className=\"flex justify-end gap-3 border-t pt-6\">\n            <Button variant=\"outline\">View Activity Log</Button>\n            <Button>Save Settings</Button>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-avatar-upload-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  CheckCircle2,\n  Pencil,\n  Trash2,\n  Upload,\n  User,\n  XCircle,\n} from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/ui/switch\"\n\nexport default function AccountAvatarUpload01() {\n  const [status, setStatus] = React.useState(\"Online\")\n  const [avatarPreview, setAvatarPreview] = React.useState<string | null>(null)\n\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const file = event.target.files?.[0]\n    if (file) {\n      const reader = new FileReader()\n      reader.onloadend = () => {\n        setAvatarPreview(reader.result as string)\n      }\n      reader.readAsDataURL(file)\n    }\n  }\n\n  const handleRemoveAvatar = () => {\n    setAvatarPreview(null)\n  }\n\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <div className=\"flex items-center gap-3\">\n            <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n              <User className=\"text-primary h-6 w-6\" />\n            </div>\n            <div>\n              <h2 className=\"text-2xl font-semibold tracking-tight\">\n                Profile Picture\n              </h2>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Update your profile picture and personal information\n              </p>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"flex flex-wrap items-center justify-between gap-6\">\n          <div className=\"flex items-center gap-6\">\n            <div className=\"flex items-center gap-4\">\n              <div className=\"relative\">\n                <Avatar className=\"border-border h-16 w-16 border-2\">\n                  <AvatarImage\n                    src={\n                      avatarPreview ||\n                      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\"\n                    }\n                    alt=\"Profile Picture\"\n                    className=\"object-cover\"\n                  />\n                  <AvatarFallback className=\"bg-muted-foreground/10 text-muted-foreground\">\n                    <User className=\"h-8 w-8\" />\n                  </AvatarFallback>\n                </Avatar>\n                <label\n                  htmlFor=\"avatar-upload\"\n                  className=\"absolute right-0 bottom-0 cursor-pointer\"\n                >\n                  <div className=\"bg-primary/10 text-primary hover:bg-primary/20 border-border rounded-full border p-1.5\">\n                    <Pencil className=\"h-3.5 w-3.5\" />\n                  </div>\n                  <input\n                    type=\"file\"\n                    id=\"avatar-upload\"\n                    accept=\"image/png,image/jpeg,image/svg+xml\"\n                    className=\"hidden\"\n                    onChange={handleFileUpload}\n                  />\n                </label>\n              </div>\n\n              <div className=\"space-y-1\">\n                <h3 className=\"font-semibold\">Select and Upload Image</h3>\n                <p className=\"text-muted-foreground text-sm\">\n                  .svg, .png, .jpg (size 400x400px)\n                </p>\n              </div>\n            </div>\n\n            <div className=\"flex items-center gap-3\">\n              <Button>\n                <Upload className=\"mr-2 h-4 w-4\" />\n                Upload Avatar\n              </Button>\n              {avatarPreview && (\n                <Button variant=\"destructive\" onClick={handleRemoveAvatar}>\n                  <Trash2 className=\"mr-2 h-4 w-4\" />\n                  Remove\n                </Button>\n              )}\n            </div>\n          </div>\n\n          <div className=\"flex flex-col\">\n            <Label className=\"mb-3 flex items-center gap-2\">\n              <CheckCircle2 className=\"text-muted-foreground h-4 w-4\" />\n              Availability Status\n            </Label>\n            <div className=\"flex items-center gap-3\">\n              <Switch\n                id=\"status\"\n                checked={status === \"Online\"}\n                onCheckedChange={() =>\n                  setStatus((cur) => (cur === \"Online\" ? \"Offline\" : \"Online\"))\n                }\n              />\n              <Label\n                htmlFor=\"status\"\n                className=\"flex cursor-pointer items-center gap-2\"\n              >\n                {status === \"Online\" ? (\n                  <CheckCircle2 className=\"h-4 w-4 text-green-500\" />\n                ) : (\n                  <XCircle className=\"text-muted-foreground h-4 w-4\" />\n                )}\n                {status}\n              </Label>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"bg-muted/50 mt-6 rounded-lg border p-4\">\n          <div className=\"flex items-start gap-3\">\n            <CheckCircle2 className=\"mt-0.5 h-5 w-5 text-blue-500\" />\n            <div>\n              <h4 className=\"mb-1 text-sm font-medium\">Profile Picture Tips</h4>\n              <p className=\"text-muted-foreground text-sm\">\n                Choose a high-quality, professional image that clearly shows\n                your face. Recommended image size is 400x400 pixels. Only .svg,\n                .png, and .jpg formats are supported.\n              </p>\n            </div>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-basic-info-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport {\n  Briefcase,\n  CalendarIcon,\n  Globe,\n  GraduationCap,\n  Mail,\n  MapPin,\n  Phone,\n  User,\n} from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nexport default function AccountBasicInfo01() {\n  const [birthDate, setBirthDate] = React.useState<Date>()\n\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <h2 className=\"text-2xl font-semibold tracking-tight\">\n            Personal Information\n          </h2>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Manage your personal details and profile information. This\n            information will be visible to other users on the platform.\n          </p>\n        </div>\n\n        <form className=\"space-y-8\">\n          {/* Basic Details Section */}\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"mb-4 text-sm font-medium\">Basic Details</h3>\n              <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"firstName\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <User className=\"text-muted-foreground h-4 w-4\" />\n                    First Name\n                  </Label>\n                  <Input\n                    id=\"firstName\"\n                    placeholder=\"Emma\"\n                    defaultValue=\"Emma\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"lastName\" className=\"flex items-center gap-2\">\n                    <User className=\"text-muted-foreground h-4 w-4\" />\n                    Last Name\n                  </Label>\n                  <Input\n                    id=\"lastName\"\n                    placeholder=\"Roberts\"\n                    defaultValue=\"Roberts\"\n                  />\n                </div>\n              </div>\n            </div>\n\n            {/* Professional Information */}\n            <div>\n              <h3 className=\"mb-4 text-sm font-medium\">\n                Professional Information\n              </h3>\n              <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"gender\" className=\"flex items-center gap-2\">\n                    <User className=\"text-muted-foreground h-4 w-4\" />\n                    Gender\n                  </Label>\n                  <Select defaultValue=\"female\">\n                    <SelectTrigger id=\"gender\">\n                      <SelectValue placeholder=\"Select Gender\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"male\">Male</SelectItem>\n                      <SelectItem value=\"female\">Female</SelectItem>\n                      <SelectItem value=\"other\">Other</SelectItem>\n                      <SelectItem value=\"prefer-not-to-say\">\n                        Prefer not to say\n                      </SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n\n                <div className=\"space-y-2\">\n                  <Label className=\"flex items-center gap-2\">\n                    <CalendarIcon className=\"text-muted-foreground h-4 w-4\" />\n                    Birth Date\n                  </Label>\n                  <Popover>\n                    <PopoverTrigger asChild>\n                      <Button\n                        variant=\"outline\"\n                        className=\"w-full justify-start text-left font-normal\"\n                      >\n                        <CalendarIcon className=\"mr-2 h-4 w-4\" />\n                        {birthDate ? format(birthDate, \"PPP\") : \"Select a date\"}\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                        initialFocus\n                      />\n                    </PopoverContent>\n                  </Popover>\n                </div>\n\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"profession\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <Briefcase className=\"text-muted-foreground h-4 w-4\" />\n                    Profession\n                  </Label>\n                  <Select defaultValue=\"ui-ux\">\n                    <SelectTrigger id=\"profession\">\n                      <SelectValue placeholder=\"Select Profession\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"ui-ux\">UI/UX Designer</SelectItem>\n                      <SelectItem value=\"frontend\">\n                        Frontend Developer\n                      </SelectItem>\n                      <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                      <SelectItem value=\"fullstack\">\n                        Fullstack Developer\n                      </SelectItem>\n                      <SelectItem value=\"product-manager\">\n                        Product Manager\n                      </SelectItem>\n                      <SelectItem value=\"data-scientist\">\n                        Data Scientist\n                      </SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"education\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <GraduationCap className=\"text-muted-foreground h-4 w-4\" />\n                    Education\n                  </Label>\n                  <Select defaultValue=\"university\">\n                    <SelectTrigger id=\"education\">\n                      <SelectValue placeholder=\"Select Level\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"high-school\">High School</SelectItem>\n                      <SelectItem value=\"college\">College</SelectItem>\n                      <SelectItem value=\"university\">University</SelectItem>\n                      <SelectItem value=\"masters\">\n                        Master&apos;s Degree\n                      </SelectItem>\n                      <SelectItem value=\"phd\">Ph.D.</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n              </div>\n            </div>\n\n            {/* Contact Information */}\n            <div>\n              <h3 className=\"mb-4 text-sm font-medium\">Contact Information</h3>\n              <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"email\" className=\"flex items-center gap-2\">\n                    <Mail className=\"text-muted-foreground h-4 w-4\" />\n                    Email Address\n                  </Label>\n                  <Input\n                    id=\"email\"\n                    type=\"email\"\n                    placeholder=\"emma@mail.com\"\n                    defaultValue=\"emma@mail.com\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label\n                    htmlFor=\"confirmEmail\"\n                    className=\"flex items-center gap-2\"\n                  >\n                    <Mail className=\"text-muted-foreground h-4 w-4\" />\n                    Confirm Email\n                  </Label>\n                  <Input\n                    id=\"confirmEmail\"\n                    type=\"email\"\n                    placeholder=\"emma@mail.com\"\n                    defaultValue=\"emma@mail.com\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"phone\" className=\"flex items-center gap-2\">\n                    <Phone className=\"text-muted-foreground h-4 w-4\" />\n                    Phone Number\n                  </Label>\n                  <Input\n                    id=\"phone\"\n                    placeholder=\"+1 (555) 123-4567\"\n                    defaultValue=\"+1 (555) 123-4567\"\n                  />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"location\" className=\"flex items-center gap-2\">\n                    <MapPin className=\"text-muted-foreground h-4 w-4\" />\n                    Location\n                  </Label>\n                  <Input\n                    id=\"location\"\n                    placeholder=\"City, Country\"\n                    defaultValue=\"Florida, USA\"\n                  />\n                </div>\n              </div>\n            </div>\n\n            {/* Additional Information */}\n            <div>\n              <h3 className=\"mb-4 text-sm font-medium\">\n                Additional Information\n              </h3>\n              <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"language\" className=\"flex items-center gap-2\">\n                    <Globe className=\"text-muted-foreground h-4 w-4\" />\n                    Preferred Language\n                  </Label>\n                  <Select defaultValue=\"english\">\n                    <SelectTrigger id=\"language\">\n                      <SelectValue placeholder=\"Select Language\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"english\">English</SelectItem>\n                      <SelectItem value=\"spanish\">Spanish</SelectItem>\n                      <SelectItem value=\"french\">French</SelectItem>\n                      <SelectItem value=\"german\">German</SelectItem>\n                      <SelectItem value=\"chinese\">Chinese</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"timezone\" className=\"flex items-center gap-2\">\n                    <Globe className=\"text-muted-foreground h-4 w-4\" />\n                    Timezone\n                  </Label>\n                  <Select defaultValue=\"est\">\n                    <SelectTrigger id=\"timezone\">\n                      <SelectValue placeholder=\"Select Timezone\" />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"est\">Eastern Time (ET)</SelectItem>\n                      <SelectItem value=\"cst\">Central Time (CT)</SelectItem>\n                      <SelectItem value=\"mst\">Mountain Time (MT)</SelectItem>\n                      <SelectItem value=\"pst\">Pacific Time (PT)</SelectItem>\n                      <SelectItem value=\"utc\">UTC</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"flex justify-end gap-3 border-t pt-6\">\n            <Button type=\"button\" variant=\"outline\">\n              Cancel\n            </Button>\n            <Button type=\"submit\">Save Changes</Button>\n          </div>\n        </form>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-change-password-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckCircle2, Eye, EyeOff, Lock, Shield, XCircle } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nfunction PasswordField({\n  id,\n  label,\n  ...props\n}: {\n  id: string\n  label: string\n} & React.InputHTMLAttributes<HTMLInputElement>) {\n  const [showPassword, setShowPassword] = React.useState(false)\n\n  return (\n    <div className=\"mb-6 space-y-2\">\n      <Label htmlFor={id} className=\"flex items-center gap-2\">\n        <Lock className=\"text-muted-foreground h-4 w-4\" />\n        {label}\n      </Label>\n      <div className=\"relative\">\n        <Input\n          {...props}\n          id={id}\n          type={showPassword ? \"text\" : \"password\"}\n          placeholder=\"••••••••\"\n        />\n        <Button\n          type=\"button\"\n          variant=\"ghost\"\n          size=\"sm\"\n          className=\"absolute top-0 right-0 h-full px-3 py-2 hover:bg-transparent\"\n          onClick={() => setShowPassword(!showPassword)}\n        >\n          {showPassword ? (\n            <EyeOff className=\"h-4 w-4\" aria-hidden=\"true\" />\n          ) : (\n            <Eye className=\"h-4 w-4\" aria-hidden=\"true\" />\n          )}\n          <span className=\"sr-only\">\n            {showPassword ? \"Hide password\" : \"Show password\"}\n          </span>\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nconst PASSWORD_REQUIREMENTS = [\n  {\n    label: \"At least 8 characters long\",\n    regex: /.{8,}/,\n  },\n  {\n    label: \"One uppercase letter (A-Z)\",\n    regex: /[A-Z]/,\n  },\n  {\n    label: \"One lowercase letter (a-z)\",\n    regex: /[a-z]/,\n  },\n  {\n    label: \"One number (0-9)\",\n    regex: /[0-9]/,\n  },\n  {\n    label: \"One special character (!@#$%^&*)\",\n    regex: /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/,\n  },\n]\n\nexport default function AccountChangePassword01() {\n  const [newPassword, setNewPassword] = React.useState(\"\")\n\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <div className=\"flex items-center gap-3\">\n            <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n              <Shield className=\"text-primary h-6 w-6\" />\n            </div>\n            <div>\n              <h2 className=\"text-2xl font-semibold tracking-tight\">\n                Change Password\n              </h2>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Update your password to keep your account secure\n              </p>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2\">\n          <div>\n            <form onSubmit={(e) => e.preventDefault()}>\n              <PasswordField id=\"current-password\" label=\"Current Password\" />\n              <PasswordField\n                id=\"new-password\"\n                label=\"New Password\"\n                onChange={(e) => setNewPassword(e.target.value)}\n                value={newPassword}\n              />\n              <PasswordField\n                id=\"confirm-password\"\n                label=\"Confirm New Password\"\n              />\n              <div className=\"mt-8 flex gap-3\">\n                <Button type=\"button\" variant=\"outline\" className=\"flex-1\">\n                  Cancel\n                </Button>\n                <Button type=\"submit\" className=\"flex-1\">\n                  Update Password\n                </Button>\n              </div>\n            </form>\n          </div>\n\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"mb-4 flex items-center gap-2 font-semibold\">\n                <Shield className=\"text-muted-foreground h-5 w-5\" />\n                Password Requirements\n              </h3>\n              <p className=\"text-muted-foreground mb-6 text-sm\">\n                Your password must meet the following criteria for enhanced\n                security:\n              </p>\n              <ul className=\"space-y-3\">\n                {PASSWORD_REQUIREMENTS.map((req, index) => {\n                  const meetsRequirement = req.regex.test(newPassword)\n                  return (\n                    <li key={index} className=\"flex items-start gap-3\">\n                      {meetsRequirement ? (\n                        <CheckCircle2 className=\"mt-0.5 h-5 w-5 shrink-0 text-green-500\" />\n                      ) : (\n                        <XCircle className=\"text-muted-foreground mt-0.5 h-5 w-5 shrink-0\" />\n                      )}\n                      <span\n                        className={`text-sm ${\n                          meetsRequirement\n                            ? \"text-foreground\"\n                            : \"text-muted-foreground\"\n                        }`}\n                      >\n                        {req.label}\n                      </span>\n                    </li>\n                  )\n                })}\n              </ul>\n            </div>\n\n            <div className=\"bg-muted/50 rounded-lg border p-4\">\n              <h4 className=\"mb-2 text-sm font-medium\">\n                Security Best Practices\n              </h4>\n              <ul className=\"text-muted-foreground space-y-2 text-sm\">\n                <li className=\"flex items-start gap-2\">\n                  <span className=\"mt-1\">•</span>\n                  <span>Change your password regularly (every 90 days)</span>\n                </li>\n                <li className=\"flex items-start gap-2\">\n                  <span className=\"mt-1\">•</span>\n                  <span>Never share your password with anyone</span>\n                </li>\n                <li className=\"flex items-start gap-2\">\n                  <span className=\"mt-1\">•</span>\n                  <span>Use a unique password for each account</span>\n                </li>\n                <li className=\"flex items-start gap-2\">\n                  <span className=\"mt-1\">•</span>\n                  <span>Consider using a password manager</span>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-integrations-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Check,\n  ChevronDown,\n  Copy,\n  ExternalLink,\n  Github,\n  MessageCircle,\n  Shield,\n} from \"lucide-react\"\n\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/ui/switch\"\n\nconst INTEGRATIONS = [\n  {\n    id: \"github\",\n    name: \"GitHub\",\n    icon: Github,\n    category: \"Development\",\n    description:\n      \"Connect your GitHub account to sync repositories and track contributions.\",\n    isConfigured: false,\n    connectedEmail: null,\n    verificationCode: null,\n  },\n  {\n    id: \"spotify\",\n    name: \"Spotify\",\n    icon: MessageCircle, // Replaced Spotify icon with MessageCircle\n    category: \"Music\",\n    description:\n      \"Link your Spotify account to share playlists and sync listening activity.\",\n    isConfigured: true,\n    connectedEmail: \"emma@mail.com\",\n    verificationCode: \"1172913\",\n  },\n  {\n    id: \"discord\",\n    name: \"Discord\",\n    icon: MessageCircle,\n    category: \"Communication\",\n    description:\n      \"Integrate your Discord account to manage server connections and notifications.\",\n    isConfigured: false,\n    connectedEmail: null,\n    verificationCode: null,\n  },\n]\n\nexport default function AccountIntegrations01() {\n  const [activeIntegrations, setActiveIntegrations] = React.useState<\n    Record<string, boolean>\n  >(\n    INTEGRATIONS.reduce(\n      (acc, integration) => {\n        acc[integration.id] = integration.isConfigured\n        return acc\n      },\n      {} as Record<string, boolean>\n    )\n  )\n  const [copiedCode, setCopiedCode] = React.useState<string | null>(null)\n\n  const toggleIntegration = (id: string) => {\n    setActiveIntegrations((prev) => ({\n      ...prev,\n      [id]: !prev[id],\n    }))\n  }\n\n  const copyVerificationCode = (code: string) => {\n    navigator.clipboard.writeText(code)\n    setCopiedCode(code)\n    setTimeout(() => setCopiedCode(null), 2000)\n  }\n\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <div className=\"flex items-center gap-3\">\n            <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n              <Shield className=\"text-primary h-6 w-6\" />\n            </div>\n            <div>\n              <h2 className=\"text-2xl font-semibold tracking-tight\">\n                Third-Party Integrations\n              </h2>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Manage and configure connections to external services and\n                platforms\n              </p>\n            </div>\n          </div>\n        </div>\n\n        <Accordion type=\"single\" collapsible className=\"space-y-4\">\n          {INTEGRATIONS.map((integration) => {\n            const Icon = integration.icon\n            const isActive = activeIntegrations[integration.id]\n\n            return (\n              <AccordionItem\n                key={integration.id}\n                value={integration.id}\n                className=\"border-border rounded-lg border\"\n              >\n                <div className=\"flex items-center justify-between px-4 py-4\">\n                  <div className=\"flex flex-1 items-center gap-4\">\n                    <div className=\"bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg\">\n                      <Icon\n                        className={`h-6 w-6 ${isActive ? \"text-primary\" : \"text-muted-foreground\"}`}\n                      />\n                    </div>\n                    <div className=\"flex-1 space-y-1 text-left\">\n                      <div className=\"flex items-center gap-2\">\n                        <h3 className=\"font-semibold\">{integration.name}</h3>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"text-muted-foreground\"\n                        >\n                          {integration.category}\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground line-clamp-1 text-sm\">\n                        {integration.description}\n                      </p>\n                    </div>\n                  </div>\n                  <div className=\"flex items-center gap-3\">\n                    <div className=\"flex items-center gap-2\">\n                      <Switch\n                        id={`${integration.id}-toggle`}\n                        checked={isActive}\n                        onCheckedChange={() =>\n                          toggleIntegration(integration.id)\n                        }\n                      />\n                      <Label\n                        htmlFor={`${integration.id}-toggle`}\n                        className=\"cursor-pointer text-sm\"\n                      >\n                        {isActive ? \"Enabled\" : \"Enable\"}\n                      </Label>\n                    </div>\n                    <AccordionTrigger className=\"hover:bg-muted/50 rounded px-3 py-2\">\n                      <span className=\"text-sm font-medium\">View More</span>\n                    </AccordionTrigger>\n                  </div>\n                </div>\n                <AccordionContent className=\"px-4 pb-6\">\n                  {!isActive ? (\n                    <div className=\"space-y-4\">\n                      <p className=\"text-muted-foreground text-sm\">\n                        You haven&apos;t added your {integration.name} account\n                        or you aren&apos;t authorized. Click &quot;Connect&quot;\n                        to initiate the integration process.\n                      </p>\n                      <Button>\n                        <ExternalLink className=\"mr-2 h-4 w-4\" />\n                        Connect {integration.name}\n                      </Button>\n                    </div>\n                  ) : integration.connectedEmail ? (\n                    <div className=\"space-y-4\">\n                      <Card className=\"bg-muted/50 border p-4\">\n                        <div className=\"flex items-center justify-between\">\n                          <div className=\"space-y-1\">\n                            <h4 className=\"font-semibold\">Verification Code</h4>\n                            <p className=\"text-muted-foreground text-sm\">\n                              Use this code to complete the integration\n                            </p>\n                          </div>\n                          <div className=\"flex items-center gap-3\">\n                            <code className=\"bg-muted/50 rounded px-3 py-1 font-mono text-sm\">\n                              {integration.verificationCode}\n                            </code>\n                            <Button\n                              variant=\"outline\"\n                              size=\"sm\"\n                              onClick={() =>\n                                copyVerificationCode(\n                                  integration.verificationCode!\n                                )\n                              }\n                            >\n                              {copiedCode === integration.verificationCode ? (\n                                <Check className=\"mr-2 h-4 w-4 text-green-500\" />\n                              ) : (\n                                <Copy className=\"mr-2 h-4 w-4\" />\n                              )}\n                              {copiedCode === integration.verificationCode\n                                ? \"Copied\"\n                                : \"Copy\"}\n                            </Button>\n                          </div>\n                        </div>\n                      </Card>\n                      <Card className=\"bg-muted/50 border p-4\">\n                        <div className=\"flex items-center justify-between\">\n                          <div className=\"space-y-1\">\n                            <h4 className=\"font-semibold\">Connected Account</h4>\n                            <p className=\"text-muted-foreground text-sm\">\n                              Manage your linked {integration.name} account\n                            </p>\n                          </div>\n                          <div className=\"flex items-center gap-3\">\n                            <span className=\"text-sm font-medium\">\n                              {integration.connectedEmail}\n                            </span>\n                            <Button variant=\"outline\" size=\"sm\">\n                              Edit\n                            </Button>\n                          </div>\n                        </div>\n                      </Card>\n                    </div>\n                  ) : null}\n                </AccordionContent>\n              </AccordionItem>\n            )\n          })}\n        </Accordion>\n\n        <div className=\"bg-muted/50 mt-6 rounded-lg border p-4\">\n          <div className=\"flex items-start gap-3\">\n            <Shield className=\"mt-0.5 h-5 w-5 text-blue-500\" />\n            <div>\n              <h4 className=\"mb-1 text-sm font-medium\">Integration Security</h4>\n              <p className=\"text-muted-foreground text-sm\">\n                Ensure you trust the applications you connect. Review and manage\n                third-party access to your account regularly. You can revoke\n                access at any time by disabling the integration.\n              </p>\n            </div>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-notifications-01/page.tsx",
    "content": "\"use client\"\n\nimport { Bell, Mail, MessageSquare, Smartphone } from \"lucide-react\"\n\nimport { Card } from \"@/components/ui/card\"\nimport { Label } from \"@/components/ui/label\"\nimport { Switch } from \"@/components/ui/switch\"\n\nconst TABLE_HEAD = [\n  { label: \"Activity\", icon: Bell },\n  { label: \"Email\", icon: Mail },\n  { label: \"Push\", icon: Smartphone },\n  { label: \"SMS\", icon: MessageSquare },\n]\n\nconst NOTIFICATIONS = [\n  {\n    title: \"Mentions\",\n    description: \"Notify when another user mentions you in a comment\",\n    category: \"Social\",\n    email: true,\n    push: false,\n    sms: true,\n  },\n  {\n    title: \"Comments\",\n    description: \"Notify when another user comments on your item\",\n    category: \"Social\",\n    email: true,\n    push: false,\n    sms: true,\n  },\n  {\n    title: \"New Follower\",\n    description: \"Notify when someone starts following you\",\n    category: \"Social\",\n    email: false,\n    push: true,\n    sms: false,\n  },\n  {\n    title: \"Login Activity\",\n    description: \"Alert when logging in from a new device or location\",\n    category: \"Security\",\n    email: true,\n    push: true,\n    sms: true,\n  },\n  {\n    title: \"Password Changed\",\n    description: \"Immediate notification when password is updated\",\n    category: \"Security\",\n    email: true,\n    push: true,\n    sms: true,\n  },\n  {\n    title: \"Product Updates\",\n    description: \"Get notified about new features and improvements\",\n    category: \"Product\",\n    email: true,\n    push: false,\n    sms: false,\n  },\n]\n\nexport default function AccountNotifications01() {\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <h2 className=\"text-2xl font-semibold tracking-tight\">\n            Notification Preferences\n          </h2>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Customize how you receive notifications. These settings apply to all\n            activities you&apos;re monitoring across the platform.\n          </p>\n        </div>\n\n        <div className=\"overflow-x-auto\">\n          <table className=\"w-full min-w-[40rem] table-auto text-left\">\n            <thead>\n              <tr className=\"border-b\">\n                {TABLE_HEAD.map((head, i) => {\n                  const Icon = head.icon\n                  return (\n                    <th\n                      key={head.label}\n                      className={`${\n                        i === 0 ? \"py-4 pr-4\" : \"p-4 text-center\"\n                      } font-semibold`}\n                    >\n                      <div\n                        className={`flex items-center gap-2 ${\n                          i !== 0 ? \"justify-center\" : \"\"\n                        }`}\n                      >\n                        <Icon className=\"text-muted-foreground h-4 w-4\" />\n                        <span className=\"text-sm\">{head.label}</span>\n                      </div>\n                    </th>\n                  )\n                })}\n              </tr>\n            </thead>\n            <tbody>\n              {NOTIFICATIONS.map((notification, index) => {\n                const isLast = index === NOTIFICATIONS.length - 1\n                const classes = isLast ? \"py-6\" : \"border-border border-b py-6\"\n\n                return (\n                  <tr\n                    key={notification.title}\n                    className=\"group hover:bg-muted/50\"\n                  >\n                    <td className={`${classes} pr-4`}>\n                      <div className=\"space-y-1\">\n                        <div className=\"flex items-center gap-2\">\n                          <p className=\"font-semibold\">{notification.title}</p>\n                          <span className=\"text-muted-foreground rounded-full border px-2 py-0.5 text-xs\">\n                            {notification.category}\n                          </span>\n                        </div>\n                        <p className=\"text-muted-foreground text-sm\">\n                          {notification.description}\n                        </p>\n                      </div>\n                    </td>\n                    <td className={`${classes} px-4`}>\n                      <div className=\"flex justify-center\">\n                        <Switch\n                          defaultChecked={notification.email}\n                          id={`email-${index}`}\n                          aria-label={`Email notifications for ${notification.title}`}\n                        />\n                      </div>\n                    </td>\n                    <td className={`${classes} px-4`}>\n                      <div className=\"flex justify-center\">\n                        <Switch\n                          defaultChecked={notification.push}\n                          id={`push-${index}`}\n                          aria-label={`Push notifications for ${notification.title}`}\n                        />\n                      </div>\n                    </td>\n                    <td className={`${classes} px-4`}>\n                      <div className=\"flex justify-center\">\n                        <Switch\n                          defaultChecked={notification.sms}\n                          id={`sms-${index}`}\n                          aria-label={`SMS notifications for ${notification.title}`}\n                        />\n                      </div>\n                    </td>\n                  </tr>\n                )\n              })}\n            </tbody>\n          </table>\n        </div>\n\n        <div className=\"bg-muted/50 mt-6 rounded-lg border p-4\">\n          <div className=\"flex items-start gap-3\">\n            <Bell className=\"text-muted-foreground mt-0.5 h-5 w-5\" />\n            <div>\n              <h4 className=\"mb-1 text-sm font-medium\">\n                About Notification Delivery\n              </h4>\n              <p className=\"text-muted-foreground text-sm\">\n                Email notifications are sent instantly. Push notifications\n                require the mobile app. SMS notifications may incur carrier\n                charges. You can change these settings at any time.\n              </p>\n            </div>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/account-sessions-01/page.tsx",
    "content": "\"use client\"\n\nimport {\n  Clock,\n  Computer,\n  Globe,\n  ShieldCheck,\n  Smartphone,\n  X,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\n\nconst ACTIVE_SESSIONS = [\n  {\n    id: 1,\n    type: \"Laptop\",\n    icon: Computer,\n    location: \"New York, USA\",\n    coordinates: \"40.7128° N, 74.0060° W\",\n    isCurrent: true,\n    lastActive: \"2 hours ago\",\n    browser: \"Chrome 114.0\",\n    os: \"macOS 13.4\",\n  },\n  {\n    id: 2,\n    type: \"Smartphone\",\n    icon: Smartphone,\n    location: \"Florida, USA\",\n    coordinates: \"27.9944° N, 81.7603° W\",\n    isCurrent: false,\n    lastActive: \"Yesterday at 3:45 PM\",\n    browser: \"Safari 16.5\",\n    os: \"iOS 16.5\",\n  },\n  {\n    id: 3,\n    type: \"Desktop\",\n    icon: Computer,\n    location: \"Tokyo, Japan\",\n    coordinates: \"35.6895° N, 139.6917° E\",\n    isCurrent: false,\n    lastActive: \"3 days ago\",\n    browser: \"Firefox 112.0\",\n    os: \"Windows 11\",\n  },\n]\n\nexport default function AccountSessions01() {\n  return (\n    <div className=\"mx-auto max-w-5xl p-6\">\n      <Card className=\"bg-card border p-8\">\n        <div className=\"border-b pb-6\">\n          <div className=\"flex items-center gap-3\">\n            <div className=\"bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg\">\n              <ShieldCheck className=\"text-primary h-6 w-6\" />\n            </div>\n            <div>\n              <h2 className=\"text-2xl font-semibold tracking-tight\">\n                Active Sessions\n              </h2>\n              <p className=\"text-muted-foreground mt-1 text-sm\">\n                Manage and monitor devices that have access to your account\n              </p>\n            </div>\n          </div>\n        </div>\n\n        <div className=\"space-y-6\">\n          {ACTIVE_SESSIONS.map((session, index) => {\n            const Icon = session.icon\n            const isLast = index === ACTIVE_SESSIONS.length - 1\n\n            return (\n              <div\n                key={session.id}\n                className={`flex items-center justify-between gap-6 py-4 ${\n                  !isLast ? \"border-border border-b\" : \"\"\n                }`}\n              >\n                <div className=\"flex items-center gap-4\">\n                  <div\n                    className={`bg-muted/50 flex h-12 w-12 items-center justify-center rounded-lg`}\n                  >\n                    <Icon\n                      className={`h-6 w-6 ${session.isCurrent ? \"text-primary\" : \"text-muted-foreground\"}`}\n                    />\n                  </div>\n\n                  <div className=\"space-y-1\">\n                    <div className=\"flex items-center gap-2\">\n                      <h4 className=\"font-semibold\">{session.type} Session</h4>\n                      {session.isCurrent && (\n                        <Badge\n                          variant=\"outline\"\n                          className=\"border-green-500 bg-green-50 text-green-700\"\n                        >\n                          Current Session\n                        </Badge>\n                      )}\n                    </div>\n\n                    <div className=\"text-muted-foreground space-y-1 text-sm\">\n                      <div className=\"flex items-center gap-2\">\n                        <Globe className=\"h-4 w-4\" />\n                        <span>{session.location}</span>\n                      </div>\n                      <div className=\"flex items-center gap-2\">\n                        <Clock className=\"h-4 w-4\" />\n                        <span>Last active: {session.lastActive}</span>\n                      </div>\n                      <div>\n                        {session.browser} on {session.os}\n                      </div>\n                    </div>\n                  </div>\n                </div>\n\n                <div className=\"flex items-center gap-3\">\n                  {!session.isCurrent && (\n                    <Button variant=\"destructive\" size=\"sm\">\n                      <X className=\"mr-2 h-4 w-4\" />\n                      Remove\n                    </Button>\n                  )}\n                </div>\n              </div>\n            )\n          })}\n        </div>\n\n        <div className=\"bg-muted/50 mt-6 rounded-lg border p-4\">\n          <div className=\"flex items-start gap-3\">\n            <ShieldCheck className=\"mt-0.5 h-5 w-5 text-blue-500\" />\n            <div>\n              <h4 className=\"mb-1 text-sm font-medium\">Security Tip</h4>\n              <p className=\"text-muted-foreground text-sm\">\n                If you notice any suspicious activity, immediately remove the\n                session and change your account password. Enable two-factor\n                authentication for additional security.\n              </p>\n            </div>\n          </div>\n        </div>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/ai-chat-streaming-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Brain, Loader2, Send } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback } from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst AI_PROVIDERS = [\n  { value: \"openai\", label: \"OpenAI\" },\n  { value: \"anthropic\", label: \"Anthropic\" },\n  { value: \"google\", label: \"Google Gemini\" },\n  { value: \"cohere\", label: \"Cohere\" },\n  { value: \"mistral\", label: \"Mistral AI\" },\n]\n\ninterface Message {\n  id: string\n  role: \"user\" | \"assistant\"\n  content: string\n  thinking?: string\n  isStreaming?: boolean\n}\n\nexport default function AIChatStreamingBlock() {\n  const [messages, setMessages] = React.useState<Message[]>([\n    {\n      id: \"1\",\n      role: \"assistant\",\n      content:\n        \"Hello! I'm your AI assistant with streaming and thinking capabilities. How can I help you today?\",\n    },\n  ])\n  const [input, setInput] = React.useState(\"\")\n  const [isLoading, setIsLoading] = React.useState(false)\n  const [provider, setProvider] = React.useState(\"openai\")\n  const [apiKey, setApiKey] = React.useState(\"\")\n  const [showThinking, setShowThinking] = React.useState(false)\n  const scrollAreaRef = React.useRef<HTMLDivElement>(null)\n\n  const simulateStreaming = async (text: string) => {\n    const words = text.split(\" \")\n    let currentText = \"\"\n\n    const messageId = Date.now().toString()\n    setMessages((prev) => [\n      ...prev,\n      {\n        id: messageId,\n        role: \"assistant\",\n        content: \"\",\n        thinking: showThinking\n          ? \"Analyzing your question and formulating a comprehensive response...\"\n          : undefined,\n        isStreaming: true,\n      },\n    ])\n\n    for (let i = 0; i < words.length; i++) {\n      currentText += (i > 0 ? \" \" : \"\") + words[i]\n      await new Promise((resolve) => setTimeout(resolve, 50))\n\n      setMessages((prev) =>\n        prev.map((msg) =>\n          msg.id === messageId\n            ? {\n                ...msg,\n                content: currentText,\n                isStreaming: i < words.length - 1,\n              }\n            : msg\n        )\n      )\n    }\n  }\n\n  const handleSend = async () => {\n    if (!input.trim() || isLoading) return\n\n    const userMessage: Message = {\n      id: Date.now().toString(),\n      role: \"user\",\n      content: input.trim(),\n    }\n\n    setMessages((prev) => [...prev, userMessage])\n    setInput(\"\")\n    setIsLoading(true)\n\n    // Simulate AI response\n    const responses = [\n      \"That's an interesting question. Based on the AI provider you've selected, I can process this with advanced natural language understanding. Let me break this down for you with a detailed analysis.\",\n      \"I understand what you're asking. Using the configured API, I can provide you with accurate information. The key aspects to consider are context, relevance, and accuracy in the response.\",\n      \"Great question! With streaming enabled, you can see my response in real-time as I process your query. This creates a more interactive and engaging experience for users.\",\n    ]\n\n    const randomResponse =\n      responses[Math.floor(Math.random() * responses.length)]\n    await simulateStreaming(randomResponse)\n    setIsLoading(false)\n  }\n\n  React.useEffect(() => {\n    if (scrollAreaRef.current) {\n      scrollAreaRef.current.scrollTop = scrollAreaRef.current.scrollHeight\n    }\n  }, [messages])\n\n  return (\n    <div className=\"container mx-auto py-8\">\n      <Card className=\"mx-auto max-w-4xl\">\n        <CardHeader>\n          <CardTitle className=\"flex items-center gap-2\">\n            <Brain className=\"h-6 w-6\" />\n            AI Chat with Streaming and Thinking\n          </CardTitle>\n          <div className=\"mt-4 grid gap-4 sm:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"provider\">AI Provider</Label>\n              <Select value={provider} onValueChange={setProvider}>\n                <SelectTrigger id=\"provider\">\n                  <SelectValue placeholder=\"Select provider\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {AI_PROVIDERS.map((p) => (\n                    <SelectItem key={p.value} value={p.value}>\n                      {p.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"apiKey\">API Key</Label>\n              <Input\n                id=\"apiKey\"\n                type=\"password\"\n                placeholder=\"Enter your API key\"\n                value={apiKey}\n                onChange={(e) => setApiKey(e.target.value)}\n              />\n            </div>\n          </div>\n          <div className=\"mt-2 flex items-center gap-2\">\n            <input\n              type=\"checkbox\"\n              id=\"showThinking\"\n              checked={showThinking}\n              onChange={(e) => setShowThinking(e.target.checked)}\n              className=\"h-4 w-4 rounded border-gray-300\"\n            />\n            <Label htmlFor=\"showThinking\" className=\"cursor-pointer text-sm\">\n              Show AI thinking process\n            </Label>\n          </div>\n        </CardHeader>\n        <CardContent className=\"space-y-4\">\n          <ScrollArea\n            className=\"h-[400px] rounded-md border p-4\"\n            ref={scrollAreaRef}\n          >\n            <div className=\"space-y-4\">\n              {messages.map((message) => (\n                <div\n                  key={message.id}\n                  className={`flex gap-3 ${\n                    message.role === \"user\" ? \"justify-end\" : \"justify-start\"\n                  }`}\n                >\n                  {message.role === \"assistant\" && (\n                    <Avatar className=\"h-8 w-8\">\n                      <AvatarFallback className=\"bg-primary text-primary-foreground\">\n                        AI\n                      </AvatarFallback>\n                    </Avatar>\n                  )}\n                  <div\n                    className={`max-w-[80%] space-y-2 ${\n                      message.role === \"user\" ? \"order-first\" : \"\"\n                    }`}\n                  >\n                    {message.thinking && (\n                      <div className=\"bg-muted/50 mb-2 rounded-lg border border-dashed p-3\">\n                        <p className=\"text-muted-foreground flex items-center gap-2 text-sm\">\n                          <Brain className=\"h-4 w-4\" />\n                          <span className=\"italic\">{message.thinking}</span>\n                        </p>\n                      </div>\n                    )}\n                    <div\n                      className={`rounded-lg p-3 ${\n                        message.role === \"user\"\n                          ? \"bg-primary text-primary-foreground\"\n                          : \"bg-muted\"\n                      }`}\n                    >\n                      <p className=\"text-sm\">\n                        {message.content}\n                        {message.isStreaming && (\n                          <span className=\"ml-1 inline-block h-4 w-1 animate-pulse bg-current\" />\n                        )}\n                      </p>\n                    </div>\n                  </div>\n                  {message.role === \"user\" && (\n                    <Avatar className=\"h-8 w-8\">\n                      <AvatarFallback>U</AvatarFallback>\n                    </Avatar>\n                  )}\n                </div>\n              ))}\n              {isLoading &&\n                messages[messages.length - 1]?.role !== \"assistant\" && (\n                  <div className=\"flex gap-3\">\n                    <Avatar className=\"h-8 w-8\">\n                      <AvatarFallback className=\"bg-primary text-primary-foreground\">\n                        AI\n                      </AvatarFallback>\n                    </Avatar>\n                    <div className=\"bg-muted flex items-center gap-2 rounded-lg p-3\">\n                      <Loader2 className=\"h-4 w-4 animate-spin\" />\n                      <span className=\"text-sm\">Thinking...</span>\n                    </div>\n                  </div>\n                )}\n            </div>\n          </ScrollArea>\n          <form\n            onSubmit={(e) => {\n              e.preventDefault()\n              handleSend()\n            }}\n            className=\"flex gap-2\"\n          >\n            <Input\n              placeholder=\"Type your message...\"\n              value={input}\n              onChange={(e) => setInput(e.target.value)}\n              disabled={isLoading || !apiKey}\n            />\n            <Button\n              type=\"submit\"\n              disabled={isLoading || !apiKey || !input.trim()}\n            >\n              <Send className=\"h-4 w-4\" />\n            </Button>\n          </form>\n          {!apiKey && (\n            <p className=\"text-muted-foreground text-center text-sm\">\n              Please enter your API key to start chatting\n            </p>\n          )}\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/ai-image-generator-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Download,\n  ImageIcon,\n  Loader2,\n  Move,\n  RotateCw,\n  Upload,\n  Wand2,\n  ZoomIn,\n  ZoomOut,\n} from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst AI_PROVIDERS = [\n  { value: \"openai\", label: \"OpenAI DALL-E\" },\n  { value: \"stability\", label: \"Stability AI\" },\n  { value: \"midjourney\", label: \"Midjourney\" },\n  { value: \"google\", label: \"Google Imagen\" },\n  { value: \"anthropic\", label: \"Anthropic\" },\n]\n\nconst IMAGE_SIZES = [\n  { value: \"1024x1024\", label: \"Square (1024x1024)\" },\n  { value: \"1024x1792\", label: \"Portrait (1024x1792)\" },\n  { value: \"1792x1024\", label: \"Landscape (1792x1024)\" },\n]\n\nexport default function AIImageGeneratorBlock() {\n  const [prompt, setPrompt] = React.useState(\"\")\n  const [provider, setProvider] = React.useState(\"openai\")\n  const [apiKey, setApiKey] = React.useState(\"\")\n  const [imageSize, setImageSize] = React.useState(\"1024x1024\")\n  const [isGenerating, setIsGenerating] = React.useState(false)\n  const [uploadedImage, setUploadedImage] = React.useState<string | null>(null)\n  const [generatedImage, setGeneratedImage] = React.useState<string | null>(\n    null\n  )\n  const [brightness, setBrightness] = React.useState([100])\n  const [contrast, setContrast] = React.useState([100])\n  const [saturation, setSaturation] = React.useState([100])\n  const fileInputRef = React.useRef<HTMLInputElement>(null)\n\n  const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const file = event.target.files?.[0]\n    if (file) {\n      const reader = new FileReader()\n      reader.onload = (e) => {\n        setUploadedImage(e.target?.result as string)\n      }\n      reader.readAsDataURL(file)\n    }\n  }\n\n  const handleGenerate = async () => {\n    if (!prompt.trim() || !apiKey) return\n\n    setIsGenerating(true)\n\n    // Simulate image generation\n    await new Promise((resolve) => setTimeout(resolve, 3000))\n\n    // Use a placeholder image service\n    const seed = Math.floor(Math.random() * 1000)\n    const [width, height] = imageSize.split(\"x\")\n    setGeneratedImage(`https://picsum.photos/seed/${seed}/${width}/${height}`)\n\n    setIsGenerating(false)\n  }\n\n  const handleDownload = () => {\n    if (!generatedImage) return\n    const link = document.createElement(\"a\")\n    link.href = generatedImage\n    link.download = \"ai-generated-image.png\"\n    link.click()\n  }\n\n  const resetEditor = () => {\n    setBrightness([100])\n    setContrast([100])\n    setSaturation([100])\n  }\n\n  const imageStyle = {\n    filter: `brightness(${brightness[0]}%) contrast(${contrast[0]}%) saturate(${saturation[0]}%)`,\n  }\n\n  return (\n    <div className=\"container mx-auto py-8\">\n      <Card className=\"mx-auto max-w-6xl\">\n        <CardHeader>\n          <CardTitle className=\"flex items-center gap-2\">\n            <ImageIcon className=\"h-6 w-6\" />\n            AI Image Generator with Editor\n          </CardTitle>\n          <div className=\"mt-4 grid gap-4 sm:grid-cols-3\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"provider\">AI Provider</Label>\n              <Select value={provider} onValueChange={setProvider}>\n                <SelectTrigger id=\"provider\">\n                  <SelectValue placeholder=\"Select provider\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {AI_PROVIDERS.map((p) => (\n                    <SelectItem key={p.value} value={p.value}>\n                      {p.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"apiKey\">API Key</Label>\n              <Input\n                id=\"apiKey\"\n                type=\"password\"\n                placeholder=\"Enter your API key\"\n                value={apiKey}\n                onChange={(e) => setApiKey(e.target.value)}\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"size\">Image Size</Label>\n              <Select value={imageSize} onValueChange={setImageSize}>\n                <SelectTrigger id=\"size\">\n                  <SelectValue placeholder=\"Select size\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {IMAGE_SIZES.map((size) => (\n                    <SelectItem key={size.value} value={size.value}>\n                      {size.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n          </div>\n        </CardHeader>\n        <CardContent>\n          <Tabs defaultValue=\"generate\" className=\"w-full\">\n            <TabsList className=\"grid w-full grid-cols-2\">\n              <TabsTrigger value=\"generate\">Generate</TabsTrigger>\n              <TabsTrigger value=\"edit\">Edit & Upload</TabsTrigger>\n            </TabsList>\n\n            <TabsContent value=\"generate\" className=\"space-y-4\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"prompt\">Image Prompt</Label>\n                <Textarea\n                  id=\"prompt\"\n                  placeholder=\"Describe the image you want to generate... (e.g., 'A serene landscape with mountains at sunset')\"\n                  value={prompt}\n                  onChange={(e) => setPrompt(e.target.value)}\n                  rows={4}\n                  disabled={!apiKey}\n                />\n              </div>\n\n              <Button\n                onClick={handleGenerate}\n                disabled={!prompt.trim() || !apiKey || isGenerating}\n                className=\"w-full\"\n              >\n                {isGenerating ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Generating Image...\n                  </>\n                ) : (\n                  <>\n                    <Wand2 className=\"mr-2 h-4 w-4\" />\n                    Generate Image\n                  </>\n                )}\n              </Button>\n\n              {generatedImage && (\n                <div className=\"space-y-4\">\n                  <div className=\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\">\n                    <img\n                      src={generatedImage}\n                      alt=\"Generated\"\n                      className=\"h-full w-full object-contain\"\n                    />\n                  </div>\n                  <div className=\"flex gap-2\">\n                    <Button onClick={handleDownload} className=\"flex-1\">\n                      <Download className=\"mr-2 h-4 w-4\" />\n                      Download\n                    </Button>\n                    <Button\n                      variant=\"outline\"\n                      onClick={handleGenerate}\n                      disabled={isGenerating}\n                    >\n                      <RotateCw className=\"mr-2 h-4 w-4\" />\n                      Regenerate\n                    </Button>\n                  </div>\n                </div>\n              )}\n\n              {!apiKey && (\n                <p className=\"text-muted-foreground text-center text-sm\">\n                  Please enter your API key to start generating images\n                </p>\n              )}\n            </TabsContent>\n\n            <TabsContent value=\"edit\" className=\"space-y-4\">\n              <div className=\"space-y-4\">\n                <div className=\"space-y-2\">\n                  <Label>Upload Image</Label>\n                  <div className=\"flex gap-2\">\n                    <Input\n                      ref={fileInputRef}\n                      type=\"file\"\n                      accept=\"image/*\"\n                      onChange={handleFileUpload}\n                      className=\"flex-1\"\n                    />\n                    <Button\n                      variant=\"outline\"\n                      onClick={() => fileInputRef.current?.click()}\n                    >\n                      <Upload className=\"mr-2 h-4 w-4\" />\n                      Browse\n                    </Button>\n                  </div>\n                </div>\n\n                {(uploadedImage || generatedImage) && (\n                  <div className=\"space-y-4\">\n                    <div className=\"relative aspect-square w-full overflow-hidden rounded-lg border bg-gray-100\">\n                      <img\n                        src={uploadedImage || generatedImage || \"\"}\n                        alt=\"Editing\"\n                        className=\"h-full w-full object-contain\"\n                        style={imageStyle}\n                      />\n                    </div>\n\n                    <Card>\n                      <CardHeader>\n                        <CardTitle className=\"text-sm\">Image Editor</CardTitle>\n                      </CardHeader>\n                      <CardContent className=\"space-y-6\">\n                        <div className=\"space-y-2\">\n                          <div className=\"flex items-center justify-between\">\n                            <Label>Brightness</Label>\n                            <span className=\"text-muted-foreground text-sm\">\n                              {brightness[0]}%\n                            </span>\n                          </div>\n                          <Slider\n                            value={brightness}\n                            onValueChange={setBrightness}\n                            min={0}\n                            max={200}\n                            step={1}\n                          />\n                        </div>\n\n                        <div className=\"space-y-2\">\n                          <div className=\"flex items-center justify-between\">\n                            <Label>Contrast</Label>\n                            <span className=\"text-muted-foreground text-sm\">\n                              {contrast[0]}%\n                            </span>\n                          </div>\n                          <Slider\n                            value={contrast}\n                            onValueChange={setContrast}\n                            min={0}\n                            max={200}\n                            step={1}\n                          />\n                        </div>\n\n                        <div className=\"space-y-2\">\n                          <div className=\"flex items-center justify-between\">\n                            <Label>Saturation</Label>\n                            <span className=\"text-muted-foreground text-sm\">\n                              {saturation[0]}%\n                            </span>\n                          </div>\n                          <Slider\n                            value={saturation}\n                            onValueChange={setSaturation}\n                            min={0}\n                            max={200}\n                            step={1}\n                          />\n                        </div>\n\n                        <div className=\"flex gap-2\">\n                          <Button\n                            variant=\"outline\"\n                            onClick={resetEditor}\n                            className=\"flex-1\"\n                          >\n                            Reset\n                          </Button>\n                          <Button onClick={handleDownload} className=\"flex-1\">\n                            <Download className=\"mr-2 h-4 w-4\" />\n                            Download\n                          </Button>\n                        </div>\n                      </CardContent>\n                    </Card>\n                  </div>\n                )}\n\n                {!uploadedImage && !generatedImage && (\n                  <div className=\"border-muted-foreground/25 bg-muted/50 flex h-64 flex-col items-center justify-center rounded-lg border-2 border-dashed\">\n                    <ImageIcon className=\"text-muted-foreground mb-4 h-12 w-12\" />\n                    <p className=\"text-muted-foreground text-sm\">\n                      Upload an image or generate one to start editing\n                    </p>\n                  </div>\n                )}\n              </div>\n            </TabsContent>\n          </Tabs>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/ai-video-generator-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n  Clock,\n  Download,\n  FileVideo,\n  Film,\n  Loader2,\n  Pause,\n  Play,\n  Sparkles,\n  Video,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Progress } from \"@/components/ui/progress\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst AI_PROVIDERS = [\n  { value: \"runway\", label: \"Runway Gen-3\" },\n  { value: \"pika\", label: \"Pika Labs\" },\n  { value: \"stability\", label: \"Stability AI Video\" },\n  { value: \"google\", label: \"Google Veo\" },\n  { value: \"openai\", label: \"OpenAI Sora\" },\n]\n\nconst VIDEO_DURATIONS = [\n  { value: \"3\", label: \"3 seconds\" },\n  { value: \"5\", label: \"5 seconds\" },\n  { value: \"10\", label: \"10 seconds\" },\n  { value: \"15\", label: \"15 seconds\" },\n]\n\nconst VIDEO_STYLES = [\n  { value: \"realistic\", label: \"Realistic\" },\n  { value: \"cinematic\", label: \"Cinematic\" },\n  { value: \"animated\", label: \"Animated\" },\n  { value: \"artistic\", label: \"Artistic\" },\n  { value: \"abstract\", label: \"Abstract\" },\n]\n\ninterface GeneratedVideo {\n  id: string\n  prompt: string\n  url: string\n  thumbnail: string\n  duration: string\n  style: string\n  timestamp: Date\n}\n\nexport default function AIVideoGeneratorBlock() {\n  const [prompt, setPrompt] = React.useState(\"\")\n  const [provider, setProvider] = React.useState(\"runway\")\n  const [apiKey, setApiKey] = React.useState(\"\")\n  const [duration, setDuration] = React.useState(\"5\")\n  const [style, setStyle] = React.useState(\"realistic\")\n  const [isGenerating, setIsGenerating] = React.useState(false)\n  const [progress, setProgress] = React.useState(0)\n  const [generatedVideos, setGeneratedVideos] = React.useState<\n    GeneratedVideo[]\n  >([])\n  const [selectedVideo, setSelectedVideo] =\n    React.useState<GeneratedVideo | null>(null)\n  const [isPlaying, setIsPlaying] = React.useState(false)\n  const videoRef = React.useRef<HTMLVideoElement>(null)\n\n  const handleGenerate = async () => {\n    if (!prompt.trim() || !apiKey) return\n\n    setIsGenerating(true)\n    setProgress(0)\n\n    // Simulate video generation progress\n    const interval = setInterval(() => {\n      setProgress((prev) => {\n        if (prev >= 100) {\n          clearInterval(interval)\n          return 100\n        }\n        return prev + 5\n      })\n    }, 300)\n\n    // Simulate video generation\n    await new Promise((resolve) => setTimeout(resolve, 6000))\n\n    const newVideo: GeneratedVideo = {\n      id: Date.now().toString(),\n      prompt: prompt,\n      url: \"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4\",\n      thumbnail: `https://picsum.photos/seed/${Math.floor(Math.random() * 1000)}/640/360`,\n      duration: duration,\n      style: style,\n      timestamp: new Date(),\n    }\n\n    setGeneratedVideos((prev) => [newVideo, ...prev])\n    setSelectedVideo(newVideo)\n    setIsGenerating(false)\n    setProgress(0)\n  }\n\n  const togglePlayPause = () => {\n    if (!videoRef.current) return\n\n    if (isPlaying) {\n      videoRef.current.pause()\n    } else {\n      videoRef.current.play()\n    }\n    setIsPlaying(!isPlaying)\n  }\n\n  const handleDownload = () => {\n    if (!selectedVideo) return\n    const link = document.createElement(\"a\")\n    link.href = selectedVideo.url\n    link.download = `ai-video-${selectedVideo.id}.mp4`\n    link.click()\n  }\n\n  return (\n    <div className=\"container mx-auto py-8\">\n      <Card className=\"mx-auto max-w-7xl\">\n        <CardHeader>\n          <CardTitle className=\"flex items-center gap-2\">\n            <Video className=\"h-6 w-6\" />\n            AI Video Generation Agent\n          </CardTitle>\n          <div className=\"mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"provider\">AI Provider</Label>\n              <Select value={provider} onValueChange={setProvider}>\n                <SelectTrigger id=\"provider\">\n                  <SelectValue placeholder=\"Select provider\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {AI_PROVIDERS.map((p) => (\n                    <SelectItem key={p.value} value={p.value}>\n                      {p.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"apiKey\">API Key</Label>\n              <Input\n                id=\"apiKey\"\n                type=\"password\"\n                placeholder=\"Enter your API key\"\n                value={apiKey}\n                onChange={(e) => setApiKey(e.target.value)}\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"duration\">Duration</Label>\n              <Select value={duration} onValueChange={setDuration}>\n                <SelectTrigger id=\"duration\">\n                  <SelectValue placeholder=\"Select duration\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {VIDEO_DURATIONS.map((d) => (\n                    <SelectItem key={d.value} value={d.value}>\n                      {d.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"style\">Style</Label>\n              <Select value={style} onValueChange={setStyle}>\n                <SelectTrigger id=\"style\">\n                  <SelectValue placeholder=\"Select style\" />\n                </SelectTrigger>\n                <SelectContent>\n                  {VIDEO_STYLES.map((s) => (\n                    <SelectItem key={s.value} value={s.value}>\n                      {s.label}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            </div>\n          </div>\n        </CardHeader>\n        <CardContent>\n          <div className=\"grid gap-6 lg:grid-cols-3\">\n            <div className=\"space-y-4 lg:col-span-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"prompt\">Video Prompt</Label>\n                <Textarea\n                  id=\"prompt\"\n                  placeholder=\"Describe the video you want to generate... (e.g., 'A drone shot flying over a futuristic city at sunset')\"\n                  value={prompt}\n                  onChange={(e) => setPrompt(e.target.value)}\n                  rows={4}\n                  disabled={!apiKey || isGenerating}\n                />\n              </div>\n\n              <Button\n                onClick={handleGenerate}\n                disabled={!prompt.trim() || !apiKey || isGenerating}\n                className=\"w-full\"\n                size=\"lg\"\n              >\n                {isGenerating ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-5 w-5 animate-spin\" />\n                    Generating Video...\n                  </>\n                ) : (\n                  <>\n                    <Sparkles className=\"mr-2 h-5 w-5\" />\n                    Generate Video\n                  </>\n                )}\n              </Button>\n\n              {isGenerating && (\n                <Card className=\"bg-muted/50\">\n                  <CardContent className=\"pt-6\">\n                    <div className=\"space-y-2\">\n                      <div className=\"flex items-center justify-between text-sm\">\n                        <span className=\"text-muted-foreground\">\n                          Processing video generation...\n                        </span>\n                        <span className=\"font-medium\">{progress}%</span>\n                      </div>\n                      <Progress value={progress} className=\"h-2\" />\n                    </div>\n                  </CardContent>\n                </Card>\n              )}\n\n              {selectedVideo && (\n                <Card>\n                  <CardHeader>\n                    <div className=\"flex items-start justify-between\">\n                      <div className=\"space-y-1\">\n                        <CardTitle className=\"text-lg\">Preview</CardTitle>\n                        <p className=\"text-muted-foreground text-sm\">\n                          {selectedVideo.prompt}\n                        </p>\n                      </div>\n                      <div className=\"flex gap-2\">\n                        <Badge variant=\"secondary\">\n                          <Clock className=\"mr-1 h-3 w-3\" />\n                          {selectedVideo.duration}s\n                        </Badge>\n                        <Badge variant=\"secondary\" className=\"capitalize\">\n                          {selectedVideo.style}\n                        </Badge>\n                      </div>\n                    </div>\n                  </CardHeader>\n                  <CardContent className=\"space-y-4\">\n                    <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n                      <video\n                        ref={videoRef}\n                        src={selectedVideo.url}\n                        className=\"h-full w-full\"\n                        onPlay={() => setIsPlaying(true)}\n                        onPause={() => setIsPlaying(false)}\n                      />\n                      <div className=\"absolute inset-0 flex items-center justify-center\">\n                        <Button\n                          size=\"lg\"\n                          variant=\"secondary\"\n                          onClick={togglePlayPause}\n                          className=\"h-16 w-16 rounded-full\"\n                        >\n                          {isPlaying ? (\n                            <Pause className=\"h-6 w-6\" />\n                          ) : (\n                            <Play className=\"h-6 w-6\" />\n                          )}\n                        </Button>\n                      </div>\n                    </div>\n                    <div className=\"flex gap-2\">\n                      <Button onClick={handleDownload} className=\"flex-1\">\n                        <Download className=\"mr-2 h-4 w-4\" />\n                        Download Video\n                      </Button>\n                      <Button\n                        variant=\"outline\"\n                        onClick={handleGenerate}\n                        disabled={isGenerating}\n                        className=\"flex-1\"\n                      >\n                        <Sparkles className=\"mr-2 h-4 w-4\" />\n                        Generate New\n                      </Button>\n                    </div>\n                  </CardContent>\n                </Card>\n              )}\n\n              {!apiKey && (\n                <Card className=\"bg-muted/50\">\n                  <CardContent className=\"flex flex-col items-center justify-center py-12\">\n                    <FileVideo className=\"text-muted-foreground mb-4 h-12 w-12\" />\n                    <p className=\"text-muted-foreground text-center text-sm\">\n                      Please enter your API key to start generating videos\n                    </p>\n                  </CardContent>\n                </Card>\n              )}\n            </div>\n\n            <div className=\"space-y-4\">\n              <Card>\n                <CardHeader>\n                  <CardTitle className=\"text-base\">Generated Videos</CardTitle>\n                </CardHeader>\n                <CardContent className=\"space-y-3\">\n                  {generatedVideos.length === 0 ? (\n                    <div className=\"text-muted-foreground py-8 text-center text-sm\">\n                      No videos generated yet\n                    </div>\n                  ) : (\n                    generatedVideos.map((video) => (\n                      <Card\n                        key={video.id}\n                        className={`cursor-pointer transition-colors ${\n                          selectedVideo?.id === video.id\n                            ? \"border-primary\"\n                            : \"hover:border-primary/50\"\n                        }`}\n                        onClick={() => setSelectedVideo(video)}\n                      >\n                        <CardContent className=\"p-3\">\n                          <div className=\"relative mb-2 aspect-video overflow-hidden rounded\">\n                            <img\n                              src={video.thumbnail}\n                              alt={video.prompt}\n                              className=\"h-full w-full object-cover\"\n                            />\n                            <div className=\"absolute inset-0 flex items-center justify-center bg-black/30\">\n                              <Play className=\"h-8 w-8 text-white\" />\n                            </div>\n                          </div>\n                          <p className=\"line-clamp-2 text-xs\">{video.prompt}</p>\n                          <div className=\"mt-2 flex items-center gap-2\">\n                            <Badge variant=\"secondary\" className=\"text-xs\">\n                              <Clock className=\"mr-1 h-3 w-3\" />\n                              {video.duration}s\n                            </Badge>\n                          </div>\n                        </CardContent>\n                      </Card>\n                    ))\n                  )}\n                </CardContent>\n              </Card>\n\n              <Card className=\"bg-muted/50\">\n                <CardHeader>\n                  <CardTitle className=\"text-sm\">Tips</CardTitle>\n                </CardHeader>\n                <CardContent className=\"text-muted-foreground space-y-2 text-xs\">\n                  <p>• Be specific and descriptive in your prompts</p>\n                  <p>• Describe camera movements and angles</p>\n                  <p>• Mention lighting and atmosphere</p>\n                  <p>• Specify the mood and style you want</p>\n                  <p>• Keep prompts under 500 characters</p>\n                </CardContent>\n              </Card>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/billing-information-01/page.tsx",
    "content": "\"use client\"\n\nimport { Building2, Pencil, Plus, Trash2 } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardAction,\n  CardContent,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\ninterface BillingCardProps {\n  company: string\n  contact: string\n  email: string\n  vat: string\n}\n\nfunction BillingCard({ company, contact, email, vat }: BillingCardProps) {\n  return (\n    <Card className=\"border\">\n      <CardHeader>\n        <div className=\"flex items-center gap-3\">\n          <div className=\"bg-background grid h-12 w-12 shrink-0 place-items-center rounded border\">\n            <Building2 className=\"h-6 w-6\" />\n          </div>\n          <div className=\"space-y-1\">\n            <CardTitle className=\"text-sm\">{company}</CardTitle>\n            <p className=\"text-muted-foreground text-sm\">Company</p>\n          </div>\n        </div>\n        <CardAction>\n          <div className=\"flex items-center gap-2\">\n            <Button size=\"sm\" variant=\"ghost\">\n              <Pencil className=\"mr-2 h-4 w-4\" />\n              Edit\n            </Button>\n            <Button\n              size=\"sm\"\n              variant=\"ghost\"\n              className=\"text-destructive hover:text-destructive\"\n            >\n              <Trash2 className=\"mr-2 h-4 w-4\" />\n              Delete\n            </Button>\n          </div>\n        </CardAction>\n      </CardHeader>\n      <CardContent className=\"space-y-2\">\n        <div className=\"text-sm\">\n          <span className=\"text-muted-foreground font-semibold\">Contact: </span>\n          <span className=\"font-medium\">{contact}</span>\n        </div>\n        <div className=\"text-sm\">\n          <span className=\"text-muted-foreground font-semibold\">\n            Email Address:{\" \"}\n          </span>\n          <span className=\"font-medium\">{email}</span>\n        </div>\n        <div className=\"text-sm\">\n          <span className=\"text-muted-foreground font-semibold\">\n            VAT Number:{\" \"}\n          </span>\n          <span className=\"font-medium\">{vat}</span>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n\nexport default function BillingInformation01() {\n  return (\n    <div className=\"mx-auto max-w-3xl p-6\">\n      <div className=\"flex flex-col items-start justify-between gap-4 sm:flex-row\">\n        <div>\n          <h2 className=\"font-semibold\">Billing Information</h2>\n          <p className=\"text-muted-foreground text-sm\">\n            View and update your billing details quickly and easily.\n          </p>\n        </div>\n        <Button variant=\"outline\" className=\"w-full sm:w-auto\">\n          <Plus className=\"mr-2 h-4 w-4\" /> Add New Billing\n        </Button>\n      </div>\n      <div className=\"mt-6 space-y-4\">\n        <BillingCard\n          company=\"Burrito Vikings\"\n          contact=\"Emma Roberts\"\n          email=\"emma@mail.com\"\n          vat=\"FRB1235476\"\n        />\n        <BillingCard\n          company=\"Stone Tech Zone\"\n          contact=\"Marcel Glock\"\n          email=\"marcel@mail.com\"\n          vat=\"FRB1235476\"\n        />\n        <BillingCard\n          company=\"Fiber Notion\"\n          contact=\"Misha Stam\"\n          email=\"misha@mail.com\"\n          vat=\"FRB1235476\"\n        />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/blog-cards-layout-01/page.tsx",
    "content": "\"use client\"\n\nimport { ArrowDown } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nconst POSTS = [\n  {\n    img: \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\",\n    tag: \"Enterprise\",\n    title:\n      \"Autodesk and Figma looks to future of 3D printing with Project Escher\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"10 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\",\n      name: \"Ryan Samuel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\",\n    tag: \"Startups\",\n    title: \"Bolt launching cross-platform service this week\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"12 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\",\n      name: \"Nora Hazel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\",\n    tag: \"Trending\",\n    title: \"6 insights into the French Fashion landscape view\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"16 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Otto Gonzalez\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\",\n    tag: \"Enterprise\",\n    title: \"Autodesk looks to future of 3D printing with Project Escher\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"18 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Ryan Samuel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497215728101-856f4ea42174?w=800&auto=format&fit=crop\",\n    tag: \"Lifestyle\",\n    title: \"Lyft launching cross-platform service this week\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"18 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&auto=format&fit=crop\",\n      name: \"Nora Hazel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366412874-3415097a27e7?w=800&auto=format&fit=crop\",\n    tag: \"Startups\",\n    title: \"6 insights into the French Fashion landscape\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"22 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&auto=format&fit=crop\",\n      name: \"Otto Gonzalez\",\n    },\n  },\n]\n\nexport default function BlogCardsLayout01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto mb-12 text-center\">\n        <p className=\"text-primary mb-2 text-sm font-semibold\">\n          Latest Blog Posts\n        </p>\n        <h2 className=\"my-4 text-3xl font-bold\">Blog Posts</h2>\n        <p className=\"text-muted-foreground mx-auto max-w-3xl text-lg\">\n          This is the paragraph where you can write more details about blogs.\n          Keep you user engaged by providing meaningful information.\n        </p>\n      </div>\n      <div className=\"container mx-auto grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\">\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\n          <Card key={title} className=\"overflow-hidden py-0\">\n            <CardHeader className=\"p-3 pb-0\">\n              <img\n                src={img}\n                alt={title}\n                className=\"h-56 w-full rounded-lg object-cover object-center\"\n              />\n            </CardHeader>\n            <CardContent className=\"px-6\">\n              <Badge variant=\"secondary\" className=\"mb-2\">\n                {tag}\n              </Badge>\n              <CardTitle className=\"mb-2 text-xl\">{title}</CardTitle>\n              <CardDescription>{desc}</CardDescription>\n            </CardContent>\n            <CardFooter className=\"flex items-center gap-3 p-6 pt-0\">\n              <Avatar className=\"h-8 w-8\">\n                <AvatarImage src={author.img} alt={author.name} />\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\n              </Avatar>\n              <div className=\"flex flex-col\">\n                <p className=\"text-sm font-semibold\">{author.name}</p>\n                <p className=\"text-muted-foreground text-xs\">{date}</p>\n              </div>\n            </CardFooter>\n          </Card>\n        ))}\n      </div>\n      <div className=\"mt-12 text-center\">\n        <Button variant=\"ghost\">\n          <ArrowDown className=\"mr-2 h-4 w-4\" />\n          View More\n        </Button>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/blog-post-preview-tags-01/page.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\n\nconst POSTS = [\n  {\n    img: \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\",\n    category: \"Otto Gonzalez\",\n    title: \"Autodesk looks to future of 3D printing with Project\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    tags: [\"Product\", \"Design\", \"UX\"],\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\",\n    category: \"Ryan Samuel\",\n    title: \"Lyft launching cross-platform service this week\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    tags: [\"Product\", \"Design\", \"UX\"],\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\",\n    category: \"Nora Hazel\",\n    title: \"6 insights into the French Fashion landscape\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    tags: [\"Product\", \"Design\", \"UX\"],\n  },\n]\n\nexport default function BlogPostPreviewTags01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto mb-16 text-center\">\n        <p className=\"text-primary mb-2 text-sm font-semibold\">\n          Latest Blog Posts\n        </p>\n        <h2 className=\"my-4 text-3xl font-bold\">Explore Our Places</h2>\n        <p className=\"text-muted-foreground mx-auto max-w-3xl text-lg\">\n          This is the paragraph where you can write more details about blogs.\n          Keep you user engaged by providing meaningful information.\n        </p>\n      </div>\n      <div className=\"container mx-auto grid grid-cols-1 items-start gap-16 md:grid-cols-2 lg:grid-cols-3\">\n        {POSTS.map(({ img, category, title, desc, tags }) => (\n          <div key={title} className=\"space-y-6\">\n            <div className=\"relative h-56 w-full overflow-hidden rounded-lg shadow-lg\">\n              <img\n                src={img}\n                alt={title}\n                className=\"h-full w-full object-cover object-center\"\n              />\n            </div>\n            <div className=\"space-y-4\">\n              <p className=\"text-primary text-sm font-semibold\">{category}</p>\n              <h3 className=\"text-2xl font-bold\">{title}</h3>\n              <p className=\"text-muted-foreground\">{desc}</p>\n            </div>\n            <div className=\"flex flex-wrap items-center gap-2\">\n              {tags.map((tag) => (\n                <Badge key={tag} variant=\"secondary\">\n                  {tag}\n                </Badge>\n              ))}\n            </div>\n          </div>\n        ))}\n      </div>\n      <div className=\"mt-24 text-center\">\n        <Button>View More</Button>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/blog-rectangular-images-01/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\n\nconst POSTS = [\n  {\n    img: \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\",\n    tag: \"Enterprise\",\n    title: \"Autodesk looks to future of 3D printing with Project\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"10 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\",\n      name: \"Ryan Samuel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\",\n    tag: \"Startups\",\n    title: \"Lyft launching cross-platform service this week\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"12 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&auto=format&fit=crop\",\n      name: \"Nora Hazel\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\",\n    tag: \"Trending\",\n    title: \"6 insights into the French Fashion landscape\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"16 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Otto Gonzalez\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&auto=format&fit=crop\",\n    tag: \"Lifestyle\",\n    title: \"Autodesk looks to future of 3D printing with Project\",\n    desc: \"Don't be scared of the truth because we need to restart the human foundation in truth And I love you like Kanye loves Kanye I love Rick Owens bed design but the back is too high for the beams and angle of the ceiling.\",\n    date: \"18 September 2022\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Ryan Samuel\",\n    },\n  },\n]\n\nexport default function BlogRectangularImages01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container my-auto grid grid-cols-1 gap-8 lg:grid-cols-2\">\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\n          <div key={title} className=\"grid items-center gap-4 sm:grid-cols-2\">\n            <div className=\"h-full max-h-72 overflow-hidden rounded-lg lg:max-h-full\">\n              <img\n                src={img}\n                alt={title}\n                className=\"h-full w-full object-cover object-center\"\n              />\n            </div>\n            <div className=\"space-y-4 p-2\">\n              <Badge variant=\"secondary\">{tag}</Badge>\n              <h3 className=\"text-xl font-semibold\">{title}</h3>\n              <p className=\"text-muted-foreground text-sm\">{desc}</p>\n              <div className=\"mt-6 flex items-center gap-3 md:mt-8\">\n                <Avatar>\n                  <AvatarImage src={author.img} alt={author.name} />\n                  <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\n                </Avatar>\n                <div className=\"flex flex-col\">\n                  <p className=\"mb-1 text-sm font-semibold\">{author.name}</p>\n                  <p className=\"text-muted-foreground text-xs\">{date}</p>\n                </div>\n              </div>\n            </div>\n          </div>\n        ))}\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/card-display-01/page.tsx",
    "content": "\"use client\"\n\nimport { Wifi } from \"lucide-react\"\n\nimport { Card } from \"@/components/ui/card\"\n\ninterface CreditCardProps {\n  variant?: \"dark\" | \"light\"\n  number: string\n  holder: string\n  expires: string\n}\n\nfunction CreditCard({\n  variant = \"light\",\n  number,\n  holder,\n  expires,\n}: CreditCardProps) {\n  const isDark = variant === \"dark\"\n\n  return (\n    <Card\n      className={`group relative overflow-hidden transition-all duration-300 hover:scale-[1.02] hover:shadow-2xl ${\n        isDark\n          ? \"bg-black text-white\"\n          : \"border-border/50 bg-white text-black shadow-lg\"\n      }`}\n    >\n      <div className=\"absolute inset-0 bg-gradient-to-tr from-transparent via-white/5 to-white/10 opacity-0 transition-opacity duration-300 group-hover:opacity-100\" />\n\n      <div className=\"relative m-0 flex w-full items-center justify-between p-6\">\n        <div\n          className={`rounded-lg p-2 ${isDark ? \"bg-white/10\" : \"bg-gray-100\"}`}\n        >\n          <Wifi className=\"h-6 w-6\" />\n        </div>\n        <div\n          className={`h-10 w-14 rounded ${isDark ? \"bg-gradient-to-br from-yellow-400 to-yellow-600\" : \"bg-gradient-to-br from-yellow-300 to-yellow-500\"}`}\n        >\n          <div className=\"h-full w-full rounded bg-gradient-to-tr from-transparent via-white/20 to-white/40\" />\n        </div>\n      </div>\n\n      <div className=\"relative px-6 py-4\">\n        <p className=\"text-lg font-bold tracking-[0.2em]\">\n          {String(number)\n            .match(/.{1,4}/g)\n            ?.join(\"  \")}\n        </p>\n      </div>\n\n      <div className=\"relative flex items-end justify-between gap-6 p-6 pt-2\">\n        <div className=\"flex gap-6\">\n          <div className=\"space-y-1\">\n            <p\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \"text-gray-400\" : \"text-gray-500\"}`}\n            >\n              Card Holder\n            </p>\n            <p className=\"text-sm font-bold\">{holder}</p>\n          </div>\n          <div className=\"space-y-1\">\n            <p\n              className={`text-xs font-semibold tracking-wider uppercase ${isDark ? \"text-gray-400\" : \"text-gray-500\"}`}\n            >\n              Expires\n            </p>\n            <p className=\"text-sm font-bold\">{expires}</p>\n          </div>\n        </div>\n        <div className=\"flex items-center\">\n          <img\n            src=\"https://v3.material-tailwind.com/mastercard.webp\"\n            alt=\"mastercard logo\"\n            className=\"h-10 w-auto transition-transform group-hover:scale-110\"\n          />\n        </div>\n      </div>\n    </Card>\n  )\n}\n\nexport default function CardDisplay01() {\n  return (\n    <div className=\"mx-auto grid max-w-5xl grid-cols-1 gap-8 p-6 md:grid-cols-2\">\n      <CreditCard\n        variant=\"dark\"\n        expires=\"10/25\"\n        holder=\"Jack Peterson\"\n        number=\"4562112245947852\"\n      />\n      <CreditCard\n        variant=\"light\"\n        expires=\"10/26\"\n        holder=\"Jack Peterson\"\n        number=\"4562112245948844\"\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/checkout-01/page.tsx",
    "content": "\"use client\"\n\nimport {\n  CreditCard,\n  Lock,\n  Mail,\n  MapPin,\n  Package,\n  ShoppingBag,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst OPTIONS = [\n  {\n    image: \"https://v3.material-tailwind.com/coat-1.png\",\n    title: \"Classic Suit\",\n    description: \"Silk\",\n    size: \"M\",\n    price: \"$1,300\",\n    quantity: 1,\n  },\n  {\n    image: \"https://v3.material-tailwind.com/coat-2.png\",\n    title: \"Premium Suit\",\n    description: \"Linen\",\n    size: \"M\",\n    price: \"$790\",\n    quantity: 1,\n  },\n]\n\nconst PRICE_OPTIONS = [\n  { value: \"Subtotal\", price: \"$2,090\" },\n  { value: \"Shipping estimate\", price: \"$0\" },\n  { value: \"Tax estimate\", price: \"$5\" },\n]\n\nexport default function Checkout01() {\n  return (\n    <section className=\"container mx-auto px-4 py-12\">\n      <div className=\"mx-auto max-w-7xl\">\n        <div className=\"mb-8\">\n          <h1 className=\"text-3xl font-bold\">Checkout</h1>\n          <p className=\"text-muted-foreground mt-2\">\n            Complete your order by providing your payment details\n          </p>\n        </div>\n\n        <div className=\"rounded-2xl border bg-white p-6 shadow-lg md:p-8 lg:p-12 dark:bg-gray-950\">\n          <div className=\"grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\">\n            <div className=\"space-y-8\">\n              <div className=\"space-y-6\">\n                <div className=\"flex items-center gap-3\">\n                  <div className=\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\">\n                    <Mail className=\"text-primary h-5 w-5\" />\n                  </div>\n                  <div>\n                    <h3 className=\"text-lg font-semibold\">Contact</h3>\n                    <p className=\"text-muted-foreground text-sm\">\n                      We'll send order updates here\n                    </p>\n                  </div>\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"email\">Email Address</Label>\n                  <Input\n                    id=\"email\"\n                    type=\"email\"\n                    placeholder=\"you@example.com\"\n                    className=\"h-11\"\n                  />\n                </div>\n                <div className=\"flex items-start gap-2\">\n                  <Checkbox id=\"terms\" className=\"mt-1\" />\n                  <Label\n                    htmlFor=\"terms\"\n                    className=\"text-muted-foreground text-sm leading-relaxed\"\n                  >\n                    I agree to the{\" \"}\n                    <a href=\"#\" className=\"text-primary hover:underline\">\n                      Terms & Conditions\n                    </a>{\" \"}\n                    and{\" \"}\n                    <a href=\"#\" className=\"text-primary hover:underline\">\n                      Privacy Policy\n                    </a>\n                  </Label>\n                </div>\n              </div>\n\n              <Separator />\n\n              <div className=\"space-y-6\">\n                <div className=\"flex items-center gap-3\">\n                  <div className=\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\">\n                    <MapPin className=\"text-primary h-5 w-5\" />\n                  </div>\n                  <div>\n                    <h3 className=\"text-lg font-semibold\">Shipping Address</h3>\n                    <p className=\"text-muted-foreground text-sm\">\n                      Where should we deliver your order?\n                    </p>\n                  </div>\n                </div>\n                <div className=\"space-y-4\">\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"address\">Street Address</Label>\n                    <Input\n                      id=\"address\"\n                      placeholder=\"123 Main Street\"\n                      className=\"h-11\"\n                    />\n                  </div>\n                  <div className=\"grid gap-4 sm:grid-cols-3\">\n                    <div className=\"space-y-2\">\n                      <Label htmlFor=\"city\">City</Label>\n                      <Input\n                        id=\"city\"\n                        placeholder=\"New York\"\n                        className=\"h-11\"\n                      />\n                    </div>\n                    <div className=\"space-y-2\">\n                      <Label htmlFor=\"postal\">Postal Code</Label>\n                      <Input id=\"postal\" placeholder=\"10001\" className=\"h-11\" />\n                    </div>\n                    <div className=\"space-y-2\">\n                      <Label htmlFor=\"country\">Country</Label>\n                      <Input id=\"country\" placeholder=\"USA\" className=\"h-11\" />\n                    </div>\n                  </div>\n                </div>\n              </div>\n\n              <Separator />\n\n              <div className=\"space-y-6\">\n                <div className=\"flex items-center gap-3\">\n                  <div className=\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\">\n                    <CreditCard className=\"text-primary h-5 w-5\" />\n                  </div>\n                  <div className=\"flex-1\">\n                    <h3 className=\"text-lg font-semibold\">Payment Details</h3>\n                    <p className=\"text-muted-foreground text-sm\">\n                      Your payment information is secure\n                    </p>\n                  </div>\n                  <Badge\n                    variant=\"outline\"\n                    className=\"gap-1 border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\"\n                  >\n                    <Lock className=\"h-3 w-3\" />\n                    Secure\n                  </Badge>\n                </div>\n                <div className=\"space-y-4\">\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"card\">Card Number</Label>\n                    <Input\n                      id=\"card\"\n                      placeholder=\"1234 5678 9012 3456\"\n                      className=\"h-11\"\n                    />\n                  </div>\n                  <div className=\"grid gap-4 sm:grid-cols-2\">\n                    <div className=\"space-y-2\">\n                      <Label htmlFor=\"expiry\">Expiration Date</Label>\n                      <Input id=\"expiry\" placeholder=\"MM/YY\" className=\"h-11\" />\n                    </div>\n                    <div className=\"space-y-2\">\n                      <Label htmlFor=\"cvv\">CVV</Label>\n                      <Input id=\"cvv\" placeholder=\"123\" className=\"h-11\" />\n                    </div>\n                  </div>\n                </div>\n              </div>\n\n              <Button className=\"mt-4 h-12 w-full text-base\" size=\"lg\">\n                <Lock className=\"mr-2 h-4 w-4\" />\n                Place Order - $2,095\n              </Button>\n            </div>\n\n            <div className=\"lg:sticky lg:top-8 lg:h-fit\">\n              <div className=\"bg-muted/30 rounded-xl border p-6\">\n                <div className=\"mb-6 flex items-center gap-3\">\n                  <div className=\"bg-primary/10 flex h-10 w-10 items-center justify-center rounded-full\">\n                    <ShoppingBag className=\"text-primary h-5 w-5\" />\n                  </div>\n                  <h2 className=\"text-xl font-bold\">Order Summary</h2>\n                </div>\n\n                <div className=\"space-y-4\">\n                  {OPTIONS.map(\n                    (\n                      { image, title, description, size, price, quantity },\n                      index\n                    ) => (\n                      <div\n                        key={index}\n                        className=\"bg-background hover:bg-muted/50 flex items-start gap-4 rounded-lg border p-3 transition-colors\"\n                      >\n                        <div className=\"relative h-20 w-20 overflow-hidden rounded-md border\">\n                          <img\n                            src={image}\n                            alt={title}\n                            className=\"h-full w-full object-cover p-1\"\n                          />\n                        </div>\n                        <div className=\"flex-1 space-y-1\">\n                          <p className=\"leading-tight font-semibold\">{title}</p>\n                          <p className=\"text-muted-foreground text-sm\">\n                            {description} · Size {size}\n                          </p>\n                          <p className=\"text-muted-foreground text-xs\">\n                            Qty: {quantity}\n                          </p>\n                        </div>\n                        <p className=\"font-semibold\">{price}</p>\n                      </div>\n                    )\n                  )}\n                </div>\n\n                <Separator className=\"my-6\" />\n\n                <div className=\"space-y-3\">\n                  {PRICE_OPTIONS.map(({ value, price }) => (\n                    <div key={value} className=\"flex justify-between text-sm\">\n                      <span className=\"text-muted-foreground\">{value}</span>\n                      <span className=\"font-medium\">{price}</span>\n                    </div>\n                  ))}\n                </div>\n\n                <Separator className=\"my-4\" />\n\n                <div className=\"flex items-center justify-between\">\n                  <span className=\"text-lg font-bold\">Total</span>\n                  <span className=\"text-2xl font-bold\">$2,095</span>\n                </div>\n\n                <div className=\"bg-muted/50 mt-6 flex items-start gap-2 rounded-lg p-4\">\n                  <Package className=\"text-primary mt-0.5 h-5 w-5 shrink-0\" />\n                  <div className=\"space-y-1\">\n                    <p className=\"text-sm font-medium\">Free Shipping</p>\n                    <p className=\"text-muted-foreground text-xs\">\n                      Your order qualifies for free standard shipping\n                    </p>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/complex-product-description-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Heart, Package, RefreshCw, Shield, Star, Truck } from \"lucide-react\"\n\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\n\nconst IMAGES = [\n  \"https://v3.material-tailwind.com/coat-1.png\",\n  \"https://v3.material-tailwind.com/coat-2.png\",\n  \"https://v3.material-tailwind.com/coat-3.png\",\n  \"https://v3.material-tailwind.com/coat-4.png\",\n]\n\nconst SIZES = [\"XS\", \"S\", \"M\", \"L\", \"XL\"]\n\nconst COLORS = [\n  { name: \"Black\", hex: \"#1a1a1a\" },\n  { name: \"White\", hex: \"#ffffff\" },\n  { name: \"Gray\", hex: \"#e5e7eb\" },\n]\n\nconst FEATURES = [\n  { icon: Package, text: \"Premium quality materials\" },\n  { icon: Truck, text: \"Free shipping on orders $100+\" },\n  { icon: RefreshCw, text: \"30-day return policy\" },\n  { icon: Shield, text: \"2-year warranty included\" },\n]\n\nconst ACCORDION_DATA = [\n  {\n    value: \"one\",\n    title: \"Features\",\n    desc: \"This premium coat is crafted from weather-resistant fabric with advanced Gore-Tex technology, ensuring you stay dry and comfortable in all conditions. Features include adjustable cuffs, reinforced seams, and breathable lining.\",\n  },\n  {\n    value: \"two\",\n    title: \"Product Care\",\n    desc: \"Machine wash cold with like colors. Use mild detergent and avoid bleach. Tumble dry on low heat or hang to dry. For best results, store in a cool, dry place and avoid direct sunlight to maintain color and fabric integrity.\",\n  },\n  {\n    value: \"three\",\n    title: \"Shipping & Returns\",\n    desc: \"Free standard shipping on orders over $100. Express shipping available at checkout. We offer a 30-day return policy with free returns. Items must be unworn, unwashed, and in original packaging with tags attached.\",\n  },\n  {\n    value: \"four\",\n    title: \"Warranty\",\n    desc: \"All our products come with a comprehensive 2-year warranty covering manufacturing defects. This includes issues with stitching, zippers, and fabric quality. Contact our customer service for warranty claims and support.\",\n  },\n]\n\nexport default function ComplexProductDescription01() {\n  const [selectedImage, setSelectedImage] = useState(0)\n  const [selectedColor, setSelectedColor] = useState(0)\n  const [selectedSize, setSelectedSize] = useState(\"M\")\n  const [isFavorite, setIsFavorite] = useState(false)\n\n  return (\n    <section className=\"min-h-screen bg-neutral-50 py-12\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\">\n          <div className=\"flex flex-col-reverse lg:flex-row lg:gap-4\">\n            <div className=\"mt-4 flex gap-2 lg:mt-0 lg:flex-col\">\n              {IMAGES.map((img, index) => (\n                <button\n                  key={index}\n                  onClick={() => setSelectedImage(index)}\n                  className={`h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg border-2 transition-all ${\n                    selectedImage === index\n                      ? \"border-neutral-900\"\n                      : \"border-neutral-200 hover:border-neutral-400\"\n                  }`}\n                >\n                  <img\n                    src={img}\n                    alt={`Product view ${index + 1}`}\n                    className=\"h-full w-full object-cover\"\n                  />\n                </button>\n              ))}\n            </div>\n\n            <div className=\"flex-1\">\n              <div className=\"aspect-square overflow-hidden rounded-2xl bg-white\">\n                <img\n                  src={IMAGES[selectedImage]}\n                  alt=\"Product main view\"\n                  className=\"h-full w-full object-cover object-center\"\n                />\n              </div>\n            </div>\n          </div>\n\n          <div className=\"flex flex-col\">\n            <Badge\n              variant=\"outline\"\n              className=\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\"\n            >\n              New Arrival\n            </Badge>\n\n            <h1 className=\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\">\n              Premium Winter Coat\n            </h1>\n\n            <div className=\"mb-6 flex items-center gap-4\">\n              <span className=\"text-2xl font-normal text-neutral-900\">\n                $1,490.00\n              </span>\n              <div className=\"flex items-center gap-1\">\n                <div className=\"flex\">\n                  {[...Array(5)].map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < 4\n                          ? \"fill-neutral-900 text-neutral-900\"\n                          : \"fill-neutral-300 text-neutral-300\"\n                      }`}\n                    />\n                  ))}\n                </div>\n                <span className=\"text-sm text-neutral-500\">(100 reviews)</span>\n              </div>\n            </div>\n\n            <p className=\"mb-6 text-sm leading-relaxed text-neutral-600\">\n              Experience unparalleled comfort and style with our premium winter\n              coat. Meticulously crafted with attention to detail, this coat\n              features weather-resistant fabric and a timeless design that\n              complements any wardrobe. Perfect for both casual and formal\n              occasions.\n            </p>\n\n            <div className=\"mb-6\">\n              <p className=\"mb-3 text-sm font-medium text-neutral-900\">\n                Color:{\" \"}\n                <span className=\"font-normal\">\n                  {COLORS[selectedColor].name}\n                </span>\n              </p>\n              <div className=\"flex gap-2\">\n                {COLORS.map((color, index) => (\n                  <button\n                    key={index}\n                    onClick={() => setSelectedColor(index)}\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\n                      selectedColor === index\n                        ? \"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\"\n                        : \"border-neutral-200 hover:border-neutral-400\"\n                    }`}\n                    style={{ backgroundColor: color.hex }}\n                    title={color.name}\n                  />\n                ))}\n              </div>\n            </div>\n\n            <div className=\"mb-6\">\n              <p className=\"mb-3 text-sm font-medium text-neutral-900\">\n                Size: <span className=\"font-normal\">{selectedSize}</span>\n              </p>\n              <div className=\"flex gap-2\">\n                {SIZES.map((size) => (\n                  <button\n                    key={size}\n                    onClick={() => setSelectedSize(size)}\n                    className={`flex h-10 w-12 items-center justify-center rounded-md border-2 text-sm font-medium transition-all ${\n                      selectedSize === size\n                        ? \"border-neutral-900 bg-neutral-900 text-white\"\n                        : \"border-neutral-200 bg-white text-neutral-900 hover:border-neutral-400\"\n                    }`}\n                  >\n                    {size}\n                  </button>\n                ))}\n              </div>\n            </div>\n\n            <div className=\"mb-6 flex flex-col gap-3 sm:flex-row\">\n              <Button\n                size=\"lg\"\n                className=\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\"\n              >\n                Add to Cart\n              </Button>\n              <Button\n                size=\"lg\"\n                variant=\"outline\"\n                className={`border-neutral-900 transition-colors ${\n                  isFavorite\n                    ? \"bg-neutral-900 text-white hover:bg-neutral-800\"\n                    : \"text-neutral-900 hover:bg-neutral-900 hover:text-white\"\n                }`}\n                onClick={() => setIsFavorite(!isFavorite)}\n              >\n                <Heart\n                  className={`h-5 w-5 ${isFavorite ? \"fill-current\" : \"\"}`}\n                />\n              </Button>\n            </div>\n\n            <div className=\"mb-6 grid grid-cols-1 gap-3 sm:grid-cols-2\">\n              {FEATURES.map((feature, index) => (\n                <div\n                  key={index}\n                  className=\"flex items-center gap-2 text-sm text-neutral-600\"\n                >\n                  <feature.icon className=\"h-4 w-4 flex-shrink-0\" />\n                  <span>{feature.text}</span>\n                </div>\n              ))}\n            </div>\n\n            <Accordion\n              type=\"single\"\n              defaultValue=\"one\"\n              collapsible\n              className=\"w-full border-t border-neutral-200\"\n            >\n              {ACCORDION_DATA.map(({ value, title, desc }) => (\n                <AccordionItem key={value} value={value}>\n                  <AccordionTrigger className=\"text-sm font-medium text-neutral-900 hover:text-neutral-600\">\n                    {title}\n                  </AccordionTrigger>\n                  <AccordionContent className=\"text-sm leading-relaxed text-neutral-600\">\n                    {desc}\n                  </AccordionContent>\n                </AccordionItem>\n              ))}\n            </Accordion>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-01/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, Phone, Ticket } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst OPTIONS = [\n  {\n    icon: Phone,\n    info: \"+1(424) 535 3523\",\n  },\n  {\n    icon: Mail,\n    info: \"hello@mail.com\",\n  },\n  {\n    icon: Ticket,\n    info: \"Open Support Ticket\",\n  },\n]\n\nexport default function ContactSections01() {\n  return (\n    <section className=\"grid min-h-screen place-items-center py-16\">\n      <div className=\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\">\n        <Card className=\"mx-auto p-6 lg:max-w-lg lg:p-12\">\n          <h3 className=\"mb-6 text-2xl font-semibold\">Contact us</h3>\n          <form action=\"#\" className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n              />\n            </div>\n            <div className=\"flex items-center gap-2\">\n              <Checkbox id=\"privacy-policy\" />\n              <Label\n                htmlFor=\"privacy-policy\"\n                className=\"cursor-pointer text-sm font-normal\"\n              >\n                You agree to your friendly{\" \"}\n                <a href=\"#\" className=\"text-primary hover:underline\">\n                  Privacy Policy\n                </a>\n              </Label>\n            </div>\n            <Button className=\"w-full\">Send Message</Button>\n          </form>\n        </Card>\n        <div className=\"mx-auto lg:max-w-lg\">\n          <h2 className=\"mb-4 text-3xl font-bold\">Get in Touch</h2>\n          <p className=\"text-muted-foreground text-lg lg:max-w-lg\">\n            You need more information? Check what other persons are saying about\n            our product. They are very happy with their purchase.\n          </p>\n          <div className=\"mt-14 space-y-4\">\n            {OPTIONS.map(({ icon: Icon, info }, key) => (\n              <div key={key} className=\"flex items-center gap-4\">\n                <Icon className=\"h-5 w-5\" />\n                <span>{info}</span>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-02/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function ContactSections02() {\n  return (\n    <section className=\"grid min-h-screen w-full grid-cols-1 items-center md:grid-cols-2\">\n      <div className=\"p-6 sm:p-12 lg:p-16\">\n        <div className=\"mb-10\">\n          <h2 className=\"my-4 text-3xl font-bold\">Contact us</h2>\n          <p className=\"text-muted-foreground max-w-lg text-lg\">\n            Whether you have questions or you would just like to say hello,\n            contact us.\n          </p>\n        </div>\n        <form action=\"#\" className=\"space-y-6\">\n          <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"first-name\">First Name</Label>\n              <Input id=\"first-name\" placeholder=\"John\" />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"last-name\">Last Name</Label>\n              <Input id=\"last-name\" placeholder=\"Doe\" />\n            </div>\n          </div>\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"email\">Email Address</Label>\n            <Input id=\"email\" type=\"email\" placeholder=\"someone@example.com\" />\n          </div>\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"phone\">Phone Number</Label>\n            <Input\n              id=\"phone\"\n              type=\"tel\"\n              maxLength={16}\n              placeholder=\"e.g., +1 123-456-7890\"\n              pattern=\"^\\+\\d{1,3}\\s\\d{1,4}-\\d{1,4}-\\d{4}$\"\n            />\n          </div>\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"message\">Message</Label>\n            <Textarea\n              id=\"message\"\n              placeholder=\"Something about your request.\"\n            />\n          </div>\n          <div className=\"flex items-center gap-2\">\n            <Checkbox id=\"privacy-policy\" />\n            <Label\n              htmlFor=\"privacy-policy\"\n              className=\"cursor-pointer text-sm font-normal\"\n            >\n              You agree to your friendly{\" \"}\n              <a href=\"#\" className=\"text-primary hover:underline\">\n                Privacy Policy\n              </a>\n            </Label>\n          </div>\n          <Button className=\"w-full\">Send Message</Button>\n        </form>\n      </div>\n      <img\n        src=\"https://images.unsplash.com/photo-1658246944389-9e9ac0a85dda?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1064\"\n        alt=\"contact\"\n        className=\"hidden h-full w-full object-cover object-center md:block\"\n      />\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-03/page.tsx",
    "content": "\"use client\"\n\nimport {\n  Dribbble,\n  Facebook,\n  Linkedin,\n  Mail,\n  Phone,\n  Ticket,\n  Twitter,\n} from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst DATA = [\n  {\n    icon: Phone,\n    info: \"+1(424) 535 3523\",\n  },\n  {\n    icon: Mail,\n    info: \"hello@mail.com\",\n  },\n  {\n    icon: Ticket,\n    info: \"Open Support Ticket\",\n  },\n]\n\nexport default function ContactSections03() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"text-4xl font-bold\">Contact Us</h2>\n          <p className=\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\">\n            Any questions or remarks? Just write us a message!\n          </p>\n        </div>\n        <Card className=\"grid grid-cols-1 gap-10 rounded-2xl p-8 shadow-xl lg:grid-cols-2 lg:p-10\">\n          <form action=\"#\" className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\" className=\"text-base\">\n                  First Name\n                </Label>\n                <Input id=\"first-name\" placeholder=\"John\" className=\"h-11\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\" className=\"text-base\">\n                  Last Name\n                </Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" className=\"h-11\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\" className=\"text-base\">\n                Email Address\n              </Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n                className=\"h-11\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\" className=\"text-base\">\n                Message\n              </Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n                rows={5}\n                className=\"resize-none\"\n              />\n            </div>\n            <Button className=\"w-full sm:w-auto sm:min-w-[150px]\" size=\"lg\">\n              Send Message\n            </Button>\n          </form>\n          <div className=\"flex flex-col justify-between rounded-xl bg-gradient-to-br from-gray-900 to-black p-8 lg:p-12\">\n            <div>\n              <h3 className=\"mb-4 text-2xl font-bold text-white\">\n                Contact Information\n              </h3>\n              <p className=\"mb-12 max-w-lg text-gray-300\">\n                Fill up the form and our Team will get back to you within 24\n                hours.\n              </p>\n              <div className=\"space-y-6\">\n                {DATA.map(({ icon: Icon, info }, key) => (\n                  <div key={key} className=\"flex items-center gap-4\">\n                    <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10\">\n                      <Icon className=\"h-5 w-5 text-white\" />\n                    </div>\n                    <span className=\"text-gray-200\">{info}</span>\n                  </div>\n                ))}\n              </div>\n            </div>\n            <div className=\"mt-12 flex items-center gap-6\">\n              <a\n                href=\"#\"\n                className=\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\"\n              >\n                <Twitter className=\"h-5 w-5\" />\n              </a>\n              <a\n                href=\"#\"\n                className=\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\"\n              >\n                <Linkedin className=\"h-5 w-5\" />\n              </a>\n              <a\n                href=\"#\"\n                className=\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\"\n              >\n                <Dribbble className=\"h-5 w-5\" />\n              </a>\n              <a\n                href=\"#\"\n                className=\"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-gray-300 transition-all hover:bg-white/20 hover:text-white\"\n              >\n                <Facebook className=\"h-5 w-5\" />\n              </a>\n            </div>\n          </div>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-04/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, MapPin, Phone, User } from \"lucide-react\"\n\nconst OPTIONS = [\n  {\n    icon: MapPin,\n    title: \"Address\",\n    description: \"12124 First Street, nr 54\",\n  },\n  {\n    icon: Mail,\n    title: \"Email\",\n    description: \"hello@email.com\",\n  },\n  {\n    icon: Phone,\n    title: \"Phone\",\n    description: \"+1 (424) 535-3523\",\n  },\n  {\n    icon: User,\n    title: \"Contact\",\n    description: \"Andrew Samian\",\n  },\n]\n\nexport default function ContactSections04() {\n  return (\n    <section className=\"relative min-h-[70vh] w-full bg-cover bg-center\">\n      <img\n        src=\"https://images.unsplash.com/photo-1635700193352-80564c35434c?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2532\"\n        alt=\"Background\"\n        className=\"absolute inset-0 h-full w-full object-cover\"\n      />\n      <div className=\"absolute inset-0 bg-black/50\" />\n      <div className=\"relative flex min-h-[70vh] flex-col items-center justify-center px-4 py-16 text-center\">\n        <h2 className=\"mb-6 text-5xl font-bold text-white\">Got a Question?</h2>\n        <p className=\"mx-auto mb-12 max-w-xl text-xl text-white/80\">\n          We'd like to talk more about what you need\n        </p>\n        <div className=\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-12 sm:grid-cols-2 lg:grid-cols-4\">\n          {OPTIONS.map(({ icon: Icon, title, description }, key) => (\n            <div\n              key={key}\n              className=\"group text-center transition-transform hover:scale-105\"\n            >\n              <div className=\"mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-xl bg-white/10 shadow-lg transition-all group-hover:bg-white/20 group-hover:shadow-xl\">\n                <Icon className=\"h-8 w-8 text-white\" />\n              </div>\n              <p className=\"mb-2 text-xl font-bold text-white\">{title}</p>\n              <p className=\"text-base text-gray-300\">{description}</p>\n            </div>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-05/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst OPTIONS = [\"General Inquiry\", \"Product Support\"]\n\nexport default function ContactSections05() {\n  const [selectedOption, setSelectedOption] = useState(\"\")\n\n  return (\n    <section className=\"bg-white py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-20 text-center\">\n          <Badge variant=\"secondary\">Customer Care</Badge>\n          <h2 className=\"mt-8 mb-4 text-3xl font-bold\">\n            We&apos;re Here to Help\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Whether it&apos;s a question about our services, a request for\n            technical assistance, or suggestions for improvement, our team is\n            eager to hear from you.\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-x-16 gap-y-10 lg:grid-cols-2\">\n          <img\n            src=\"https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070\"\n            alt=\"Contact\"\n            className=\"h-full min-h-[400px] w-full rounded-2xl object-cover\"\n          />\n          <form\n            action=\"#\"\n            className=\"mx-auto max-w-lg space-y-6 lg:mx-0 lg:py-2\"\n          >\n            <div className=\"space-y-4\">\n              <Label>Select Options for Business Engagement</Label>\n              <div className=\"flex flex-wrap gap-2\">\n                {OPTIONS.map((option) => (\n                  <Button\n                    key={option}\n                    type=\"button\"\n                    variant={selectedOption === option ? \"default\" : \"outline\"}\n                    onClick={() =>\n                      setSelectedOption((cur) => (cur === option ? \"\" : option))\n                    }\n                  >\n                    {option}\n                  </Button>\n                ))}\n              </div>\n            </div>\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n              />\n            </div>\n            <Button className=\"w-full\">Send Message</Button>\n          </form>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-06/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, MapPin, Phone } from \"lucide-react\"\n\nconst OPTIONS = [\n  {\n    icon: MapPin,\n    title: \"Address\",\n    subTitle: \"Find us at the office\",\n    description: \"12124 First Street, nr 54\",\n  },\n  {\n    icon: Mail,\n    title: \"Email\",\n    subTitle: \"Send us your feedback\",\n    description: \"hello@email.com\",\n  },\n  {\n    icon: Phone,\n    title: \"Phone\",\n    subTitle: \"Give us a ring\",\n    description: \"+1 (424) 535-3523\",\n  },\n]\n\nexport default function ContactSections06() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 text-center\">\n          <span className=\"text-primary block text-sm font-semibold\">\n            Contact Us\n          </span>\n          <h2 className=\"my-4 text-center text-3xl font-bold\">\n            Got a Question?\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-lg text-center text-lg\">\n            We&apos;d like to talk more about what you need\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 justify-items-center gap-x-8 gap-y-16 md:grid-cols-2 lg:grid-cols-3\">\n          {OPTIONS.map(({ icon: Icon, title, subTitle, description }, key) => (\n            <div key={key} className=\"text-center\">\n              <div className=\"bg-primary mx-auto mb-6 grid h-14 w-14 place-items-center rounded-full\">\n                <Icon className=\"text-primary-foreground h-6 w-6\" />\n              </div>\n              <p className=\"text-lg font-semibold\">{title}</p>\n              <p className=\"text-muted-foreground my-3 block\">{subTitle}</p>\n              <p>{description}</p>\n            </div>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-07/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, Phone } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst DATA = [\n  {\n    icon: Mail,\n    title: \"Find us at the office\",\n    options: [\"Bld Mihail Kogalniceanu, nr. 8,\", \"7652 Bucharest,\", \"Romania\"],\n  },\n  {\n    icon: Phone,\n    title: \"+1(424) 535 3523\",\n    options: [\"Michael Jordan\", \"+40 762 321 762\", \"Mon - Fri, 8:00-22:00\"],\n  },\n]\n\nexport default function ContactSections07() {\n  return (\n    <section className=\"grid min-h-screen place-items-center py-16\">\n      <div className=\"container mx-auto grid grid-cols-1 items-center gap-10 lg:grid-cols-2\">\n        <Card className=\"mx-auto p-6 lg:max-w-lg lg:p-12\">\n          <h3 className=\"mb-2 text-2xl font-semibold\">Contact us</h3>\n          <p className=\"text-muted-foreground mb-6\">\n            We'd love to hear from you.\n          </p>\n          <form action=\"#\" className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n              />\n            </div>\n            <div className=\"flex items-center gap-2\">\n              <Checkbox id=\"privacy-policy\" />\n              <Label\n                htmlFor=\"privacy-policy\"\n                className=\"cursor-pointer text-sm font-normal\"\n              >\n                You agree to your friendly{\" \"}\n                <a href=\"#\" className=\"text-primary hover:underline\">\n                  Privacy Policy\n                </a>\n              </Label>\n            </div>\n            <Button className=\"w-full\">Send Message</Button>\n          </form>\n        </Card>\n        <div className=\"mx-auto space-y-10 lg:max-w-lg\">\n          {DATA.map(({ icon: Icon, title, options }, key) => (\n            <div key={key} className=\"flex gap-4\">\n              <div className=\"shrink-0\">\n                <Icon className=\"h-6 w-6\" />\n              </div>\n              <div>\n                <h4 className=\"mb-2 font-semibold\">{title}</h4>\n                {options.map((option, idx) => (\n                  <p key={idx} className=\"text-muted-foreground\">\n                    {option}\n                  </p>\n                ))}\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-08/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  Dribbble,\n  Facebook,\n  Linkedin,\n  Mail,\n  Phone,\n  Ticket,\n  Twitter,\n} from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst DATA = [\n  {\n    icon: Phone,\n    info: \"+1(424) 535 3523\",\n  },\n  {\n    icon: Mail,\n    info: \"hello@mail.com\",\n  },\n  {\n    icon: Ticket,\n    info: \"Open Support Ticket\",\n  },\n]\n\nconst OPTIONS = [\"Design\", \"Development\", \"Support\", \"Other\"]\n\nexport default function ContactSections08() {\n  const [selectedOption, setSelectedOption] = useState(\"\")\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"text-3xl font-bold\">Contact Us</h2>\n          <p className=\"text-muted-foreground mx-auto mt-4 max-w-lg text-lg\">\n            Any questions or remarks? Just write us a message!\n          </p>\n        </div>\n        <Card className=\"grid grid-cols-1 gap-10 rounded-2xl p-4 lg:grid-cols-2 lg:p-6\">\n          <div className=\"grid rounded-lg bg-black p-8 lg:place-items-center lg:p-16\">\n            <div>\n              <h2 className=\"mb-4 text-2xl font-bold text-white\">\n                Contact Information\n              </h2>\n              <p className=\"mb-16 max-w-lg text-gray-400\">\n                Fill up the form and our Team will get back to you within 24\n                hours.\n              </p>\n              {DATA.map(({ icon: Icon, info }, key) => (\n                <div key={key} className=\"mb-4 flex items-center gap-4\">\n                  <Icon className=\"h-5 w-5 text-gray-400\" />\n                  <span className=\"text-gray-400\">{info}</span>\n                </div>\n              ))}\n              <div className=\"mt-12 flex items-center gap-6\">\n                <a href=\"#\" className=\"text-gray-400 hover:text-white\">\n                  <Twitter className=\"h-6 w-6\" />\n                </a>\n                <a href=\"#\" className=\"text-gray-400 hover:text-white\">\n                  <Linkedin className=\"h-6 w-6\" />\n                </a>\n                <a href=\"#\" className=\"text-gray-400 hover:text-white\">\n                  <Dribbble className=\"h-6 w-6\" />\n                </a>\n                <a href=\"#\" className=\"text-gray-400 hover:text-white\">\n                  <Facebook className=\"h-6 w-6\" />\n                </a>\n              </div>\n            </div>\n          </div>\n          <form action=\"#\" className=\"space-y-6 px-2 py-0 lg:py-2\">\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label>Area of Interest</Label>\n              <RadioGroup\n                value={selectedOption}\n                onValueChange={setSelectedOption}\n              >\n                <div className=\"grid grid-cols-2 gap-4\">\n                  {OPTIONS.map((option) => (\n                    <div key={option} className=\"flex items-center space-x-2\">\n                      <RadioGroupItem value={option} id={option} />\n                      <Label\n                        htmlFor={option}\n                        className=\"cursor-pointer font-normal\"\n                      >\n                        {option}\n                      </Label>\n                    </div>\n                  ))}\n                </div>\n              </RadioGroup>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n              />\n            </div>\n            <Button className=\"ml-auto flex max-w-fit\">Send Message</Button>\n          </form>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-09/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, Phone } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst DATA = [\n  {\n    icon: Mail,\n    title: \"Find us at the office\",\n    options: [\"Bld Mihail Kogalniceanu, nr. 8,\", \"7652 Bucharest,\", \"Romania\"],\n  },\n  {\n    icon: Phone,\n    title: \"+1(424) 535 3523\",\n    options: [\"Michael Jordan\", \"+40 762 321 762\", \"Mon - Fri, 8:00-22:00\"],\n  },\n]\n\nexport default function ContactSections09() {\n  return (\n    <section className=\"p-6\">\n      <div className=\"grid items-center gap-6 rounded-xl bg-black p-4 lg:grid-cols-2 lg:p-8\">\n        <div className=\"p-8 lg:mx-auto lg:max-w-lg lg:p-0\">\n          <h2 className=\"mb-4 text-3xl font-bold text-white\">Get in Touch</h2>\n          <p className=\"text-lg text-white lg:max-w-xl\">\n            You need more information? Check what other persons are saying about\n            our product. They are very happy with their purchase.\n          </p>\n          {DATA.map(({ icon: Icon, title, options }, key) => (\n            <div key={key} className=\"mt-12\">\n              <div className=\"mb-6 flex items-center gap-3\">\n                <Icon className=\"h-7 w-7 text-white\" />\n                <h4 className=\"text-lg font-semibold text-white\">{title}</h4>\n              </div>\n              <div className=\"ml-10 space-y-2\">\n                {options.map((option, idx) => (\n                  <p key={idx} className=\"text-white\">\n                    {option}\n                  </p>\n                ))}\n              </div>\n            </div>\n          ))}\n        </div>\n        <Card className=\"p-6 lg:p-8\">\n          <h3 className=\"mb-6 text-2xl font-semibold\">Contact us</h3>\n          <form action=\"#\" className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 lg:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"someone@example.com\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Something about your request.\"\n              />\n            </div>\n            <div className=\"flex items-center gap-2\">\n              <Checkbox id=\"privacy-policy\" />\n              <Label\n                htmlFor=\"privacy-policy\"\n                className=\"cursor-pointer text-sm font-normal\"\n              >\n                You agree to your friendly{\" \"}\n                <a href=\"#\" className=\"text-primary hover:underline\">\n                  Privacy Policy\n                </a>\n              </Label>\n            </div>\n            <Button className=\"w-full\">Send Message</Button>\n          </form>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-10/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, MapPin, Phone } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst OPTIONS = [\n  {\n    icon: MapPin,\n    info: \"12124 First Street, nr 54\",\n  },\n  {\n    icon: Phone,\n    info: \"+1(424) 535 3523\",\n  },\n  {\n    icon: Mail,\n    info: \"hello@mail.com\",\n  },\n]\n\nexport default function ContactSections10() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <h2 className=\"mb-16 text-center text-3xl font-bold\">Contact Us</h2>\n        <div className=\"grid grid-cols-1 gap-10 lg:grid-cols-2\">\n          <Card className=\"p-8\">\n            <h3 className=\"mb-6 text-2xl font-semibold\">Send us a message</h3>\n            <form action=\"#\" className=\"space-y-6\">\n              <div className=\"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"first-name\">First Name</Label>\n                  <Input id=\"first-name\" placeholder=\"John\" />\n                </div>\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"last-name\">Last Name</Label>\n                  <Input id=\"last-name\" placeholder=\"Doe\" />\n                </div>\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"email\">Email</Label>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"someone@example.com\"\n                />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"phone\">Phone Number</Label>\n                <Input id=\"phone\" type=\"tel\" placeholder=\"+1 123-456-7890\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"message\">Message</Label>\n                <Textarea\n                  id=\"message\"\n                  placeholder=\"Write your message here...\"\n                />\n              </div>\n              <Button className=\"w-full\">Send Message</Button>\n            </form>\n          </Card>\n          <div className=\"space-y-8\">\n            <div>\n              <h3 className=\"mb-4 text-2xl font-semibold\">Get in touch</h3>\n              <p className=\"text-muted-foreground\">\n                We&apos;re here to help and answer any question you might have.\n                We look forward to hearing from you.\n              </p>\n            </div>\n            <div className=\"space-y-6\">\n              {OPTIONS.map(({ icon: Icon, info }, key) => (\n                <div key={key} className=\"flex items-start gap-4\">\n                  <div className=\"bg-primary/10 grid h-10 w-10 shrink-0 place-items-center rounded-lg\">\n                    <Icon className=\"text-primary h-5 w-5\" />\n                  </div>\n                  <div className=\"pt-2\">\n                    <p className=\"font-medium\">{info}</p>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-11/page.tsx",
    "content": "\"use client\"\n\nimport { Mail, Phone } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function ContactSections11() {\n  return (\n    <section className=\"grid min-h-screen place-items-center bg-gradient-to-br from-stone-900 to-stone-800 py-16 text-white\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-12 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">Get In Touch</h2>\n          <p className=\"mx-auto max-w-2xl text-stone-300\">\n            Have a question or want to work together? Leave your details and\n            we'll get back to you as soon as possible.\n          </p>\n        </div>\n        <div className=\"mx-auto max-w-2xl\">\n          <form\n            action=\"#\"\n            className=\"space-y-6 rounded-2xl bg-white/10 p-8 backdrop-blur-sm\"\n          >\n            <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"name\" className=\"text-white\">\n                  Name\n                </Label>\n                <Input\n                  id=\"name\"\n                  placeholder=\"Your name\"\n                  className=\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\"\n                />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"email\" className=\"text-white\">\n                  Email\n                </Label>\n                <Input\n                  id=\"email\"\n                  type=\"email\"\n                  placeholder=\"your@email.com\"\n                  className=\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\"\n                />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"subject\" className=\"text-white\">\n                Subject\n              </Label>\n              <Input\n                id=\"subject\"\n                placeholder=\"How can we help?\"\n                className=\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\"\n              />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\" className=\"text-white\">\n                Message\n              </Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Your message...\"\n                rows={6}\n                className=\"border-white/30 bg-white/20 text-white placeholder:text-stone-300\"\n              />\n            </div>\n            <Button className=\"w-full\" size=\"lg\">\n              Send Message\n            </Button>\n          </form>\n          <div className=\"mt-12 flex justify-center gap-12\">\n            <div className=\"text-center\">\n              <Phone className=\"mx-auto mb-2 h-6 w-6\" />\n              <p className=\"text-sm text-stone-300\">+1 (424) 535-3523</p>\n            </div>\n            <div className=\"text-center\">\n              <Mail className=\"mx-auto mb-2 h-6 w-6\" />\n              <p className=\"text-sm text-stone-300\">hello@mail.com</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-12/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function ContactSections12() {\n  return (\n    <section className=\"relative flex min-h-screen items-center py-20\">\n      <div\n        className=\"absolute inset-0 bg-cover bg-center opacity-20\"\n        style={{\n          backgroundImage:\n            \"url('https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop')\",\n        }}\n      />\n      <div className=\"relative z-10 container mx-auto\">\n        <div className=\"mx-auto max-w-2xl\">\n          <div className=\"mb-12 text-center\">\n            <h2 className=\"mb-4 text-4xl font-bold\">Let's Talk</h2>\n            <p className=\"text-muted-foreground text-lg\">\n              Fill out the form below and we'll be in touch shortly.\n            </p>\n          </div>\n          <form\n            action=\"#\"\n            className=\"bg-card space-y-6 rounded-2xl p-8 shadow-xl\"\n          >\n            <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"first-name\">First Name</Label>\n                <Input id=\"first-name\" placeholder=\"John\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"last-name\">Last Name</Label>\n                <Input id=\"last-name\" placeholder=\"Doe\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email</Label>\n              <Input id=\"email\" type=\"email\" placeholder=\"john@example.com\" />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"company\">Company</Label>\n              <Input id=\"company\" placeholder=\"Your Company\" />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">How can we help?</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"Tell us about your project...\"\n                rows={5}\n              />\n            </div>\n            <Button className=\"w-full\" size=\"lg\">\n              Submit\n            </Button>\n          </form>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-13/page.tsx",
    "content": "\"use client\"\n\nimport { Clock, Mail, MapPin, Phone } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nconst CONTACT_INFO = [\n  {\n    icon: MapPin,\n    title: \"Visit us\",\n    info: \"123 Main Street, New York, NY 10001\",\n  },\n  {\n    icon: Phone,\n    title: \"Call us\",\n    info: \"+1 (424) 535-3523\",\n  },\n  {\n    icon: Mail,\n    title: \"Email us\",\n    info: \"hello@mail.com\",\n  },\n  {\n    icon: Clock,\n    title: \"Working hours\",\n    info: \"Mon - Fri, 9:00 AM - 6:00 PM\",\n  },\n]\n\nexport default function ContactSections13() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">Contact Information</h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            We're here to answer any questions you may have about our services.\n            Reach out to us and we'll respond as soon as we can.\n          </p>\n        </div>\n        <div className=\"mb-16 grid gap-8 sm:grid-cols-2 lg:grid-cols-4\">\n          {CONTACT_INFO.map(({ icon: Icon, title, info }, key) => (\n            <Card key={key} className=\"p-6 text-center\">\n              <div className=\"bg-primary/10 mx-auto mb-4 grid h-12 w-12 place-items-center rounded-full\">\n                <Icon className=\"text-primary h-6 w-6\" />\n              </div>\n              <h3 className=\"mb-2 font-semibold\">{title}</h3>\n              <p className=\"text-muted-foreground text-sm\">{info}</p>\n            </Card>\n          ))}\n        </div>\n        <Card className=\"mx-auto max-w-2xl p-8\">\n          <h3 className=\"mb-6 text-2xl font-bold\">Send us a message</h3>\n          <form action=\"#\" className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"name\">Name</Label>\n                <Input id=\"name\" placeholder=\"Your name\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"email\">Email</Label>\n                <Input id=\"email\" type=\"email\" placeholder=\"your@email.com\" />\n              </div>\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"message\">Message</Label>\n              <Textarea\n                id=\"message\"\n                placeholder=\"How can we help you?\"\n                rows={5}\n              />\n            </div>\n            <Button className=\"w-full\">Send Message</Button>\n          </form>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-14/page.tsx",
    "content": "\"use client\"\n\nimport { Send } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function ContactSections14() {\n  return (\n    <section className=\"from-background to-muted/20 bg-gradient-to-b py-20\">\n      <div className=\"container mx-auto max-w-4xl\">\n        <div className=\"mb-12 text-center\">\n          <span className=\"text-primary text-sm font-semibold\">\n            GET IN TOUCH\n          </span>\n          <h2 className=\"mt-2 mb-4 text-4xl font-bold\">\n            We'd Love to Hear From You\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Whether you have a question about features, pricing, or anything\n            else, our team is ready to answer all your questions.\n          </p>\n        </div>\n        <form action=\"#\" className=\"space-y-8\">\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"name\">Full Name *</Label>\n              <Input id=\"name\" placeholder=\"John Doe\" required />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"email\">Email Address *</Label>\n              <Input\n                id=\"email\"\n                type=\"email\"\n                placeholder=\"john@example.com\"\n                required\n              />\n            </div>\n          </div>\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"phone\">Phone Number</Label>\n              <Input id=\"phone\" type=\"tel\" placeholder=\"+1 (555) 000-0000\" />\n            </div>\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"subject\">Subject</Label>\n              <Input id=\"subject\" placeholder=\"How can we help?\" />\n            </div>\n          </div>\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"message\">Message *</Label>\n            <Textarea\n              id=\"message\"\n              placeholder=\"Tell us more about your inquiry...\"\n              rows={6}\n              required\n            />\n          </div>\n          <div className=\"flex justify-center\">\n            <Button size=\"lg\" className=\"gap-2\">\n              <Send className=\"h-4 w-4\" />\n              Send Message\n            </Button>\n          </div>\n        </form>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/contact-sections-15/page.tsx",
    "content": "\"use client\"\n\nimport { FileText, Headphones, MessageSquare } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nconst CONTACT_OPTIONS = [\n  {\n    icon: MessageSquare,\n    title: \"Chat with Sales\",\n    description: \"Speak to our sales team\",\n    action: \"Start Chat\",\n  },\n  {\n    icon: Headphones,\n    title: \"Get Support\",\n    description: \"We're here to help\",\n    action: \"Contact Support\",\n  },\n  {\n    icon: FileText,\n    title: \"Documentation\",\n    description: \"Browse our docs\",\n    action: \"View Docs\",\n  },\n]\n\nexport default function ContactSections15() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid items-center gap-12 lg:grid-cols-2\">\n          <div>\n            <h2 className=\"mb-4 text-4xl font-bold\">\n              Let's start a conversation\n            </h2>\n            <p className=\"text-muted-foreground mb-8 text-lg\">\n              We're always happy to help with any questions you might have. Get\n              in touch with us and we'll respond as soon as possible.\n            </p>\n            <div className=\"space-y-6\">\n              {CONTACT_OPTIONS.map(\n                ({ icon: Icon, title, description, action }, key) => (\n                  <div key={key} className=\"flex items-start gap-4\">\n                    <div className=\"bg-primary/10 grid h-12 w-12 shrink-0 place-items-center rounded-lg\">\n                      <Icon className=\"text-primary h-6 w-6\" />\n                    </div>\n                    <div className=\"flex-1\">\n                      <h3 className=\"mb-1 font-semibold\">{title}</h3>\n                      <p className=\"text-muted-foreground mb-3 text-sm\">\n                        {description}\n                      </p>\n                      <Button variant=\"link\" className=\"h-auto p-0\">\n                        {action} →\n                      </Button>\n                    </div>\n                  </div>\n                )\n              )}\n            </div>\n          </div>\n          <Card className=\"p-8\">\n            <h3 className=\"mb-6 text-2xl font-bold\">Quick Contact</h3>\n            <form action=\"#\" className=\"space-y-6\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"name\">Your Name</Label>\n                <Input id=\"name\" placeholder=\"Enter your name\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"email\">Your Email</Label>\n                <Input id=\"email\" type=\"email\" placeholder=\"Enter your email\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"phone\">Phone Number (Optional)</Label>\n                <Input id=\"phone\" type=\"tel\" placeholder=\"Enter your phone\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"inquiry\">Your Inquiry</Label>\n                <Input id=\"inquiry\" placeholder=\"What can we help you with?\" />\n              </div>\n              <Button className=\"w-full\">Submit</Button>\n            </form>\n          </Card>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/cruds-01/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function Cruds01() {\n  return (\n    <section className=\"grid min-h-screen place-items-center py-16\">\n      <Card className=\"mx-auto w-full max-w-2xl p-6 lg:p-8\">\n        <div className=\"mb-6\">\n          <h3 className=\"text-2xl font-semibold\">Edit Apparel Item</h3>\n          <p className=\"text-muted-foreground mt-1 text-sm\">\n            Update product information, pricing, and categorization for your\n            fashion inventory.\n          </p>\n        </div>\n        <form action=\"#\" className=\"space-y-6\">\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"productName\">Product Name</Label>\n            <Input\n              id=\"productName\"\n              name=\"productName\"\n              type=\"text\"\n              placeholder=\"e.g. Slim Fit Denim Jacket\"\n            />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"brand\">Designer Brand</Label>\n            <Input\n              id=\"brand\"\n              name=\"brand\"\n              type=\"text\"\n              placeholder=\"e.g. Balenciaga\"\n            />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"price\">Retail Price ($)</Label>\n            <Input\n              id=\"price\"\n              name=\"price\"\n              type=\"number\"\n              placeholder=\"e.g. 199\"\n            />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"category\">Category</Label>\n            <Select name=\"category\">\n              <SelectTrigger id=\"category\" className=\"w-full\">\n                <SelectValue placeholder=\"Select a category\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"outerwear\">Outerwear</SelectItem>\n                <SelectItem value=\"tops\">Tops</SelectItem>\n                <SelectItem value=\"bottoms\">Bottoms</SelectItem>\n                <SelectItem value=\"footwear\">Footwear</SelectItem>\n                <SelectItem value=\"accessories\">Accessories</SelectItem>\n              </SelectContent>\n            </Select>\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"description\">Product Details</Label>\n            <Textarea\n              id=\"description\"\n              name=\"description\"\n              placeholder=\"Material, fit, washing instructions...\"\n              rows={4}\n            />\n          </div>\n\n          <div className=\"flex gap-4\">\n            <Button type=\"submit\" className=\"flex-1\">\n              Save Changes\n            </Button>\n            <Button type=\"button\" variant=\"destructive\" className=\"flex-1\">\n              Remove Item\n            </Button>\n          </div>\n        </form>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/cruds-02/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nexport default function Cruds02() {\n  return (\n    <section className=\"grid min-h-screen place-items-center py-16\">\n      <Card className=\"mx-auto w-full max-w-2xl p-6 lg:p-8\">\n        <div className=\"mb-6\">\n          <h3 className=\"text-2xl font-semibold\">\n            Update Retail Staff Profile\n          </h3>\n          <p className=\"text-muted-foreground mt-1 text-sm\">\n            Manage employee account credentials and contact information for\n            retail team members.\n          </p>\n        </div>\n        <form action=\"#\" className=\"space-y-6\">\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"username\">Username</Label>\n            <Input\n              id=\"username\"\n              name=\"username\"\n              type=\"text\"\n              placeholder=\"e.g. elena.moreno\"\n            />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"email\">Work Email</Label>\n            <Input\n              id=\"email\"\n              name=\"email\"\n              type=\"email\"\n              placeholder=\"e.g. elena@fashionco.com\"\n            />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"password\">New Password</Label>\n            <Input id=\"password\" name=\"password\" type=\"password\" />\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"confirmPassword\">Confirm Password</Label>\n            <Input\n              id=\"confirmPassword\"\n              name=\"confirmPassword\"\n              type=\"password\"\n            />\n          </div>\n\n          <Button type=\"submit\" className=\"w-full\">\n            Update Profile\n          </Button>\n        </form>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/cruds-03/page.tsx",
    "content": "\"use client\"\n\nimport { Upload } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nexport default function Cruds03() {\n  return (\n    <section className=\"grid min-h-screen place-items-center py-16\">\n      <Card className=\"mx-auto w-full max-w-3xl p-6 lg:p-8\">\n        <div className=\"mb-6\">\n          <h3 className=\"text-2xl font-semibold\">Stylist Account Settings</h3>\n          <p className=\"text-muted-foreground mt-1 text-sm\">\n            Configure your profile, roles, and permissions for your stylist\n            account.\n          </p>\n        </div>\n        <form action=\"#\" className=\"space-y-6\">\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"avatar\">Profile Photo</Label>\n            <div className=\"flex items-center gap-4\">\n              <div className=\"flex h-24 w-24 items-center justify-center rounded-lg border-2 border-dashed\">\n                <Upload className=\"text-muted-foreground h-8 w-8\" />\n              </div>\n              <div className=\"flex-1\">\n                <p className=\"text-muted-foreground text-sm\">\n                  PNG, JPG, JPEG or GIF (max. 800x400px)\n                </p>\n                <Input\n                  id=\"avatar\"\n                  name=\"avatar\"\n                  type=\"file\"\n                  accept=\".png,.jpg,.jpeg,.gif\"\n                  className=\"mt-2\"\n                />\n              </div>\n            </div>\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"firstName\">First Name</Label>\n              <Input id=\"firstName\" name=\"firstName\" type=\"text\" />\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"lastName\">Last Name</Label>\n              <Input id=\"lastName\" name=\"lastName\" type=\"text\" />\n            </div>\n          </div>\n\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"contactEmail\">Contact Email</Label>\n            <Input id=\"contactEmail\" name=\"contactEmail\" type=\"email\" />\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"userRole\">Role</Label>\n              <Select name=\"userRole\">\n                <SelectTrigger id=\"userRole\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select a role\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"stylist\">Stylist</SelectItem>\n                  <SelectItem value=\"store-manager\">Store Manager</SelectItem>\n                  <SelectItem value=\"creative-lead\">Creative Lead</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"languages\">Languages</Label>\n              <Input\n                id=\"languages\"\n                name=\"languages\"\n                type=\"text\"\n                placeholder=\"e.g. English, Italian\"\n              />\n            </div>\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"jobTitle\">Job Title</Label>\n              <Input\n                id=\"jobTitle\"\n                name=\"jobTitle\"\n                type=\"text\"\n                placeholder=\"e.g. Fashion Consultant\"\n              />\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"accountType\">Account Type</Label>\n              <Select name=\"accountType\">\n                <SelectTrigger id=\"accountType\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select account type\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"basic\">Basic</SelectItem>\n                  <SelectItem value=\"pro\">Pro</SelectItem>\n                  <SelectItem value=\"executive\">Executive</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"permissionLevel\">Permission Level</Label>\n              <Select name=\"permissionLevel\">\n                <SelectTrigger id=\"permissionLevel\" className=\"w-full\">\n                  <SelectValue placeholder=\"Select permission level\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"admin\">Admin</SelectItem>\n                  <SelectItem value=\"operational\">Operational</SelectItem>\n                  <SelectItem value=\"viewer\">Viewer</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"emailStatus\">Email Verified</Label>\n              <Input\n                id=\"emailStatus\"\n                name=\"emailStatus\"\n                type=\"text\"\n                value=\"Verified\"\n                disabled\n              />\n            </div>\n          </div>\n\n          <div className=\"flex gap-4\">\n            <Button type=\"button\" variant=\"secondary\" className=\"flex-1\">\n              Upload New Photo\n            </Button>\n            <Button type=\"button\" variant=\"destructive\" className=\"flex-1\">\n              Delete Account\n            </Button>\n          </div>\n        </form>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/dark-product-overview-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Heart, Package, Shield, ShoppingCart, Star, Truck } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\n\nconst DATA = [\n  {\n    title: \"Features\",\n    icon: Package,\n    desc: `Premium cashmere blend with cable-knit pattern. Features a classic V-neck design, \n    ribbed cuffs and hem for a perfect fit. Made with sustainable materials and ethically sourced \n    fibers. Temperature-regulating properties keep you comfortable in any season.`,\n  },\n  {\n    title: \"Product Care\",\n    icon: Shield,\n    desc: `Hand wash in cold water with mild detergent or dry clean for best results. \n    Lay flat to dry, do not wring or twist. Store folded in a cool, dry place. \n    Use a fabric shaver to remove any pilling. Steam gently to refresh between wears.`,\n  },\n  {\n    title: \"Shipping\",\n    icon: Truck,\n    desc: `Free standard shipping on all orders over $100. Express shipping available at checkout. \n    Orders are processed within 1-2 business days. International shipping available to select countries. \n    30-day hassle-free returns and exchanges.`,\n  },\n]\n\nexport default function DarkProductOverview01() {\n  const [isFavorite, setIsFavorite] = useState(false)\n\n  return (\n    <section className=\"bg-primary container mx-auto rounded-2xl\">\n      <div className=\"mx-auto max-w-6xl px-6 py-20 md:px-12\">\n        <div className=\"mb-16 text-center\">\n          <Badge\n            variant=\"outline\"\n            className=\"mb-4 border-white/30 bg-white/10 text-white\"\n          >\n            Shop Previewer\n          </Badge>\n          <h2 className=\"my-4 text-4xl font-bold tracking-tight text-white\">\n            New Collection\n          </h2>\n          <p className=\"mx-auto max-w-3xl text-lg leading-relaxed text-white/80\">\n            Easily preview furniture, decor, and more in your space, ensuring\n            everything fits perfectly and looks just right. It&apos;s the\n            ultimate tool for hassle-free home customization and design!\n          </p>\n        </div>\n\n        <div className=\"flex flex-col items-center justify-between gap-x-12 gap-y-12 lg:flex-row\">\n          <div className=\"flex-1\">\n            <div className=\"mb-4 flex items-center gap-3\">\n              <h3 className=\"text-2xl font-bold text-white\">Elegant Suite</h3>\n              <Badge className=\"bg-green-500 text-white\">New Arrival</Badge>\n            </div>\n\n            <div className=\"mb-4 flex items-center gap-2\">\n              <div className=\"flex items-center gap-1\">\n                {[1, 2, 3, 4, 5].map((star) => (\n                  <Star\n                    key={star}\n                    className=\"h-5 w-5 fill-yellow-400 text-yellow-400\"\n                  />\n                ))}\n              </div>\n              <span className=\"text-sm text-white/70\">(127 reviews)</span>\n            </div>\n\n            <div className=\"mb-6 flex items-baseline gap-3\">\n              <p className=\"text-4xl font-bold text-white\">$449.90</p>\n              <span className=\"text-lg text-white/50 line-through\">\n                $599.90\n              </span>\n              <Badge\n                variant=\"outline\"\n                className=\"border-green-500/30 bg-green-500/10 text-green-400\"\n              >\n                25% OFF\n              </Badge>\n            </div>\n\n            <p className=\"mb-8 max-w-xl text-lg leading-relaxed text-white/80\">\n              Add a touch of sophistication to your home with our handcrafted\n              ceramic vase. Each piece is uniquely made, blending seamlessly\n              into both modern and classic decors.\n            </p>\n\n            <div className=\"mb-8 flex items-center gap-2 rounded-lg bg-white/10 p-4\">\n              <Truck className=\"h-5 w-5 shrink-0 text-white\" />\n              <span className=\"text-sm text-white\">\n                Free shipping on orders over $100\n              </span>\n            </div>\n\n            <div className=\"mb-4 flex w-full items-center gap-3\">\n              <Button\n                size=\"lg\"\n                className=\"flex-1 gap-2 bg-white text-black hover:bg-white/90 sm:w-64 sm:flex-none\"\n              >\n                <ShoppingCart className=\"h-5 w-5\" />\n                Add to Cart\n              </Button>\n              <Button\n                size=\"lg\"\n                variant=\"ghost\"\n                className={`shrink-0 ${\n                  isFavorite\n                    ? \"text-red-500 hover:text-red-600\"\n                    : \"text-white/80 hover:text-red-500\"\n                }`}\n                onClick={() => setIsFavorite(!isFavorite)}\n              >\n                <Heart\n                  className={`h-5 w-5 ${isFavorite ? \"fill-current\" : \"\"}`}\n                />\n              </Button>\n            </div>\n\n            <div className=\"mt-12 max-w-2xl\">\n              <Tabs defaultValue=\"Features\" className=\"w-full\">\n                <TabsList className=\"h-auto w-full justify-start rounded-none border-b border-white/20 bg-transparent p-0\">\n                  {DATA.map(({ title, icon: Icon }) => (\n                    <TabsTrigger\n                      key={title}\n                      value={title}\n                      className=\"gap-2 rounded-none px-4 py-3 text-white data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:bg-transparent data-[state=active]:shadow-none\"\n                    >\n                      <Icon className=\"h-4 w-4\" />\n                      {title}\n                    </TabsTrigger>\n                  ))}\n                </TabsList>\n                {DATA.map(({ title, desc }) => (\n                  <TabsContent\n                    key={title}\n                    value={title}\n                    className=\"mt-6 text-white/80\"\n                  >\n                    <p className=\"leading-relaxed\">{desc}</p>\n                  </TabsContent>\n                ))}\n              </Tabs>\n            </div>\n          </div>\n\n          <div className=\"w-full lg:w-auto lg:max-w-lg\">\n            <div className=\"group relative overflow-hidden rounded-2xl border-2 border-white/20 bg-white/5 p-4 shadow-2xl backdrop-blur-sm\">\n              <img\n                src=\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\"\n                alt=\"Elegant Suite\"\n                className=\"w-full rounded-xl transition-transform duration-500 group-hover:scale-105\"\n              />\n              <div className=\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\" />\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/digital-product-overview-01/page.tsx",
    "content": "\"use client\"\n\nimport { Eye, Lock, ShoppingCart, Star } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\n\nconst data = [\n  {\n    name: \"HTML Version\",\n    desc: \"Pure HTML/CSS with Tailwind, perfect for static websites.\",\n    price: \"$39\",\n    popular: false,\n  },\n  {\n    name: \"React Version\",\n    desc: \"React components with TypeScript support included.\",\n    price: \"$49\",\n    popular: true,\n  },\n  {\n    name: \"Angular Version\",\n    desc: \"Angular components with full type definitions.\",\n    price: \"$99\",\n    popular: false,\n  },\n]\n\nexport default function DigitalProductOverview01() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <nav className=\"mb-8 flex items-center gap-2 text-sm\">\n        <a\n          href=\"#\"\n          className=\"text-muted-foreground hover:text-foreground transition-colors\"\n        >\n          Home\n        </a>\n        <span className=\"text-muted-foreground\">/</span>\n        <a\n          href=\"#\"\n          className=\"text-muted-foreground hover:text-foreground transition-colors\"\n        >\n          Templates\n        </a>\n        <span className=\"text-muted-foreground\">/</span>\n        <span className=\"text-foreground font-medium\">Digital Product</span>\n      </nav>\n\n      <div className=\"mt-8 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-16\">\n        <div className=\"group bg-muted/30 relative overflow-hidden rounded-2xl border p-4 shadow-xl transition-all hover:shadow-2xl\">\n          <img\n            src=\"https://raw.githubusercontent.com/creativetimofficial/public-assets/refs/heads/master/david-ui/thumbs/headers-thumbnail.jpg\"\n            alt=\"Digital product preview\"\n            className=\"h-full w-full object-contain transition-transform duration-500 group-hover:scale-105\"\n          />\n          <div className=\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent opacity-0 transition-opacity group-hover:opacity-100\" />\n        </div>\n\n        <div className=\"flex flex-col\">\n          <div className=\"mb-6\">\n            <div className=\"mb-3 flex items-center gap-3\">\n              <h2 className=\"text-3xl font-bold tracking-tight\">\n                Premium UI Kit\n              </h2>\n              <Badge\n                variant=\"secondary\"\n                className=\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n              >\n                Best Seller\n              </Badge>\n            </div>\n            <p className=\"text-muted-foreground text-base leading-relaxed\">\n              A comprehensive collection of beautifully crafted components and\n              templates. Built with modern web technologies and best practices\n              for seamless integration.\n            </p>\n          </div>\n\n          <div className=\"bg-muted/50 mb-6 flex items-center gap-6 rounded-lg p-4\">\n            <div className=\"flex items-center gap-2\">\n              <Star className=\"h-5 w-5 fill-yellow-400 text-yellow-400\" />\n              <span className=\"text-sm font-semibold\">4.9/5</span>\n              <span className=\"text-muted-foreground text-sm\">\n                (127 reviews)\n              </span>\n            </div>\n            <div className=\"bg-border h-4 w-px\" />\n            <div className=\"flex items-center gap-2 text-sm\">\n              <Lock className=\"text-muted-foreground h-4 w-4\" />\n              <span className=\"font-semibold\">1,234</span>\n              <span className=\"text-muted-foreground\">sales</span>\n            </div>\n          </div>\n\n          <div className=\"mb-6\">\n            <p className=\"mb-4 text-lg font-semibold\">Choose your version</p>\n            <RadioGroup defaultValue=\"React Version\" className=\"gap-3\">\n              {data.map(({ name, desc, price, popular }) => (\n                <div\n                  key={name}\n                  className=\"group/item bg-card hover:border-primary rounded-lg border transition-all hover:shadow-md\"\n                >\n                  <Label\n                    htmlFor={name}\n                    className=\"flex cursor-pointer items-start gap-4 p-4\"\n                  >\n                    <RadioGroupItem value={name} id={name} className=\"mt-1\" />\n                    <div className=\"flex flex-1 items-center justify-between gap-4\">\n                      <div className=\"flex-1\">\n                        <div className=\"mb-1 flex items-center gap-2\">\n                          <p className=\"font-semibold\">{name}</p>\n                          {popular && (\n                            <Badge className=\"bg-primary text-primary-foreground\">\n                              Popular\n                            </Badge>\n                          )}\n                        </div>\n                        <p className=\"text-muted-foreground text-sm\">{desc}</p>\n                      </div>\n                      <div className=\"text-right\">\n                        <p className=\"text-2xl font-bold\">{price}</p>\n                        <p className=\"text-muted-foreground text-xs\">\n                          one-time\n                        </p>\n                      </div>\n                    </div>\n                  </Label>\n                </div>\n              ))}\n            </RadioGroup>\n          </div>\n\n          <div className=\"mt-auto flex flex-col gap-3 sm:flex-row\">\n            <Button size=\"lg\" className=\"flex-1 gap-2\">\n              <ShoppingCart className=\"h-4 w-4\" />\n              Buy Now\n            </Button>\n            <Button size=\"lg\" variant=\"outline\" className=\"flex-1 gap-2\">\n              <Eye className=\"h-4 w-4\" />\n              Live Preview\n            </Button>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/ecommerce-sections-01/page.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { Pause, Play, ShoppingBag, Shuffle } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst PRODUCTS = [\n  {\n    id: \"card-1\",\n    media: {\n      src: \"https://images.unsplash.com/photo-1595777457583-95e059d581b8?q=80&w=400&h=400&auto=format&fit=crop\",\n      alt: \"Satin Wrap Dress product thumbnail\",\n    },\n    eyebrow: \"Maison Aurore\",\n    title: \"Satin Wrap Dress\",\n    description: \"Fluid silhouette with tie waist and soft sheen.\",\n    price: \"$215.00\",\n  },\n  {\n    id: \"card-2\",\n    media: {\n      src: \"https://images.unsplash.com/photo-1591369822096-ffd140ec948f?q=80&w=400&h=400&auto=format&fit=crop\",\n      alt: \"Structured Blazer product thumbnail\",\n    },\n    eyebrow: \"Atelier No. 9\",\n    title: \"Structured Blazer\",\n    description: \"Sharp shoulders, single-breasted, polished finish.\",\n    price: \"$329.00\",\n  },\n  {\n    id: \"card-3\",\n    media: {\n      src: \"https://images.unsplash.com/photo-1543163521-1bf539c55dd2?q=80&w=400&h=400&auto=format&fit=crop\",\n      alt: \"Chunky Chelsea Boots product thumbnail\",\n    },\n    eyebrow: \"Linea Forte\",\n    title: \"Chunky Chelsea Boots\",\n    description: \"Elevated lug sole with elastic side panels.\",\n    price: \"From $180.00\",\n  },\n]\n\nexport default function EcommerceSectionsBlock() {\n  const [isPlaying, setIsPlaying] = useState(true)\n  const playerRef = useRef<any>(null)\n  const [playerReady, setPlayerReady] = useState(false)\n\n  useEffect(() => {\n    const tag = document.createElement(\"script\")\n    tag.src = \"https://www.youtube.com/iframe_api\"\n    const firstScriptTag = document.getElementsByTagName(\"script\")[0]\n    firstScriptTag.parentNode?.insertBefore(tag, firstScriptTag)\n    ;(window as any).onYouTubeIframeAPIReady = () => {\n      playerRef.current = new (window as any).YT.Player(\"youtube-player\", {\n        videoId: \"YCIuEU2y8XI\",\n        playerVars: {\n          autoplay: 1,\n          mute: 1,\n          loop: 1,\n          playlist: \"YCIuEU2y8XI\",\n          controls: 0,\n          showinfo: 0,\n          modestbranding: 1,\n          playsinline: 1,\n        },\n        events: {\n          onReady: () => {\n            setPlayerReady(true)\n          },\n        },\n      })\n    }\n\n    return () => {\n      if (playerRef.current) {\n        playerRef.current.destroy()\n      }\n    }\n  }, [])\n\n  const togglePlay = () => {\n    if (playerRef.current && playerReady) {\n      if (isPlaying) {\n        playerRef.current.pauseVideo()\n      } else {\n        playerRef.current.playVideo()\n      }\n      setIsPlaying(!isPlaying)\n    }\n  }\n\n  return (\n    <section className=\"relative w-full overflow-hidden rounded-xl\">\n      <div className=\"relative aspect-[16/9] w-full lg:aspect-[16/9]\">\n        <div\n          id=\"youtube-player\"\n          className=\"absolute inset-0 h-full w-full rounded-xl\"\n          style={{\n            pointerEvents: \"none\",\n          }}\n        />\n\n        <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\" />\n\n        <Button\n          variant=\"outline\"\n          size=\"icon\"\n          className=\"absolute top-4 left-4 rounded-full bg-black/50 text-white backdrop-blur-sm hover:bg-black/70 hover:text-white lg:top-6 lg:left-6\"\n          onClick={togglePlay}\n        >\n          {isPlaying ? (\n            <Pause className=\"h-4 w-4\" />\n          ) : (\n            <Play className=\"h-4 w-4\" />\n          )}\n        </Button>\n\n        <div className=\"absolute inset-x-0 bottom-0 space-y-6 p-4 lg:p-8\">\n          <div className=\"mx-auto grid max-w-6xl gap-4 md:grid-cols-2 lg:grid-cols-3\">\n            {PRODUCTS.map((product) => (\n              <div\n                key={product.id}\n                className=\"flex items-center gap-4 rounded-2xl bg-white p-4 shadow-lg dark:bg-white/95\"\n              >\n                <div className=\"h-16 w-16 flex-shrink-0 overflow-hidden rounded-lg\">\n                  <img\n                    src={product.media.src}\n                    alt={product.media.alt}\n                    className=\"h-full w-full object-cover\"\n                  />\n                </div>\n\n                <div className=\"min-w-0 flex-1\">\n                  <p className=\"text-xs font-medium tracking-wide text-gray-500 uppercase\">\n                    {product.eyebrow}\n                  </p>\n                  <h3 className=\"truncate font-semibold text-gray-900\">\n                    {product.title}\n                  </h3>\n                  <p className=\"font-semibold text-gray-900\">{product.price}</p>\n                </div>\n\n                <div className=\"flex flex-shrink-0 items-center gap-2\">\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    className=\"h-8 w-8 text-gray-600 hover:text-gray-900\"\n                  >\n                    <ShoppingBag className=\"h-4 w-4\" />\n                  </Button>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    className=\"h-8 w-8 text-gray-600 hover:text-gray-900\"\n                  >\n                    <Shuffle className=\"h-4 w-4\" />\n                  </Button>\n                </div>\n              </div>\n            ))}\n          </div>\n\n          <div className=\"flex justify-center\">\n            <Button\n              variant=\"outline\"\n              size=\"lg\"\n              className=\"rounded-full border-white/80 bg-white/10 px-8 text-white backdrop-blur-sm hover:bg-white/20 hover:text-white\"\n            >\n              VIEW ALL PRODUCTS\n            </Button>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/ecommerce-sections-02/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  ChevronDown,\n  MapPin,\n  Package,\n  Ruler,\n  ShoppingBag,\n  Star,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\n\nexport default function EcommerceSections02() {\n  const [selectedImage, setSelectedImage] = useState(0)\n  const [selectedColor, setSelectedColor] = useState(1)\n  const [isInfoOpen, setIsInfoOpen] = useState(false)\n\n  const thumbnails = [\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+1`,\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Bag+2`,\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Detail`,\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Inside`,\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Model`,\n    `${process.env.NEXT_PUBLIC_ASSET_PREFIX}/placeholder.svg?height=80&width=80&text=Lifestyle`,\n  ]\n\n  const colors = [\n    { name: \"Black\", hex: \"#1a1a1a\" },\n    { name: \"Cream\", hex: \"#f5f0e8\" },\n    { name: \"Forest Green\", hex: \"#7d9488\" },\n    { name: \"Gray\", hex: \"#9ca3af\" },\n    { name: \"Navy Blue\", hex: \"#0f172a\" },\n    { name: \"Brown\", hex: \"#a0522d\" },\n  ]\n\n  const features = [\n    { icon: ShoppingBag, text: \"Crossbody style\" },\n    { icon: Package, text: \"Premium leather\" },\n    { icon: Ruler, text: \"Adjustable strap\" },\n    { icon: MapPin, text: \"Crafted in France\" },\n  ]\n\n  return (\n    <div className=\"min-h-screen bg-neutral-50 p-4 sm:p-8\">\n      <div className=\"mx-auto max-w-7xl\">\n        <div className=\"grid gap-8 lg:grid-cols-[auto_1fr_1fr] lg:gap-12\">\n          <div className=\"hidden lg:flex lg:flex-col lg:gap-3\">\n            {thumbnails.map((thumb, index) => (\n              <button\n                key={index}\n                onClick={() => setSelectedImage(index)}\n                className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\n                  selectedImage === index\n                    ? \"border-neutral-900\"\n                    : \"border-neutral-200 hover:border-neutral-400\"\n                }`}\n              >\n                <img\n                  src={thumb}\n                  alt={`Product view ${index + 1}`}\n                  className=\"h-full w-full object-cover\"\n                />\n              </button>\n            ))}\n          </div>\n\n          <div className=\"flex items-start justify-center\">\n            <div className=\"w-full max-w-lg\">\n              <div className=\"aspect-square overflow-hidden rounded-2xl bg-white\">\n                <img\n                  src={thumbnails[selectedImage]}\n                  alt=\"Product main view\"\n                  className=\"h-full w-full object-cover\"\n                />\n              </div>\n              <div className=\"mt-4 flex gap-2 lg:hidden\">\n                {thumbnails.slice(0, 4).map((thumb, index) => (\n                  <button\n                    key={index}\n                    onClick={() => setSelectedImage(index)}\n                    className={`h-16 w-16 overflow-hidden rounded-lg border-2 ${\n                      selectedImage === index\n                        ? \"border-neutral-900\"\n                        : \"border-neutral-200\"\n                    }`}\n                  >\n                    <img\n                      src={thumb}\n                      alt={`Thumbnail ${index + 1}`}\n                      className=\"h-full w-full object-cover\"\n                    />\n                  </button>\n                ))}\n              </div>\n            </div>\n          </div>\n\n          <div className=\"flex flex-col\">\n            <Badge\n              variant=\"outline\"\n              className=\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\"\n            >\n              Trending Now\n            </Badge>\n\n            <h1 className=\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\">\n              Artisan Leather Crossbody\n            </h1>\n\n            <div className=\"mb-6 flex items-center gap-4\">\n              <span className=\"text-2xl font-normal text-neutral-900\">\n                $385.00\n              </span>\n              <div className=\"flex items-center gap-1\">\n                <div className=\"flex\">\n                  {[...Array(5)].map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < 4\n                          ? \"fill-neutral-900 text-neutral-900\"\n                          : \"fill-neutral-900 text-neutral-900\"\n                      }`}\n                    />\n                  ))}\n                </div>\n                <span className=\"text-sm text-neutral-500\">(4.7)</span>\n              </div>\n            </div>\n\n            <div className=\"mb-6\">\n              <p className=\"mb-3 text-sm font-medium text-neutral-900\">\n                Color:{\" \"}\n                <span className=\"font-normal\">\n                  {colors[selectedColor].name}\n                </span>\n              </p>\n              <div className=\"flex gap-2\">\n                {colors.map((color, index) => (\n                  <button\n                    key={index}\n                    onClick={() => setSelectedColor(index)}\n                    className={`h-10 w-10 rounded-md border-2 transition-all ${\n                      selectedColor === index\n                        ? \"border-neutral-900 ring-2 ring-neutral-900 ring-offset-2\"\n                        : \"border-neutral-200 hover:border-neutral-400\"\n                    }`}\n                    style={{ backgroundColor: color.hex }}\n                    title={color.name}\n                  />\n                ))}\n              </div>\n            </div>\n\n            <p className=\"mb-4 text-sm leading-relaxed text-neutral-600\">\n              Elegant crossbody bag crafted from premium vegetable-tanned\n              leather with a minimalist silhouette. Features a secure magnetic\n              clasp closure, interior zip compartment, and an adjustable\n              shoulder strap for versatile wear.\n            </p>\n\n            <p className=\"mb-6 text-sm text-neutral-600\">\n              This is a demo store. To buy this product, visit{\" \"}\n              <a\n                href=\"#\"\n                className=\"font-medium text-neutral-900 underline underline-offset-2 hover:text-neutral-700\"\n              >\n                Maison Atelier\n              </a>{\" \"}\n              official store.\n            </p>\n\n            <div className=\"mb-6 flex flex-col gap-3 sm:flex-row\">\n              <Button\n                variant=\"outline\"\n                size=\"lg\"\n                className=\"flex-1 border-neutral-900 text-neutral-900 hover:bg-neutral-900 hover:text-white\"\n              >\n                Add to Cart\n              </Button>\n              <Button\n                size=\"lg\"\n                className=\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\"\n              >\n                Buy it Now\n              </Button>\n            </div>\n\n            <div className=\"mb-6 grid grid-cols-2 gap-3\">\n              {features.map((feature, index) => (\n                <div\n                  key={index}\n                  className=\"flex items-center gap-2 text-sm text-neutral-600\"\n                >\n                  <feature.icon className=\"h-4 w-4\" />\n                  <span>{feature.text}</span>\n                </div>\n              ))}\n            </div>\n\n            <div className=\"border-t border-neutral-200\">\n              <button\n                onClick={() => setIsInfoOpen(!isInfoOpen)}\n                className=\"flex w-full items-center justify-between py-4 text-sm font-medium text-neutral-900 hover:text-neutral-600\"\n              >\n                More Information\n                <ChevronDown\n                  className={`h-4 w-4 transition-transform ${\n                    isInfoOpen ? \"rotate-180\" : \"\"\n                  }`}\n                />\n              </button>\n              {isInfoOpen && (\n                <div className=\"pb-4 text-sm leading-relaxed text-neutral-600\">\n                  <p className=\"mb-3\">\n                    <strong>Materials & Care:</strong> This bag is made from\n                    100% full-grain vegetable-tanned leather that develops a\n                    beautiful patina over time. Clean with a soft, dry cloth and\n                    condition regularly with leather cream.\n                  </p>\n                  <p className=\"mb-3\">\n                    <strong>Dimensions:</strong> 9.5\" W x 7\" H x 3\" D. Strap\n                    drop adjustable from 20\" to 24\". Weight: 1.2 lbs.\n                  </p>\n                  <p>\n                    <strong>Shipping & Returns:</strong> Free standard shipping\n                    on orders over $200. 30-day return policy with original\n                    receipt and tags attached.\n                  </p>\n                </div>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/empty-shopping-cart-01/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\n\nexport default function EmptyShoppingCart01() {\n  return (\n    <section className=\"grid min-h-screen place-items-center justify-center\">\n      <div className=\"container mx-auto py-16\">\n        <div className=\"text-center\">\n          <p className=\"text-primary font-semibold\">Store</p>\n          <h2 className=\"mt-4 text-2xl font-bold\">\n            Your Shopping Cart is Empty\n          </h2>\n          <img\n            src=\"https://v3.material-tailwind.com/cart-illustration.png\"\n            alt=\"Empty cart\"\n            className=\"mx-auto my-8 max-h-[30rem]\"\n          />\n          <Button>Back to Store</Button>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/faq-left-title-01/page.tsx",
    "content": "import { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    title: \"How do I order?\",\n    desc: \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n  {\n    title: \"How can i make the payment?\",\n    desc: \"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\",\n  },\n  {\n    title: \"How much time does it take to receive the order?\",\n    desc: \"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\",\n  },\n  {\n    title: \"Can I resell the products?\",\n    desc: \"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\",\n  },\n]\n\nexport default function FaqLeftTitle01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"container mx-auto grid justify-between gap-6 lg:grid-cols-5\">\n        <div className=\"col-span-2\">\n          <h2 className=\"mb-4 text-3xl leading-snug font-bold\">\n            Frequently asked questions\n          </h2>\n          <p className=\"text-muted-foreground max-w-sm text-lg\">\n            A lot of people don&apos;t appreciate the moment until it&apos;s\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\n            do\n          </p>\n        </div>\n        <div className=\"col-span-3 grid grid-cols-1 gap-6 md:grid-cols-2\">\n          {DATA.map(({ title, desc }, key) => (\n            <Card key={key} className=\"border-none shadow-none\">\n              <CardHeader className=\"gap-0 border-b px-6\">\n                <h3 className=\"text-lg font-semibold\">{title}</h3>\n              </CardHeader>\n              <CardContent className=\"px-6\">\n                <p className=\"text-muted-foreground\">{desc}</p>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/faqs-cards-icons-01/page.tsx",
    "content": "import { CreditCard, ShoppingCart, Users } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    icon: ShoppingCart,\n    title: \"How do I order?\",\n    desc: \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n  {\n    icon: CreditCard,\n    title: \"How can i make the payment?\",\n    desc: \"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\",\n  },\n  {\n    icon: Users,\n    title: \"How much time does it take to receive the order?\",\n    desc: \"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\",\n  },\n]\n\nexport default function FaqsCardsIcons01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">\n            Frequently asked questions\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-xl text-lg\">\n            A lot of people don&apos;t appreciate the moment until it&apos;s\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\n            do\n          </p>\n        </div>\n        <div className=\"my-20 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\n            <Card key={key}>\n              <CardHeader className=\"gap-0 border-b\">\n                <div className=\"bg-primary mb-6 grid h-12 w-12 place-items-center rounded-lg\">\n                  <Icon className=\"text-primary-foreground h-6 w-6\" />\n                </div>\n                <h3 className=\"text-base font-semibold\">{title}</h3>\n              </CardHeader>\n              <CardContent className=\"px-6\">\n                <p className=\"text-muted-foreground\">{desc}</p>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n        <div className=\"text-center\">\n          <h3 className=\"text-2xl font-bold\">Need more help?</h3>\n          <p className=\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\">\n            Send us an email with more details about your specific needs.\n          </p>\n          <Button size=\"lg\">Submit a Request</Button>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/faqs-grid-01/page.tsx",
    "content": "import {\n  CreditCard,\n  Package,\n  RefreshCw,\n  ShoppingCart,\n  Store,\n  Truck,\n} from \"lucide-react\"\n\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    icon: ShoppingCart,\n    title: \"How do I order?\",\n    desc: \"Browse our collection, add items to your cart, and proceed to checkout. We accept multiple payment methods including credit cards, PayPal, and digital wallets for your convenience.\",\n  },\n  {\n    icon: CreditCard,\n    title: \"How can I make the payment?\",\n    desc: \"We accept all major credit cards, debit cards, PayPal, Apple Pay, and Google Pay. All transactions are secured with industry-standard encryption to protect your information.\",\n  },\n  {\n    icon: Truck,\n    title: \"How much time does it take to receive the order?\",\n    desc: \"Standard shipping takes 3-5 business days. Express shipping is available for 1-2 day delivery. International orders typically arrive within 7-14 business days depending on your location.\",\n  },\n  {\n    icon: Store,\n    title: \"Can I resell the products?\",\n    desc: \"Products purchased for personal use cannot be resold without authorization. For wholesale or reseller inquiries, please contact our business development team at business@example.com.\",\n  },\n  {\n    icon: Package,\n    title: \"Where do I find the shipping details?\",\n    desc: \"Shipping information is available in your account under 'Order History'. You'll receive tracking details via email once your order ships, allowing you to monitor delivery progress.\",\n  },\n  {\n    icon: RefreshCw,\n    title: \"What is your return policy?\",\n    desc: \"We offer a 30-day return policy on most items. Products must be in original condition with tags attached. Refunds are processed within 5-7 business days after we receive your return.\",\n  },\n]\n\nexport default function FaqsGrid01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-4xl font-bold\">\n            Frequently Asked Questions\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Find answers to common questions about our products, shipping, and\n            policies. Can't find what you're looking for? Contact our support\n            team.\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ icon: Icon, title, desc }, key) => (\n            <Card\n              key={key}\n              className=\"group hover:border-primary/50 transition-all hover:shadow-lg\"\n            >\n              <CardHeader className=\"px-6\">\n                <div className=\"bg-primary/10 mb-3 flex h-12 w-12 items-center justify-center rounded-full\">\n                  <Icon className=\"text-primary h-6 w-6\" />\n                </div>\n                <h3 className=\"text-xl leading-tight\">{title}</h3>\n              </CardHeader>\n              <CardContent>\n                <p className=\"text-muted-foreground leading-relaxed\">{desc}</p>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/faqs-grid-cta-01/page.tsx",
    "content": "import { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    title: \"How do I order?\",\n    desc: \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n  {\n    title: \"How can i make the payment?\",\n    desc: \"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at.\",\n  },\n  {\n    title: \"How much time does it take to receive the order?\",\n    desc: \"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it?\",\n  },\n  {\n    title: \"Can I resell the products?\",\n    desc: \"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\",\n  },\n  {\n    title: \"Where do I find the shipping details?\",\n    desc: \"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment.\",\n  },\n  {\n    title: \"How do I order?\",\n    desc: \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n]\n\nexport default function FaqsGridCta01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-20 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">\n            Frequently asked questions\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            A lot of people don&apos;t appreciate the moment until it&apos;s\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\n            do\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ title, desc }, key) => (\n            <Card key={key}>\n              <CardHeader className=\"gap-0 border-b px-6\">\n                <h3 className=\"text-lg font-semibold\">{title}</h3>\n              </CardHeader>\n              <CardContent className=\"px-6\">\n                <p className=\"text-muted-foreground\">{desc}</p>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n        <div className=\"mt-20 text-center\">\n          <h3 className=\"text-2xl font-bold\">Need more help?</h3>\n          <p className=\"text-muted-foreground mx-auto mt-4 mb-6 text-lg\">\n            Send us an email with more details about your specific needs.\n          </p>\n          <Button size=\"lg\">Submit a Request</Button>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/faqs-list-01/page.tsx",
    "content": "import {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\n\nconst DATA = [\n  {\n    value: \"one\",\n    title: \"How do I order?\",\n    desc: \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n  {\n    value: \"two\",\n    title: \"How can i make the payment?\",\n    desc: \"It really matters and then like it really doesn't matter. What matters is the people who are sparked by it. And the people who are like offended by it, it doesn't matter. Because it's about motivating the doers. Because I'm here to follow my dreams and inspire other people to follow their dreams, too. We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams. If you have the opportunity to play this game of life you need to appreciate every moment. A lot of people don't appreciate the moment until it's passed.\",\n  },\n  {\n    value: \"three\",\n    title: \"How much time does it take to receive the order?\",\n    desc: \"The time is now for it to be okay to be great. People in this world shun people for being great. For being a bright color. For standing out. But the time is now to be okay to be the greatest you. Would you believe in what you believe in, if you were the only one who believed it? If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\",\n  },\n  {\n    value: \"four\",\n    title: \"Can I resell the products?\",\n    desc: \"I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything. If everything I did failed - which it doesn't, it actually succeeds - just the fact that I'm willing to fail is an inspiration. People are so scared to lose that they don't even try. Like, one thing people can't say is that I'm not trying, and I'm not trying my hardest, and I'm not trying to do the best way I know how.\",\n  },\n  {\n    value: \"five\",\n    title: \"Where do I find the shipping details?\",\n    desc: \"There's nothing I really wanted to do in life that I wasn't able to get good at. That's my skill. I'm not really specifically talented at anything except for the ability to learn. That's what I do. That's what I'm here for. Don't be afraid to be wrong because you can't learn anything from a compliment. I always felt like I could do anything. That's the main thing people are controlled by! Thoughts- their perception of themselves! They're slowed down by their perception of themselves. If you're taught you can't do anything, you won't do anything. I was taught I could do everything.\",\n  },\n]\n\nexport default function FaqsList01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"mx-auto max-w-3xl\">\n        <div className=\"mb-20 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">\n            Frequently asked questions\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            A lot of people don&apos;t appreciate the moment until it&apos;s\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\n            do\n          </p>\n        </div>\n        <Accordion type=\"single\" collapsible>\n          {DATA.map(({ title, desc, value }, key) => (\n            <AccordionItem key={key} value={value}>\n              <AccordionTrigger>\n                <h3 className=\"text-lg font-semibold\">{title}</h3>\n              </AccordionTrigger>\n              <AccordionContent className=\"text-muted-foreground leading-relaxed\">\n                {desc}\n              </AccordionContent>\n            </AccordionItem>\n          ))}\n        </Accordion>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-01/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers01() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-2 md:!justify-between\">\n          <p className=\"text-foreground text-center text-sm font-medium\">\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim.\n          </p>\n          <div className=\"flex gap-1\">\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"Twitter\">\n                <Twitter className=\"h-4 w-4\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"YouTube\">\n                <Youtube className=\"h-4 w-4\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"Instagram\">\n                <Instagram className=\"h-4 w-4\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"GitHub\">\n                <Github className=\"h-4 w-4\" />\n              </a>\n            </Button>\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-02/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nconst LINKS = [\n  {\n    title: \"Company\",\n    items: [\n      { title: \"About Us\", href: \"#\" },\n      { title: \"Careers\", href: \"#\" },\n      { title: \"Premium Tools\", href: \"#\" },\n      { title: \"Blogs\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Pages\",\n    items: [\n      { title: \"Login\", href: \"#\" },\n      { title: \"Register\", href: \"#\" },\n      { title: \"Add List\", href: \"#\" },\n      { title: \"Contact\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Legal\",\n    items: [\n      { title: \"Terms\", href: \"#\" },\n      { title: \"Privacy\", href: \"#\" },\n      { title: \"Teams\", href: \"#\" },\n      { title: \"About Us\", href: \"#\" },\n    ],\n  },\n]\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers02() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid grid-cols-1 justify-between gap-10 md:grid-cols-2\">\n          <div className=\"grid grid-cols-3 justify-between gap-x-6 gap-y-4\">\n            {LINKS.map(({ title, items }) => (\n              <ul key={title}>\n                <p className=\"mb-2 font-semibold\">{title}</p>\n                {items.map(({ title, href }) => (\n                  <li key={title} className=\"mb-1\">\n                    <a\n                      href={href}\n                      className=\"text-foreground hover:text-primary\"\n                    >\n                      {title}\n                    </a>\n                  </li>\n                ))}\n              </ul>\n            ))}\n          </div>\n          <div className=\"lg:ml-auto\">\n            <p className=\"mb-2 font-semibold\">Subscribe</p>\n            <p className=\"text-foreground max-w-sm [text-wrap:_balance]\">\n              Get access to subscriber exclusive deals and be the first who gets\n              informed about fresh sales.\n            </p>\n            <div className=\"mt-4 flex w-full max-w-sm items-end gap-2\">\n              <div className=\"w-full\">\n                <Label\n                  htmlFor=\"email\"\n                  className=\"mb-2 inline-block text-sm font-semibold\"\n                >\n                  Your Email\n                </Label>\n                <Input\n                  type=\"email\"\n                  id=\"email\"\n                  placeholder=\"someone@example.com\"\n                />\n              </div>\n              <Button className=\"shrink-0\">Subscribe</Button>\n            </div>\n            <div className=\"mt-3 flex items-center gap-2\">\n              <Checkbox id=\"checkbox-link\" />\n              <Label\n                htmlFor=\"checkbox-link\"\n                className=\"text-foreground flex gap-1 select-none\"\n              >\n                I agree with the\n                <a href=\"#\" className=\"text-primary\">\n                  terms and conditions\n                </a>\n              </Label>\n            </div>\n          </div>\n        </div>\n        <p className=\"text-foreground mt-10 text-center\">\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\n        </p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-03/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"Home\", href: \"#\" },\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Blog\", href: \"#\" },\n  { title: \"Service\", href: \"#\" },\n]\n\nexport default function Footers03() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"border-surface flex flex-row flex-wrap items-center !justify-center gap-x-10 gap-y-3 border-t pt-8 text-center md:!justify-between\">\n          <p className=\"text-foreground\">\n            Copyright &copy; {YEAR} Creative Tim\n          </p>\n          <ul className=\"flex flex-wrap items-center justify-center gap-6\">\n            {LINKS.map(({ title, href }, key) => (\n              <li key={key}>\n                <a href={href} className=\"text-foreground hover:text-primary\">\n                  {title}\n                </a>\n              </li>\n            ))}\n            <Button className=\"w-full sm:max-w-fit\">Sign in</Button>\n          </ul>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-04/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Careers\", href: \"#\" },\n  { title: \"Press\", href: \"#\" },\n  { title: \"Blog\", href: \"#\" },\n  { title: \"Pricing\", href: \"#\" },\n]\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers04() {\n  return (\n    <section className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto text-center\">\n        <Card className=\"bg-primary border-primary grid justify-center px-6 py-12 text-center shadow-none\">\n          <h2 className=\"text-secondary text-2xl font-semibold\">\n            Be the first who see the news\n          </h2>\n          <p className=\"text-secondary mt-4 max-w-lg [text-wrap:_balance]\">\n            Your company may not be in the software business, but eventually, a\n            software company will be in your business.\n          </p>\n          <div className=\"mx-auto mt-10 flex w-full max-w-sm flex-col gap-x-2 gap-y-4 sm:flex-row\">\n            <Input\n              type=\"email\"\n              id=\"email\"\n              placeholder=\"someone@example.com\"\n              className=\"border-white/20 bg-white/10 text-white placeholder:text-white/60\"\n            />\n            <Button variant=\"secondary\" className=\"shrink-0\">\n              Subscribe\n            </Button>\n          </div>\n        </Card>\n        <div className=\"mt-16 mb-6 flex flex-col items-center !justify-center gap-x-10 gap-y-3 lg:flex-row lg:!justify-between\">\n          <p className=\"font-semibold\">Creative Tim</p>\n          <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n            {LINKS.map(({ title, href }, key) => (\n              <li key={key}>\n                <a href={href} className=\"text-foreground hover:text-primary\">\n                  {title}\n                </a>\n              </li>\n            ))}\n          </ul>\n          <div className=\"flex gap-1\">\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"Twitter\">\n                <Twitter className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"YouTube\">\n                <Youtube className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"Instagram\">\n                <Instagram className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button asChild variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n              <a href=\"#\" aria-label=\"GitHub\">\n                <Github className=\"h-5 w-5\" />\n              </a>\n            </Button>\n          </div>\n        </div>\n        <p className=\"text-foreground text-sm\">\n          All rights reserved. Copyright &copy; {YEAR} Creative Tim\n        </p>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-05/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst LINKS = [\n  {\n    title: \"Company\",\n    items: [\n      { title: \"About Us\", href: \"#\" },\n      { title: \"Careers\", href: \"#\" },\n      { title: \"Premium Tools\", href: \"#\" },\n      { title: \"Blogs\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Pages\",\n    items: [\n      { title: \"Login\", href: \"#\" },\n      { title: \"Register\", href: \"#\" },\n      { title: \"Add List\", href: \"#\" },\n      { title: \"Contact\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Legal\",\n    items: [\n      { title: \"Terms\", href: \"#\" },\n      { title: \"Privacy\", href: \"#\" },\n      { title: \"Teams\", href: \"#\" },\n      { title: \"About Us\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Resources\",\n    items: [\n      { title: \"Blog\", href: \"#\" },\n      { title: \"Services\", href: \"#\" },\n      { title: \"Products\", href: \"#\" },\n      { title: \"Pricing\", href: \"#\" },\n    ],\n  },\n]\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers05() {\n  return (\n    <footer className=\"bg-primary pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid grid-cols-1 justify-between gap-10 sm:grid-cols-2\">\n          <div className=\"row-start-2 grid grid-cols-2 justify-between gap-6 sm:row-auto lg:grid-cols-4\">\n            {LINKS.map(({ title, items }) => (\n              <ul key={title} className=\"space-y-2\">\n                <p className=\"text-secondary mb-2 font-semibold\">{title}</p>\n                {items.map(({ title, href }) => (\n                  <li key={title}>\n                    <a\n                      href={href}\n                      className=\"text-secondary hover:text-secondary\"\n                    >\n                      {title}\n                    </a>\n                  </li>\n                ))}\n              </ul>\n            ))}\n          </div>\n          <div className=\"lg:ml-auto\">\n            <p className=\"text-secondary mb-4 flex font-semibold lg:justify-end\">\n              Language & Currency\n            </p>\n            <Select>\n              <SelectTrigger className=\"mb-4 border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\">\n                <SelectValue placeholder=\"Select Language\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"english\">English</SelectItem>\n                <SelectItem value=\"spanish\">Spanish</SelectItem>\n                <SelectItem value=\"hindi\">Hindi</SelectItem>\n              </SelectContent>\n            </Select>\n            <Select>\n              <SelectTrigger className=\"border-white/20 bg-white/10 text-white placeholder:text-white/60 lg:w-72\">\n                <SelectValue placeholder=\"Select Currency\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"usd\">USD</SelectItem>\n                <SelectItem value=\"euro\">Euro</SelectItem>\n                <SelectItem value=\"rupee\">Rupee</SelectItem>\n              </SelectContent>\n            </Select>\n          </div>\n        </div>\n        <div className=\"border-surface/50 mt-10 flex flex-col justify-between gap-4 border-t border-b pt-6 pb-8 md:flex-row lg:items-end\">\n          <div>\n            <p className=\"text-secondary mb-2 font-semibold\">\n              Subscribe to our newsletters\n            </p>\n            <p className=\"text-secondary\">\n              The latest news, articles and resources sent to your inbox weekly.\n            </p>\n          </div>\n          <div className=\"flex w-full items-end gap-2 md:max-w-sm\">\n            <div className=\"w-full\">\n              <Label\n                htmlFor=\"email\"\n                className=\"text-secondary mb-2 inline-block text-sm font-semibold\"\n              >\n                Your Email\n              </Label>\n              <Input\n                type=\"email\"\n                id=\"email\"\n                placeholder=\"someone@example.com\"\n                className=\"border-white/20 bg-white/10 text-white placeholder:text-white/60\"\n              />\n            </div>\n            <Button variant=\"secondary\" className=\"shrink-0\">\n              subscribe\n            </Button>\n          </div>\n        </div>\n        <p className=\"text-secondary mt-8\">\n          All rights reserved. &copy; {YEAR} Creative Tim\n        </p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-06/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst LINKS = [\n  {\n    title: \"Company\",\n    items: [\n      { title: \"About Us\", href: \"#\" },\n      { title: \"Careers\", href: \"#\" },\n      { title: \"Premium Tools\", href: \"#\" },\n      { title: \"Blogs\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Pages\",\n    items: [\n      { title: \"Login\", href: \"#\" },\n      { title: \"Register\", href: \"#\" },\n      { title: \"Add List\", href: \"#\" },\n      { title: \"Contact\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Legal\",\n    items: [\n      { title: \"Terms\", href: \"#\" },\n      { title: \"Privacy\", href: \"#\" },\n      { title: \"Teams\", href: \"#\" },\n      { title: \"About Us\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Resources\",\n    items: [\n      { title: \"Blog\", href: \"#\" },\n      { title: \"Services\", href: \"#\" },\n      { title: \"Products\", href: \"#\" },\n      { title: \"Pricing\", href: \"#\" },\n    ],\n  },\n]\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers06() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid grid-cols-1 justify-between gap-4 md:grid-cols-2\">\n          <div>\n            <h6 className=\"text-xl font-semibold\">Creative Tim</h6>\n            <p className=\"text-foreground my-4\">\n              The next generation of design systems.\n            </p>\n            <div className=\"flex gap-1\">\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"Twitter\">\n                  <Twitter className=\"h-4 w-4\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"YouTube\">\n                  <Youtube className=\"h-4 w-4\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"Instagram\">\n                  <Instagram className=\"h-4 w-4\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"GitHub\">\n                  <Github className=\"h-4 w-4\" />\n                </a>\n              </Button>\n            </div>\n          </div>\n          <div className=\"grid grid-cols-2 justify-between gap-6 lg:grid-cols-4\">\n            {LINKS.map(({ title, items }) => (\n              <ul key={title} className=\"space-y-2\">\n                <p className=\"mb-2 font-semibold\">{title}</p>\n                {items.map(({ title, href }) => (\n                  <li key={title}>\n                    <a\n                      href={href}\n                      className=\"text-foreground hover:text-primary\"\n                    >\n                      {title}\n                    </a>\n                  </li>\n                ))}\n              </ul>\n            ))}\n          </div>\n        </div>\n        <p className=\"text-foreground mt-20 text-center\">\n          &copy; {YEAR} Creative Tim. All Rights Reserved.\n        </p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-07/page.tsx",
    "content": "\"use client\"\n\nimport { Settings } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Contact Information\", href: \"#\" },\n  { title: \"Privacy Policy\", href: \"#\" },\n]\n\nconst COUNTRIES = [\n  { name: \"United States\", flag: \"🇺🇸\" },\n  { name: \"United Kingdom\", flag: \"🇬🇧\" },\n  { name: \"Canada\", flag: \"🇨🇦\" },\n  { name: \"Germany\", flag: \"🇩🇪\" },\n  { name: \"France\", flag: \"🇫🇷\" },\n  { name: \"Japan\", flag: \"🇯🇵\" },\n  { name: \"Australia\", flag: \"🇦🇺\" },\n  { name: \"Spain\", flag: \"🇪🇸\" },\n]\n\nexport default function Footers07() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"flex flex-row flex-wrap items-start justify-center gap-4 md:justify-between\">\n          <div className=\"grid gap-3\">\n            <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n              {LINKS.map(({ title, href }, key) => (\n                <li key={key}>\n                  <a\n                    href={href}\n                    className=\"text-foreground hover:text-primary font-semibold\"\n                  >\n                    {title}\n                  </a>\n                </li>\n              ))}\n            </ul>\n            <p className=\"text-foreground text-center text-sm font-medium md:text-left\">\n              All rights reserved. Copyright &copy; {YEAR} Creative Tim\n            </p>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            <Button variant=\"ghost\" size=\"icon\">\n              <Settings className=\"h-5 w-5\" />\n            </Button>\n            <Select>\n              <SelectTrigger className=\"w-64\">\n                <SelectValue placeholder=\"Select Country\" />\n              </SelectTrigger>\n              <SelectContent className=\"max-h-72\">\n                {COUNTRIES.map(({ name, flag }) => (\n                  <SelectItem key={name} value={name}>\n                    <div className=\"flex items-center gap-2\">\n                      <span className=\"text-lg\">{flag}</span>\n                      <span className=\"text-sm\">{name}</span>\n                    </div>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-08/page.tsx",
    "content": "\"use client\"\n\nimport { Settings } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers08() {\n  return (\n    <footer className=\"pt-20 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"flex flex-col items-center justify-between gap-6 md:flex-row\">\n          <p className=\"text-muted-foreground text-center text-sm md:text-left\">\n            &copy; {YEAR} Creative Tim. All rights reserved.\n          </p>\n          <div className=\"flex items-center gap-3\">\n            <Badge variant=\"secondary\" className=\"px-3 py-1\">\n              v3.0.0\n            </Badge>\n            <Button variant=\"ghost\" size=\"icon\" aria-label=\"Settings\">\n              <Settings className=\"h-5 w-5\" />\n            </Button>\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-09/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Contact Information\", href: \"#\" },\n  { title: \"Privacy Policy\", href: \"#\" },\n]\n\nexport default function Footers09() {\n  return (\n    <footer className=\"pt-20 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"flex flex-col items-start justify-between gap-8 md:flex-row md:items-center\">\n          <div className=\"space-y-3\">\n            <p className=\"text-lg font-semibold\">\n              New Features available! Upgrade to v3.0.0\n            </p>\n            <Button size=\"default\" className=\"w-full md:w-auto\">\n              Upgrade Now\n            </Button>\n          </div>\n          <div className=\"flex flex-col gap-4 md:items-end\">\n            <ul className=\"flex flex-wrap items-center gap-x-8 gap-y-2\">\n              {LINKS.map(({ title, href }, key) => (\n                <li key={key}>\n                  <a\n                    href={href}\n                    className=\"text-muted-foreground hover:text-foreground transition-colors\"\n                  >\n                    {title}\n                  </a>\n                </li>\n              ))}\n            </ul>\n            <p className=\"text-muted-foreground text-sm\">\n              &copy; {YEAR} Creative Tim. All rights reserved.\n            </p>\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-10/page.tsx",
    "content": "\"use client\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"Company\", href: \"#\" },\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Team\", href: \"#\" },\n  { title: \"Products\", href: \"#\" },\n  { title: \"Blogs\", href: \"#\" },\n  { title: \"Pricing\", href: \"#\" },\n]\n\nexport default function Footers10() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto grid place-items-center\">\n        <ul className=\"mb-10 flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n          {LINKS.map(({ title, href }, key) => (\n            <li key={key}>\n              <a\n                href={href}\n                className=\"text-foreground hover:text-primary font-semibold\"\n              >\n                {title}\n              </a>\n            </li>\n          ))}\n        </ul>\n        <p className=\"text-foreground\">Copyright &copy; {YEAR} Creative Tim</p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-11/page.tsx",
    "content": "\"use client\"\n\nconst LINKS = [\n  {\n    title: \"Company\",\n    items: [\n      { title: \"About Us\", href: \"#\" },\n      { title: \"Careers\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Pages\",\n    items: [\n      { title: \"Login\", href: \"#\" },\n      { title: \"Register\", href: \"#\" },\n    ],\n  },\n  {\n    title: \"Legal\",\n    items: [\n      { title: \"Terms\", href: \"#\" },\n      { title: \"Privacy\", href: \"#\" },\n    ],\n  },\n]\n\nconst YEAR = new Date().getFullYear()\n\nexport default function Footers11() {\n  return (\n    <footer className=\"pt-20 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-12 grid grid-cols-1 items-start justify-between gap-8 md:grid-cols-2 lg:gap-12\">\n          <div>\n            <h6 className=\"text-2xl font-semibold\">Creative Tim</h6>\n            <p className=\"text-muted-foreground mt-3 max-w-md\">\n              The reward for getting on the stage is fame.\n            </p>\n          </div>\n          <div className=\"grid grid-cols-3 gap-x-8 gap-y-6 md:ml-auto\">\n            {LINKS.map(({ title, items }) => (\n              <ul key={title} className=\"space-y-3\">\n                <p className=\"mb-3 font-semibold\">{title}</p>\n                {items.map(({ title, href }) => (\n                  <li key={title}>\n                    <a\n                      href={href}\n                      className=\"text-muted-foreground hover:text-foreground transition-colors\"\n                    >\n                      {title}\n                    </a>\n                  </li>\n                ))}\n              </ul>\n            ))}\n          </div>\n        </div>\n        <div className=\"border-border flex flex-col items-start justify-between gap-6 border-t pt-8 md:flex-row md:items-center\">\n          <p className=\"text-muted-foreground max-w-2xl text-sm\">\n            The price of fame is you can&apos;t get off the stage.\n          </p>\n          <p className=\"text-muted-foreground text-sm whitespace-nowrap\">\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\n          </p>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-12/page.tsx",
    "content": "\"use client\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Contact Information\", href: \"#\" },\n  { title: \"Privacy Policy\", href: \"#\" },\n  { title: \"Terms & Conditions\", href: \"#\" },\n  { title: \"FAQ\", href: \"#\" },\n]\n\nexport default function Footers12() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto text-center\">\n        <div className=\"flex flex-row flex-wrap items-center !justify-center gap-6 lg:!justify-between\">\n          <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n            {LINKS.map(({ title, href }, key) => (\n              <li key={key}>\n                <a\n                  href={href}\n                  className=\"text-foreground hover:text-primary font-semibold\"\n                >\n                  {title}\n                </a>\n              </li>\n            ))}\n          </ul>\n          <p className=\"text-foreground text-sm font-medium\">\n            All rights reserved. Copyright &copy; {YEAR} Creative Tim\n          </p>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-13/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"Company\", href: \"#\" },\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Team\", href: \"#\" },\n  { title: \"Products\", href: \"#\" },\n  { title: \"Blogs\", href: \"#\" },\n  { title: \"Pricing\", href: \"#\" },\n]\n\nexport default function Footers13() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto grid place-items-center\">\n        <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n          {LINKS.map(({ title, href }, key) => (\n            <li key={key}>\n              <a\n                href={href}\n                className=\"text-foreground hover:text-primary font-semibold\"\n              >\n                {title}\n              </a>\n            </li>\n          ))}\n        </ul>\n        <div className=\"my-8 flex gap-1\">\n          <Button asChild variant=\"ghost\" size=\"icon\">\n            <a href=\"#\" aria-label=\"Twitter\">\n              <Twitter className=\"h-5 w-5\" />\n            </a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"icon\">\n            <a href=\"#\" aria-label=\"YouTube\">\n              <Youtube className=\"h-5 w-5\" />\n            </a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"icon\">\n            <a href=\"#\" aria-label=\"Instagram\">\n              <Instagram className=\"h-5 w-5\" />\n            </a>\n          </Button>\n          <Button asChild variant=\"ghost\" size=\"icon\">\n            <a href=\"#\" aria-label=\"GitHub\">\n              <Github className=\"h-5 w-5\" />\n            </a>\n          </Button>\n        </div>\n        <p className=\"text-foreground\">Copyright &copy; {YEAR} Creative Tim</p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-14/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Careers\", href: \"#\" },\n  { title: \"Press\", href: \"#\" },\n  { title: \"Blog\", href: \"#\" },\n  { title: \"Pricing\", href: \"#\" },\n]\n\nexport default function Footers14() {\n  return (\n    <footer className=\"bg-primary pt-20 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-16 grid grid-cols-1 gap-12 lg:grid-cols-2 lg:gap-8\">\n          <div>\n            <h6 className=\"text-2xl font-semibold text-white\">Creative Tim</h6>\n            <p className=\"text-secondary mt-3 max-w-md\">\n              The reward for getting on the stage is fame.\n            </p>\n            <ul className=\"mt-12 flex flex-wrap items-center gap-x-8 gap-y-3\">\n              {LINKS.map(({ title, href }, key) => (\n                <li key={key}>\n                  <a\n                    href={href}\n                    className=\"text-secondary transition-colors hover:text-white\"\n                  >\n                    {title}\n                  </a>\n                </li>\n              ))}\n            </ul>\n          </div>\n          <div className=\"lg:ml-auto\">\n            <p className=\"mb-6 text-lg font-semibold text-white\">Get the App</p>\n            <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2\">\n              <Button\n                variant=\"outline\"\n                className=\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\"\n              >\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  xmlSpace=\"preserve\"\n                  viewBox=\"0 0 16 16\"\n                  className=\"h-14 w-14 shrink-0\"\n                >\n                  <path\n                    fill=\"#2196F3\"\n                    d=\"M8.32 7.68.58 15.42c-.37-.35-.57-.83-.57-1.35V1.93C.01 1.4.22.92.6.56l7.72 7.12z\"\n                  />\n                  <path\n                    fill=\"#FFC107\"\n                    d=\"M15.01 8c0 .7-.38 1.32-1.01 1.67l-2.2 1.22-2.73-2.52-.75-.69 2.89-2.89L14 6.33c.63.35 1.01.97 1.01 1.67z\"\n                  />\n                  <path\n                    fill=\"#4CAF50\"\n                    d=\"M8.32 7.68.6.56C.7.46.83.37.96.29 1.59-.09 2.35-.1 3 .26l8.21 4.53-2.89 2.89z\"\n                  />\n                  <path\n                    fill=\"#F44336\"\n                    d=\"M11.8 10.89 3 15.74c-.31.18-.66.26-1 .26-.36 0-.72-.09-1.04-.29a1.82 1.82 0 0 1-.38-.29l7.74-7.74.75.69 2.73 2.52z\"\n                  />\n                </svg>\n                <div className=\"flex flex-col justify-center\">\n                  <span className=\"text-[10px] font-normal tracking-wide uppercase\">\n                    GET IT ON\n                  </span>\n                  <span className=\"text-xl leading-tight font-semibold\">\n                    Google Play\n                  </span>\n                </div>\n              </Button>\n              <Button\n                variant=\"outline\"\n                className=\"h-auto gap-4 rounded-xl border-0 bg-black px-6 py-4 text-start text-white transition-all hover:bg-white/10\"\n              >\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  enableBackground=\"new 0 0 22.185 27\"\n                  viewBox=\"0 0 22.185 27\"\n                  className=\"h-14 w-14 shrink-0 fill-white\"\n                >\n                  <path d=\"M18.436 14.271c0-2.225 1.216-4.166 3.02-5.194-.942-1.156-2.359-2.192-3.921-2.496-2.13-.415-3.345.276-4.131.553-.786.277-1.83.526-1.83.526s-1.043-.249-1.83-.526C8.959 6.857 7.744 6.165 5.614 6.58s-3.99 2.192-4.746 3.776c-1.458 3.057-.858 6.903.172 9.669 1.029 2.767 3.75 6.633 5.86 6.944 1.501.221 2.43-.816 4.674-1.079 2.244.263 3.173 1.3 4.674 1.079 2.11-.311 4.831-4.177 5.86-6.944.025-.068.051-.138.076-.208C19.987 18.935 18.436 16.784 18.436 14.271zM11.041 6.075c0 0 2.087.277 3.982-1.875s1.356-4.188 1.356-4.188-2.087-.277-3.982 1.875S11.041 6.075 11.041 6.075z\" />\n                </svg>\n                <div className=\"flex flex-col justify-center\">\n                  <span className=\"text-[10px] font-normal tracking-wide uppercase\">\n                    Download on the\n                  </span>\n                  <span className=\"text-xl leading-tight font-semibold\">\n                    App Store\n                  </span>\n                </div>\n              </Button>\n            </div>\n          </div>\n        </div>\n        <div className=\"border-surface/50 flex flex-col items-center justify-between gap-6 border-t pt-8 md:flex-row\">\n          <p className=\"text-secondary order-2 md:order-1\">\n            &copy; {YEAR} Creative Tim. All Rights Reserved.\n          </p>\n          <div className=\"order-1 flex gap-1 md:order-2\">\n            <Button\n              asChild\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"text-white hover:text-white\"\n            >\n              <a href=\"#\" aria-label=\"Twitter\">\n                <Twitter className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button\n              asChild\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"text-white hover:text-white\"\n            >\n              <a href=\"#\" aria-label=\"YouTube\">\n                <Youtube className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button\n              asChild\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"text-white hover:text-white\"\n            >\n              <a href=\"#\" aria-label=\"Instagram\">\n                <Instagram className=\"h-5 w-5\" />\n              </a>\n            </Button>\n            <Button\n              asChild\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"text-white hover:text-white\"\n            >\n              <a href=\"#\" aria-label=\"GitHub\">\n                <Github className=\"h-5 w-5\" />\n              </a>\n            </Button>\n          </div>\n        </div>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/footers-15/page.tsx",
    "content": "\"use client\"\n\nimport { Github, Instagram, Twitter, Youtube } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\n\nconst YEAR = new Date().getFullYear()\n\nconst LINKS = [\n  { title: \"About Us\", href: \"#\" },\n  { title: \"Careers\", href: \"#\" },\n  { title: \"Press\", href: \"#\" },\n  { title: \"Blog\", href: \"#\" },\n  { title: \"Pricing\", href: \"#\" },\n]\n\nexport default function Footers15() {\n  return (\n    <footer className=\"pt-16 pb-8\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-4 flex flex-col justify-between gap-4 md:flex-row\">\n          <div>\n            <h6 className=\"text-xl font-semibold\">Creative Tim</h6>\n            <ul className=\"mt-4 flex flex-wrap items-center gap-x-6 gap-y-2\">\n              {LINKS.map(({ title, href }, key) => (\n                <li key={key}>\n                  <a\n                    href={href}\n                    className=\"text-foreground hover:text-primary font-medium\"\n                  >\n                    {title}\n                  </a>\n                </li>\n              ))}\n            </ul>\n          </div>\n          <div className=\"md:text-right\">\n            <p className=\"font-semibold\">\n              The reward for getting on the stage is fame.\n            </p>\n            <p className=\"mb-4 font-semibold\">\n              The price of fame is you can&apos;t get off the stage.\n            </p>\n            <div className=\"flex gap-1 md:justify-end\">\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"Twitter\">\n                  <Twitter className=\"h-5 w-5\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"YouTube\">\n                  <Youtube className=\"h-5 w-5\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"Instagram\">\n                  <Instagram className=\"h-5 w-5\" />\n                </a>\n              </Button>\n              <Button asChild variant=\"ghost\" size=\"icon\">\n                <a href=\"#\" aria-label=\"GitHub\">\n                  <Github className=\"h-5 w-5\" />\n                </a>\n              </Button>\n            </div>\n          </div>\n        </div>\n        <p className=\"text-foreground\">\n          All rights reserved. &copy; {YEAR} Creative Tim\n        </p>\n      </div>\n    </footer>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/grid-ecommerce-01/page.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\n\nconst CARDS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\",\n    title: \"New\",\n    subtitle: \"Urban Chick Collection\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\",\n    title: \"Shop Sales\",\n    subtitle: \"Urban Chick Collection\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1535220459927-c8428851fd45?auto=format&fit=crop&q=80&w=400&h=400\",\n    title: \"50% off\",\n    subtitle: \"Urban Chick Collection\",\n  },\n]\n\nexport default function GridEcommerce01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <p className=\"mb-8 font-semibold\">\n          Gear Up and Enjoy Savings | Get up to 50% off on select items\n        </p>\n        <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {CARDS.map(({ image, title, subtitle }, index) => (\n            <Card\n              key={index}\n              className=\"group relative h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\"\n            >\n              <img\n                src={image}\n                alt={title}\n                className=\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\"\n              />\n              <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\" />\n              <div className=\"absolute inset-x-0 bottom-0 p-6 text-white\">\n                <p className=\"mb-2 text-sm font-semibold tracking-wider text-white/90 uppercase\">\n                  {title}\n                </p>\n                <h3 className=\"mb-4 text-2xl font-bold\">{subtitle}</h3>\n                <Button variant=\"link\" className=\"p-0 text-white\">\n                  Read More\n                </Button>\n              </div>\n            </Card>\n          ))}\n        </div>\n        <Card className=\"group relative mt-6 h-96 overflow-hidden border-0 p-0 shadow-lg transition-all hover:shadow-xl\">\n          <img\n            src=\"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\"\n            alt=\"Formal Elegance\"\n            className=\"h-full w-full object-cover object-center transition-transform duration-500 group-hover:scale-105\"\n          />\n          <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-transparent\" />\n          <div className=\"absolute inset-0 flex items-center justify-center p-8 text-white\">\n            <div className=\"text-center\">\n              <p className=\"mb-3 text-lg font-bold tracking-wider uppercase\">\n                UP TO 70%\n              </p>\n              <h3 className=\"mb-6 text-3xl font-bold md:text-4xl\">\n                Formal Elegance Series\n              </h3>\n              <Button variant=\"link\" size=\"lg\" className=\"p-0 text-white\">\n                Discover\n              </Button>\n            </div>\n          </div>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/highlighted-blog-posts-01/page.tsx",
    "content": "\"use client\"\n\nimport { Globe, Heart, Mic, Puzzle } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nconst POSTS = [\n  {\n    img: \"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&auto=format&fit=crop\",\n    icon: Heart,\n    title: \"Cultural\",\n    desc: \"257 spots\",\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1511593358241-7eea1f3c84e5?w=800&auto=format&fit=crop\",\n    icon: Puzzle,\n    title: \"Modern Life\",\n    desc: \"117 spots\",\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&auto=format&fit=crop\",\n    icon: Globe,\n    title: \"Popularity\",\n    desc: \"363 spots\",\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=800&auto=format&fit=crop\",\n    icon: Mic,\n    title: \"Good Vibes\",\n    desc: \"215 spots\",\n  },\n]\n\nexport default function HighlightedBlogPosts01() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <div className=\"mb-16 grid place-items-center text-center\">\n        <h2 className=\"my-4 text-3xl font-bold\">Check out what&apos;s new</h2>\n        <p className=\"text-muted-foreground mx-auto max-w-xl\">\n          We get insulted by others, lose trust for those others. We get back\n          freezes every winter\n        </p>\n      </div>\n      <div className=\"grid grid-cols-1 gap-x-0 gap-y-6 md:grid-cols-3 md:gap-x-6\">\n        <Card className=\"bg-primary text-primary-foreground flex flex-col justify-between py-0\">\n          <CardHeader className=\"p-6 sm:p-8\">\n            <p className=\"block text-center font-semibold opacity-80\">\n              Landscape\n            </p>\n          </CardHeader>\n          <CardContent className=\"p-6 sm:p-8\">\n            <CardTitle className=\"text-center text-2xl\">\n              Nature&apos;s Light\n            </CardTitle>\n            <CardDescription className=\"py-6 text-center opacity-80\">\n              It really matters and then like it really doesn&apos;t matter.\n              What matters is the people who are sparked by it.\n            </CardDescription>\n          </CardContent>\n          <CardFooter className=\"p-6 text-center sm:p-8\">\n            <Button\n              size=\"sm\"\n              variant=\"secondary\"\n              className=\"bg-background text-foreground hover:bg-background/90\"\n            >\n              Read More\n            </Button>\n          </CardFooter>\n        </Card>\n        <div className=\"col-span-2 grid grid-cols-1 gap-6 sm:grid-cols-2\">\n          {POSTS.map(({ img, icon: Icon, title, desc }) => (\n            <Card\n              key={title}\n              className=\"relative grid min-h-48 w-full overflow-hidden border-0 py-0\"\n            >\n              <img\n                src={img}\n                alt={title}\n                className=\"absolute inset-0 h-full w-full object-cover object-center\"\n              />\n              <div className=\"absolute inset-0 h-full w-full bg-black/60\" />\n              <CardContent className=\"relative flex h-full flex-col justify-between p-6\">\n                <Icon className=\"h-8 w-8 stroke-2 text-white\" />\n                <div className=\"space-y-0.5\">\n                  <CardTitle className=\"text-xl text-white\">{title}</CardTitle>\n                  <CardDescription className=\"text-sm text-white/80\">\n                    {desc}\n                  </CardDescription>\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/interactive-product-preview-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  Eye,\n  Heart,\n  Minus,\n  Plus,\n  ShoppingCart,\n  Star,\n  Truck,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\n\nexport default function InteractiveProductPreview01() {\n  const [quantity, setQuantity] = useState(1)\n  const [isFavorite, setIsFavorite] = useState(false)\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto text-center\">\n        <Badge\n          variant=\"outline\"\n          className=\"border-primary/30 bg-primary/10 text-primary mb-4\"\n        >\n          Room Previewer\n        </Badge>\n        <h2 className=\"my-4 text-4xl font-bold tracking-tight\">\n          Visualize Your Space\n        </h2>\n        <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg leading-relaxed\">\n          Easily preview furniture, decor, and more in your space, ensuring\n          everything fits perfectly and looks just right. It&apos;s the ultimate\n          tool for hassle-free home customization and design!\n        </p>\n      </div>\n\n      <div className=\"container mx-auto mt-14\">\n        <div className=\"relative\">\n          <img\n            src=\"https://v3.material-tailwind.com/room.png\"\n            alt=\"Room preview\"\n            className=\"h-[680px] w-full rounded-2xl object-cover object-center shadow-2xl\"\n          />\n          <div className=\"absolute inset-0 h-full w-full rounded-2xl bg-gradient-to-tr from-black/30 via-black/10 to-transparent\" />\n\n          <div className=\"absolute top-6 right-6 bottom-6 left-6 !ml-auto flex max-w-[26rem] flex-col justify-between rounded-2xl border border-white/30 bg-white/90 px-6 py-6 shadow-2xl backdrop-blur-xl dark:bg-gray-900/90\">\n            <div>\n              <div className=\"mb-4 flex items-start justify-between\">\n                <Badge className=\"bg-green-500 text-white\">New Arrival</Badge>\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  className={`h-9 w-9 transition-colors ${\n                    isFavorite\n                      ? \"text-red-500 hover:text-red-600\"\n                      : \"text-muted-foreground hover:text-red-500\"\n                  }`}\n                  onClick={() => setIsFavorite(!isFavorite)}\n                >\n                  <Heart\n                    className={`h-5 w-5 ${isFavorite ? \"fill-current\" : \"\"}`}\n                  />\n                </Button>\n              </div>\n\n              <div className=\"mx-auto mb-6 grid place-items-center\">\n                <div className=\"bg-muted/50 mb-4 rounded-xl p-6\">\n                  <img\n                    src=\"https://v3.material-tailwind.com/vase.svg\"\n                    alt=\"Vase\"\n                    className=\"h-32 w-32\"\n                  />\n                </div>\n                <h3 className=\"text-2xl font-bold\">Elegant Ceramic Vase</h3>\n\n                <div className=\"mt-3 flex items-center gap-2\">\n                  <div className=\"flex items-center gap-1\">\n                    {[1, 2, 3, 4, 5].map((star) => (\n                      <Star\n                        key={star}\n                        className=\"h-4 w-4 fill-yellow-400 text-yellow-400\"\n                      />\n                    ))}\n                  </div>\n                  <span className=\"text-muted-foreground text-sm\">\n                    (127 reviews)\n                  </span>\n                </div>\n\n                <div className=\"mt-4 flex items-baseline gap-2\">\n                  <p className=\"text-3xl font-bold\">$149.90</p>\n                  <span className=\"text-muted-foreground text-sm line-through\">\n                    $199.90\n                  </span>\n                </div>\n              </div>\n\n              <p className=\"text-muted-foreground mx-auto max-w-xs text-center text-sm leading-relaxed\">\n                Add a touch of sophistication to your home with our handcrafted\n                ceramic vase.\n              </p>\n\n              <div className=\"bg-muted/50 mb-2 flex items-center justify-center gap-2 rounded-lg py-3\">\n                <Truck className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n                <span className=\"text-sm font-medium\">\n                  Free shipping on orders over $100\n                </span>\n              </div>\n\n              <div className=\"mb-4 flex items-center justify-center gap-3\">\n                <span className=\"text-sm font-medium\">Quantity:</span>\n                <div className=\"flex items-center gap-2\">\n                  <Button\n                    variant=\"outline\"\n                    size=\"icon\"\n                    className=\"h-8 w-8\"\n                    onClick={() => setQuantity(Math.max(1, quantity - 1))}\n                  >\n                    <Minus className=\"h-3 w-3\" />\n                  </Button>\n                  <span className=\"w-8 text-center font-semibold\">\n                    {quantity}\n                  </span>\n                  <Button\n                    variant=\"outline\"\n                    size=\"icon\"\n                    className=\"h-8 w-8\"\n                    onClick={() => setQuantity(quantity + 1)}\n                  >\n                    <Plus className=\"h-3 w-3\" />\n                  </Button>\n                </div>\n              </div>\n\n              <div className=\"flex items-center gap-2\">\n                <Button className=\"flex-1 gap-2\" size=\"lg\">\n                  <ShoppingCart className=\"h-4 w-4\" />\n                  Add to Cart\n                </Button>\n                <Button variant=\"outline\" size=\"lg\" className=\"shrink-0 gap-2\">\n                  <Eye className=\"h-4 w-4\" />\n                </Button>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"absolute hidden lg:flex\">\n            <div className=\"group relative grid h-12 w-12 translate-x-[17rem] -translate-y-[30rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\">\n              <div className=\"bg-primary h-4 w-4 animate-pulse rounded-full\"></div>\n              <div className=\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\">\n                Ceramic Vase\n              </div>\n            </div>\n            <div className=\"group relative grid h-12 w-12 translate-x-[26rem] -translate-y-[26rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\">\n              <div className=\"bg-primary h-4 w-4 animate-pulse rounded-full\"></div>\n              <div className=\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\">\n                Wall Art\n              </div>\n            </div>\n            <div className=\"group relative grid h-12 w-12 translate-x-[5rem] -translate-y-[21rem] cursor-pointer place-content-center rounded-full border-2 border-white bg-white shadow-xl transition-all hover:scale-110\">\n              <div className=\"bg-primary h-4 w-4 animate-pulse rounded-full\"></div>\n              <div className=\"absolute -top-12 left-1/2 hidden -translate-x-1/2 rounded-lg bg-white px-3 py-1.5 text-sm font-medium whitespace-nowrap shadow-lg group-hover:block dark:bg-gray-900\">\n                Table Lamp\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/invoices-01/page.tsx",
    "content": "\"use client\"\n\nimport { Download } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst DATA = [\n  {\n    name: \"INV-24 #MS-415646\",\n    date: \"October 15, 2024\",\n    amount: 2500,\n    badge: \"24 Days\",\n    isOverdue: false,\n  },\n  {\n    name: \"INV-23 #MS-415740\",\n    date: \"October 10, 2024\",\n    amount: 1750,\n    badge: \"20 Days\",\n    isOverdue: false,\n  },\n  {\n    name: \"INV-22 #MS-946285\",\n    date: \"September 15, 2024\",\n    amount: 1500,\n    badge: \"18 Days\",\n    isOverdue: false,\n  },\n  {\n    name: \"INV-21 #MS-739734\",\n    date: \"September 10, 2024\",\n    amount: 2990,\n    badge: \"3 Days Overdue\",\n    isOverdue: true,\n  },\n  {\n    name: \"INV-20 #MS-848649\",\n    date: \"August 15, 2024\",\n    amount: 3500,\n    badge: \"3 Days Overdue\",\n    isOverdue: true,\n  },\n]\n\nexport default function Invoices01() {\n  return (\n    <div className=\"mx-auto max-w-xl p-6\">\n      <div className=\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\">\n        <div className=\"flex items-start justify-between gap-4\">\n          <div>\n            <h2 className=\"font-semibold\">Invoices</h2>\n            <p className=\"text-muted-foreground text-sm\">\n              Track and monitor your financial activity.\n            </p>\n          </div>\n          <Button size=\"sm\" variant=\"outline\">\n            Export\n          </Button>\n        </div>\n        <div className=\"mt-6\">\n          {DATA.map(({ name, date, amount, badge, isOverdue }, index) => (\n            <div key={name}>\n              <div className=\"flex flex-wrap items-center justify-between gap-6 py-6\">\n                <div className=\"basis-full space-y-0.5 sm:basis-auto\">\n                  <p className=\"text-lg font-semibold\">{name}</p>\n                  <p className=\"text-muted-foreground text-sm\">{date}</p>\n                </div>\n                <Badge\n                  variant={isOverdue ? \"destructive\" : \"default\"}\n                  className={\n                    isOverdue\n                      ? \"w-max sm:ml-auto\"\n                      : \"w-max bg-green-100 text-green-800 hover:bg-green-100 sm:ml-auto\"\n                  }\n                >\n                  {badge}\n                </Badge>\n                <p className=\"text-end text-sm font-semibold\">\n                  {new Intl.NumberFormat(\"en-US\", {\n                    style: \"currency\",\n                    currency: \"USD\",\n                  }).format(amount)}\n                </p>\n                <Button size=\"icon\" variant=\"ghost\" className=\"h-8 w-8\">\n                  <Download className=\"h-5 w-5\" />\n                </Button>\n              </div>\n              {index < DATA.length - 1 && <Separator />}\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/large-blog-preview-01/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\n\nexport default function LargeBlogPreview01() {\n  return (\n    <div className=\"container mx-auto grid h-full w-full grid-cols-1 items-center gap-x-16 gap-y-6 py-16 lg:grid-cols-2\">\n      <img\n        alt=\"blog preview\"\n        src=\"https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&auto=format&fit=crop\"\n        className=\"h-full w-full rounded-lg object-cover object-center shadow-lg\"\n      />\n      <div>\n        <p className=\"text-primary block font-semibold\">Business</p>\n        <h2 className=\"my-4 text-3xl font-bold lg:text-4xl\">\n          Autodesk looks to future of 3D with Project Escher\n        </h2>\n        <p className=\"text-muted-foreground mb-6 w-full max-w-lg text-lg\">\n          Warner Music Group announced today it&apos;s acquiring the selected\n          assets of the music platform Songkick, including its app for finding\n          concerts and the company&apos;s trademark. Songkick has been involved\n          in a lawsuit against the major…{\" \"}\n          <a\n            href=\"#\"\n            className=\"text-foreground ml-2 inline-block font-semibold hover:underline\"\n          >\n            Read More\n          </a>\n        </p>\n        <div className=\"flex items-center gap-3\">\n          <Avatar>\n            <AvatarImage\n              src=\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\"\n              alt=\"Otto Gonzalez\"\n            />\n            <AvatarFallback>OG</AvatarFallback>\n          </Avatar>\n          <div className=\"space-y-0.5\">\n            <p className=\"text-sm font-semibold\">Otto Gonzalez</p>\n            <p className=\"text-muted-foreground text-xs\">10 October 2024</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { TriangleAlert, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[500px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <div className=\"flex items-start gap-4\">\n            <div className=\"flex-1\">\n              <TriangleAlert className=\"text-destructive mb-6 h-14 w-14\" />\n              <DialogHeader>\n                <DialogTitle className=\"mb-1 text-xl\">\n                  Reset Settings\n                </DialogTitle>\n              </DialogHeader>\n              <p className=\"text-muted-foreground mt-2 max-w-xl text-sm\">\n                Are you sure you want to reset all settings to their default\n                values? This action cannot be undone.\n              </p>\n            </div>\n          </div>\n\n          <form className=\"mt-6 space-y-4\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"reset\" className=\"text-sm\">\n                Please type{\" \"}\n                <span className=\"text-foreground font-semibold\">\n                  &quot;Reset settings&quot;\n                </span>{\" \"}\n                to confirm.\n              </Label>\n              <div className=\"flex w-full flex-col items-center gap-2 sm:flex-row\">\n                <Input\n                  id=\"reset\"\n                  placeholder=\"Reset settings\"\n                  className=\"flex-1\"\n                />\n                <Button type=\"submit\" className=\"w-full shrink-0 sm:w-auto\">\n                  I understand, reset settings\n                </Button>\n              </div>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-02/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst NOTIFICATION = [\"Email\", \"SMS\", \"Push Notification\"]\nconst TOOLS = [\"React\", \"Material Tailwind\", \"TailwindCSS\", \"Next.js\"]\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[600px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-1 text-xl\">Edit Profile</DialogTitle>\n            <p className=\"text-muted-foreground text-sm\">\n              Update your profile information below.\n            </p>\n          </DialogHeader>\n\n          <form className=\"mt-6 space-y-6\">\n            <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"name\" className=\"font-semibold\">\n                  My Name\n                </Label>\n                <Input id=\"name\" placeholder=\"Emma Roberts\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"profession\" className=\"font-semibold\">\n                  I&apos;m\n                </Label>\n                <Select>\n                  <SelectTrigger id=\"profession\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select Profession\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"ui-ux\">UI/UX Designer</SelectItem>\n                    <SelectItem value=\"frontend\">Frontend Developer</SelectItem>\n                    <SelectItem value=\"backend\">Backend Developer</SelectItem>\n                    <SelectItem value=\"fullstack\">\n                      Fullstack Developer\n                    </SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n\n            <div className=\"space-y-2 border-y py-6\">\n              <p className=\"font-semibold\">\n                Interested in the following technologies\n              </p>\n              <p className=\"text-muted-foreground text-sm\">\n                Choose the frameworks you work on\n              </p>\n              <div className=\"mt-4 flex flex-wrap items-center gap-6\">\n                {TOOLS.map((tool) => (\n                  <div key={tool} className=\"flex items-center gap-2\">\n                    <Checkbox id={tool} />\n                    <Label\n                      htmlFor={tool}\n                      className=\"text-muted-foreground cursor-pointer text-sm\"\n                    >\n                      {tool}\n                    </Label>\n                  </div>\n                ))}\n              </div>\n            </div>\n\n            <div className=\"space-y-2\">\n              <p className=\"font-semibold\">Notification preferences</p>\n              <p className=\"text-muted-foreground text-sm\">\n                Select where you want to be notified\n              </p>\n              <RadioGroup className=\"mt-4 flex items-center gap-6\">\n                {NOTIFICATION.map((notify) => (\n                  <div key={notify} className=\"flex items-center gap-2\">\n                    <RadioGroupItem value={notify} id={notify} />\n                    <Label\n                      htmlFor={notify}\n                      className=\"text-muted-foreground text-sm\"\n                    >\n                      {notify}\n                    </Label>\n                  </div>\n                ))}\n              </RadioGroup>\n            </div>\n\n            <div className=\"flex items-center justify-end gap-2 pt-4\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                onClick={() => setIsOpen(false)}\n              >\n                Cancel\n              </Button>\n              <Button type=\"submit\">Update Profile</Button>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-03/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDown, Pencil, X } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Input } from \"@/components/ui/input\"\n\ninterface UserProps {\n  name: string\n  img: string\n  email: string\n}\n\nfunction User({ name, img, email }: UserProps) {\n  const [selected, setSelected] = React.useState(\"Can View\")\n\n  return (\n    <div className=\"flex items-center justify-between gap-4\">\n      <div className=\"flex items-center gap-4\">\n        <Avatar>\n          <AvatarImage src={img} alt={name} />\n          <AvatarFallback>{name.charAt(0)}</AvatarFallback>\n        </Avatar>\n        <div className=\"space-y-0.5\">\n          <p className=\"text-sm font-semibold\">{name}</p>\n          <p className=\"text-muted-foreground text-sm\">{email}</p>\n        </div>\n      </div>\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"ghost\" size=\"sm\" className=\"group\">\n            <span className=\"hidden items-center gap-1 sm:flex\">\n              {selected}{\" \"}\n              <ChevronDown className=\"h-4 w-4 transition-transform group-data-[state=open]:rotate-180\" />\n            </span>\n            <Pencil className=\"block h-4 w-4 sm:hidden\" />\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\">\n          <DropdownMenuItem onClick={() => setSelected(\"Can View\")}>\n            Can View\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={() => setSelected(\"Can Edit\")}>\n            Can Edit\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    </div>\n  )\n}\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[550px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-1 text-xl\">\n              Share with New Members\n            </DialogTitle>\n            <p className=\"text-muted-foreground max-w-xl text-sm\">\n              Welcome new members to your team! Use this modal to seamlessly add\n              individuals to your dashboard, enabling collaboration and\n              enhancing productivity.\n            </p>\n          </DialogHeader>\n\n          <form className=\"my-6 flex w-full flex-col items-center gap-2 sm:flex-row\">\n            <Input type=\"email\" placeholder=\"Email, comma separated\" />\n            <Button type=\"submit\" className=\"w-full shrink-0 sm:w-auto\">\n              Invite\n            </Button>\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              className=\"w-full shrink-0 sm:w-auto\"\n            >\n              Copy Link\n            </Button>\n          </form>\n\n          <div className=\"space-y-6\">\n            <User\n              img=\"https://i.pravatar.cc/150?img=1\"\n              name=\"Emma Roberts\"\n              email=\"emma@mail.com\"\n            />\n            <User\n              img=\"https://i.pravatar.cc/150?img=2\"\n              name=\"John Smith\"\n              email=\"john@mail.com\"\n            />\n            <User\n              img=\"https://i.pravatar.cc/150?img=3\"\n              name=\"Sarah Johnson\"\n              email=\"sarah@mail.com\"\n            />\n          </div>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-04/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Trash, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"max-h-[90vh] overflow-y-auto sm:max-w-[700px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-1 text-xl\">\n              Update Product Modal\n            </DialogTitle>\n            <p className=\"text-muted-foreground text-sm\">\n              Edit product features and save it.\n            </p>\n          </DialogHeader>\n\n          <div className=\"my-6 grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3\">\n            {[...new Array(3)].map((_, i) => (\n              <div\n                key={i}\n                className=\"bg-muted relative h-44 w-full overflow-hidden rounded-md\"\n              >\n                <img\n                  src={`https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&h=400&fit=crop&crop=center&q=80`}\n                  alt={`Product ${i + 1}`}\n                  className=\"h-full w-full object-cover object-center\"\n                />\n                <Button\n                  size=\"sm\"\n                  variant=\"ghost\"\n                  className=\"!absolute right-2 bottom-2\"\n                >\n                  <Trash className=\"h-4 w-4\" />\n                </Button>\n              </div>\n            ))}\n          </div>\n\n          <form className=\"space-y-6\">\n            <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"productName\" className=\"font-semibold\">\n                  Product Name\n                </Label>\n                <Input id=\"productName\" placeholder=\"Laptop\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"category\" className=\"font-semibold\">\n                  Category\n                </Label>\n                <Select>\n                  <SelectTrigger id=\"category\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select Category\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"electronics\">Electronics</SelectItem>\n                    <SelectItem value=\"clothing\">Clothing</SelectItem>\n                    <SelectItem value=\"accessories\">Accessories</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n\n            <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"price\" className=\"font-semibold\">\n                  Price\n                </Label>\n                <Input id=\"price\" placeholder=\"1000\" />\n              </div>\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"brand\" className=\"font-semibold\">\n                  Brand\n                </Label>\n                <Select>\n                  <SelectTrigger id=\"brand\" className=\"w-full\">\n                    <SelectValue placeholder=\"Select Brand\" />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"apple\">Apple</SelectItem>\n                    <SelectItem value=\"samsung\">Samsung</SelectItem>\n                    <SelectItem value=\"microsoft\">Microsoft</SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"description\" className=\"font-semibold\">\n                Description\n              </Label>\n              <Textarea\n                id=\"description\"\n                placeholder=\"Write something about your product.\"\n              />\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"tags\" className=\"font-semibold\">\n                Tags\n              </Label>\n              <Input\n                id=\"tags\"\n                placeholder=\"Add up to 10 tags, separated by commas (,)\"\n              />\n            </div>\n\n            <div className=\"flex items-center justify-end gap-2 pt-4\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                onClick={() => setIsOpen(false)}\n              >\n                Cancel\n              </Button>\n              <Button type=\"submit\">Update Product</Button>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-05/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CloudUpload, Trash, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n\nconst IMAGES = [\n  {\n    name: \"cover-1.jpg\",\n    size: \"140 KB\",\n  },\n  {\n    name: \"cover-2.jpg\",\n    size: \"288 KB\",\n  },\n]\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[600px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-1 text-xl\">Upload Files</DialogTitle>\n            <p className=\"text-muted-foreground text-sm\">\n              Easily upload files to your account with just a few clicks.\n            </p>\n          </DialogHeader>\n\n          <form className=\"mt-6 space-y-4\">\n            <Card className=\"border-2 border-dashed\">\n              <CardContent className=\"grid min-h-64 place-items-center p-6\">\n                <label htmlFor=\"upload\" className=\"cursor-pointer\">\n                  <input type=\"file\" className=\"hidden\" id=\"upload\" />\n                  <div className=\"mx-auto max-w-md text-center\">\n                    <CloudUpload className=\"text-muted-foreground mx-auto mb-6 h-12 w-12\" />\n                    <p className=\"mb-2 font-semibold\">\n                      Drag and Drop or{\" \"}\n                      <span className=\"underline\">Choose a Local File</span>\n                    </p>\n                    <p className=\"text-muted-foreground text-sm\">\n                      Supported formats: .png, .jpg, .svg\n                    </p>\n                  </div>\n                </label>\n              </CardContent>\n            </Card>\n\n            <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n              {IMAGES.map(({ name, size }) => (\n                <Card key={name}>\n                  <CardContent className=\"flex items-start justify-between p-3\">\n                    <div className=\"flex items-center gap-4\">\n                      <img\n                        src=\"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=100&h=100&fit=crop&crop=center&q=80\"\n                        alt={name}\n                        className=\"h-12 w-12 rounded object-cover object-center\"\n                      />\n                      <div className=\"space-y-1\">\n                        <p className=\"text-sm font-semibold\">{name}</p>\n                        <p className=\"text-muted-foreground text-sm\">{size}</p>\n                      </div>\n                    </div>\n                    <Button\n                      type=\"button\"\n                      variant=\"ghost\"\n                      size=\"sm\"\n                      className=\"shrink-0\"\n                    >\n                      <Trash className=\"h-4 w-4\" />\n                    </Button>\n                  </CardContent>\n                </Card>\n              ))}\n            </div>\n\n            <div className=\"flex items-center justify-end gap-2 pt-4\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                onClick={() => setIsOpen(false)}\n              >\n                Cancel\n              </Button>\n              <Button type=\"submit\">Upload</Button>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-06/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Unlock, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[500px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <div className=\"flex items-start gap-4\">\n            <div className=\"flex-1\">\n              <Unlock className=\"text-primary mb-6 h-12 w-12\" />\n              <DialogHeader>\n                <DialogTitle className=\"mb-2 text-xl\">\n                  Publish Capsule Collection\n                </DialogTitle>\n              </DialogHeader>\n              <p className=\"text-muted-foreground mt-2 text-sm\">\n                This action will expose your private capsule collection to\n                public viewing across all fashion storefronts.\n              </p>\n            </div>\n          </div>\n\n          <Card className=\"my-6\">\n            <CardContent className=\"space-y-3 p-4\">\n              <div className=\"flex items-center justify-between\">\n                <span className=\"text-muted-foreground text-sm\">\n                  Collection\n                </span>\n                <span className=\"text-sm font-medium\">fall-winter-vault</span>\n              </div>\n              <div className=\"flex items-center justify-between\">\n                <span className=\"text-muted-foreground text-sm\">Views</span>\n                <span className=\"text-sm font-medium\">0</span>\n              </div>\n              <div className=\"flex items-center justify-between\">\n                <span className=\"text-muted-foreground text-sm\">Likes</span>\n                <span className=\"text-sm font-medium\">0</span>\n              </div>\n            </CardContent>\n          </Card>\n\n          <div className=\"flex items-center justify-end gap-2 pt-4\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setIsOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button type=\"submit\">Make Collection Public</Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-07/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[500px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-2 text-xl\">\n              Visibility Settings\n            </DialogTitle>\n          </DialogHeader>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            This collection is currently restricted to internal collaborators.\n            You can modify who can view or access it from this setting.\n          </p>\n\n          <div className=\"flex items-center justify-end gap-2 pt-6\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setIsOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button variant=\"destructive\">Change Visibility</Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-08/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangle, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[550px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-2 text-xl\">\n              Disable Collection Lock Rules\n            </DialogTitle>\n          </DialogHeader>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Removing edit rules will allow unrestricted changes to your seasonal\n            campaign folders and product groups.\n          </p>\n\n          <Card className=\"border-destructive/50 bg-destructive/5 my-6\">\n            <CardHeader className=\"pb-3\">\n              <CardTitle className=\"flex items-center gap-2 text-base\">\n                <AlertTriangle className=\"text-destructive h-4 w-4\" />\n                Access Restrictions Will Be Removed\n              </CardTitle>\n            </CardHeader>\n            <CardContent>\n              <p className=\"text-muted-foreground text-sm\">\n                Disabling these rules unlocks direct edits to sensitive assets\n                and might affect internal syncs.\n              </p>\n            </CardContent>\n          </Card>\n\n          <div className=\"mb-6 space-y-3\">\n            <p className=\"text-sm font-semibold\">This will impact:</p>\n            <ul className=\"text-muted-foreground space-y-2 text-sm\">\n              <li className=\"flex items-start gap-2\">\n                <span className=\"text-destructive mt-1\">•</span>\n                <span>Designer review checkpoints</span>\n              </li>\n              <li className=\"flex items-start gap-2\">\n                <span className=\"text-destructive mt-1\">•</span>\n                <span>Version freeze policies</span>\n              </li>\n            </ul>\n          </div>\n\n          <p className=\"text-muted-foreground mb-6 text-xs\">\n            Note: 0 edit lock rules currently active\n          </p>\n\n          <div className=\"flex items-center justify-end gap-2 pt-4\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setIsOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button variant=\"destructive\">Disable Edit Locks</Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-09/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertTriangle, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[550px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-2 text-xl\">\n              Transfer Showroom Ownership\n            </DialogTitle>\n          </DialogHeader>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Switch control of this fashion showroom space to another user or\n            organization.\n          </p>\n\n          <form className=\"mt-6 space-y-6\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"owner\" className=\"font-semibold\">\n                Select new owner\n              </Label>\n              <Select>\n                <SelectTrigger id=\"owner\" className=\"w-full\">\n                  <SelectValue placeholder=\"Choose owner\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"styling-team\">Styling Team</SelectItem>\n                  <SelectItem value=\"content-studio\">Content Studio</SelectItem>\n                  <SelectItem value=\"retail-partner\">Retail Partner</SelectItem>\n                </SelectContent>\n              </Select>\n            </div>\n\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"handle\" className=\"font-semibold\">\n                Confirm collection handle\n              </Label>\n              <Input id=\"handle\" placeholder=\"resort-collection-2026\" />\n            </div>\n\n            <Card className=\"border-yellow-500/50 bg-yellow-500/5\">\n              <CardContent className=\"p-4\">\n                <div className=\"flex items-start gap-3\">\n                  <AlertTriangle className=\"mt-0.5 h-5 w-5 shrink-0 text-yellow-600\" />\n                  <p className=\"text-muted-foreground text-sm\">\n                    Transferring ownership will revoke your access to draft\n                    sets, unpublished campaigns, and internal analytics.\n                  </p>\n                </div>\n              </CardContent>\n            </Card>\n\n            <div className=\"flex items-center justify-end gap-2 pt-4\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                onClick={() => setIsOpen(false)}\n              >\n                Cancel\n              </Button>\n              <Button type=\"submit\" variant=\"destructive\">\n                Transfer Access\n              </Button>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-10/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertCircle, X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[550px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-2 text-xl\">\n              Permanently Remove Archive\n            </DialogTitle>\n          </DialogHeader>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Erasing this fashion vault will wipe its data across your platform\n            and collaborators.\n          </p>\n\n          <Card className=\"border-destructive/50 bg-destructive/5 my-6\">\n            <CardHeader className=\"pb-3\">\n              <CardTitle className=\"flex items-center gap-2 text-base\">\n                <AlertCircle className=\"text-destructive h-4 w-4\" />\n                Review Before Deleting\n              </CardTitle>\n            </CardHeader>\n            <CardContent>\n              <p className=\"text-muted-foreground text-sm\">\n                Once removed, associated content (lookbooks, notes, edits) will\n                be lost forever.\n              </p>\n            </CardContent>\n          </Card>\n\n          <div className=\"mb-6 space-y-3\">\n            <p className=\"text-sm font-semibold\">This action will:</p>\n            <ul className=\"text-muted-foreground space-y-2 text-sm\">\n              <li className=\"flex items-start gap-2\">\n                <span className=\"text-destructive mt-1\">•</span>\n                <span>Deletes all digital outfits and metadata</span>\n              </li>\n              <li className=\"flex items-start gap-2\">\n                <span className=\"text-destructive mt-1\">•</span>\n                <span>Disconnects synced creative briefs</span>\n              </li>\n              <li className=\"flex items-start gap-2\">\n                <span className=\"text-primary mt-1\">•</span>\n                <span>No change to billing or usage limits</span>\n              </li>\n            </ul>\n          </div>\n\n          <div className=\"flex items-center justify-end gap-2 pt-4\">\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={() => setIsOpen(false)}\n            >\n              Cancel\n            </Button>\n            <Button type=\"submit\">I acknowledge and confirm</Button>\n          </div>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/modals-11/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { X } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\nexport default function ModalsBlock() {\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  return (\n    <div className=\"grid min-h-screen w-full place-items-center\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button onClick={() => setIsOpen(true)}>Open Modal</Button>\n        </DialogTrigger>\n        <DialogContent className=\"sm:max-w-[500px]\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n          >\n            <X className=\"h-4 w-4\" />\n            <span className=\"sr-only\">Close</span>\n          </button>\n          <DialogHeader>\n            <DialogTitle className=\"mb-2 text-xl\">\n              Erase Fashion Vault\n            </DialogTitle>\n          </DialogHeader>\n          <p className=\"text-muted-foreground mt-2 text-sm\">\n            Type the full collection handle to confirm irreversible deletion of\n            this vault.\n          </p>\n\n          <form className=\"mt-6 space-y-6\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"identifier\" className=\"font-semibold\">\n                Collection identifier\n              </Label>\n              <Input id=\"identifier\" placeholder=\"spring-edit-collection\" />\n            </div>\n\n            <div className=\"flex items-center justify-end gap-2 pt-4\">\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                onClick={() => setIsOpen(false)}\n              >\n                Cancel\n              </Button>\n              <Button type=\"submit\" variant=\"destructive\">\n                Delete Vault\n              </Button>\n            </div>\n          </form>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/order-details-01/page.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport {\n  Archive,\n  CheckCircle,\n  Clock,\n  FileText,\n  Home,\n  Mail,\n  MapPin,\n  Package,\n  Phone,\n  Truck,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst OPTIONS = [\n  { title: \"Subtotal\", value: \"$1,780.00\" },\n  { title: \"Shipping estimate\", value: \"$0\" },\n  { title: \"Tax estimate\", value: \"$5\" },\n]\n\nexport default function OrderDetails01() {\n  const [step, setStep] = useState(\"3\")\n  const [isVertical, setIsVertical] = useState(false)\n\n  useEffect(() => {\n    const handleResize = () => {\n      setIsVertical(window.innerWidth <= 768)\n    }\n    handleResize()\n    window.addEventListener(\"resize\", handleResize)\n    return () => window.removeEventListener(\"resize\", handleResize)\n  }, [])\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-8 flex flex-wrap items-start justify-between gap-4\">\n          <div>\n            <div className=\"mb-3 flex items-center gap-3\">\n              <h2 className=\"text-3xl font-bold\">Order #1234</h2>\n              <Badge className=\"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\">\n                In Transit\n              </Badge>\n            </div>\n            <div className=\"flex items-center gap-4 text-sm\">\n              <div className=\"text-muted-foreground flex items-center gap-2\">\n                <Clock className=\"h-4 w-4\" />\n                <span>\n                  Placed on <span className=\"font-semibold\">April 1, 2024</span>\n                </span>\n              </div>\n              <div className=\"text-muted-foreground flex items-center gap-2\">\n                <Package className=\"h-4 w-4\" />\n                <span className=\"font-semibold\">1 item</span>\n              </div>\n            </div>\n          </div>\n          <Button className=\"gap-2\">\n            <FileText className=\"h-4 w-4\" />\n            View Invoice\n          </Button>\n        </div>\n\n        <Card className=\"shadow-lg\">\n          <CardHeader className=\"grid w-full grid-cols-1 gap-8 border-b p-6 md:grid-cols-2\">\n            <div className=\"flex gap-4\">\n              <div className=\"bg-muted/30 relative h-32 w-32 overflow-hidden rounded-xl border p-2 md:h-40 md:w-40\">\n                <img\n                  src=\"https://v3.material-tailwind.com/coat-2.png\"\n                  alt=\"Premium Suit\"\n                  className=\"h-full w-full object-contain\"\n                />\n              </div>\n              <div className=\"flex flex-1 flex-col justify-between\">\n                <div className=\"space-y-2\">\n                  <h3 className=\"text-lg font-semibold\">Premium Suit</h3>\n                  <p className=\"text-2xl font-bold\">$790</p>\n                  <p className=\"text-muted-foreground text-sm leading-relaxed\">\n                    The time is now for it to be okay to be great. People in\n                    this world shun people for being great.\n                  </p>\n                </div>\n                <div className=\"mt-3 flex items-center gap-2\">\n                  <Badge variant=\"outline\">Size: M</Badge>\n                  <Badge variant=\"outline\">Qty: 1</Badge>\n                </div>\n              </div>\n            </div>\n\n            <div className=\"grid gap-6 sm:grid-cols-2\">\n              <div className=\"space-y-3\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\">\n                    <MapPin className=\"text-primary h-4 w-4\" />\n                  </div>\n                  <p className=\"font-semibold\">Delivery Address</p>\n                </div>\n                <p className=\"text-muted-foreground text-sm leading-relaxed\">\n                  362 Ridgewood Avenue\n                  <br />\n                  Alaska 99669, USA\n                </p>\n              </div>\n\n              <div className=\"space-y-3\">\n                <div className=\"flex items-center gap-2\">\n                  <div className=\"bg-primary/10 flex h-8 w-8 items-center justify-center rounded-full\">\n                    <Mail className=\"text-primary h-4 w-4\" />\n                  </div>\n                  <p className=\"font-semibold\">Shipping Updates</p>\n                </div>\n                <div className=\"space-y-1 text-sm\">\n                  <p className=\"text-muted-foreground flex items-center gap-1.5\">\n                    <Mail className=\"h-3.5 w-3.5\" />\n                    michael@email.com\n                  </p>\n                  <p className=\"text-muted-foreground flex items-center gap-1.5\">\n                    <Phone className=\"h-3.5 w-3.5\" />\n                    (307) 682-8835\n                  </p>\n                </div>\n                <Button variant=\"outline\" size=\"sm\" className=\"mt-2\">\n                  Edit Contact\n                </Button>\n              </div>\n            </div>\n          </CardHeader>\n\n          <CardContent className=\"w-full p-6 sm:p-8\">\n            <div className=\"flex flex-col gap-8 lg:flex-row\">\n              <div className=\"flex-1\">\n                <h3 className=\"mb-6 text-lg font-semibold\">Order Timeline</h3>\n                <div className=\"space-y-6\">\n                  <div className=\"flex gap-4\">\n                    <div className=\"flex flex-col items-center\">\n                      <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                        <Home className=\"h-5 w-5 text-white\" />\n                      </div>\n                      <div className=\"bg-primary my-2 w-0.5 flex-1\" />\n                    </div>\n                    <div className=\"pb-6\">\n                      <div className=\"mb-1 flex items-center gap-2\">\n                        <p className=\"font-semibold\">Order Placed</p>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\"\n                        >\n                          Complete\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground text-sm\">\n                        Your order was placed on April 1, 2024\n                      </p>\n                    </div>\n                  </div>\n\n                  <div className=\"flex gap-4\">\n                    <div className=\"flex flex-col items-center\">\n                      <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                        <CheckCircle className=\"h-5 w-5 text-white\" />\n                      </div>\n                      <div className=\"bg-primary my-2 w-0.5 flex-1\" />\n                    </div>\n                    <div className=\"pb-6\">\n                      <div className=\"mb-1 flex items-center gap-2\">\n                        <p className=\"font-semibold\">Order Confirmed</p>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"border-green-500/30 bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400\"\n                        >\n                          Complete\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground text-sm\">\n                        Your order has been confirmed on April 2, 2024\n                      </p>\n                    </div>\n                  </div>\n\n                  <div className=\"flex gap-4\">\n                    <div className=\"flex flex-col items-center\">\n                      <div className=\"bg-primary flex h-10 w-10 items-center justify-center rounded-full shadow-md\">\n                        <Archive className=\"h-5 w-5 text-white\" />\n                      </div>\n                      <div className=\"bg-border my-2 w-0.5 flex-1\" />\n                    </div>\n                    <div className=\"pb-6\">\n                      <div className=\"mb-1 flex items-center gap-2\">\n                        <p className=\"font-semibold\">Order Shipped</p>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"border-blue-500/30 bg-blue-50 text-blue-700 dark:bg-blue-950/30 dark:text-blue-400\"\n                        >\n                          In Progress\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground text-sm\">\n                        Your order has been shipped on April 3, 2024\n                      </p>\n                    </div>\n                  </div>\n\n                  <div className=\"flex gap-4\">\n                    <div className=\"flex flex-col items-center\">\n                      <div className=\"bg-muted flex h-10 w-10 items-center justify-center rounded-full border-2 border-dashed\">\n                        <Truck className=\"text-muted-foreground h-5 w-5\" />\n                      </div>\n                    </div>\n                    <div>\n                      <div className=\"mb-1 flex items-center gap-2\">\n                        <p className=\"text-muted-foreground font-semibold\">\n                          Order Delivered\n                        </p>\n                        <Badge\n                          variant=\"outline\"\n                          className=\"text-muted-foreground\"\n                        >\n                          Pending\n                        </Badge>\n                      </div>\n                      <p className=\"text-muted-foreground text-sm\">\n                        Expected delivery on April 6, 2024\n                      </p>\n                    </div>\n                  </div>\n                </div>\n              </div>\n\n              <Separator className=\"lg:hidden\" />\n\n              <div className=\"w-full lg:w-80\">\n                <div className=\"bg-muted/30 rounded-xl border p-6\">\n                  <h3 className=\"mb-4 text-lg font-semibold\">Order Summary</h3>\n                  <div className=\"space-y-3\">\n                    {OPTIONS.map(({ title, value }) => (\n                      <div key={title} className=\"flex justify-between text-sm\">\n                        <span className=\"text-muted-foreground\">{title}</span>\n                        <span className=\"font-medium\">{value}</span>\n                      </div>\n                    ))}\n                  </div>\n                  <Separator className=\"my-4\" />\n                  <div className=\"flex items-center justify-between\">\n                    <span className=\"text-lg font-bold\">Order Total</span>\n                    <span className=\"text-2xl font-bold\">$1,785.00</span>\n                  </div>\n\n                  <div className=\"bg-primary/10 mt-6 flex items-start gap-2 rounded-lg p-4\">\n                    <Truck className=\"text-primary mt-0.5 h-5 w-5 shrink-0\" />\n                    <div className=\"space-y-1\">\n                      <p className=\"text-sm font-medium\">Track Your Order</p>\n                      <p className=\"text-muted-foreground text-xs\">\n                        Estimated delivery: April 6, 2024\n                      </p>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/order-history-01/page.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\"\n\nconst OPTIONS = [\n  {\n    data: \"Order ID\",\n    value: \"1234\",\n  },\n  {\n    data: \"Date of Placement\",\n    value: \"April 3, 2024\",\n  },\n  {\n    data: \"Amount\",\n    value: \"$2,570\",\n  },\n]\n\nconst TABLE_ROW = [\n  {\n    img: \"https://v3.material-tailwind.com/coat-1.png\",\n    product: \"Premium Suit\",\n    amount: \"$790\",\n    date: \"Apr 6, 2024\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/coat-2.png\",\n    product: \"Linen Suit\",\n    amount: \"$790\",\n    date: \"Apr 6, 2024\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/coat-3.png\",\n    product: \"Tweed Suit\",\n    amount: \"$990\",\n    date: \"Apr 6, 2024\",\n  },\n]\n\nconst TABLE_HEAD = [\"Product\", \"Amount\", \"Status\", \"Date\", \"Details\"]\n\nexport default function OrderHistory01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <h2 className=\"text-lg font-semibold\">Order History</h2>\n        <p className=\"text-muted-foreground mt-2\">\n          See your recent orders, download your invoices.\n        </p>\n        <Card className=\"mt-8 mb-4 py-0\">\n          <CardContent className=\"flex flex-wrap items-center justify-between gap-4 p-4\">\n            <div className=\"flex gap-10\">\n              {OPTIONS.map((option, i) => (\n                <div key={i}>\n                  <p className=\"text-muted-foreground mb-0.5 text-sm\">\n                    {option.data}\n                  </p>\n                  <p className=\"font-semibold\">{option.value}</p>\n                </div>\n              ))}\n            </div>\n            <Button>View Invoice</Button>\n          </CardContent>\n        </Card>\n        <Card>\n          <div className=\"overflow-x-auto\">\n            <Table>\n              <TableHeader>\n                <TableRow>\n                  {TABLE_HEAD.map((head) => (\n                    <TableHead key={head}>{head}</TableHead>\n                  ))}\n                </TableRow>\n              </TableHeader>\n              <TableBody>\n                {TABLE_ROW.map(({ img, product, amount, date }) => (\n                  <TableRow key={product}>\n                    <TableCell>\n                      <div className=\"flex items-center gap-3\">\n                        <img src={img} alt={product} className=\"h-16\" />\n                        <span className=\"text-sm font-semibold\">{product}</span>\n                      </div>\n                    </TableCell>\n                    <TableCell className=\"text-muted-foreground text-sm\">\n                      {amount}\n                    </TableCell>\n                    <TableCell>\n                      <Badge\n                        variant=\"secondary\"\n                        className=\"bg-green-100 text-green-700\"\n                      >\n                        Delivered\n                      </Badge>\n                    </TableCell>\n                    <TableCell className=\"text-muted-foreground text-sm\">\n                      {date}\n                    </TableCell>\n                    <TableCell>\n                      <Button size=\"sm\" variant=\"outline\">\n                        View\n                      </Button>\n                    </TableCell>\n                  </TableRow>\n                ))}\n              </TableBody>\n            </Table>\n          </div>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/payment-method-01/page.tsx",
    "content": "\"use client\"\n\nimport { Check, Pencil, Plus, Trash2 } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\ninterface PaymentMethodProps {\n  type: \"visa\" | \"mastercard\"\n  number: string\n  isDefault?: boolean\n}\n\nfunction PaymentMethod({ type, number, isDefault }: PaymentMethodProps) {\n  const cardImg =\n    type === \"visa\"\n      ? \"https://v3.material-tailwind.com/visa.webp\"\n      : \"https://v3.material-tailwind.com/mastercard.webp\"\n\n  return (\n    <Card className=\"group hover:border-primary/50 relative flex flex-col gap-4 border p-6 transition-all hover:shadow-md\">\n      {isDefault && (\n        <div className=\"bg-primary absolute -top-px -right-px rounded-tr-lg rounded-bl-lg px-3 py-1\">\n          <div className=\"flex items-center gap-1.5 text-xs font-semibold text-white\">\n            <Check className=\"h-3 w-3\" />\n            Default\n          </div>\n        </div>\n      )}\n\n      <div className=\"flex items-center gap-3\">\n        <div className=\"flex h-12 w-16 items-center justify-center rounded-lg bg-gray-50 p-2\">\n          <img\n            src={cardImg}\n            alt={type}\n            className=\"h-full w-auto object-contain\"\n          />\n        </div>\n\n        <div className=\"flex flex-1 flex-col gap-1\">\n          <p className=\"text-base font-bold tracking-wider\">\n            **** **** **** {number}\n          </p>\n          <p className=\"text-muted-foreground text-sm capitalize\">\n            {type} Card\n          </p>\n        </div>\n      </div>\n\n      <div className=\"flex items-center gap-1\">\n        <TooltipProvider>\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <Button size=\"icon\" variant=\"ghost\" className=\"h-9 w-9\">\n                <Pencil className=\"h-4 w-4\" />\n              </Button>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>Edit Card</p>\n            </TooltipContent>\n          </Tooltip>\n        </TooltipProvider>\n\n        <TooltipProvider>\n          <Tooltip>\n            <TooltipTrigger asChild>\n              <Button\n                size=\"icon\"\n                variant=\"ghost\"\n                className=\"text-destructive hover:bg-destructive/10 hover:text-destructive h-9 w-9\"\n              >\n                <Trash2 className=\"h-4 w-4\" />\n              </Button>\n            </TooltipTrigger>\n            <TooltipContent>\n              <p>Remove Card</p>\n            </TooltipContent>\n          </Tooltip>\n        </TooltipProvider>\n      </div>\n    </Card>\n  )\n}\n\nexport default function PaymentMethod01() {\n  return (\n    <div className=\"mx-auto max-w-4xl p-6\">\n      <div className=\"flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center\">\n        <div>\n          <h2 className=\"text-2xl font-bold\">Payment Methods</h2>\n          <p className=\"text-muted-foreground mt-1 text-sm\">\n            Manage your preferred payment methods securely and conveniently.\n          </p>\n        </div>\n        <Button className=\"w-full sm:w-auto\">\n          <Plus className=\"mr-2 h-4 w-4\" /> Add New Card\n        </Button>\n      </div>\n\n      <div className=\"mt-8 grid grid-cols-1 gap-4 md:grid-cols-2\">\n        <PaymentMethod type=\"mastercard\" number=\"7852\" isDefault />\n        <PaymentMethod type=\"visa\" number=\"9831\" />\n        <PaymentMethod type=\"visa\" number=\"8362\" />\n        <PaymentMethod type=\"mastercard\" number=\"0098\" />\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/product-description-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport {\n  ChevronRight,\n  Heart,\n  RotateCcw,\n  Shield,\n  Star,\n  Truck,\n} from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst IMAGES = [\n  { imgelink: \"https://v3.material-tailwind.com/coat-1.png\" },\n  { imgelink: \"https://v3.material-tailwind.com/coat-2.png\" },\n  { imgelink: \"https://v3.material-tailwind.com/coat-3.png\" },\n  { imgelink: \"https://v3.material-tailwind.com/coat-4.png\" },\n]\n\nconst SIZES = [\"32\", \"34\", \"36\", \"38\", \"40\", \"42\", \"44\"]\n\nconst COLORS = [\n  { name: \"Black\", hex: \"#1a1a1a\" },\n  { name: \"White\", hex: \"#ffffff\" },\n  { name: \"Gray\", hex: \"#e5e7eb\" },\n  { name: \"Navy\", hex: \"#1e3a8a\" },\n  { name: \"Brown\", hex: \"#92400e\" },\n]\n\nconst FEATURES = [\n  { icon: Truck, text: \"Free shipping over $150\" },\n  { icon: RotateCcw, text: \"Easy 30-day returns\" },\n  { icon: Shield, text: \"1-year warranty\" },\n]\n\nexport default function ProductDescription01() {\n  const [active, setActive] = useState(\n    \"https://v3.material-tailwind.com/coat-1.png\"\n  )\n  const [selectedSize, setSelectedSize] = useState(\"36\")\n  const [selectedColor, setSelectedColor] = useState(\"Black\")\n  const [isFavorite, setIsFavorite] = useState(false)\n\n  return (\n    <section className=\"min-h-screen bg-neutral-50 py-12\">\n      <div className=\"container mx-auto px-4\">\n        <nav className=\"mb-8 flex items-center gap-2 text-sm text-neutral-500\">\n          <a href=\"#\" className=\"hover:text-neutral-900\">\n            Home\n          </a>\n          <ChevronRight className=\"h-4 w-4\" />\n          <a href=\"#\" className=\"hover:text-neutral-900\">\n            Women\n          </a>\n          <ChevronRight className=\"h-4 w-4\" />\n          <a href=\"#\" className=\"hover:text-neutral-900\">\n            Outerwear\n          </a>\n          <ChevronRight className=\"h-4 w-4\" />\n          <span className=\"text-neutral-900\">Premium Winter Coat</span>\n        </nav>\n\n        <div className=\"grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12\">\n          <div>\n            <div className=\"overflow-hidden rounded-2xl bg-white\">\n              <img\n                src={active}\n                alt=\"Product\"\n                className=\"h-[500px] w-full object-cover object-center\"\n              />\n            </div>\n            <div className=\"mt-4 flex justify-center gap-3\">\n              {IMAGES.map(({ imgelink }, index) => (\n                <button\n                  key={index}\n                  onClick={() => setActive(imgelink)}\n                  className={`h-20 w-20 overflow-hidden rounded-lg border-2 transition-all ${\n                    active === imgelink\n                      ? \"border-neutral-900\"\n                      : \"border-neutral-200 hover:border-neutral-400\"\n                  }`}\n                >\n                  <img\n                    src={imgelink}\n                    alt={`Gallery ${index + 1}`}\n                    className=\"h-full w-full object-cover object-center\"\n                  />\n                </button>\n              ))}\n            </div>\n\n            <div className=\"mt-8 space-y-6\">\n              <div>\n                <h3 className=\"mb-3 text-lg font-medium text-neutral-900\">\n                  Product Description\n                </h3>\n                <p className=\"leading-relaxed text-neutral-600\">\n                  Experience luxury and comfort with this premium winter coat.\n                  Crafted from high-quality materials with meticulous attention\n                  to detail, this coat features a modern silhouette that\n                  flatters all body types. The water-resistant outer shell keeps\n                  you dry in light rain, while the insulated lining provides\n                  warmth without bulk.\n                </p>\n              </div>\n              <div>\n                <h3 className=\"mb-3 text-lg font-medium text-neutral-900\">\n                  Key Features\n                </h3>\n                <ul className=\"space-y-2 text-neutral-600\">\n                  <li className=\"flex items-start gap-2\">\n                    <span className=\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\" />\n                    <span>\n                      Water-resistant fabric with breathable membrane technology\n                    </span>\n                  </li>\n                  <li className=\"flex items-start gap-2\">\n                    <span className=\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\" />\n                    <span>\n                      Premium insulation for optimal warmth in cold weather\n                    </span>\n                  </li>\n                  <li className=\"flex items-start gap-2\">\n                    <span className=\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\" />\n                    <span>Adjustable cuffs and hem for personalized fit</span>\n                  </li>\n                  <li className=\"flex items-start gap-2\">\n                    <span className=\"mt-1 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-neutral-900\" />\n                    <span>\n                      Multiple interior and exterior pockets for storage\n                    </span>\n                  </li>\n                </ul>\n              </div>\n            </div>\n          </div>\n\n          <div className=\"flex flex-col\">\n            <Badge\n              variant=\"outline\"\n              className=\"mb-4 w-fit border-neutral-300 text-xs font-medium text-neutral-600\"\n            >\n              Limited Edition\n            </Badge>\n\n            <h1 className=\"mb-2 text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl\">\n              Premium Winter Coat\n            </h1>\n\n            <div className=\"mb-6 flex items-center gap-4\">\n              <span className=\"text-2xl font-normal text-neutral-900\">\n                $1,290.00\n              </span>\n              <div className=\"flex items-center gap-1\">\n                <div className=\"flex\">\n                  {[...Array(5)].map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < 4\n                          ? \"fill-neutral-900 text-neutral-900\"\n                          : \"fill-neutral-300 text-neutral-300\"\n                      }`}\n                    />\n                  ))}\n                </div>\n                <span className=\"text-sm text-neutral-500\">(100 reviews)</span>\n              </div>\n            </div>\n\n            <p className=\"mb-6 text-sm leading-relaxed text-neutral-600\">\n              Elevate your winter wardrobe with this sophisticated coat that\n              seamlessly blends style and functionality. Perfect for both\n              professional settings and casual outings.\n            </p>\n\n            <div className=\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-2\">\n              <div>\n                <p className=\"mb-3 text-sm font-medium text-neutral-900\">\n                  Color\n                </p>\n                <Select value={selectedColor} onValueChange={setSelectedColor}>\n                  <SelectTrigger className=\"w-full border-neutral-200\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    {COLORS.map((color) => (\n                      <SelectItem key={color.name} value={color.name}>\n                        <div className=\"flex items-center gap-2\">\n                          <div\n                            className=\"h-4 w-4 rounded-full border border-neutral-200\"\n                            style={{ backgroundColor: color.hex }}\n                          />\n                          <span>{color.name}</span>\n                        </div>\n                      </SelectItem>\n                    ))}\n                  </SelectContent>\n                </Select>\n              </div>\n\n              <div>\n                <p className=\"mb-3 text-sm font-medium text-neutral-900\">\n                  Size\n                </p>\n                <Select value={selectedSize} onValueChange={setSelectedSize}>\n                  <SelectTrigger className=\"w-full border-neutral-200\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    {SIZES.map((size) => (\n                      <SelectItem key={size} value={size}>\n                        {size}\n                      </SelectItem>\n                    ))}\n                  </SelectContent>\n                </Select>\n              </div>\n            </div>\n\n            <div className=\"mb-6 grid grid-cols-1 gap-4 sm:grid-cols-3\">\n              {FEATURES.map((feature, index) => (\n                <div\n                  key={index}\n                  className=\"flex flex-col items-center gap-2 rounded-lg border border-neutral-200 bg-white p-4 text-center\"\n                >\n                  <feature.icon className=\"h-5 w-5 flex-shrink-0 text-neutral-900\" />\n                  <span className=\"text-xs text-neutral-600\">\n                    {feature.text}\n                  </span>\n                </div>\n              ))}\n            </div>\n\n            <div className=\"flex flex-col gap-3 sm:flex-row\">\n              <Button\n                size=\"lg\"\n                className=\"flex-1 bg-neutral-900 text-white hover:bg-neutral-800\"\n              >\n                Add to Cart\n              </Button>\n              <Button\n                size=\"lg\"\n                variant=\"outline\"\n                className={`border-neutral-900 transition-colors ${\n                  isFavorite\n                    ? \"bg-neutral-900 text-white hover:bg-neutral-800\"\n                    : \"text-neutral-900 hover:bg-neutral-900 hover:text-white\"\n                }`}\n                onClick={() => setIsFavorite(!isFavorite)}\n              >\n                <Heart\n                  className={`h-5 w-5 ${isFavorite ? \"fill-current\" : \"\"}`}\n                />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/product-details-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { ChevronLeft, ChevronRight, Heart } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst IMAGES = [\n  \"https://v3.material-tailwind.com/coat-1.png\",\n  \"https://v3.material-tailwind.com/coat-2.png\",\n  \"https://v3.material-tailwind.com/coat-3.png\",\n]\n\nconst SIZES = [\"XS\", \"S\", \"M\", \"L\"]\n\nexport default function ProductDetails01() {\n  const [selectedSize, setSelectedSize] = useState(\"S\")\n  const [currentIndex, setCurrentIndex] = useState(0)\n\n  const nextSlide = () => {\n    setCurrentIndex((prev) => (prev + 1) % IMAGES.length)\n  }\n\n  const prevSlide = () => {\n    setCurrentIndex((prev) => (prev - 1 + IMAGES.length) % IMAGES.length)\n  }\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <nav className=\"mb-4 flex text-sm\">\n          <a href=\"#\" className=\"text-muted-foreground hover:text-foreground\">\n            Store\n          </a>\n          <span className=\"mx-2\">/</span>\n          <a href=\"#\" className=\"text-muted-foreground hover:text-foreground\">\n            Designers\n          </a>\n          <span className=\"mx-2\">/</span>\n          <span className=\"text-foreground\">Pink Blouse</span>\n        </nav>\n        <div className=\"mt-4 grid grid-cols-1 items-center gap-10 md:grid-cols-2\">\n          <div>\n            <Card className=\"py-10\">\n              <CardContent className=\"relative p-0\">\n                <div className=\"overflow-hidden\">\n                  <img\n                    src={IMAGES[currentIndex]}\n                    alt={`Product ${currentIndex + 1}`}\n                    className=\"mx-auto h-[30rem] object-cover transition-transform duration-300\"\n                  />\n                </div>\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  onClick={prevSlide}\n                  className=\"absolute top-1/2 left-2 -translate-y-1/2 rounded-full\"\n                >\n                  <ChevronLeft className=\"h-7 w-7\" />\n                </Button>\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  onClick={nextSlide}\n                  className=\"absolute top-1/2 right-2 -translate-y-1/2 rounded-full\"\n                >\n                  <ChevronRight className=\"h-7 w-7\" />\n                </Button>\n              </CardContent>\n            </Card>\n          </div>\n          <div className=\"text-center\">\n            <h2 className=\"mb-6 text-2xl font-bold\">Pink Blouse</h2>\n            <p className=\"text-primary text-2xl font-semibold\">$1,290</p>\n            <div className=\"my-8 flex items-center justify-center gap-2\">\n              <div className=\"flex\">\n                {[1, 2, 3, 4].map((star) => (\n                  <svg\n                    key={star}\n                    className=\"h-5 w-5 fill-yellow-400\"\n                    viewBox=\"0 0 20 20\"\n                  >\n                    <path d=\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\" />\n                  </svg>\n                ))}\n                <svg className=\"h-5 w-5 fill-gray-300\" viewBox=\"0 0 20 20\">\n                  <path d=\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\" />\n                </svg>\n              </div>\n              <span className=\"text-sm font-semibold\">100 Reviews</span>\n            </div>\n            <p className=\"text-muted-foreground [text-wrap:_balance]\">\n              There&apos;s nothing I really wanted to do in life that I\n              wasn&apos;t able to get good at. That&apos;s my skill. I&apos;m\n              not really specifically talented at anything except for the\n              ability to learn.\n            </p>\n            <h3 className=\"mt-8 mb-4 text-center text-lg font-semibold\">\n              Color\n            </h3>\n            <div className=\"flex justify-center gap-2\">\n              <div className=\"h-5 w-5 cursor-pointer rounded bg-black\" />\n              <div className=\"h-5 w-5 cursor-pointer rounded border bg-white\" />\n              <div className=\"h-5 w-5 cursor-pointer rounded border bg-gray-200\" />\n            </div>\n            <h3 className=\"mt-8 mb-4 text-center text-lg font-semibold\">\n              Size\n            </h3>\n            <div className=\"flex items-center justify-center gap-4\">\n              {SIZES.map((size) => (\n                <Button\n                  key={size}\n                  onClick={() => setSelectedSize(size)}\n                  variant={size === selectedSize ? \"default\" : \"outline\"}\n                >\n                  {size}\n                </Button>\n              ))}\n            </div>\n            <div className=\"my-6 flex items-center justify-center gap-2\">\n              <Button size=\"lg\" className=\"w-full max-w-60\">\n                Add to Cart\n              </Button>\n              <Button size=\"lg\" variant=\"outline\" className=\"text-red-500\">\n                <Heart className=\"h-5 w-5\" />\n              </Button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/product-listing-filters-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Heart } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst FILTERS = [\n  {\n    id: \"categories\",\n    label: \"Categories\",\n    options: [\"All\", \"Shirts\", \"Pants\", \"Sweaters\", \"Jackets\"],\n  },\n  {\n    id: \"size\",\n    label: \"Size\",\n    options: [\"All Sizes\", \"XS\", \"S\", \"M\", \"L\", \"XL\", \"XXL\"],\n  },\n  {\n    id: \"material\",\n    label: \"Material\",\n    options: [\"All Materials\", \"Cotton\", \"Cashmere\", \"Wool\", \"Silk\", \"Linen\"],\n  },\n  {\n    id: \"color\",\n    label: \"Color\",\n    options: [\"All Colors\", \"Black\", \"Blue\", \"Gray\", \"Brown\", \"White\", \"Navy\"],\n  },\n  {\n    id: \"pattern\",\n    label: \"Pattern\",\n    options: [\"All Patterns\", \"Solid\", \"Striped\", \"Cable-knit\", \"Printed\"],\n  },\n]\n\nconst PRODUCTS = [\n  {\n    id: 1,\n    image:\n      \"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\",\n    brand: \"Zegna\",\n    name: \"Cable-knit cashmere cardigan\",\n    price: \"€3,450\",\n    badge: \"Exclusive\",\n  },\n  {\n    id: 2,\n    image:\n      \"https://images.unsplash.com/photo-1559745482-57bfa9ca5a8a?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1481\",\n    brand: \"Zegna\",\n    name: \"Cotton and cashmere shirt\",\n    price: \"€675\",\n    badge: null,\n  },\n  {\n    id: 3,\n    image:\n      \"https://images.unsplash.com/photo-1737608734653-d1eaad541d46?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1027\",\n    brand: \"Zegna\",\n    name: \"Wool straight pants\",\n    price: \"€1,450\",\n    badge: \"Exclusive\",\n  },\n  {\n    id: 4,\n    image:\n      \"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\",\n    brand: \"Zegna\",\n    name: \"Cashmere sweater\",\n    price: \"€1,950\",\n    badge: \"New Arrival\",\n  },\n]\n\nexport default function ProductListingFilters01() {\n  const [favorites, setFavorites] = useState<number[]>([])\n  const [selectedFilters, setSelectedFilters] = useState<\n    Record<string, string>\n  >({})\n\n  const toggleFavorite = (productId: number) => {\n    setFavorites((prev) =>\n      prev.includes(productId)\n        ? prev.filter((id) => id !== productId)\n        : [...prev, productId]\n    )\n  }\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"mb-8 flex flex-wrap items-center justify-between gap-4\">\n          <div className=\"flex flex-wrap gap-2\">\n            {FILTERS.map((filter) => (\n              <Select\n                key={filter.id}\n                value={selectedFilters[filter.id] || filter.options[0]}\n                onValueChange={(value) =>\n                  setSelectedFilters((prev) => ({\n                    ...prev,\n                    [filter.id]: value,\n                  }))\n                }\n              >\n                <SelectTrigger className=\"w-[140px]\">\n                  <SelectValue placeholder={filter.label} />\n                </SelectTrigger>\n                <SelectContent>\n                  {filter.options.map((option) => (\n                    <SelectItem key={option} value={option}>\n                      {option}\n                    </SelectItem>\n                  ))}\n                </SelectContent>\n              </Select>\n            ))}\n          </div>\n          <div className=\"flex items-center gap-4\">\n            <span className=\"text-muted-foreground text-sm\">462 Products</span>\n            <Select defaultValue=\"featured\">\n              <SelectTrigger className=\"w-[180px]\">\n                <SelectValue placeholder=\"Sort by\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"featured\">Featured</SelectItem>\n                <SelectItem value=\"price-low\">Price: Low to High</SelectItem>\n                <SelectItem value=\"price-high\">Price: High to Low</SelectItem>\n                <SelectItem value=\"newest\">Newest</SelectItem>\n              </SelectContent>\n            </Select>\n          </div>\n        </div>\n\n        <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\">\n          {PRODUCTS.map((product) => (\n            <div\n              key={product.id}\n              className=\"group bg-card relative overflow-hidden rounded-lg border transition-all hover:shadow-lg\"\n            >\n              {product.badge && (\n                <Badge\n                  variant=\"secondary\"\n                  className=\"absolute top-3 left-3 z-10 bg-white dark:bg-gray-900\"\n                >\n                  {product.badge}\n                </Badge>\n              )}\n              <button\n                onClick={() => toggleFavorite(product.id)}\n                className=\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/90 backdrop-blur-sm transition-colors hover:bg-white dark:bg-gray-900/90 dark:hover:bg-gray-900\"\n              >\n                <Heart\n                  className={`h-4 w-4 transition-colors ${\n                    favorites.includes(product.id)\n                      ? \"fill-red-500 text-red-500\"\n                      : \"text-gray-600 dark:text-gray-400\"\n                  }`}\n                />\n              </button>\n\n              <div className=\"bg-muted/30 aspect-square overflow-hidden\">\n                <img\n                  src={product.image}\n                  alt={product.name}\n                  className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n                />\n              </div>\n\n              <div className=\"border-t p-4\">\n                <div className=\"mb-2 flex items-start justify-between gap-2\">\n                  <div className=\"flex-1\">\n                    <p className=\"text-sm font-semibold\">{product.brand}</p>\n                    <p className=\"text-muted-foreground mt-1 text-sm leading-tight\">\n                      {product.name}\n                    </p>\n                  </div>\n                </div>\n                <p className=\"mt-2 font-semibold\">{product.price}</p>\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/promotional-cards-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nconst PRODUCTS = [\n  {\n    name: \"Active toning essence\",\n    price: \"$59.00\",\n    image:\n      \"https://images.unsplash.com/photo-1620916566398-39f1143ab7be?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\",\n  },\n  {\n    name: \"Hydrating face serum\",\n    price: \"$49.00\",\n    image:\n      \"https://images.unsplash.com/photo-1571781926291-c477ebfd024b?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\",\n  },\n  {\n    name: \"Vitamin C moisturizer\",\n    price: \"$65.00\",\n    image:\n      \"https://images.unsplash.com/photo-1608571423902-eed4a5ad8108?ixlib=rb-4.1.0&auto=format&fit=crop&q=80&w=800\",\n  },\n]\n\nexport default function PromotionalCards01() {\n  const [currentProduct, setCurrentProduct] = useState(0)\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <div className=\"grid grid-cols-1 overflow-hidden rounded-2xl shadow-xl lg:grid-cols-2\">\n          {/* Left: Product Showcase */}\n          <div className=\"flex flex-col items-center justify-center bg-[#e8e3dc] p-16\">\n            <div className=\"mb-8 flex h-80 w-80 items-center justify-center\">\n              <img\n                src={PRODUCTS[currentProduct].image}\n                alt={PRODUCTS[currentProduct].name}\n                className=\"h-full w-full object-contain drop-shadow-2xl transition-all duration-500\"\n              />\n            </div>\n            <h3 className=\"mb-2 text-center text-lg font-medium text-gray-800\">\n              {PRODUCTS[currentProduct].name}\n            </h3>\n            <p className=\"mb-6 text-center text-xl font-semibold text-gray-900\">\n              {PRODUCTS[currentProduct].price}\n            </p>\n            <div className=\"flex gap-2\">\n              {PRODUCTS.map((_, index) => (\n                <button\n                  key={index}\n                  onClick={() => setCurrentProduct(index)}\n                  className={`h-2.5 w-2.5 rounded-full transition-all ${\n                    currentProduct === index\n                      ? \"w-8 bg-gray-800\"\n                      : \"bg-gray-400 hover:bg-gray-600\"\n                  }`}\n                  aria-label={`View product ${index + 1}`}\n                />\n              ))}\n            </div>\n          </div>\n\n          {/* Right: Hero Image with Text */}\n          <div className=\"relative flex min-h-[500px] items-center justify-center lg:min-h-[600px]\">\n            <img\n              src=\"https://images.unsplash.com/photo-1581182815808-b6eb627a8798?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1065\"\n              alt=\"Beauty model\"\n              className=\"absolute inset-0 h-full w-full object-cover\"\n            />\n            <div className=\"relative z-10 px-8 text-center lg:px-16\">\n              <h2 className=\"font-serif text-5xl leading-tight font-light text-white drop-shadow-lg lg:text-6xl\">\n                Glow up with\n                <br />\n                nature\n              </h2>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/shopping-cart-01/page.tsx",
    "content": "\"use client\"\n\nimport { Lock, Package, ShoppingBag, Tag, Truck, X } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\nimport { Separator } from \"@/components/ui/separator\"\n\nconst CHECKOUT_PRODUCTS = [\n  {\n    name: \"Wool Suit\",\n    price: \"$1,300\",\n    product: \"Silk\",\n    size: \"XS\",\n    img: \"https://v3.material-tailwind.com/coat-2.png\",\n    stock: \"In Stock\",\n  },\n  {\n    name: \"Premium Suit\",\n    price: \"$700\",\n    product: \"Linen\",\n    size: \"M\",\n    img: \"https://v3.material-tailwind.com/coat-1.png\",\n    stock: \"In Stock\",\n  },\n]\n\nexport default function ShoppingCart01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        <Card className=\"rounded-2xl shadow-lg\">\n          <CardHeader className=\"text-center\">\n            <div className=\"mb-4 flex items-center justify-center gap-2\">\n              <div className=\"bg-primary/10 flex h-14 w-14 items-center justify-center rounded-full\">\n                <ShoppingBag className=\"text-primary h-7 w-7\" />\n              </div>\n            </div>\n            <CardTitle className=\"text-4xl\">Shopping Cart</CardTitle>\n            <div className=\"mt-4 inline-flex items-center gap-2 rounded-full bg-green-50 px-5 py-2.5\">\n              <Truck className=\"h-5 w-5 text-green-600\" />\n              <p className=\"text-sm font-semibold text-green-700\">\n                You are eligible for Free Shipping\n              </p>\n            </div>\n          </CardHeader>\n          <CardContent>\n            <div className=\"grid w-full grid-cols-1 gap-8 lg:grid-cols-3\">\n              <div className=\"col-span-2\">\n                <Card className=\"border-2\">\n                  <CardHeader className=\"gap-0 border-b px-6\">\n                    <div className=\"flex items-center gap-2\">\n                      <Package className=\"text-primary h-5 w-5\" />\n                      <CardTitle className=\"text-xl\">\n                        Cart Items ({CHECKOUT_PRODUCTS.length})\n                      </CardTitle>\n                    </div>\n                  </CardHeader>\n                  <CardContent className=\"p-0\">\n                    {CHECKOUT_PRODUCTS.map(\n                      ({ name, price, img, product, size, stock }, index) => (\n                        <div key={index}>\n                          <div className=\"p-6\">\n                            <div className=\"flex flex-col items-stretch gap-6 sm:flex-row\">\n                              <div className=\"bg-muted/50 h-36 w-36 shrink-0 overflow-hidden rounded-xl p-3\">\n                                <img\n                                  src={img}\n                                  alt={name}\n                                  className=\"h-full w-full object-cover\"\n                                />\n                              </div>\n                              <div className=\"flex h-auto flex-1 flex-col gap-4\">\n                                <div className=\"flex items-start justify-between gap-4\">\n                                  <div className=\"flex-1\">\n                                    <h4 className=\"text-xl font-bold\">\n                                      {name}\n                                    </h4>\n                                    <p className=\"text-muted-foreground mt-1.5 text-sm\">\n                                      {product}\n                                    </p>\n                                  </div>\n                                  <Button\n                                    size=\"icon\"\n                                    variant=\"ghost\"\n                                    className=\"text-muted-foreground hover:bg-destructive/10 hover:text-destructive h-9 w-9 rounded-full\"\n                                  >\n                                    <X className=\"h-5 w-5\" />\n                                  </Button>\n                                </div>\n\n                                <div className=\"flex flex-wrap items-center gap-2\">\n                                  <Badge\n                                    variant=\"outline\"\n                                    className=\"gap-1.5 px-3 py-1\"\n                                  >\n                                    <span className=\"text-xs\">Size:</span>\n                                    <span className=\"font-semibold\">\n                                      {size}\n                                    </span>\n                                  </Badge>\n                                  <Badge className=\"gap-1.5 border-green-200 bg-green-50 px-3 py-1 text-green-700 hover:bg-green-100\">\n                                    {stock}\n                                  </Badge>\n                                </div>\n\n                                <div className=\"mt-auto flex items-center justify-between\">\n                                  <div className=\"flex items-center gap-3\">\n                                    <span className=\"text-muted-foreground text-sm font-medium\">\n                                      Quantity:\n                                    </span>\n                                    <Select defaultValue=\"1\">\n                                      <SelectTrigger className=\"h-10 w-28\">\n                                        <SelectValue placeholder=\"Qty\" />\n                                      </SelectTrigger>\n                                      <SelectContent>\n                                        <SelectItem value=\"1\">1</SelectItem>\n                                        <SelectItem value=\"2\">2</SelectItem>\n                                        <SelectItem value=\"3\">3</SelectItem>\n                                        <SelectItem value=\"4\">4</SelectItem>\n                                        <SelectItem value=\"5\">5</SelectItem>\n                                      </SelectContent>\n                                    </Select>\n                                  </div>\n                                  <p className=\"text-primary text-2xl font-bold\">\n                                    {price}\n                                  </p>\n                                </div>\n                              </div>\n                            </div>\n                          </div>\n                          {index < CHECKOUT_PRODUCTS.length - 1 && (\n                            <Separator />\n                          )}\n                        </div>\n                      )\n                    )}\n                  </CardContent>\n                </Card>\n              </div>\n\n              <div className=\"col-span-1\">\n                <div className=\"sticky top-4\">\n                  <Card className=\"border-2\">\n                    <CardHeader className=\"gap-0 border-b px-6\">\n                      <CardTitle className=\"text-xl\">Order Summary</CardTitle>\n                    </CardHeader>\n                    <CardContent className=\"p-0\">\n                      <div className=\"space-y-4 p-6\">\n                        <div className=\"flex items-center justify-between\">\n                          <span className=\"text-muted-foreground\">\n                            Subtotal\n                          </span>\n                          <span className=\"font-semibold\">$2,090</span>\n                        </div>\n                        <div className=\"flex items-center justify-between\">\n                          <span className=\"text-muted-foreground\">\n                            Shipping Tax\n                          </span>\n                          <span className=\"font-semibold text-green-600\">\n                            $0\n                          </span>\n                        </div>\n                      </div>\n\n                      <Separator />\n\n                      <div className=\"p-6\">\n                        <div className=\"mb-3 flex items-center gap-2\">\n                          <Tag className=\"text-muted-foreground h-4 w-4\" />\n                          <label className=\"text-sm font-semibold\">\n                            Promo Code\n                          </label>\n                        </div>\n                        <div className=\"flex items-center gap-2\">\n                          <Input\n                            type=\"text\"\n                            placeholder=\"Enter code\"\n                            className=\"flex-1\"\n                          />\n                          <Button variant=\"outline\" className=\"shrink-0\">\n                            Apply\n                          </Button>\n                        </div>\n                      </div>\n\n                      <Separator />\n\n                      <div className=\"bg-muted/30 space-y-4 p-6\">\n                        <div className=\"flex items-center justify-between\">\n                          <span className=\"text-lg font-bold\">Order Total</span>\n                          <span className=\"text-primary text-3xl font-bold\">\n                            $2,090\n                          </span>\n                        </div>\n                        <Button className=\"w-full gap-2\" size=\"lg\">\n                          <Lock className=\"h-5 w-5\" />\n                          Proceed to Checkout\n                        </Button>\n                      </div>\n                    </CardContent>\n                    <CardFooter className=\"bg-green-50\">\n                      <div className=\"flex items-start gap-3\">\n                        <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-green-100\">\n                          <Truck className=\"h-5 w-5 text-green-600\" />\n                        </div>\n                        <div>\n                          <p className=\"font-semibold text-green-900\">\n                            Free Shipping Applied\n                          </p>\n                          <p className=\"mt-1 text-sm text-green-700\">\n                            Estimated delivery: 3-5 business days\n                          </p>\n                        </div>\n                      </div>\n                    </CardFooter>\n                  </Card>\n                </div>\n              </div>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/simple-blog-content-01/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nconst POSTS = [\n  {\n    img: \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&auto=format&fit=crop\",\n    tag: \"House\",\n    title: \"Shared Coworking\",\n    desc: \"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\",\n    date: \"Posted on 26 May\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Otto Gonzalez\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=800&auto=format&fit=crop\",\n    tag: \"Office\",\n    title: \"Really Housekeeping\",\n    desc: \"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\",\n    date: \"Posted on 03 May\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&auto=format&fit=crop\",\n      name: \"Chriss Smahos\",\n    },\n  },\n  {\n    img: \"https://images.unsplash.com/photo-1497366754035-f200968a6e72?w=800&auto=format&fit=crop\",\n    tag: \"Hub\",\n    title: \"Coworking Office\",\n    desc: \"Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons.\",\n    date: \"Posted on 12 April\",\n    author: {\n      img: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&auto=format&fit=crop\",\n      name: \"Elijah Miller\",\n    },\n  },\n]\n\nexport default function SimpleBlogContent01() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto grid grid-cols-1 items-start gap-6 md:grid-cols-2 lg:grid-cols-3\">\n        {POSTS.map(({ img, tag, title, desc, date, author }) => (\n          <Card key={title} className=\"overflow-hidden py-0\">\n            <CardHeader className=\"p-4 pb-0\">\n              <div className=\"relative h-60 w-full overflow-hidden rounded-lg\">\n                <img\n                  src={img}\n                  alt={title}\n                  className=\"h-full w-full object-cover object-center\"\n                />\n              </div>\n            </CardHeader>\n            <CardContent className=\"px-6\">\n              <Badge variant=\"secondary\" className=\"mb-2\">\n                {tag}\n              </Badge>\n              <CardTitle className=\"mb-2 text-xl\">{title}</CardTitle>\n              <CardDescription>{desc}</CardDescription>\n            </CardContent>\n            <CardFooter className=\"flex items-center gap-3 p-6 pt-0\">\n              <Avatar>\n                <AvatarImage src={author.img} alt={author.name} />\n                <AvatarFallback>{author.name.charAt(0)}</AvatarFallback>\n              </Avatar>\n              <div className=\"space-y-0.5\">\n                <p className=\"text-sm font-semibold\">{author.name}</p>\n                <p className=\"text-muted-foreground text-xs\">{date}</p>\n              </div>\n            </CardFooter>\n          </Card>\n        ))}\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/simple-faq-01/page.tsx",
    "content": "export default function SimpleFaq01() {\n  return (\n    <section className=\"px-6 py-16\">\n      <div className=\"mx-auto max-w-3xl\">\n        <div className=\"mb-20 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold\">\n            Frequently asked questions\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            A lot of people don&apos;t appreciate the moment until it&apos;s\n            passed. I&apos;m not trying my hardest, and I&apos;m not trying to\n            do\n          </p>\n        </div>\n        <div className=\"mb-6\">\n          <h3 className=\"border-b py-6 text-lg font-semibold\">\n            How do I order?\n          </h3>\n          <p className=\"text-muted-foreground py-6 leading-relaxed\">\n            We&apos;re not always in the position that we want to be at.\n            We&apos;re constantly growing. We&apos;re constantly making\n            mistakes. We&apos;re constantly trying to express ourselves and\n            actualize our dreams. If you have the opportunity to play this game\n            of life you need to appreciate every moment. A lot of people\n            don&apos;t appreciate the moment until it&apos;s passed.\n          </p>\n        </div>\n        <div className=\"mb-6\">\n          <h3 className=\"border-b py-6 text-lg font-semibold\">\n            How can i make the payment?\n          </h3>\n          <p className=\"text-muted-foreground py-6 leading-relaxed\">\n            It really matters and then like it really doesn&apos;t matter. What\n            matters is the people who are sparked by it. And the people who are\n            like offended by it, it doesn&apos;t matter. Because it&apos;s about\n            motivating the doers. Because I&apos;m here to follow my dreams and\n            inspire other people to follow their dreams, too. We&apos;re not\n            always in the position that we want to be at. We&apos;re constantly\n            growing. We&apos;re constantly making mistakes. We&apos;re\n            constantly trying to express ourselves and actualize our dreams. If\n            you have the opportunity to play this game of life you need to\n            appreciate every moment. A lot of people don&apos;t appreciate the\n            moment until it&apos;s passed.\n          </p>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/simple-product-details-01/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Heart } from \"lucide-react\"\n\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst SIZES = [\"XS\", \"S\", \"M\", \"L\", \"XL\", \"XXL\"]\n\nconst SIMILAR_ITEMS = [\n  {\n    name: \"Black Bustier Top\",\n    price: \"€49.95\",\n    image:\n      \"https://images.unsplash.com/photo-1661327930345-9c6714b603b3?auto=format&fit=crop&q=80&w=400&h=400\",\n    sizes: \"Available in 5 size\",\n  },\n  {\n    name: \"Black High-Waist Jeans\",\n    price: \"€49.95\",\n    image:\n      \"https://images.unsplash.com/photo-1578508637199-240a8f25eff6?auto=format&fit=crop&q=80&w=400&h=400\",\n    sizes: \"Available in 8 taille\",\n  },\n]\n\nexport default function SimpleProductDetails01() {\n  const [selectedSize, setSelectedSize] = useState(\"M\")\n  const [isFavorite, setIsFavorite] = useState(false)\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto\">\n        {/* Main Product Section */}\n        <div className=\"mb-16 grid grid-cols-1 items-start gap-x-8 gap-y-10 md:grid-cols-2\">\n          <div className=\"bg-muted/30 h-full max-h-[32rem] w-full overflow-hidden rounded-xl border\">\n            <img\n              alt=\"Pink Blouse\"\n              src=\"https://images.unsplash.com/photo-1574015974293-817f0ebebb74?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=973\"\n              className=\"h-full w-full object-cover\"\n            />\n          </div>\n          <div className=\"md:p-2\">\n            <h3 className=\"text-3xl font-bold\">Pink Blouse</h3>\n            <p className=\"text-primary my-4 text-3xl font-bold\">$1,490</p>\n            <p className=\"text-muted-foreground leading-relaxed [text-wrap:_balance]\">\n              Whether you're closing deals or attending formal events, its\n              breathable lining and natural stretch keep you comfortable and\n              sharp from day to night.\n            </p>\n\n            <div className=\"my-6 flex items-center gap-2\">\n              <div className=\"flex\">\n                {[1, 2, 3, 4].map((star) => (\n                  <svg\n                    key={star}\n                    className=\"h-5 w-5 fill-yellow-400\"\n                    viewBox=\"0 0 20 20\"\n                  >\n                    <path d=\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\" />\n                  </svg>\n                ))}\n                <svg className=\"h-5 w-5 fill-gray-300\" viewBox=\"0 0 20 20\">\n                  <path d=\"M10 15l-5.878 3.09 1.123-6.545L.489 6.91l6.572-.955L10 0l2.939 5.955 6.572.955-4.756 4.635 1.123 6.545z\" />\n                </svg>\n              </div>\n              <p className=\"text-sm font-semibold\">100 Reviews</p>\n            </div>\n\n            <div className=\"mb-6\">\n              <h4 className=\"mb-3 text-lg font-semibold\">Size</h4>\n              <div className=\"flex flex-wrap gap-2\">\n                {SIZES.map((size) => (\n                  <Button\n                    key={size}\n                    variant={selectedSize === size ? \"default\" : \"outline\"}\n                    size=\"sm\"\n                    className=\"min-w-[3rem]\"\n                    onClick={() => setSelectedSize(size)}\n                  >\n                    {size}\n                  </Button>\n                ))}\n              </div>\n            </div>\n\n            <div className=\"mb-6\">\n              <h4 className=\"mb-3 text-lg font-semibold\">Color</h4>\n              <div className=\"flex gap-2\">\n                <div className=\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-black transition-transform hover:scale-110\" />\n                <div className=\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-white transition-transform hover:scale-110\" />\n                <div className=\"h-8 w-8 cursor-pointer rounded-full border-2 border-gray-300 bg-gray-200 transition-transform hover:scale-110\" />\n              </div>\n            </div>\n\n            <div className=\"mt-8 flex items-center gap-3\">\n              <Button className=\"w-full max-w-sm\" size=\"lg\">\n                Add to Cart\n              </Button>\n              <Button\n                variant=\"outline\"\n                size=\"icon\"\n                className={`h-11 w-11 ${\n                  isFavorite\n                    ? \"text-red-500 hover:text-red-600\"\n                    : \"text-muted-foreground hover:text-red-500\"\n                }`}\n                onClick={() => setIsFavorite(!isFavorite)}\n              >\n                <Heart\n                  className={`h-5 w-5 ${isFavorite ? \"fill-current\" : \"\"}`}\n                />\n              </Button>\n            </div>\n          </div>\n        </div>\n\n        {/* More Info & Similar Items Section */}\n        <div className=\"grid grid-cols-1 gap-8 lg:grid-cols-2\">\n          {/* More Info Section */}\n          <div>\n            <h3 className=\"mb-6 text-2xl font-bold\">More Info</h3>\n            <Accordion\n              type=\"single\"\n              collapsible\n              defaultValue=\"description\"\n              className=\"w-full\"\n            >\n              <AccordionItem value=\"description\">\n                <AccordionTrigger className=\"text-base font-semibold\">\n                  Description\n                </AccordionTrigger>\n                <AccordionContent className=\"text-muted-foreground leading-relaxed\">\n                  <p className=\"mb-4\">\n                    Whether you're navigating city streets or embarking on\n                    outdoor adventures, this puffer jacket ensures you stay cozy\n                    and comfortable wherever you go. The versatile black hue\n                    effortlessly complements any outfit, making it a go-to\n                    choice for everyday wear.\n                  </p>\n                  <p>\n                    Equipped with practical features, including a front zipper\n                    closure and zippered pockets, the MidnightShield Jacket\n                    offers convenient storage for your essentials while on the\n                    move. Its adjustable cuffs and hem allow for a customizable\n                    fit, ensuring maximum comfort and versatility.\n                  </p>\n                </AccordionContent>\n              </AccordionItem>\n\n              <AccordionItem value=\"delivery\">\n                <AccordionTrigger className=\"text-base font-semibold\">\n                  Delivery & Returns\n                </AccordionTrigger>\n                <AccordionContent className=\"text-muted-foreground leading-relaxed\">\n                  <p className=\"mb-4\">\n                    <strong>Free Standard Delivery:</strong> Orders over $100\n                    qualify for free standard shipping. Delivery typically takes\n                    3-5 business days.\n                  </p>\n                  <p className=\"mb-4\">\n                    <strong>Express Shipping:</strong> Available at checkout for\n                    faster delivery (1-2 business days).\n                  </p>\n                  <p>\n                    <strong>Returns:</strong> We offer a 30-day return policy.\n                    Items must be in original condition with tags attached. Free\n                    returns for defective items.\n                  </p>\n                </AccordionContent>\n              </AccordionItem>\n\n              <AccordionItem value=\"contact\" className=\"border-b-0\">\n                <AccordionTrigger className=\"text-base font-semibold\">\n                  Contact Us\n                </AccordionTrigger>\n                <AccordionContent className=\"text-muted-foreground leading-relaxed\">\n                  <p className=\"mb-3\">\n                    Have questions about this product? We're here to help!\n                  </p>\n                  <p className=\"mb-2\">\n                    <strong>Email:</strong> support@example.com\n                  </p>\n                  <p className=\"mb-2\">\n                    <strong>Phone:</strong> +1 (555) 123-4567\n                  </p>\n                  <p>\n                    <strong>Hours:</strong> Mon-Fri, 9AM-6PM EST\n                  </p>\n                </AccordionContent>\n              </AccordionItem>\n            </Accordion>\n          </div>\n\n          {/* Similar Items Section */}\n          <div>\n            <h3 className=\"mb-6 text-2xl font-bold\">Similar Items</h3>\n            <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2\">\n              {SIMILAR_ITEMS.map((item, index) => (\n                <Card\n                  key={index}\n                  className=\"group cursor-pointer overflow-hidden py-0 transition-shadow hover:shadow-lg\"\n                >\n                  <CardContent className=\"p-0\">\n                    <div className=\"bg-muted aspect-[4/5] overflow-hidden\">\n                      <img\n                        src={item.image}\n                        alt={item.name}\n                        className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n                      />\n                    </div>\n                    <div className=\"p-4\">\n                      <h4 className=\"font-semibold tracking-wide uppercase\">\n                        {item.name}\n                      </h4>\n                      <p className=\"mt-2 text-lg font-bold\">{item.price}</p>\n                      <p className=\"text-muted-foreground mt-2 text-sm\">\n                        {item.sizes}\n                      </p>\n                    </div>\n                  </CardContent>\n                </Card>\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/software-purchase-01/page.tsx",
    "content": "\"use client\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { SoftwarePurchaseCard } from \"@/components/ui/software-purchase-card\"\n\nexport default function Page() {\n  const handleApprove = () => {\n    console.log(\"Purchase approved\")\n  }\n\n  const handleDiscard = () => {\n    console.log(\"Purchase discarded\")\n  }\n\n  return (\n    <div className=\"flex min-h-screen w-full items-center justify-center p-6\">\n      <div className=\"flex w-full max-w-6xl flex-col gap-8 lg:flex-row\">\n        {/* Left side - Purchase Details */}\n        <div className=\"flex flex-1 flex-col gap-6\">\n          <div className=\"flex flex-col gap-2\">\n            <h1 className=\"text-3xl font-bold\">Software Purchase Request</h1>\n            <p className=\"text-muted-foreground\">\n              Review and approve the software purchase details below\n            </p>\n          </div>\n\n          <Separator />\n\n          <div className=\"flex flex-col gap-6\">\n            <div>\n              <h2 className=\"mb-4 text-xl font-semibold\">Purchase Details</h2>\n              <div className=\"grid gap-4\">\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Software Name</span>\n                  <span className=\"text-muted-foreground\">\n                    Enterprise Cloud Suite\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Vendor</span>\n                  <span className=\"text-muted-foreground\">\n                    CloudTech Solutions Inc.\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">License Type</span>\n                  <span className=\"text-muted-foreground\">\n                    Commercial License\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Contract Duration</span>\n                  <span className=\"text-muted-foreground\">12 months</span>\n                </div>\n              </div>\n            </div>\n\n            <Separator />\n\n            <div>\n              <h2 className=\"mb-4 text-xl font-semibold\">\n                Billing Information\n              </h2>\n              <div className=\"grid gap-4\">\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Billing Cycle</span>\n                  <span className=\"text-muted-foreground\">Monthly</span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Payment Method</span>\n                  <span className=\"text-muted-foreground\">\n                    Corporate Credit Card\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Cost Center</span>\n                  <span className=\"text-muted-foreground\">\n                    Engineering Department\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Annual Total</span>\n                  <span className=\"text-muted-foreground font-semibold\">\n                    $30,000\n                  </span>\n                </div>\n              </div>\n            </div>\n\n            <Separator />\n\n            <div>\n              <h2 className=\"mb-4 text-xl font-semibold\">\n                Additional Information\n              </h2>\n              <div className=\"grid gap-4\">\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Requested By</span>\n                  <span className=\"text-muted-foreground\">\n                    John Smith (Engineering Manager)\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Request Date</span>\n                  <span className=\"text-muted-foreground\">\n                    December 28, 2024\n                  </span>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Status</span>\n                  <Badge variant=\"secondary\" className=\"w-fit\">\n                    Pending Approval\n                  </Badge>\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <span className=\"text-sm font-medium\">Justification</span>\n                  <p className=\"text-muted-foreground text-sm leading-relaxed\">\n                    This software is critical for our cloud infrastructure\n                    management and will enable the engineering team to scale\n                    operations more efficiently. The per-seat pricing model\n                    aligns with our team growth projections for Q1 2025.\n                  </p>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* Right side - Software Purchase Card */}\n        <div className=\"flex items-start justify-center lg:sticky lg:top-6 lg:h-fit lg:w-[400px]\">\n          <SoftwarePurchaseCard\n            softwareName=\"Enterprise Cloud Suite\"\n            startDate=\"2025-01-15\"\n            seats={50}\n            pricingType=\"per-seat\"\n            price=\"$2,500\"\n            onApprove={handleApprove}\n            onDiscard={handleDiscard}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-01/page.tsx",
    "content": "\"use client\"\n\nimport { Sparkles } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    quote:\n      \"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Michael Chen\",\n    role: \"Tech Lead at Stripe\",\n    quote:\n      \"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    quote:\n      \"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-20 text-center\">\n          <Badge variant=\"outline\" className=\"mx-auto mb-8 w-max\">\n            <Sparkles className=\"mr-2 h-4 w-4\" />\n            Testimonials\n          </Badge>\n          <h2 className=\"mb-4 text-3xl font-bold\">What Clients Say</h2>\n          <p className=\"text-muted-foreground mx-auto max-w-lg text-lg\">\n            We&apos;re constantly trying to express ourselves and actualize our\n            dreams. If you have the opportunity to play.\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\n            <Card key={key} className=\"border-0 bg-transparent shadow-none\">\n              <CardContent className=\"p-0 text-center\">\n                <Avatar className=\"mx-auto mb-4 h-20 w-20\">\n                  <AvatarImage src={image} alt={`${name} image`} />\n                  <AvatarFallback>\n                    {name\n                      .split(\" \")\n                      .map((n) => n[0])\n                      .join(\"\")}\n                  </AvatarFallback>\n                </Avatar>\n                <p className=\"mb-1 text-lg font-semibold\">{name}</p>\n                <p className=\"text-muted-foreground mb-4 text-sm\">{role}</p>\n                <blockquote className=\"text-muted-foreground mx-auto max-w-lg\">\n                  &quot;{quote}&quot;\n                </blockquote>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-02/page.tsx",
    "content": "\"use client\"\n\nimport { BadgeCheck, Twitter } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent, CardFooter, CardHeader } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Jessica Devis\",\n    username: \"@jessicadevis\",\n    quote:\n      \"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 🎉\",\n    date: \"Jan 17, 2024\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Lucian Eurel\",\n    username: \"@lucianeurel\",\n    quote:\n      \"It's like having a superpower in your toolkit. The ability to craft custom designs quickly and efficiently with simple classes is unparalleled.\",\n    date: \"Jan 18, 2024\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Marcell Glock\",\n    username: \"@marcelglock\",\n    quote:\n      \"The utility-first approach and extensive component library make it a breeze to create beautiful and responsive interfaces. 😍\",\n    date: \"Jan 19, 2024\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/man-profile-2.jpg\",\n    name: \"Linde Michele\",\n    username: \"@lindemichele\",\n    quote:\n      \"With its clear and concise classes, I can easily communicate design intentions to my colleagues. It's a must-have tool for any web developer. 👨🏻‍💻\",\n    date: \"Jan 20, 2024\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/man-profile-3.jpg\",\n    name: \"Mary Joshiash\",\n    username: \"@maryjoshiash\",\n    quote:\n      \"I've tried several CSS frameworks, but this is on a whole different level. It strikes the perfect balance between flexibility and design.\",\n    date: \"Jan 21, 2024\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/woman-profile-3.jpg\",\n    name: \"Misha Stam\",\n    username: \"@mishastam\",\n    quote:\n      \"Active community support make it easy to get started. It's the ideal framework for achieving design excellence in web applications.\",\n    date: \"Jan 22, 2024\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16\">\n          <p className=\"mb-2 text-sm font-semibold tracking-wide uppercase\">\n            Testimonials\n          </p>\n          <h2 className=\"mb-4 text-3xl font-bold\">Think about us</h2>\n          <p className=\"text-muted-foreground max-w-lg text-lg\">\n            That&apos;s the main thing people are controlled by! Thoughts -\n            their perception of themselves!\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, username, quote, date }, key) => (\n            <Card key={key}>\n              <CardHeader className=\"flex flex-row items-center gap-4 px-6\">\n                <Avatar>\n                  <AvatarImage src={image} alt={`${name} image`} />\n                  <AvatarFallback>\n                    {name\n                      .split(\" \")\n                      .map((n) => n[0])\n                      .join(\"\")}\n                  </AvatarFallback>\n                </Avatar>\n                <div className=\"flex-1\">\n                  <div className=\"flex items-center gap-1.5\">\n                    <p className=\"font-semibold\">{name}</p>\n                    <BadgeCheck className=\"h-4 w-4 text-blue-500\" />\n                  </div>\n                  <p className=\"text-muted-foreground text-sm\">{username}</p>\n                </div>\n              </CardHeader>\n              <CardContent className=\"px-6\">\n                <blockquote className=\"text-muted-foreground\">\n                  {quote}\n                </blockquote>\n              </CardContent>\n              <CardFooter className=\"flex items-center justify-between gap-4 px-6\">\n                <a\n                  href=\"#\"\n                  className=\"flex items-center gap-1.5 text-sm font-semibold hover:underline\"\n                >\n                  See on <Twitter className=\"h-3.5 w-3.5\" />\n                </a>\n                <p className=\"text-muted-foreground text-sm\">{date}</p>\n              </CardFooter>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-03/page.tsx",
    "content": "\"use client\"\n\nimport { Quote, Star } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst testimonials = [\n  {\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    quote:\n      \"The attention to detail and user experience is exceptional. This has transformed how we approach design decisions in our team.\",\n    rating: 5,\n  },\n  {\n    name: \"Michael Chen\",\n    role: \"Tech Lead\",\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    quote:\n      \"Outstanding component library that saves us countless hours. The quality and customization options are exactly what we needed.\",\n    rating: 5,\n  },\n  {\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    quote:\n      \"A game-changer for rapid prototyping and production builds. The documentation is clear and the components are production-ready.\",\n    rating: 5,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-12 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold md:text-4xl\">\n            Loved by Developers & Designers\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Join thousands of professionals who trust our components for their\n            projects\n          </p>\n        </div>\n\n        <div className=\"mb-12 flex flex-wrap items-center justify-center gap-8 text-center md:gap-12\">\n          <div>\n            <p className=\"text-3xl font-bold\">1,679,700+</p>\n            <p className=\"text-muted-foreground text-sm\">Active Users</p>\n          </div>\n          <div className=\"bg-border hidden h-12 w-px md:block\"></div>\n          <div>\n            <p className=\"text-3xl font-bold\">4.9/5</p>\n            <p className=\"text-muted-foreground text-sm\">Average Rating</p>\n          </div>\n          <div className=\"bg-border hidden h-12 w-px md:block\"></div>\n          <div>\n            <p className=\"text-3xl font-bold\">50K+</p>\n            <p className=\"text-muted-foreground text-sm\">Companies</p>\n          </div>\n        </div>\n\n        <div className=\"grid gap-6 md:grid-cols-2 lg:grid-cols-3\">\n          {testimonials.map((testimonial, index) => (\n            <Card\n              key={index}\n              className=\"border-border/50 hover:border-border transition-all hover:shadow-lg\"\n            >\n              <CardContent className=\"px-6\">\n                <div className=\"mb-4 flex items-center gap-1\">\n                  {Array.from({ length: testimonial.rating }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className=\"h-4 w-4 fill-yellow-400 text-yellow-400\"\n                    />\n                  ))}\n                </div>\n\n                <Quote className=\"text-muted-foreground/30 mb-3 h-8 w-8\" />\n\n                <blockquote className=\"text-foreground/90 mb-6 text-sm leading-relaxed\">\n                  {testimonial.quote}\n                </blockquote>\n\n                <div className=\"flex items-center gap-3\">\n                  <Avatar className=\"border-border h-12 w-12 border-2\">\n                    <AvatarImage\n                      src={testimonial.image}\n                      alt={testimonial.name}\n                    />\n                    <AvatarFallback>\n                      {testimonial.name\n                        .split(\" \")\n                        .map((n) => n[0])\n                        .join(\"\")}\n                    </AvatarFallback>\n                  </Avatar>\n                  <div>\n                    <p className=\"text-foreground font-semibold\">\n                      {testimonial.name}\n                    </p>\n                    <p className=\"text-muted-foreground text-sm\">\n                      {testimonial.role}\n                    </p>\n                  </div>\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-04/page.tsx",
    "content": "\"use client\"\n\nimport { Quote, Star } from \"lucide-react\"\n\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    quote:\n      \"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Michael Chen\",\n    role: \"Tech Lead at Stripe\",\n    quote:\n      \"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    quote:\n      \"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\",\n    rating: 5,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold md:text-4xl\">\n            What Our Users Say\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Trusted by thousands of developers and designers worldwide\n          </p>\n        </div>\n\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\n            <Card\n              key={key}\n              className=\"group border-border/50 hover:border-border transition-all hover:shadow-lg\"\n            >\n              <CardContent className=\"p-8 text-center\">\n                <div className=\"relative mx-auto mb-6 inline-block\">\n                  <img\n                    src={image}\n                    alt={`${name} profile`}\n                    className=\"border-border mx-auto h-24 w-24 rounded-full border-4 object-cover transition-transform group-hover:scale-105\"\n                  />\n                  <div className=\"bg-background absolute -right-2 -bottom-2 rounded-full p-2 shadow-md\">\n                    <Quote className=\"text-primary h-4 w-4\" />\n                  </div>\n                </div>\n\n                <h3 className=\"mb-1 text-xl font-semibold\">{name}</h3>\n                <p className=\"text-muted-foreground mb-6 text-sm\">{role}</p>\n\n                <div className=\"mb-6 flex items-center justify-center gap-1\">\n                  {Array.from({ length: 5 }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < rating\n                          ? \"fill-yellow-400 text-yellow-400\"\n                          : \"fill-muted text-muted\"\n                      }`}\n                    />\n                  ))}\n                </div>\n\n                <blockquote className=\"text-foreground/80 text-sm leading-relaxed\">\n                  &quot;{quote}&quot;\n                </blockquote>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-05/page.tsx",
    "content": "\"use client\"\n\nimport { Quote, Star } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    quote:\n      \"The component library has transformed our design process. The quality and attention to detail in every component is exceptional.\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Michael Chen\",\n    role: \"Tech Lead at Stripe\",\n    quote:\n      \"Outstanding documentation and TypeScript support. These components integrate seamlessly into our enterprise applications.\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    quote:\n      \"Production-ready components with excellent customization. The design system is cohesive and well-thought-out.\",\n    rating: 5,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"bg-black py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold text-white md:text-4xl\">\n            Trusted by Professionals\n          </h2>\n          <p className=\"mx-auto max-w-2xl text-lg text-white/70\">\n            Hear what developers and designers say about our component library\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\n            <Card\n              key={key}\n              className=\"border-white/10 bg-white/5 backdrop-blur-sm transition-all hover:border-white/20 hover:bg-white/10\"\n            >\n              <CardContent className=\"p-8 text-center\">\n                <div className=\"relative mx-auto mb-6 inline-block\">\n                  <Avatar className=\"h-20 w-20 border-4 border-white/20\">\n                    <AvatarImage src={image} alt={`${name} profile`} />\n                    <AvatarFallback className=\"bg-white/10 text-white\">\n                      {name\n                        .split(\" \")\n                        .map((n) => n[0])\n                        .join(\"\")}\n                    </AvatarFallback>\n                  </Avatar>\n                  <div className=\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\">\n                    <Quote className=\"text-primary-foreground h-3 w-3\" />\n                  </div>\n                </div>\n\n                <h3 className=\"mb-1 text-lg font-semibold text-white\">\n                  {name}\n                </h3>\n                <p className=\"mb-6 text-sm text-white/60\">{role}</p>\n\n                <div className=\"mb-6 flex items-center justify-center gap-1\">\n                  {Array.from({ length: 5 }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < rating\n                          ? \"fill-yellow-400 text-yellow-400\"\n                          : \"fill-white/20 text-white/20\"\n                      }`}\n                    />\n                  ))}\n                </div>\n\n                <blockquote className=\"text-sm leading-relaxed text-white/80\">\n                  &quot;{quote}&quot;\n                </blockquote>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-06/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <Card className=\"grid grid-cols-12 items-center border-0 bg-transparent shadow-none\">\n          <div className=\"col-span-full md:col-span-4\">\n            <img\n              src=\"https://v3.material-tailwind.com/logo/spotify.svg\"\n              alt=\"user profile\"\n              className=\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover lg:max-h-[30rem] lg:max-w-full\"\n            />\n          </div>\n          <CardContent className=\"col-span-full px-0 py-6 md:col-span-8 md:px-8 lg:px-12\">\n            <p className=\"mb-2 text-sm font-semibold tracking-wide uppercase lg:mb-4\">\n              Client Success Story\n            </p>\n            <h2 className=\"mb-6 text-3xl font-bold\">\n              Transforming Our Design System\n            </h2>\n            <blockquote className=\"text-muted-foreground mb-8 text-lg font-normal lg:mb-12\">\n              &quot;This component library has revolutionized how we build\n              products at scale. The quality, consistency, and developer\n              experience are exceptional. We've reduced our\n              design-to-development time by 60% and our entire team loves\n              working with these components.&quot;\n            </blockquote>\n            <div className=\"flex items-center gap-4\">\n              <Avatar className=\"h-12 w-12\">\n                <AvatarImage\n                  alt=\"Alexandra Martinez\"\n                  src=\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\"\n                />\n                <AvatarFallback>AM</AvatarFallback>\n              </Avatar>\n              <div>\n                <p className=\"text-lg font-semibold\">Alexandra Martinez</p>\n                <p className=\"text-muted-foreground text-sm\">\n                  Head of Design, Spotify\n                </p>\n              </div>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-07/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    quote:\n      \"The attention to detail and component quality is outstanding. These UI blocks have significantly accelerated our design workflow and improved consistency across our products.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Michael Chen\",\n    role: \"Tech Lead at Stripe\",\n    quote:\n      \"Exceptional component library with excellent documentation. The customization options and TypeScript support make it perfect for enterprise applications. Highly recommend!\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    quote:\n      \"A game-changer for rapid prototyping and production. The components are production-ready, well-tested, and the design system is incredibly cohesive. Love it!\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  const [selectedTestimonial, setSelectedTestimonial] = React.useState(0)\n\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto grid grid-cols-12 items-center gap-y-8 px-4\">\n        <div className=\"col-span-full row-start-2 md:col-span-8 md:row-start-auto\">\n          <h2 className=\"text-3xl font-bold\">What Developers Say</h2>\n          <p className=\"text-muted-foreground my-4 max-w-lg\">\n            {TESTIMONIALS[selectedTestimonial].quote}\n          </p>\n          <div>\n            <p className=\"font-semibold\">\n              {TESTIMONIALS[selectedTestimonial].name}\n            </p>\n            <p className=\"text-muted-foreground text-sm\">\n              {TESTIMONIALS[selectedTestimonial].role}\n            </p>\n          </div>\n          <div className=\"divide-border mt-8 flex items-center divide-x\">\n            {TESTIMONIALS.map((testimonial, index) => (\n              <div className={index !== 0 ? \"px-4\" : \"pr-4\"} key={index}>\n                <Avatar\n                  role=\"button\"\n                  className=\"h-12 w-12 cursor-pointer rounded-lg\"\n                  onClick={() => setSelectedTestimonial(index)}\n                >\n                  <AvatarImage src={testimonial.image} />\n                  <AvatarFallback>\n                    {testimonial.name\n                      .split(\" \")\n                      .map((n) => n[0])\n                      .join(\"\")}\n                  </AvatarFallback>\n                </Avatar>\n              </div>\n            ))}\n          </div>\n        </div>\n        <div className=\"col-span-full md:col-span-4\">\n          <img\n            src={TESTIMONIALS[selectedTestimonial].image}\n            alt=\"user profile\"\n            className=\"h-full max-h-96 w-full max-w-96 rounded-xl object-cover object-center\"\n          />\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-08/page.tsx",
    "content": "\"use client\"\n\nimport { Quote, Star } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Sarah Johnson\",\n    role: \"Product Designer\",\n    quote:\n      \"These components have transformed our design workflow. The quality and attention to detail are exceptional, making it easy to build beautiful interfaces quickly.\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Michael Chen\",\n    role: \"Tech Lead at Stripe\",\n    quote:\n      \"Outstanding component library with excellent TypeScript support. The documentation is clear and the components integrate seamlessly into our enterprise applications.\",\n    rating: 5,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Emma Rodriguez\",\n    role: \"Frontend Developer\",\n    quote:\n      \"Production-ready components that save countless hours. The customization options are fantastic and the design system is incredibly cohesive. Highly recommend!\",\n    rating: 5,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-3xl font-bold md:text-4xl\">\n            What Developers Say\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            Join thousands of developers building exceptional products with our\n            component library\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\n            <Card\n              key={key}\n              className=\"group border-0 bg-transparent shadow-none\"\n            >\n              <CardContent className=\"p-0 text-center\">\n                <div className=\"relative mx-auto mb-6 inline-block\">\n                  <Avatar className=\"border-border h-24 w-24 border-4 transition-transform group-hover:scale-105\">\n                    <AvatarImage src={image} alt={`${name} profile`} />\n                    <AvatarFallback>\n                      {name\n                        .split(\" \")\n                        .map((n) => n[0])\n                        .join(\"\")}\n                    </AvatarFallback>\n                  </Avatar>\n                  <div className=\"bg-primary absolute -right-2 -bottom-2 rounded-full p-2 shadow-lg\">\n                    <Quote className=\"text-primary-foreground h-3 w-3\" />\n                  </div>\n                </div>\n\n                <h3 className=\"mb-1 text-lg font-semibold\">{name}</h3>\n                <p className=\"text-muted-foreground mb-6 text-sm\">{role}</p>\n\n                <div className=\"mb-6 flex items-center justify-center gap-1\">\n                  {Array.from({ length: 5 }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < rating\n                          ? \"fill-yellow-400 text-yellow-400\"\n                          : \"fill-muted text-muted\"\n                      }`}\n                    />\n                  ))}\n                </div>\n\n                <blockquote className=\"text-muted-foreground mx-auto max-w-sm text-sm leading-relaxed\">\n                  &quot;{quote}&quot;\n                </blockquote>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-09/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-4 md:py-6\">\n      <div className=\"container mx-auto px-4\">\n        <Card className=\"grid grid-cols-1 items-center gap-4 border-0 bg-transparent shadow-none md:grid-cols-12 md:gap-6\">\n          <div className=\"md:col-span-4\">\n            <img\n              src=\"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\"\n              alt=\"user profile\"\n              className=\"h-40 w-full rounded-lg object-cover md:h-56\"\n            />\n          </div>\n          <CardContent className=\"px-0 py-0 md:col-span-8 md:px-4 lg:px-8\">\n            <p className=\"text-primary mb-1.5 text-xs font-semibold md:text-sm\">\n              Customer Story\n            </p>\n            <h2 className=\"mb-2 text-lg font-bold md:text-xl lg:text-2xl\">\n              Revolutionary component library for modern design\n            </h2>\n            <blockquote className=\"text-muted-foreground mb-3 text-sm leading-relaxed font-normal md:text-base\">\n              &quot;This component library has transformed how our design team\n              works. The attention to detail, seamless integration, and\n              production-ready components have accelerated our development\n              workflow by 10x.&quot;\n            </blockquote>\n            <div className=\"flex items-center gap-2.5\">\n              <Avatar className=\"h-9 w-9 md:h-10 md:w-10\">\n                <AvatarImage\n                  alt=\"spotify\"\n                  src=\"https://v3.material-tailwind.com/icon/spotify.svg\"\n                />\n                <AvatarFallback>SP</AvatarFallback>\n              </Avatar>\n              <div>\n                <p className=\"text-sm font-semibold md:text-base\">\n                  Sarah Johnson\n                </p>\n                <p className=\"text-muted-foreground text-xs\">\n                  Design Director, Spotify\n                </p>\n              </div>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-10/page.tsx",
    "content": "\"use client\"\n\nimport { ArrowRight, Sparkles } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image: \"https://v3.material-tailwind.com/logo/spotify.svg\",\n    name: \"Alexandra Martinez\",\n    role: \"Head of Design\",\n    quote:\n      \"This component library has revolutionized our design system. The quality and consistency have dramatically improved our product development workflow.\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/logo/netflix.svg\",\n    name: \"David Kim\",\n    role: \"Engineering Lead\",\n    quote:\n      \"Outstanding components with excellent TypeScript support. The documentation is thorough and implementation is seamless across our platforms.\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/logo/coinbase.svg\",\n    name: \"Marcus Johnson\",\n    role: \"Product Director\",\n    quote:\n      \"A game-changer for our development team. These production-ready components have reduced our time-to-market by 50% while maintaining exceptional quality.\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <Badge variant=\"outline\" className=\"mx-auto mb-8 w-max\">\n            <Sparkles className=\"mr-2 h-4 w-4\" />\n            Testimonials\n          </Badge>\n          <h2 className=\"mb-4 text-3xl font-bold md:text-4xl\">\n            Trusted by Industry Leaders\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-lg\">\n            See how leading companies are building exceptional products with our\n            component library\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, quote, role }, key) => (\n            <Card key={key} className=\"border-0 bg-transparent shadow-none\">\n              <CardContent className=\"p-0 text-center\">\n                <img\n                  src={image}\n                  alt=\"company logo\"\n                  className=\"mx-auto mb-6 h-20\"\n                />\n                <blockquote className=\"text-muted-foreground mx-auto mb-6 max-w-sm text-sm leading-relaxed\">\n                  &quot;{quote}&quot;\n                </blockquote>\n                <div className=\"mb-6\">\n                  <p className=\"font-semibold\">{name}</p>\n                  <p className=\"text-muted-foreground text-sm\">{role}</p>\n                </div>\n                <Button variant=\"link\" className=\"group\">\n                  Read More\n                  <ArrowRight className=\"ml-2 h-4 w-4 transition-transform group-hover:translate-x-1\" />\n                </Button>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-11/page.tsx",
    "content": "\"use client\"\n\nimport { Star } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Lucian Eurel\",\n    date: \"Posted on 27 February\",\n    quote:\n      \"Success is not final, failure is not fatal: it is the courage to continue that counts.\",\n    rating: 4,\n    isHighlighted: false,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Lucian Eurel\",\n    date: \"Posted on 28 February\",\n    quote:\n      \"If you have the opportunity to play this game of life you need to appreciate every moment.\",\n    rating: 4,\n    isHighlighted: true,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Mathew Glock\",\n    date: \"Posted on 29 February\",\n    quote:\n      \"Artist is a term applied to a person who engages in an activity deemed to be an art.\",\n    rating: 5,\n    isHighlighted: false,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-center text-3xl font-bold\">\n            Think about us\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-lg text-center text-lg\">\n            That&apos;s the main thing people are controlled by! Thoughts -\n            their perception of themselves!\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(\n            ({ name, image, date, quote, rating, isHighlighted }, key) => (\n              <Card\n                key={key}\n                className={\n                  isHighlighted\n                    ? \"bg-primary text-primary-foreground\"\n                    : \"bg-transparent\"\n                }\n              >\n                <CardContent className=\"px-6\">\n                  <Avatar className=\"mb-4 h-16 w-16 rounded-lg\">\n                    <AvatarImage src={image} alt={`${name} image`} />\n                    <AvatarFallback>\n                      {name\n                        .split(\" \")\n                        .map((n) => n[0])\n                        .join(\"\")}\n                    </AvatarFallback>\n                  </Avatar>\n                  <p\n                    className={`text-lg font-semibold ${isHighlighted ? \"text-primary-foreground\" : \"\"}`}\n                  >\n                    {name}\n                  </p>\n                  <p\n                    className={`text-sm ${isHighlighted ? \"opacity-80\" : \"text-muted-foreground\"}`}\n                  >\n                    {date}\n                  </p>\n                  <blockquote\n                    className={`my-4 max-w-lg ${isHighlighted ? \"opacity-80\" : \"text-muted-foreground\"}`}\n                  >\n                    &quot;{quote}&quot;\n                  </blockquote>\n                  <div className=\"flex items-center gap-1\">\n                    {Array.from({ length: 5 }).map((_, i) => (\n                      <Star\n                        key={i}\n                        className={`h-5 w-5 ${\n                          i < rating\n                            ? \"fill-yellow-500 text-yellow-500\"\n                            : isHighlighted\n                              ? \"fill-white/30 text-white/30\"\n                              : \"fill-gray-300 text-gray-300\"\n                        }`}\n                      />\n                    ))}\n                  </div>\n                </CardContent>\n              </Card>\n            )\n          )}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-12/page.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent, CardFooter } from \"@/components/ui/card\"\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 max-w-lg\">\n          <h2 className=\"mb-4 text-3xl font-bold\">\n            The heartfelt testimonials of our community\n          </h2>\n          <p className=\"text-muted-foreground text-lg\">\n            From life-enhancing gadgets to unparalleled customer support, and\n            transformative learning opportunities.\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2\">\n          <Card className=\"grid bg-white\">\n            <CardContent className=\"p-6\">\n              <blockquote className=\"text-center text-2xl font-medium md:text-start\">\n                &quot;The team went above and beyond to ensure my issue was\n                resolved quickly and efficiently. Truly outstanding!&quot;\n              </blockquote>\n            </CardContent>\n            <CardFooter className=\"flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\">\n              <div>\n                <p className=\"font-semibold\">Jessica Devis</p>\n                <p className=\"text-muted-foreground text-sm\">\n                  Full Stack Developer @Netflix\n                </p>\n              </div>\n              <img\n                src=\"https://v3.material-tailwind.com/logo/netflix.svg\"\n                alt=\"logo\"\n                className=\"h-14 grayscale\"\n              />\n            </CardFooter>\n          </Card>\n          <Card className=\"grid bg-white\">\n            <CardContent className=\"p-6\">\n              <blockquote className=\"text-center text-2xl font-medium md:text-start\">\n                &quot;It have broadened my horizons and helped me advance my\n                career. The community is incredibly supportive.&quot;\n              </blockquote>\n            </CardContent>\n            <CardFooter className=\"mt-auto flex flex-col items-center justify-between gap-4 px-6 pb-6 text-center md:flex-row md:text-start\">\n              <div>\n                <p className=\"font-semibold\">Marcell Glock</p>\n                <p className=\"text-muted-foreground text-sm\">\n                  Graphic Designer, @Coinbase\n                </p>\n              </div>\n              <img\n                src=\"https://v3.material-tailwind.com/logo/coinbase.svg\"\n                alt=\"logo\"\n                className=\"h-14 brightness-75 grayscale\"\n              />\n            </CardFooter>\n          </Card>\n          <Card className=\"col-span-full grid bg-white\">\n            <CardContent className=\"p-6\">\n              <blockquote className=\"text-center text-2xl font-medium\">\n                &quot;Its intuitive design and powerful features make it\n                indispensable. I can&apos;t imagine going back to life before\n                it!&quot;\n              </blockquote>\n            </CardContent>\n            <CardFooter className=\"mt-auto flex flex-col items-center justify-center gap-4 px-6 pb-6 text-center\">\n              <div>\n                <p className=\"font-semibold\">Emma Roberts</p>\n                <p className=\"text-muted-foreground text-sm\">\n                  Chief Executive @Spotify\n                </p>\n              </div>\n              <img\n                src=\"https://v3.material-tailwind.com/logo/spotify.svg\"\n                alt=\"logo\"\n                className=\"h-14 brightness-50 grayscale\"\n              />\n            </CardFooter>\n          </Card>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-13/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <Card className=\"rounded-xl bg-black text-white\">\n          <CardContent className=\"grid w-full grid-cols-1 items-center gap-8 p-10 md:grid-cols-12\">\n            <div className=\"col-span-full text-center md:col-span-8 md:pl-4 md:text-left\">\n              <img\n                src=\"https://v3.material-tailwind.com/logo/spotify.svg\"\n                alt=\"spotify logo\"\n                className=\"mr-auto mb-2 ml-auto w-32 md:mr-0 md:-ml-3\"\n              />\n              <blockquote className=\"mb-12 text-2xl !leading-snug\">\n                &quot;We&apos;re not always in the position that we want to be\n                at. We&apos;re constantly growing. We&apos;re constantly making\n                mistakes. We&apos;re constantly trying to express ourselves and\n                actualize our dreams. &quot;\n              </blockquote>\n              <div>\n                <p className=\"mb-1 text-xl font-semibold\">Marcell Glock</p>\n                <p className=\"text-white/80\">Chief Executive, Spotify</p>\n              </div>\n            </div>\n            <div className=\"col-span-full grid justify-items-center md:col-span-4 md:justify-items-end\">\n              <Avatar className=\"h-24 w-24 md:h-64 md:w-64\">\n                <AvatarImage\n                  src=\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\"\n                  alt=\"user profile\"\n                />\n                <AvatarFallback>MG</AvatarFallback>\n              </Avatar>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-14/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Jessica Devis\",\n    role: \"CEO @ Marketing Digital LTD\",\n    quote:\n      \"The connections you make at Web Summit are unparalleled, we met users all over the world.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Mary Joshiash\",\n    role: \"Marketing @ Apple INC\",\n    quote:\n      \"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Marcell Glock\",\n    role: \"CFO @ Apple INC\",\n    quote:\n      \"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-16\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"mb-16 text-center\">\n          <h2 className=\"mb-4 text-center text-3xl font-bold\">\n            Think about us\n          </h2>\n          <p className=\"text-muted-foreground mx-auto max-w-lg text-center text-lg\">\n            That&apos;s the main thing people are controlled by! Thoughts -\n            their perception of themselves!\n          </p>\n        </div>\n        <div className=\"grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-3\">\n          {TESTIMONIALS.map(({ name, image, role, quote }, key) => (\n            <Card key={key}>\n              <CardContent className=\"p-6 text-center\">\n                <Avatar className=\"mx-auto mb-6 h-24 w-24\">\n                  <AvatarImage src={image} alt={`${name} image`} />\n                  <AvatarFallback>\n                    {name\n                      .split(\" \")\n                      .map((n) => n[0])\n                      .join(\"\")}\n                  </AvatarFallback>\n                </Avatar>\n                <p className=\"mb-1 text-lg font-semibold\">{name}</p>\n                <p className=\"text-muted-foreground mb-4 text-sm\">{role}</p>\n                <blockquote className=\"text-muted-foreground mx-auto max-w-lg\">\n                  &quot;{quote}&quot;\n                </blockquote>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-15/page.tsx",
    "content": "\"use client\"\n\nimport { Plus, Quote, Star } from \"lucide-react\"\n\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst TESTIMONIALS = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Lucian Eurel\",\n    role: \"CEO Discord\",\n    quote:\n      \"Web Summit will increase your appetite, your inspiration, your skills, your motivation and your network.\",\n    rating: 4,\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Linde Michel\",\n    role: \"CFO Slack\",\n    quote:\n      \"Do not go where the path may lead, go instead where there is no path and leave a trail. You will succeed on it.\",\n    rating: 4,\n  },\n  {\n    image: \"https://v3.material-tailwind.com/man-profile-2.jpg\",\n    name: \"Misha Stam\",\n    role: \"COO Dribbble\",\n    quote:\n      \"The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.\",\n    rating: 5,\n  },\n]\n\nexport default function TestimonialsBlock() {\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4\">\n          {TESTIMONIALS.map(({ name, image, role, quote, rating }, key) => (\n            <Card\n              key={key}\n              className=\"group border-border/50 hover:border-border transition-all hover:shadow-lg\"\n            >\n              <CardContent className=\"p-6 text-center\">\n                <div className=\"relative mx-auto mb-4 inline-block\">\n                  <img\n                    src={image}\n                    alt={`${name} profile`}\n                    className=\"border-border mx-auto h-20 w-20 rounded-full border-4 object-cover transition-transform group-hover:scale-105\"\n                  />\n                  <div className=\"bg-primary absolute -right-1 -bottom-1 rounded-full p-1.5 shadow-lg\">\n                    <Quote className=\"text-primary-foreground h-3 w-3\" />\n                  </div>\n                </div>\n\n                <h3 className=\"mb-1 text-lg font-semibold\">{name}</h3>\n                <p className=\"text-muted-foreground mb-4 text-sm\">{role}</p>\n\n                <blockquote className=\"text-muted-foreground mb-4 text-sm leading-relaxed\">\n                  &quot;{quote}&quot;\n                </blockquote>\n\n                <div className=\"flex items-center justify-center gap-1\">\n                  {Array.from({ length: 5 }).map((_, i) => (\n                    <Star\n                      key={i}\n                      className={`h-4 w-4 ${\n                        i < rating\n                          ? \"fill-yellow-400 text-yellow-400\"\n                          : \"fill-muted text-muted\"\n                      }`}\n                    />\n                  ))}\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n          <Card className=\"group border-border/50 hover:border-border hover:bg-muted/50 cursor-pointer border-2 border-dashed transition-all\">\n            <CardContent className=\"grid h-full min-h-[280px] w-full place-items-center p-6\">\n              <div className=\"text-center\">\n                <div className=\"bg-muted group-hover:bg-muted/80 mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-full transition-colors\">\n                  <Plus className=\"text-muted-foreground h-8 w-8\" />\n                </div>\n                <p className=\"text-muted-foreground text-sm font-medium\">\n                  Add Testimonial\n                </p>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-16/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst SLIDES = [\n  {\n    image:\n      \"https://images.unsplash.com/photo-1641906840000-4b88f1d44de6?auto=format&fit=crop&q=80&w=400&h=400\",\n    companyLogo: \"https://v3.material-tailwind.com/logo/netflix.svg\",\n    name: \"Linde Michel\",\n    role: \"Social Media Executive, Netflix\",\n    quote:\n      \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    companyLogo: \"https://v3.material-tailwind.com/logo/coinbase.svg\",\n    name: \"John Down\",\n    role: \"Visionary, Coinbase\",\n    quote:\n      \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\",\n  },\n  {\n    image:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    companyLogo: \"https://v3.material-tailwind.com/logo/spotify.svg\",\n    name: \"Marcell Glock\",\n    role: \"Chief Executive, Spotify\",\n    quote:\n      \"We're not always in the position that we want to be at. We're constantly growing. We're constantly making mistakes. We're constantly trying to express ourselves and actualize our dreams.\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  const [currentSlide, setCurrentSlide] = React.useState(0)\n\n  const nextSlide = () => {\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\n  }\n\n  const prevSlide = () => {\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\n  }\n\n  return (\n    <section className=\"grid min-h-screen place-items-center bg-black py-16\">\n      <div className=\"relative container mx-auto px-4\">\n        <div className=\"pb-16\">\n          <img\n            src={SLIDES[currentSlide].companyLogo}\n            alt=\"company logo\"\n            className=\"mx-auto mb-8 h-24\"\n          />\n          <blockquote className=\"mx-auto mb-16 max-w-2xl text-center text-xl font-medium text-white\">\n            &quot;{SLIDES[currentSlide].quote}&quot;\n          </blockquote>\n          <p className=\"text-center font-medium text-white\">\n            {SLIDES[currentSlide].name}\n          </p>\n          <p className=\"text-center text-sm text-white/80\">\n            {SLIDES[currentSlide].role}\n          </p>\n        </div>\n\n        <div className=\"mt-8 flex items-center justify-center gap-2\">\n          {SLIDES.map((slide, index) => (\n            <button\n              key={index}\n              onClick={() => setCurrentSlide(index)}\n              className={`h-8 w-8 rounded object-cover object-center transition-opacity ${\n                index === currentSlide ? \"opacity-100\" : \"opacity-50\"\n              }`}\n            >\n              <img\n                src={slide.image}\n                alt={slide.name}\n                className=\"h-full w-full rounded object-cover\"\n              />\n            </button>\n          ))}\n        </div>\n\n        <Button\n          size=\"icon\"\n          variant=\"ghost\"\n          onClick={prevSlide}\n          className=\"!absolute top-1/2 left-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\"\n        >\n          <ChevronLeft className=\"h-7 w-7\" />\n        </Button>\n        <Button\n          size=\"icon\"\n          variant=\"ghost\"\n          onClick={nextSlide}\n          className=\"!absolute top-1/2 right-2 z-10 hidden -translate-y-1/2 text-white sm:inline-flex\"\n        >\n          <ChevronRight className=\"h-7 w-7\" />\n        </Button>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/testimonials-17/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight, Quote } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nconst SLIDES = [\n  {\n    image: \"https://v3.material-tailwind.com/logo/netflix.svg\",\n    name: \"Louis Miriam\",\n    role: \"COO @ Netflix\",\n    quote:\n      \"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\",\n  },\n  {\n    image: \"https://v3.material-tailwind.com/logo/coinbase.svg\",\n    name: \"John Down\",\n    role: \"CEO @ Coinbase\",\n    quote:\n      \"Knowledge is either from direct experience or from verifiable, falsifiable science. There is knowledge that is transmitted but not verifiable / falsifiable. They're slowed down by their perception of themselves.\",\n  },\n]\n\nexport default function TestimonialsBlock() {\n  const [currentSlide, setCurrentSlide] = React.useState(0)\n\n  const nextSlide = () => {\n    setCurrentSlide((prev) => (prev + 1) % SLIDES.length)\n  }\n\n  const prevSlide = () => {\n    setCurrentSlide((prev) => (prev - 1 + SLIDES.length) % SLIDES.length)\n  }\n\n  return (\n    <section className=\"py-20\">\n      <div className=\"container mx-auto px-4\">\n        <Card className=\"relative overflow-hidden rounded-2xl bg-[url('https://images.unsplash.com/photo-1638438134099-a91e5373aaf0?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=2070')] bg-cover bg-center p-6\">\n          <span className=\"absolute inset-0 h-full w-full bg-gradient-to-br from-black/80 to-black/60 backdrop-blur-sm\" />\n\n          <CardContent className=\"relative grid w-full grid-cols-1 items-center gap-8 px-6 py-12 md:grid-cols-12 md:px-12 md:py-16\">\n            <div className=\"col-span-full md:col-span-8\">\n              <Quote className=\"mb-6 h-12 w-12 text-white/30\" />\n              <blockquote className=\"mb-8 text-xl leading-relaxed font-medium text-white md:text-2xl\">\n                &quot;{SLIDES[currentSlide].quote}&quot;\n              </blockquote>\n              <div className=\"flex flex-col gap-2 md:flex-row md:items-center md:gap-3\">\n                <p className=\"text-lg font-semibold text-white\">\n                  {SLIDES[currentSlide].name}\n                </p>\n                <span className=\"hidden text-white/50 md:inline\">•</span>\n                <p className=\"text-sm text-white/70\">\n                  {SLIDES[currentSlide].role}\n                </p>\n              </div>\n            </div>\n\n            <div className=\"col-span-full flex items-center justify-center md:col-span-4\">\n              <div className=\"rounded-xl bg-white/10 p-8 backdrop-blur-sm\">\n                <img\n                  src={SLIDES[currentSlide].image}\n                  alt=\"company logo\"\n                  className=\"h-16 md:h-20\"\n                />\n              </div>\n            </div>\n          </CardContent>\n\n          <div className=\"absolute bottom-8 left-1/2 flex -translate-x-1/2 items-center gap-3\">\n            {SLIDES.map((_, index) => (\n              <button\n                key={index}\n                onClick={() => setCurrentSlide(index)}\n                aria-label={`Go to slide ${index + 1}`}\n                className={`h-2 rounded-full transition-all ${\n                  index === currentSlide\n                    ? \"w-8 bg-white\"\n                    : \"w-2 bg-white/50 hover:bg-white/75\"\n                }`}\n              />\n            ))}\n          </div>\n\n          <Button\n            size=\"icon\"\n            variant=\"ghost\"\n            onClick={prevSlide}\n            aria-label=\"Previous testimonial\"\n            className=\"!absolute top-1/2 left-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\"\n          >\n            <ChevronLeft className=\"h-8 w-8\" />\n          </Button>\n          <Button\n            size=\"icon\"\n            variant=\"ghost\"\n            onClick={nextSlide}\n            aria-label=\"Next testimonial\"\n            className=\"!absolute top-1/2 right-4 z-10 -translate-y-1/2 text-white transition-all hover:bg-white/20 hover:text-white\"\n          >\n            <ChevronRight className=\"h-8 w-8\" />\n          </Button>\n        </Card>\n      </div>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/transaction-history-01/page.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon, ChevronDown, ChevronUp, Clock } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Calendar } from \"@/components/ui/calendar\"\nimport { Card } from \"@/components/ui/card\"\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nconst DATA = {\n  \"March 2023\": [\n    {\n      name: \"Netflix\",\n      date: \"27 March 2026, at 12:30 PM\",\n      value: 2500,\n      status: \"decreasing\" as const,\n    },\n    {\n      name: \"Apple\",\n      date: \"27 March 2026, at 04:30 AM\",\n      value: 2000,\n      status: \"increasing\" as const,\n    },\n  ],\n  \"February 2023\": [\n    {\n      name: \"Stripe\",\n      date: \"26 March 2026, at 13:45 PM\",\n      value: 2500,\n      status: \"decreasing\" as const,\n    },\n    {\n      name: \"HubSpot\",\n      date: \"26 March 2023, at 12:30 PM\",\n      value: 750,\n      status: \"increasing\" as const,\n    },\n    {\n      name: \"Figma\",\n      date: \"26 March 2023, at 08:30 AM\",\n      value: 1400,\n      status: \"increasing\" as const,\n    },\n    {\n      name: \"Webflow\",\n      date: \"26 March 2023, at 05:00 AM\",\n      value: 0,\n      status: \"pending\" as const,\n    },\n  ],\n}\n\nconst ICONS = {\n  increasing: ChevronUp,\n  decreasing: ChevronDown,\n  pending: Clock,\n}\n\nconst COLORS = {\n  increasing: \"text-green-600\",\n  decreasing: \"text-red-600\",\n  pending: \"text-muted-foreground\",\n}\n\nconst ICON_COLORS = {\n  increasing: \"text-green-600\",\n  decreasing: \"text-red-600\",\n  pending: \"text-black dark:text-white\",\n}\n\nconst PREFIX = {\n  increasing: \"+\",\n  decreasing: \"-\",\n  pending: \"\",\n}\n\nexport default function TransactionHistory01() {\n  const [date, setDate] = React.useState<Date>(new Date(2024, 9, 10))\n\n  return (\n    <div className=\"mx-auto max-w-xl p-6\">\n      <div className=\"dark:bg-card rounded-xl border bg-white p-6 shadow-sm\">\n        <div className=\"flex flex-wrap items-start justify-between gap-4\">\n          <div>\n            <h2 className=\"font-semibold\">History Transactions</h2>\n            <p className=\"text-muted-foreground text-sm\">\n              Track and monitor your financial activity.\n            </p>\n          </div>\n          <Popover>\n            <PopoverTrigger asChild>\n              <Button\n                variant=\"outline\"\n                className={cn(\n                  \"w-full justify-start text-left font-normal sm:w-48\",\n                  !date && \"text-muted-foreground\"\n                )}\n              >\n                <CalendarIcon className=\"mr-2 h-4 w-4\" />\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={(day) => day && setDate(day)}\n                initialFocus\n              />\n            </PopoverContent>\n          </Popover>\n        </div>\n        <div className=\"mt-6\">\n          {(Object.keys(DATA) as Array<keyof typeof DATA>).map((month, key) => {\n            return (\n              <div key={key} className=\"mb-6 last:mb-0\">\n                <p className=\"text-muted-foreground mb-2 ml-2.5 font-semibold\">\n                  {month}\n                </p>\n                <div className=\"space-y-2\">\n                  {DATA[month].map(({ name, value, date, status }) => {\n                    const Icon = ICONS[status]\n\n                    return (\n                      <div\n                        key={name}\n                        className=\"flex items-center gap-4 rounded-lg border p-4\"\n                      >\n                        <div className=\"bg-card text-card-foreground hidden h-12 w-12 shrink-0 items-center justify-center rounded-xl border shadow-sm sm:flex\">\n                          <Icon\n                            className={cn(\"h-5 w-5\", ICON_COLORS[status])}\n                          />\n                        </div>\n                        <div className=\"mx-0 space-y-0.5 sm:mx-2\">\n                          <p className=\"font-semibold\">{name}</p>\n                          <p className=\"text-muted-foreground text-sm\">\n                            {date}\n                          </p>\n                        </div>\n                        <p\n                          className={cn(\n                            \"mx-2 ml-auto text-sm font-semibold\",\n                            COLORS[status]\n                          )}\n                        >\n                          {PREFIX[status]}{\" \"}\n                          {value\n                            ? new Intl.NumberFormat(\"en-US\", {\n                                style: \"currency\",\n                                currency: \"USD\",\n                              }).format(value)\n                            : \"Pending\"}\n                        </p>\n                      </div>\n                    )\n                  })}\n                </div>\n              </div>\n            )\n          })}\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/web3-01/page.tsx",
    "content": "\"use client\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    img: \"https://v3.material-tailwind.com/pixel-art-1.svg\",\n    name: \"yqaw...09v\",\n    tokenId: \"475\",\n    profession: \"trader\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/pixel-art-2.svg\",\n    name: \"yqaw...09v\",\n    tokenId: \"476\",\n    profession: \"owner\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/pixel-art-3.svg\",\n    name: \"yqaw...09v\",\n    tokenId: \"477\",\n    profession: \"trader\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n  },\n]\n\nexport default function Web301() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <Card className=\"border shadow-sm\">\n        <CardHeader className=\"p-6\">\n          <Avatar className=\"h-12 w-12\">\n            <AvatarImage\n              src=\"https://v3.material-tailwind.com/pixel-art-1.svg\"\n              alt=\"pixel art collection\"\n            />\n            <AvatarFallback>PA</AvatarFallback>\n          </Avatar>\n          <h1 className=\"mt-4 mb-1 text-2xl font-bold\">Pixelated Art</h1>\n          <p className=\"text-muted-foreground max-w-2xl text-lg\">\n            These NFTs capture the essence of imagination and innovation,\n            offering a glimpse into the boundless potential of the digital\n            world.\n          </p>\n        </CardHeader>\n        <CardContent className=\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ img, name, tokenId, profession, profileImg }, key) => (\n            <Card key={key} className=\"py-4\">\n              <CardHeader className=\"gap-0 px-4\">\n                <img\n                  src={img}\n                  alt={name}\n                  className=\"h-64 w-full rounded-md object-cover object-center\"\n                />\n              </CardHeader>\n              <CardContent className=\"px-4\">\n                <p className=\"text-muted-foreground mb-1 text-sm\">\n                  Pixelated Art\n                </p>\n                <h3 className=\"text-lg font-semibold\">Picture #{tokenId}</h3>\n                <div className=\"mt-4 flex items-center justify-between\">\n                  <div className=\"flex items-center gap-4\">\n                    <Avatar className=\"h-6 w-6\">\n                      <AvatarImage src={profileImg} alt={name} />\n                      <AvatarFallback>{name[0]}</AvatarFallback>\n                    </Avatar>\n                    <p className=\"text-muted-foreground text-sm\">{name}</p>\n                  </div>\n                  <p className=\"text-primary text-sm capitalize\">\n                    {profession}\n                  </p>\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n        </CardContent>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/web3-02/page.tsx",
    "content": "\"use client\"\n\nimport { Grid3x3, Heart, Menu } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    img: \"https://v3.material-tailwind.com/nft-1.svg\",\n    name: \"@thedreamytrees\",\n    tokenId: \"876\",\n    price: \"1,6 ETH\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/nft-2.svg\",\n    name: \"@lindemichael\",\n    tokenId: \"877\",\n    price: \"0,9 ETH\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/nft-3.svg\",\n    name: \"@mishastam\",\n    tokenId: \"878\",\n    price: \"1,3 ETH\",\n  },\n]\n\nexport default function Web302() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <Card className=\"border shadow-sm\">\n        <CardHeader className=\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\">\n          <div>\n            <Avatar className=\"h-10 w-10\">\n              <AvatarImage\n                src=\"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\"\n                alt=\"emma\"\n              />\n              <AvatarFallback>EM</AvatarFallback>\n            </Avatar>\n            <h1 className=\"mt-4 mb-1 flex items-center gap-2 text-2xl font-bold\">\n              Emma\n              <Badge\n                variant=\"outline\"\n                className=\"border-blue-500 text-blue-500\"\n              >\n                ✓\n              </Badge>\n            </h1>\n            <p className=\"text-muted-foreground text-lg\">130 Collections</p>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            <Button variant=\"outline\" size=\"icon\">\n              <Menu className=\"h-4 w-4\" />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <Grid3x3 className=\"h-4 w-4\" />\n            </Button>\n            <Button>Follow Me</Button>\n          </div>\n        </CardHeader>\n        <CardContent className=\"grid grid-cols-1 gap-6 p-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ img, name, tokenId, price }, key) => (\n            <Card key={key} className=\"py-4\">\n              <CardHeader className=\"relative gap-0 px-4\">\n                <img\n                  src={img}\n                  alt={name}\n                  className=\"h-72 w-full rounded-md object-cover object-center\"\n                />\n                <div className=\"absolute top-6 right-6 flex items-center gap-2\">\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"border-white/50 bg-white/70 text-black backdrop-blur\"\n                  >\n                    Auction ends in 23h:03m:33s\n                  </Badge>\n                  <Button\n                    size=\"icon\"\n                    variant=\"secondary\"\n                    className=\"h-7 w-7 bg-white text-black hover:bg-white\"\n                  >\n                    <Heart className=\"h-3.5 w-3.5\" />\n                  </Button>\n                </div>\n              </CardHeader>\n              <CardContent className=\"px-4\">\n                <div className=\"mb-2 flex items-center justify-between gap-4\">\n                  <p className=\"text-muted-foreground text-sm\">\n                    Cosmic creatures\n                  </p>\n                  <div className=\"flex items-center gap-1\">\n                    <p className=\"text-muted-foreground text-sm\">Current bid</p>\n                    <div className=\"flex gap-1\">\n                      <img\n                        src=\"https://v3.material-tailwind.com/icon/eth.svg\"\n                        alt=\"ethereum\"\n                        className=\"h-4 w-4\"\n                      />\n                      <p className=\"text-sm font-semibold\">{price}</p>\n                    </div>\n                  </div>\n                </div>\n                <div className=\"flex items-center justify-between gap-4\">\n                  <h3 className=\"text-lg font-semibold\">Picture #{tokenId}</h3>\n                  <Button size=\"sm\">Place a Bid</Button>\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n        </CardContent>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/web3-03/page.tsx",
    "content": "\"use client\"\n\nimport { Grid3x3, Menu } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst DATA = [\n  {\n    img: \"https://v3.material-tailwind.com/nft-1.svg\",\n    name: \"@thedreamytrees\",\n    desc: \"Owner\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    price: \"1,3 BTC\",\n    time: \"23h:03m:33s\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/nft-2.svg\",\n    name: \"@lindemichael\",\n    desc: \"Creator\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    price: \"0,4 BTC\",\n    time: \"23h:03m:33s\",\n  },\n  {\n    img: \"https://v3.material-tailwind.com/nft-3.svg\",\n    name: \"@mishastam\",\n    desc: \"Owner\",\n    profileImg: \"https://v3.material-tailwind.com/man-profile-2.jpg\",\n    price: \"0,3 BTC\",\n    time: \"23h:03m:33s\",\n  },\n]\n\nexport default function Web303() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <Card className=\"border shadow-sm\">\n        <CardHeader className=\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\">\n          <div>\n            <h1 className=\"mb-1 text-2xl font-bold\">Top Auctions</h1>\n            <p className=\"text-muted-foreground max-w-2xl text-lg\">\n              The most sought-after collections across the entire ecosystem.\n            </p>\n          </div>\n          <div className=\"flex flex-wrap items-center gap-2\">\n            <Select defaultValue=\"Last 24H\">\n              <SelectTrigger className=\"w-max\">\n                <SelectValue placeholder=\"Select Date\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"Last 6H\">Last 6H</SelectItem>\n                <SelectItem value=\"Last 12H\">Last 12H</SelectItem>\n                <SelectItem value=\"Last 24H\">Last 24H</SelectItem>\n              </SelectContent>\n            </Select>\n            <Select defaultValue=\"Category 1\">\n              <SelectTrigger className=\"w-max\">\n                <SelectValue placeholder=\"Category\" />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"Category 1\">Category 1</SelectItem>\n                <SelectItem value=\"Category 2\">Category 2</SelectItem>\n                <SelectItem value=\"Category 3\">Category 3</SelectItem>\n              </SelectContent>\n            </Select>\n            <Button variant=\"outline\" size=\"icon\">\n              <Menu className=\"h-4 w-4\" />\n            </Button>\n            <Button variant=\"outline\" size=\"icon\">\n              <Grid3x3 className=\"h-4 w-4\" />\n            </Button>\n          </div>\n        </CardHeader>\n        <CardContent className=\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ img, name, desc, profileImg, price, time }, key) => (\n            <Card key={key} className=\"overflow-hidden py-0\">\n              <CardHeader className=\"relative p-0\">\n                <img\n                  src={img}\n                  alt={name}\n                  className=\"h-80 w-full object-cover object-center\"\n                />\n                <Badge\n                  variant=\"secondary\"\n                  className=\"absolute bottom-4 left-4 flex items-center gap-2 border-white/50 bg-white/70 backdrop-blur\"\n                >\n                  <Avatar className=\"h-7 w-7\">\n                    <AvatarImage src={profileImg} alt={name} />\n                    <AvatarFallback>{name[1]}</AvatarFallback>\n                  </Avatar>\n                  <div className=\"flex flex-col\">\n                    <span className=\"text-xs font-semibold text-black\">\n                      {name}\n                    </span>\n                    <span className=\"text-muted-foreground text-xs\">\n                      {desc}\n                    </span>\n                  </div>\n                </Badge>\n              </CardHeader>\n              <CardContent className=\"px-4 pb-4\">\n                <div className=\"flex items-center justify-between\">\n                  <div>\n                    <p className=\"text-muted-foreground text-sm\">Current bid</p>\n                    <p className=\"text-lg font-bold\">{price}</p>\n                  </div>\n                  <div>\n                    <p className=\"text-muted-foreground text-sm\">\n                      Auction ends in\n                    </p>\n                    <p className=\"text-sm font-semibold\">{time}</p>\n                  </div>\n                </div>\n              </CardContent>\n            </Card>\n          ))}\n        </CardContent>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/web3-04/page.tsx",
    "content": "\"use client\"\n\nimport { Cuboid, Grid3x3, Menu } from \"lucide-react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\"\n\nconst DATA = [\n  {\n    price: \"9,999 NFTs\",\n    img: \"https://v3.material-tailwind.com/nft-1.svg\",\n    name: \"@thedreamytrees\",\n    title: \"Dreamy Trees\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    desc: \"Website visitors today demand a frictionless user experience.\",\n  },\n  {\n    price: \"3,000 NFTs\",\n    img: \"https://v3.material-tailwind.com/nft-2.svg\",\n    name: \"@3dfaces\",\n    title: \"Face NFTs\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    desc: \"Website visitors today demand a frictionless user experience.\",\n  },\n  {\n    price: \"9,999 NFTs\",\n    img: \"https://v3.material-tailwind.com/nft-3.svg\",\n    name: \"@theplanetsoftheuniverse\",\n    title: \"The Planets Of The Universe\",\n    profileImg: \"https://v3.material-tailwind.com/man-profile-2.jpg\",\n    desc: \"Website visitors today demand a frictionless user experience.\",\n  },\n]\n\nexport default function Web304() {\n  return (\n    <section className=\"container mx-auto py-16\">\n      <Card className=\"border shadow-sm\">\n        <CardContent className=\"p-6\">\n          <div className=\"mb-6 flex flex-wrap items-start justify-between gap-6\">\n            <div>\n              <h1 className=\"mb-1 text-2xl font-bold\">Trending Collections</h1>\n              <p className=\"text-muted-foreground max-w-2xl text-lg\">\n                The most sought-after collections across the entire ecosystem.\n              </p>\n            </div>\n            <div className=\"flex flex-wrap items-center gap-2\">\n              <Select defaultValue=\"Last 24H\">\n                <SelectTrigger className=\"w-max\">\n                  <SelectValue placeholder=\"Select Date\" />\n                </SelectTrigger>\n                <SelectContent>\n                  <SelectItem value=\"Last 6H\">Last 6H</SelectItem>\n                  <SelectItem value=\"Last 12H\">Last 12H</SelectItem>\n                  <SelectItem value=\"Last 24H\">Last 24H</SelectItem>\n                </SelectContent>\n              </Select>\n              <Button variant=\"outline\" size=\"icon\">\n                <Menu className=\"h-4 w-4\" />\n              </Button>\n              <Button variant=\"outline\" size=\"icon\">\n                <Grid3x3 className=\"h-4 w-4\" />\n              </Button>\n            </div>\n          </div>\n          <div className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\">\n            {DATA.map(({ price, img, name, title, profileImg, desc }, key) => (\n              <Card key={key} className=\"relative overflow-hidden\">\n                <img\n                  src={img}\n                  alt={name}\n                  className=\"absolute inset-0 h-full w-full object-cover object-center\"\n                />\n                <div className=\"absolute inset-0 h-full w-full bg-gradient-to-t from-black/80 to-black/20\" />\n                <CardContent className=\"relative z-10 flex h-[28rem] flex-col justify-between p-6\">\n                  <Badge\n                    variant=\"secondary\"\n                    className=\"w-fit border-white/30 bg-white/20 text-white backdrop-blur\"\n                  >\n                    <Cuboid className=\"mr-1 h-4 w-4\" />\n                    Collection\n                  </Badge>\n                  <div>\n                    <h3 className=\"mb-1 flex items-center gap-2 text-xl font-semibold text-white\">\n                      {title}\n                      <Badge\n                        variant=\"outline\"\n                        className=\"border-blue-400 text-blue-400\"\n                      >\n                        ✓\n                      </Badge>\n                    </h3>\n                    <p className=\"mb-4 text-sm text-gray-300\">{desc}</p>\n                    <div className=\"flex items-center justify-between\">\n                      <div className=\"flex items-center gap-2\">\n                        <Avatar className=\"h-8 w-8\">\n                          <AvatarImage src={profileImg} alt={name} />\n                          <AvatarFallback>{name[1]}</AvatarFallback>\n                        </Avatar>\n                        <p className=\"text-sm text-white\">{name}</p>\n                      </div>\n                      <p className=\"text-sm font-semibold text-white\">\n                        {price}\n                      </p>\n                    </div>\n                  </div>\n                </CardContent>\n              </Card>\n            ))}\n          </div>\n        </CardContent>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/blocks/web3-05/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\"\n\nconst DATA = [\n  {\n    tokenId: \"#1\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1623853434105-8e7a72898180?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Tina Andrew\",\n    desc: \"Creator\",\n    imgs: [\n      \"https://v3.material-tailwind.com/nft-1.svg\",\n      \"https://v3.material-tailwind.com/nft-2.svg\",\n      \"https://v3.material-tailwind.com/nft-4.svg\",\n    ],\n  },\n  {\n    tokenId: \"#2\",\n    profileImg:\n      \"https://images.unsplash.com/photo-1716662318479-a9c0f1cd1a0e?auto=format&fit=crop&q=80&w=400&h=400\",\n    name: \"Linde Michael\",\n    desc: \"Creator\",\n    imgs: [\n      \"https://v3.material-tailwind.com/pixel-art-1.svg\",\n      \"https://v3.material-tailwind.com/pixel-art-2.svg\",\n      \"https://v3.material-tailwind.com/pixel-art-3.svg\",\n    ],\n  },\n  {\n    tokenId: \"#3\",\n    profileImg: \"https://v3.material-tailwind.com/man-profile-2.jpg\",\n    name: \"Misha Stam\",\n    desc: \"Creator\",\n    imgs: [\n      \"https://v3.material-tailwind.com/nft-3.svg\",\n      \"https://v3.material-tailwind.com/nft-3.svg\",\n      \"https://v3.material-tailwind.com/nft-3.svg\",\n    ],\n  },\n]\n\nexport default function Web305() {\n  const [timeFrame, setTimeFrame] = useState(\"month\")\n\n  return (\n    <section className=\"container mx-auto py-16\">\n      <Card className=\"border shadow-sm\">\n        <CardHeader className=\"flex flex-row flex-wrap items-start justify-between gap-6 p-6\">\n          <div>\n            <h1 className=\"mb-1 text-2xl font-bold\">Top Creators</h1>\n            <p className=\"text-muted-foreground max-w-2xl text-lg\">\n              The most sought-after collections across the entire ecosystem.\n            </p>\n          </div>\n          <div className=\"flex flex-wrap items-center gap-2\">\n            <Button\n              size=\"sm\"\n              variant={timeFrame === \"hour\" ? \"default\" : \"outline\"}\n              onClick={() => setTimeFrame(\"hour\")}\n            >\n              Last 24h\n            </Button>\n            <Button\n              size=\"sm\"\n              variant={timeFrame === \"week\" ? \"default\" : \"outline\"}\n              onClick={() => setTimeFrame(\"week\")}\n            >\n              Last week\n            </Button>\n            <Button\n              size=\"sm\"\n              variant={timeFrame === \"month\" ? \"default\" : \"outline\"}\n              onClick={() => setTimeFrame(\"month\")}\n            >\n              Last month\n            </Button>\n          </div>\n        </CardHeader>\n        <CardContent className=\"grid grid-cols-1 gap-6 px-6 pt-0 pb-6 md:grid-cols-2 lg:grid-cols-3\">\n          {DATA.map(({ tokenId, profileImg, name, desc, imgs }, key) => (\n            <Card key={key} className=\"flex flex-col justify-between py-4\">\n              <CardHeader className=\"gap-0 px-4\">\n                <p className=\"font-semibold\">{tokenId}</p>\n                <div className=\"mt-4 flex flex-wrap items-start justify-between gap-4\">\n                  <div className=\"flex items-start gap-3\">\n                    <Avatar>\n                      <AvatarImage src={profileImg} alt={name} />\n                      <AvatarFallback>{name[0]}</AvatarFallback>\n                    </Avatar>\n                    <div>\n                      <p className=\"font-semibold\">{name}</p>\n                      <p className=\"text-muted-foreground text-sm\">{desc}</p>\n                    </div>\n                  </div>\n                  <Button size=\"sm\" variant=\"outline\">\n                    See Collection\n                  </Button>\n                </div>\n              </CardHeader>\n              <CardContent className=\"grid grid-cols-3 gap-4 px-4\">\n                {imgs.map((img, idx) => (\n                  <img\n                    key={idx}\n                    src={img}\n                    alt={`nft-${idx}`}\n                    className=\"h-full min-h-24 w-full rounded-lg object-cover object-center\"\n                  />\n                ))}\n              </CardContent>\n            </Card>\n          ))}\n        </CardContent>\n      </Card>\n    </section>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/card-blog.tsx",
    "content": "\"use client\"\n\nimport { Calendar } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport default function CardBlog() {\n  return (\n    <Card className=\"w-full max-w-md overflow-hidden\">\n      <div className=\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\" />\n      <CardHeader>\n        <div className=\"text-muted-foreground flex items-center gap-2 text-sm\">\n          <Calendar className=\"h-4 w-4\" />\n          <span>March 15, 2025</span>\n          <span>•</span>\n          <span>5 min read</span>\n        </div>\n        <CardTitle>Getting Started with Next.js</CardTitle>\n        <CardDescription>\n          Learn how to build modern web applications with Next.js, React, and\n          TypeScript.\n        </CardDescription>\n      </CardHeader>\n      <CardFooter>\n        <Button variant=\"ghost\">Read More</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/card-demo.tsx",
    "content": "\"use client\"\n\nimport { Calendar, Heart, ShoppingCart, Star } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport default function CardDemo() {\n  return (\n    <div className=\"grid w-full gap-6 md:grid-cols-2 lg:grid-cols-4\">\n      {/* Plain Card */}\n      <Card>\n        <CardContent className=\"pt-6\">\n          <p className=\"text-muted-foreground text-sm\">\n            This is a plain card with simple content. Perfect for displaying\n            basic information.\n          </p>\n        </CardContent>\n      </Card>\n\n      {/* Card with Title, Description, and Button */}\n      <Card>\n        <CardHeader>\n          <CardTitle>Card Title</CardTitle>\n          <CardDescription>\n            This is a brief description of the card content.\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <p className=\"text-muted-foreground text-sm\">\n            More detailed information goes here in the card content area.\n          </p>\n        </CardContent>\n        <CardFooter>\n          <Button size=\"sm\">Learn More</Button>\n        </CardFooter>\n      </Card>\n\n      {/* Blog Card */}\n      <Card className=\"overflow-hidden\">\n        <div className=\"aspect-video w-full bg-gradient-to-br from-blue-500 to-purple-600\" />\n        <CardHeader>\n          <div className=\"text-muted-foreground flex items-center gap-2 text-xs\">\n            <Calendar className=\"h-3 w-3\" />\n            <span>Mar 15, 2025</span>\n            <span>•</span>\n            <span>5 min read</span>\n          </div>\n          <CardTitle className=\"text-lg\">\n            Getting Started with Next.js\n          </CardTitle>\n          <CardDescription className=\"line-clamp-2\">\n            Learn how to build modern web applications with Next.js, React, and\n            TypeScript.\n          </CardDescription>\n        </CardHeader>\n        <CardFooter>\n          <Button variant=\"ghost\" size=\"sm\">\n            Read More\n          </Button>\n        </CardFooter>\n      </Card>\n\n      {/* E-commerce Product Card */}\n      <Card className=\"overflow-hidden\">\n        <div className=\"relative\">\n          <div className=\"aspect-square w-full bg-gradient-to-br from-amber-400 to-orange-500\" />\n          <Badge className=\"absolute top-2 right-2\">New</Badge>\n        </div>\n        <CardHeader>\n          <CardTitle className=\"text-lg\">Premium Wireless</CardTitle>\n          <CardDescription className=\"line-clamp-2\">\n            High-quality audio with noise cancellation\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex items-center justify-between\">\n            <div className=\"flex items-center gap-0.5\">\n              {[...Array(4)].map((_, i) => (\n                <Star\n                  key={i}\n                  className=\"h-3 w-3 fill-yellow-400 text-yellow-400\"\n                />\n              ))}\n              <Star className=\"text-muted-foreground h-3 w-3\" />\n              <span className=\"text-muted-foreground ml-1 text-xs\">(128)</span>\n            </div>\n            <div className=\"text-xl font-bold\">$299</div>\n          </div>\n        </CardContent>\n        <CardFooter className=\"gap-2\">\n          <Button className=\"flex-1\" size=\"sm\">\n            <ShoppingCart className=\"mr-2 h-4 w-4\" />\n            Add to Cart\n          </Button>\n          <Button variant=\"outline\" size=\"icon\">\n            <Heart className=\"h-4 w-4\" />\n          </Button>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/card-ecommerce.tsx",
    "content": "\"use client\"\n\nimport { Heart, ShoppingCart, Star } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport default function CardEcommerce() {\n  return (\n    <Card className=\"w-full max-w-sm overflow-hidden\">\n      <div className=\"relative\">\n        <div className=\"aspect-video w-full bg-gradient-to-br from-amber-400 to-orange-500\" />\n        <Badge className=\"absolute top-2 right-2\">New</Badge>\n      </div>\n      <CardHeader>\n        <CardTitle>Premium Wireless Headphones</CardTitle>\n        <CardDescription>\n          High-quality audio with active noise cancellation\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex items-center justify-between\">\n          <div className=\"flex items-center gap-1\">\n            {[...Array(4)].map((_, i) => (\n              <Star\n                key={i}\n                className=\"h-4 w-4 fill-yellow-400 text-yellow-400\"\n              />\n            ))}\n            <Star className=\"h-4 w-4\" />\n            <span className=\"text-muted-foreground text-sm\">(128)</span>\n          </div>\n          <div className=\"text-2xl font-bold\">$299</div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"gap-2\">\n        <Button className=\"flex-1\">\n          <ShoppingCart className=\"mr-2 h-4 w-4\" />\n          Add to Cart\n        </Button>\n        <Button variant=\"outline\" size=\"icon\">\n          <Heart className=\"h-4 w-4\" />\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/card-plain.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent } from \"@/components/ui/card\"\n\nexport default function CardPlain() {\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardContent className=\"pt-6\">\n        <p className=\"text-muted-foreground text-sm\">\n          This is a plain card with simple content. Perfect for displaying basic\n          information.\n        </p>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/card-with-button.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport default function CardWithButton() {\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle>Card Title</CardTitle>\n        <CardDescription>\n          This is a brief description of the card content.\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <p className=\"text-muted-foreground text-sm\">\n          More detailed information goes here in the card content area.\n        </p>\n      </CardContent>\n      <CardFooter>\n        <Button>Learn More</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/form-card-demo.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\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 FormCardDemo() {\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle>Create Account</CardTitle>\n        <CardDescription>\n          Enter your information to get started with Creative Tim UI\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"space-y-4\">\n        <div className=\"space-y-2\">\n          <Label htmlFor=\"name\">Full Name</Label>\n          <Input id=\"name\" placeholder=\"John Doe\" />\n        </div>\n        <div className=\"space-y-2\">\n          <Label htmlFor=\"email\">Email Address</Label>\n          <Input id=\"email\" type=\"email\" placeholder=\"john@example.com\" />\n        </div>\n        <div className=\"space-y-2\">\n          <Label htmlFor=\"password\">Password</Label>\n          <Input id=\"password\" type=\"password\" placeholder=\"••••••••\" />\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button className=\"w-full\">Sign Up</Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/examples/software-purchase-card-demo.tsx",
    "content": "\"use client\"\n\nimport { SoftwarePurchaseCard } from \"@/components/ui/software-purchase-card\"\n\nexport default function SoftwarePurchaseCardDemo() {\n  const handleApprove = () => {\n    console.log(\"Purchase approved\")\n  }\n\n  const handleDiscard = () => {\n    console.log(\"Purchase discarded\")\n  }\n\n  return (\n    <div className=\"flex items-center justify-center p-6\">\n      <SoftwarePurchaseCard\n        softwareName=\"Enterprise Cloud Suite\"\n        startDate=\"2025-01-15\"\n        seats={50}\n        pricingType=\"per-seat\"\n        price=\"$2,500\"\n        onApprove={handleApprove}\n        onDiscard={handleDiscard}\n      />\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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/www/registry/creative-tim/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/www/registry/creative-tim/ui/accordion.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\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          \"focus-visible:border-ring focus-visible:ring-ring/50 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:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 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=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\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/www/registry/creative-tim/ui/alert-dialog.tsx",
    "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 \"@/components/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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        className={cn(\n          \"bg-background 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 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 p-6 shadow-lg duration-200 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(\"flex flex-col gap-2 text-center sm:text-left\", 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        \"flex flex-col-reverse gap-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(\"text-lg font-semibold\", 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(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n  return (\n    <AlertDialogPrimitive.Action\n      className={cn(buttonVariants(), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n  return (\n    <AlertDialogPrimitive.Cancel\n      className={cn(buttonVariants({ variant: \"outline\" }), className)}\n      {...props}\n    />\n  )\n}\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"
  },
  {
    "path": "apps/www/registry/creative-tim/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 w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>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          \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\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        \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/aspect-ratio.tsx",
    "content": "\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\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/www/registry/creative-tim/ui/avatar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      className={cn(\n        \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\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        \"bg-muted flex size-full items-center justify-center rounded-full\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/badge.tsx",
    "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 badgeVariants = cva(\n  \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n        destructive:\n          \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/breadcrumb.tsx",
    "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\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        \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words 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 : \"a\"\n\n  return (\n    <Comp\n      data-slot=\"breadcrumb-link\"\n      className={cn(\"hover:text-foreground transition-colors\", 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(\"text-foreground font-normal\", 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/www/registry/creative-tim/ui/button-group.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonGroupVariants = cva(\"inline-flex items-center\", {\n  variants: {\n    variant: {\n      default: \"\",\n      ghost: \"\",\n      outline: \"\",\n      solid: \"\",\n      gradient: \"\",\n    },\n    size: {\n      sm: \"\",\n      md: \"\",\n      lg: \"\",\n    },\n    fullWidth: {\n      true: \"w-full\",\n      false: \"\",\n    },\n    pill: {\n      true: \"[&>button]:first:rounded-l-full [&>button]:last:rounded-r-full [&>button]:rounded-none\",\n      false:\n        \"[&>button]:first:rounded-l-md [&>button]:last:rounded-r-md [&>button]:rounded-none\",\n    },\n  },\n  defaultVariants: {\n    variant: \"default\",\n    size: \"md\",\n    fullWidth: false,\n    pill: false,\n  },\n})\n\ninterface ButtonGroupProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof buttonGroupVariants> {\n  children: React.ReactNode\n}\n\nfunction ButtonGroup({\n  className,\n  variant,\n  size,\n  fullWidth,\n  pill,\n  children,\n  ...props\n}: ButtonGroupProps) {\n  return (\n    <div\n      className={cn(\n        buttonGroupVariants({ variant, size, fullWidth, pill }),\n        \"[&>button:not(:first-child)]:border-l-0\",\n        \"[&>button:not(:first-child)]:rounded-l-none\",\n        \"[&>button:not(:last-child)]:rounded-r-none\",\n        className\n      )}\n      {...props}\n    >\n      {React.Children.map(children, (child, index) => {\n        if (React.isValidElement(child)) {\n          return React.cloneElement(child, {\n            className: cn(\n              child.props.className,\n              index === 0 && \"rounded-l-md\",\n              index === React.Children.count(children) - 1 && \"rounded-r-md\",\n              index !== 0 &&\n                index !== React.Children.count(children) - 1 &&\n                \"rounded-none\",\n              pill && index === 0 && \"rounded-l-full\",\n              pill &&\n                index === React.Children.count(children) - 1 &&\n                \"rounded-r-full\",\n              index !== 0 && \"border-l-0\"\n            ),\n          } as React.HTMLAttributes<HTMLElement>)\n        }\n        return child\n      })}\n    </div>\n  )\n}\n\nexport { ButtonGroup, buttonGroupVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/button.tsx",
    "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-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\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:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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        sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/calendar.tsx",
    "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 \"@/components/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:--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          \"flex gap-4 flex-col md:flex-row relative\",\n          defaultClassNames.months\n        ),\n        month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n        nav: cn(\n          \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n          defaultClassNames.nav\n        ),\n        button_previous: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n          defaultClassNames.button_previous\n        ),\n        button_next: cn(\n          buttonVariants({ variant: buttonVariant }),\n          \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n          defaultClassNames.button_next\n        ),\n        month_caption: cn(\n          \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n          defaultClassNames.month_caption\n        ),\n        dropdowns: cn(\n          \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n          defaultClassNames.dropdowns\n        ),\n        dropdown_root: cn(\n          \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n          defaultClassNames.dropdown_root\n        ),\n        dropdown: cn(\n          \"absolute bg-popover inset-0 opacity-0\",\n          defaultClassNames.dropdown\n        ),\n        caption_label: cn(\n          \"select-none font-medium\",\n          captionLayout === \"label\"\n            ? \"text-sm\"\n            : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>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 rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n          defaultClassNames.weekday\n        ),\n        week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n        week_number_header: cn(\n          \"select-none w-(--cell-size)\",\n          defaultClassNames.week_number_header\n        ),\n        week_number: cn(\n          \"text-[0.8rem] select-none text-muted-foreground\",\n          defaultClassNames.week_number\n        ),\n        day: cn(\n          \"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\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          \"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.toISOString().split(\"T\")[0]}\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 dark:hover:text-accent-foreground 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:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n        defaultClassNames.day,\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Calendar, CalendarDayButton }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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        \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 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-muted-foreground text-sm\", 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/www/registry/creative-tim/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 \"@/components/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/www/registry/creative-tim/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          \"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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        \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border 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                  \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\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=\"text-foreground font-mono font-medium 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                \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\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/www/registry/creative-tim/ui/checkbox.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\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 border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex items-center justify-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/www/registry/creative-tim/ui/chip.tsx",
    "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 chipVariants = cva(\n  \"inline-flex items-center justify-center rounded-full border px-3 py-1 text-sm font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-4 gap-1.5 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] transition-[color,box-shadow] overflow-hidden\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n        destructive:\n          \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n        ghost:\n          \"border-transparent bg-transparent text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n        solid:\n          \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n      },\n      size: {\n        sm: \"px-2 py-0.5 text-xs [&>svg]:size-3\",\n        md: \"px-3 py-1 text-sm [&>svg]:size-4\",\n        lg: \"px-4 py-1.5 text-base [&>svg]:size-5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"md\",\n    },\n  }\n)\n\nfunction Chip({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof chipVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"chip\"\n      className={cn(chipVariants({ variant, size }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Chip, chipVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/collapse.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface CollapseProps\n  extends React.ComponentProps<typeof CollapsiblePrimitive.Root> {\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n}\n\nfunction Collapse({ open, onOpenChange, children, ...props }: CollapseProps) {\n  return (\n    <CollapsiblePrimitive.Root\n      open={open}\n      onOpenChange={onOpenChange}\n      {...props}\n    >\n      {children}\n    </CollapsiblePrimitive.Root>\n  )\n}\n\nfunction CollapseContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n  return (\n    <CollapsiblePrimitive.CollapsibleContent\n      className={cn(\n        \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Collapse, CollapseContent }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/collapsible.tsx",
    "content": "\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\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/www/registry/creative-tim/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 \"@/components/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        \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\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=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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          \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden 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        \"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        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(\"bg-border -mx-1 h-px\", 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        \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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/www/registry/creative-tim/ui/context-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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          \"bg-popover 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 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 p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"text-foreground px-2 py-1.5 text-sm font-medium 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(\"bg-border -mx-1 my-1 h-px\", 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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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/www/registry/creative-tim/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\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          \"bg-background 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 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 p-6 shadow-lg duration-200 sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_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({ className, ...props }: React.ComponentProps<\"div\">) {\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  )\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-muted-foreground text-sm\", 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/www/registry/creative-tim/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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\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 bg-background fixed z-50 flex h-auto flex-col\",\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=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full 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(\"text-foreground font-semibold\", 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-muted-foreground text-sm\", 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/www/registry/creative-tim/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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          \"bg-popover 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 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 p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\"bg-border -mx-1 my-1 h-px\", 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        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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/www/registry/creative-tim/ui/form.tsx",
    "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  useFormState,\n  type ControllerProps,\n  type FieldPath,\n  type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/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>) {\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n  return (\n    <Slot\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-muted-foreground text-sm\", 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-destructive text-sm\", 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/www/registry/creative-tim/ui/hover-card.tsx",
    "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\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          \"bg-popover 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 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </HoverCardPrimitive.Portal>\n  )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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        \"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 dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center 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]:z-10 data-[active=true]:ring-[3px]\",\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=\"animate-caret-blink bg-foreground h-4 w-px 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/www/registry/creative-tim/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        \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 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 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n        \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\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/www/registry/creative-tim/ui/list.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction List({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"list\"\n      className={cn(\"flex flex-col gap-1\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ListItem({\n  className,\n  asChild = false,\n  selected = false,\n  disabled = false,\n  ...props\n}: React.ComponentProps<\"li\"> & {\n  asChild?: boolean\n  selected?: boolean\n  disabled?: boolean\n}) {\n  const Comp = asChild ? Slot : \"li\"\n\n  return (\n    <Comp\n      data-slot=\"list-item\"\n      data-selected={selected}\n      data-disabled={disabled}\n      className={cn(\n        \"flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors\",\n        \"hover:bg-accent hover:text-accent-foreground\",\n        \"focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\",\n        selected && \"bg-accent text-accent-foreground\",\n        disabled && \"pointer-events-none opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ListItemStart({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"list-item-start\"\n      className={cn(\"flex shrink-0 items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction ListItemEnd({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"list-item-end\"\n      className={cn(\"ml-auto flex shrink-0 items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { List, ListItem, ListItemStart, ListItemEnd }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/map.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport maplibregl from \"maplibre-gl\"\nimport { createPortal } from \"react-dom\"\n\nimport \"maplibre-gl/dist/maplibre-gl.css\"\n\nimport {\n  LocateIcon,\n  Maximize2Icon,\n  MinusIcon,\n  NavigationIcon,\n  PlusIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// Custom Styles to Override MapLibre Defaults\n// ============================================================================\n\nif (typeof document !== \"undefined\") {\n  const style = document.createElement(\"style\")\n  style.textContent = `\n    /* Remove default MapLibre popup styles */\n    .maplibregl-popup-content {\n      background: transparent !important;\n      padding: 0 !important;\n      box-shadow: none !important;\n      border-radius: 0 !important;\n    }\n\n    .maplibregl-popup-tip {\n      display: none !important;\n    }\n\n    .maplibregl-popup-close-button {\n      color: hsl(var(--foreground)) !important;\n      font-size: 20px !important;\n      padding: 0 4px !important;\n      right: 4px !important;\n      top: 4px !important;\n    }\n  `\n  if (!document.head.querySelector(\"[data-map-styles]\")) {\n    style.setAttribute(\"data-map-styles\", \"\")\n    document.head.appendChild(style)\n  }\n}\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\ninterface MapContextValue {\n  map: maplibregl.Map | null\n  isLoaded: boolean\n}\n\ninterface MapProps extends Omit<maplibregl.MapOptions, \"container\" | \"style\"> {\n  children?: React.ReactNode\n  className?: string\n  center?: [number, number]\n  zoom?: number\n  minZoom?: number\n  maxZoom?: number\n  styles?: {\n    light?: string | maplibregl.StyleSpecification\n    dark?: string | maplibregl.StyleSpecification\n  }\n}\n\ninterface MapMarkerProps {\n  longitude: number\n  latitude: number\n  children?: React.ReactNode\n  draggable?: boolean\n  onClick?: () => void\n  onMouseEnter?: () => void\n  onMouseLeave?: () => void\n  onDragStart?: (lngLat: maplibregl.LngLat) => void\n  onDrag?: (lngLat: maplibregl.LngLat) => void\n  onDragEnd?: (lngLat: maplibregl.LngLat) => void\n}\n\ninterface MarkerContentProps {\n  children?: React.ReactNode\n  className?: string\n}\n\ninterface MarkerPopupProps {\n  children?: React.ReactNode\n  className?: string\n  closeButton?: boolean\n  closeOnClick?: boolean\n}\n\ninterface MarkerTooltipProps {\n  children?: React.ReactNode\n  className?: string\n}\n\ninterface MarkerLabelProps {\n  children?: React.ReactNode\n  className?: string\n  position?: \"top\" | \"bottom\" | \"left\" | \"right\"\n}\n\ninterface MapControlsProps {\n  position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"\n  showZoom?: boolean\n  showCompass?: boolean\n  showLocate?: boolean\n  showFullscreen?: boolean\n  onLocate?: (coords: { lng: number; lat: number }) => void\n  className?: string\n}\n\ninterface MapPopupProps {\n  longitude: number\n  latitude: number\n  children?: React.ReactNode\n  className?: string\n  closeButton?: boolean\n  onClose?: () => void\n}\n\ninterface MapRouteProps {\n  id: string\n  coordinates: [number, number][]\n  color?: string\n  width?: number\n  opacity?: number\n  dashArray?: number[]\n  interactive?: boolean\n  onClick?: () => void\n  onMouseEnter?: () => void\n  onMouseLeave?: () => void\n}\n\ninterface MapClusterLayerProps<T = unknown> {\n  data: GeoJSON.FeatureCollection<GeoJSON.Point, T> | string\n  clusterRadius?: number\n  clusterMaxZoom?: number\n  clusterColors?: [string, string, string]\n  clusterThresholds?: [number, number]\n  pointColor?: string\n  onPointClick?: (\n    feature: GeoJSON.Feature<GeoJSON.Point, T>,\n    lngLat: maplibregl.LngLat\n  ) => void\n  onClusterClick?: (clusterId: number, lngLat: maplibregl.LngLat) => void\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst MapContext = React.createContext<MapContextValue>({\n  map: null,\n  isLoaded: false,\n})\n\n// ============================================================================\n// useMap Hook\n// ============================================================================\n\nfunction useMap() {\n  const context = React.useContext(MapContext)\n  if (!context) {\n    throw new Error(\"useMap must be used within a Map component\")\n  }\n  return context\n}\n\n// ============================================================================\n// Map Component (Root)\n// ============================================================================\n\n// OpenFreeMap - Free, open-source map tiles with no API key required\n// https://openfreemap.org - MIT License: https://github.com/hyperknot/openfreemap/blob/main/LICENSE.md\nconst DEFAULT_LIGHT_STYLE = \"https://tiles.openfreemap.org/styles/positron\"\nconst DEFAULT_DARK_STYLE = \"https://tiles.openfreemap.org/styles/dark\"\n\nfunction Map({\n  children,\n  className,\n  center = [-122.4194, 37.7749], // San Francisco\n  zoom = 12,\n  minZoom = 0,\n  maxZoom = 22,\n  styles,\n  ...props\n}: MapProps) {\n  const mapContainer = React.useRef<HTMLDivElement>(null)\n  const mapInstance = React.useRef<maplibregl.Map | null>(null)\n  const [isLoaded, setIsLoaded] = React.useState(false)\n\n  // Detect theme\n  const getTheme = React.useCallback(() => {\n    if (typeof window === \"undefined\") return \"light\"\n    return document.documentElement.classList.contains(\"dark\")\n      ? \"dark\"\n      : \"light\"\n  }, [])\n\n  // Initialize map\n  React.useEffect(() => {\n    if (!mapContainer.current || mapInstance.current) return\n\n    const theme = getTheme()\n    const styleUrl =\n      theme === \"dark\"\n        ? styles?.dark || DEFAULT_DARK_STYLE\n        : styles?.light || DEFAULT_LIGHT_STYLE\n\n    mapInstance.current = new maplibregl.Map({\n      container: mapContainer.current,\n      style: styleUrl,\n      center,\n      zoom,\n      minZoom,\n      maxZoom,\n      ...props,\n    })\n\n    mapInstance.current.on(\"load\", () => {\n      setIsLoaded(true)\n    })\n\n    return () => {\n      if (mapInstance.current) {\n        try {\n          mapInstance.current.remove()\n        } catch (error) {\n          // Suppress abort errors during cleanup\n          if (error instanceof Error && !error.message.includes(\"aborted\")) {\n            console.error(\"Error removing map:\", error)\n          }\n        } finally {\n          mapInstance.current = null\n          setIsLoaded(false)\n        }\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  // Handle theme changes\n  React.useEffect(() => {\n    if (!mapInstance.current || !isLoaded) return\n\n    const observer = new MutationObserver(() => {\n      const theme = getTheme()\n      const styleUrl =\n        theme === \"dark\"\n          ? styles?.dark || DEFAULT_DARK_STYLE\n          : styles?.light || DEFAULT_LIGHT_STYLE\n\n      mapInstance.current?.setStyle(styleUrl)\n    })\n\n    observer.observe(document.documentElement, {\n      attributes: true,\n      attributeFilter: [\"class\"],\n    })\n\n    return () => observer.disconnect()\n  }, [isLoaded, getTheme, styles])\n\n  return (\n    <MapContext.Provider value={{ map: mapInstance.current, isLoaded }}>\n      <div\n        ref={mapContainer}\n        data-slot=\"map\"\n        className={cn(\"relative h-full w-full\", className)}\n      >\n        {isLoaded && children}\n      </div>\n    </MapContext.Provider>\n  )\n}\n\n// ============================================================================\n// MapMarker Components\n// ============================================================================\n\ninterface MarkerContextValue {\n  marker: maplibregl.Marker | null\n  markerElement: HTMLDivElement | null\n}\n\nconst MarkerContext = React.createContext<MarkerContextValue | null>(null)\n\nfunction MapMarker({\n  longitude,\n  latitude,\n  children,\n  draggable = false,\n  onClick,\n  onMouseEnter,\n  onMouseLeave,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n}: MapMarkerProps) {\n  const { map, isLoaded } = useMap()\n  const markerRef = React.useRef<maplibregl.Marker | null>(null)\n  const markerElementRef = React.useRef<HTMLDivElement | null>(null)\n  const [, forceUpdate] = React.useReducer((x) => x + 1, 0)\n\n  React.useEffect(() => {\n    if (!map || !isLoaded) return\n\n    // Create marker element container\n    const el = document.createElement(\"div\")\n    el.style.cursor = \"pointer\"\n    markerElementRef.current = el\n\n    // Create marker\n    markerRef.current = new maplibregl.Marker({\n      element: el,\n      draggable,\n    })\n      .setLngLat([longitude, latitude])\n      .addTo(map)\n\n    // Event handlers\n    if (onClick) {\n      el.addEventListener(\"click\", onClick)\n    }\n    if (onMouseEnter) {\n      el.addEventListener(\"mouseenter\", onMouseEnter)\n    }\n    if (onMouseLeave) {\n      el.addEventListener(\"mouseleave\", onMouseLeave)\n    }\n\n    // Drag handlers\n    if (onDragStart) {\n      markerRef.current.on(\"dragstart\", () => {\n        onDragStart(markerRef.current!.getLngLat())\n      })\n    }\n    if (onDrag) {\n      markerRef.current.on(\"drag\", () => {\n        onDrag(markerRef.current!.getLngLat())\n      })\n    }\n    if (onDragEnd) {\n      markerRef.current.on(\"dragend\", () => {\n        onDragEnd(markerRef.current!.getLngLat())\n      })\n    }\n\n    forceUpdate()\n\n    return () => {\n      if (markerRef.current) {\n        markerRef.current.remove()\n        markerRef.current = null\n      }\n      markerElementRef.current = null\n    }\n  }, [\n    map,\n    isLoaded,\n    longitude,\n    latitude,\n    draggable,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n  ])\n\n  // Update position when coordinates change\n  React.useEffect(() => {\n    if (markerRef.current) {\n      markerRef.current.setLngLat([longitude, latitude])\n    }\n  }, [longitude, latitude])\n\n  if (!isLoaded || !markerElementRef.current) return null\n\n  return (\n    <MarkerContext.Provider\n      value={{\n        marker: markerRef.current,\n        markerElement: markerElementRef.current,\n      }}\n    >\n      {children}\n    </MarkerContext.Provider>\n  )\n}\n\nfunction MarkerContent({ children, className }: MarkerContentProps) {\n  const context = React.useContext(MarkerContext)\n\n  if (!context?.markerElement) return null\n\n  return createPortal(\n    <div data-slot=\"marker-content\" className={cn(className)}>\n      {children || (\n        <div className=\"bg-primary size-4 rounded-full border-2 border-white shadow-lg\" />\n      )}\n    </div>,\n    context.markerElement\n  )\n}\n\nfunction MarkerPopup({\n  children,\n  className,\n  closeButton = false,\n  closeOnClick = true,\n}: MarkerPopupProps) {\n  const context = React.useContext(MarkerContext)\n  const { map } = useMap()\n  const popupRef = React.useRef<maplibregl.Popup | null>(null)\n  const popupContainerRef = React.useRef<HTMLDivElement | null>(null)\n  const [isOpen, setIsOpen] = React.useState(false)\n\n  if (!context) {\n    throw new Error(\"MarkerPopup must be used within a MapMarker\")\n  }\n\n  const { marker, markerElement } = context\n\n  React.useEffect(() => {\n    if (!map || !marker || !markerElement) return\n\n    // Create popup container (plain, no styling)\n    const popupEl = document.createElement(\"div\")\n    popupContainerRef.current = popupEl\n\n    popupRef.current = new maplibregl.Popup({\n      closeButton,\n      closeOnClick,\n      offset: 25,\n    })\n      .setMaxWidth(\"none\")\n      .setDOMContent(popupEl)\n\n    // Toggle popup on marker click\n    const handleClick = (e: MouseEvent) => {\n      e.stopPropagation()\n      if (!popupRef.current || !marker) return\n\n      if (isOpen) {\n        popupRef.current.remove()\n        setIsOpen(false)\n      } else {\n        popupRef.current.setLngLat(marker.getLngLat()).addTo(map)\n        setIsOpen(true)\n      }\n    }\n\n    markerElement.addEventListener(\"click\", handleClick)\n\n    // Handle close\n    popupRef.current.on(\"close\", () => {\n      setIsOpen(false)\n    })\n\n    return () => {\n      markerElement.removeEventListener(\"click\", handleClick)\n      if (popupRef.current) {\n        popupRef.current.remove()\n        popupRef.current = null\n      }\n      popupContainerRef.current = null\n    }\n  }, [map, marker, markerElement, closeButton, closeOnClick])\n\n  if (!popupContainerRef.current) return null\n\n  return createPortal(\n    <div\n      className={cn(\n        \"animate-in fade-in-0 zoom-in-95 bg-popover text-popover-foreground border-border rounded-lg border p-3 text-sm shadow-lg\",\n        className\n      )}\n    >\n      {children}\n    </div>,\n    popupContainerRef.current\n  )\n}\n\nfunction MarkerTooltip({ children, className }: MarkerTooltipProps) {\n  const context = React.useContext(MarkerContext)\n  const { map } = useMap()\n  const tooltipRef = React.useRef<maplibregl.Popup | null>(null)\n  const tooltipContainerRef = React.useRef<HTMLDivElement | null>(null)\n\n  if (!context) {\n    throw new Error(\"MarkerTooltip must be used within a MapMarker\")\n  }\n\n  const { marker, markerElement } = context\n\n  React.useEffect(() => {\n    if (!map || !marker || !markerElement) return\n\n    // Create tooltip container (plain, no styling)\n    const tooltipEl = document.createElement(\"div\")\n    tooltipContainerRef.current = tooltipEl\n\n    tooltipRef.current = new maplibregl.Popup({\n      closeButton: false,\n      closeOnClick: false,\n      offset: 15,\n    })\n      .setMaxWidth(\"none\")\n      .setDOMContent(tooltipEl)\n\n    const handleMouseEnter = () => {\n      if (tooltipRef.current && marker) {\n        tooltipRef.current.setLngLat(marker.getLngLat()).addTo(map)\n      }\n    }\n\n    const handleMouseLeave = () => {\n      if (tooltipRef.current) {\n        tooltipRef.current.remove()\n      }\n    }\n\n    markerElement.addEventListener(\"mouseenter\", handleMouseEnter)\n    markerElement.addEventListener(\"mouseleave\", handleMouseLeave)\n\n    return () => {\n      markerElement.removeEventListener(\"mouseenter\", handleMouseEnter)\n      markerElement.removeEventListener(\"mouseleave\", handleMouseLeave)\n      if (tooltipRef.current) {\n        tooltipRef.current.remove()\n        tooltipRef.current = null\n      }\n      tooltipContainerRef.current = null\n    }\n  }, [map, marker, markerElement])\n\n  if (!tooltipContainerRef.current) return null\n\n  return createPortal(\n    <div\n      className={cn(\n        \"animate-in fade-in-0 zoom-in-95 bg-foreground text-background rounded-md px-2 py-1 text-xs shadow-md\",\n        className\n      )}\n    >\n      {children}\n    </div>,\n    tooltipContainerRef.current\n  )\n}\n\nfunction MarkerLabel({\n  children,\n  className,\n  position = \"top\",\n}: MarkerLabelProps) {\n  const context = React.useContext(MarkerContext)\n\n  if (!context?.markerElement) return null\n\n  const positionClasses = {\n    top: \"-top-8 left-1/2 -translate-x-1/2\",\n    bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n    left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n    right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n  }\n\n  return createPortal(\n    <div\n      data-slot=\"marker-label\"\n      className={cn(\n        \"bg-background text-foreground border-border pointer-events-none absolute rounded-md border px-2 py-1 text-xs font-medium whitespace-nowrap shadow-sm\",\n        positionClasses[position],\n        className\n      )}\n    >\n      {children}\n    </div>,\n    context.markerElement\n  )\n}\n\n// ============================================================================\n// MapControls Component\n// ============================================================================\n\nfunction MapControls({\n  position = \"bottom-right\",\n  showZoom = true,\n  showCompass = false,\n  showLocate = false,\n  showFullscreen = false,\n  onLocate,\n  className,\n}: MapControlsProps) {\n  const { map } = useMap()\n\n  const positionClasses = {\n    \"top-left\": \"top-4 left-4\",\n    \"top-right\": \"top-4 right-4\",\n    \"bottom-left\": \"bottom-4 left-4\",\n    \"bottom-right\": \"bottom-4 right-4\",\n  }\n\n  const handleZoomIn = () => {\n    if (map) map.zoomIn()\n  }\n\n  const handleZoomOut = () => {\n    if (map) map.zoomOut()\n  }\n\n  const handleResetNorth = () => {\n    if (map) map.resetNorth()\n  }\n\n  const handleLocate = () => {\n    if (navigator.geolocation) {\n      navigator.geolocation.getCurrentPosition(\n        (position) => {\n          const coords = {\n            lng: position.coords.longitude,\n            lat: position.coords.latitude,\n          }\n\n          if (map) {\n            map.flyTo({ center: [coords.lng, coords.lat], zoom: 14 })\n          }\n\n          if (onLocate) {\n            onLocate(coords)\n          }\n        },\n        (error) => {\n          console.error(\"Error getting location:\", error)\n        }\n      )\n    }\n  }\n\n  const handleFullscreen = () => {\n    const container = map?.getContainer()\n    if (!container) return\n\n    if (!document.fullscreenElement) {\n      container.requestFullscreen()\n    } else {\n      document.exitFullscreen()\n    }\n  }\n\n  return (\n    <div\n      data-slot=\"map-controls\"\n      className={cn(\n        \"absolute z-10 flex flex-col gap-2\",\n        positionClasses[position],\n        className\n      )}\n    >\n      {showZoom && (\n        <div className=\"bg-background border-border flex flex-col overflow-hidden rounded-lg border shadow-md\">\n          <button\n            type=\"button\"\n            onClick={handleZoomIn}\n            className=\"hover:bg-accent hover:text-accent-foreground flex h-8 w-8 items-center justify-center border-b transition-colors\"\n            aria-label=\"Zoom in\"\n          >\n            <PlusIcon className=\"h-4 w-4\" />\n          </button>\n          <button\n            type=\"button\"\n            onClick={handleZoomOut}\n            className=\"hover:bg-accent hover:text-accent-foreground flex h-8 w-8 items-center justify-center transition-colors\"\n            aria-label=\"Zoom out\"\n          >\n            <MinusIcon className=\"h-4 w-4\" />\n          </button>\n        </div>\n      )}\n\n      {showCompass && (\n        <button\n          type=\"button\"\n          onClick={handleResetNorth}\n          className=\"bg-background border-border hover:bg-accent hover:text-accent-foreground flex h-8 w-8 items-center justify-center rounded-lg border shadow-md transition-colors\"\n          aria-label=\"Reset north\"\n        >\n          <NavigationIcon className=\"h-4 w-4\" />\n        </button>\n      )}\n\n      {showLocate && (\n        <button\n          type=\"button\"\n          onClick={handleLocate}\n          className=\"bg-background border-border hover:bg-accent hover:text-accent-foreground flex h-8 w-8 items-center justify-center rounded-lg border shadow-md transition-colors\"\n          aria-label=\"Locate me\"\n        >\n          <LocateIcon className=\"h-4 w-4\" />\n        </button>\n      )}\n\n      {showFullscreen && (\n        <button\n          type=\"button\"\n          onClick={handleFullscreen}\n          className=\"bg-background border-border hover:bg-accent hover:text-accent-foreground flex h-8 w-8 items-center justify-center rounded-lg border shadow-md transition-colors\"\n          aria-label=\"Toggle fullscreen\"\n        >\n          <Maximize2Icon className=\"h-4 w-4\" />\n        </button>\n      )}\n    </div>\n  )\n}\n\n// ============================================================================\n// MapPopup Component (Standalone)\n// ============================================================================\n\nfunction MapPopup({\n  longitude,\n  latitude,\n  children,\n  className,\n  closeButton = true,\n  onClose,\n}: MapPopupProps) {\n  const { map, isLoaded } = useMap()\n  const popupRef = React.useRef<maplibregl.Popup | null>(null)\n  const popupContainerRef = React.useRef<HTMLDivElement | null>(null)\n\n  React.useEffect(() => {\n    if (!map || !isLoaded) return\n\n    const popupEl = document.createElement(\"div\")\n    popupContainerRef.current = popupEl\n\n    popupRef.current = new maplibregl.Popup({\n      closeButton,\n      closeOnClick: true,\n    })\n      .setMaxWidth(\"none\")\n      .setLngLat([longitude, latitude])\n      .setDOMContent(popupEl)\n      .addTo(map)\n\n    if (onClose) {\n      popupRef.current.on(\"close\", onClose)\n    }\n\n    return () => {\n      if (popupRef.current) {\n        popupRef.current.remove()\n        popupRef.current = null\n      }\n      popupContainerRef.current = null\n    }\n  }, [map, isLoaded, longitude, latitude, closeButton, onClose])\n\n  if (!popupContainerRef.current) return null\n\n  return createPortal(\n    <div\n      className={cn(\n        \"animate-in fade-in-0 zoom-in-95 bg-popover text-popover-foreground border-border rounded-lg border p-3 text-sm shadow-lg\",\n        className\n      )}\n    >\n      {children}\n    </div>,\n    popupContainerRef.current\n  )\n}\n\n// ============================================================================\n// MapRoute Component\n// ============================================================================\n\nfunction MapRoute({\n  id,\n  coordinates,\n  color = \"#3b82f6\",\n  width = 3,\n  opacity = 1,\n  dashArray,\n  interactive = true,\n  onClick,\n  onMouseEnter,\n  onMouseLeave,\n}: MapRouteProps) {\n  const { map, isLoaded } = useMap()\n\n  React.useEffect(() => {\n    if (!map || !isLoaded) return\n\n    const sourceId = `route-${id}`\n    const layerId = `route-layer-${id}`\n\n    // Add source\n    if (!map.getSource(sourceId)) {\n      map.addSource(sourceId, {\n        type: \"geojson\",\n        data: {\n          type: \"Feature\",\n          properties: {},\n          geometry: {\n            type: \"LineString\",\n            coordinates,\n          },\n        },\n      })\n    }\n\n    // Add layer\n    if (!map.getLayer(layerId)) {\n      map.addLayer({\n        id: layerId,\n        type: \"line\",\n        source: sourceId,\n        layout: {\n          \"line-join\": \"round\",\n          \"line-cap\": \"round\",\n        },\n        paint: {\n          \"line-color\": color,\n          \"line-width\": width,\n          \"line-opacity\": opacity,\n          ...(dashArray && { \"line-dasharray\": dashArray }),\n        },\n      })\n    }\n\n    // Event handlers\n    if (interactive) {\n      if (onClick) {\n        map.on(\"click\", layerId, onClick)\n      }\n      if (onMouseEnter) {\n        map.on(\"mouseenter\", layerId, () => {\n          map.getCanvas().style.cursor = \"pointer\"\n          onMouseEnter()\n        })\n      }\n      if (onMouseLeave) {\n        map.on(\"mouseleave\", layerId, () => {\n          map.getCanvas().style.cursor = \"\"\n          onMouseLeave()\n        })\n      }\n    }\n\n    return () => {\n      if (map.getLayer(layerId)) {\n        map.removeLayer(layerId)\n      }\n      if (map.getSource(sourceId)) {\n        map.removeSource(sourceId)\n      }\n    }\n  }, [\n    map,\n    isLoaded,\n    id,\n    coordinates,\n    color,\n    width,\n    opacity,\n    dashArray,\n    interactive,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n  ])\n\n  return null\n}\n\n// ============================================================================\n// MapClusterLayer Component\n// ============================================================================\n\nfunction MapClusterLayer<T = unknown>({\n  data,\n  clusterRadius = 50,\n  clusterMaxZoom = 14,\n  clusterColors = [\"#51bbd6\", \"#f1f075\", \"#f28cb1\"],\n  clusterThresholds = [100, 750],\n  pointColor = \"#3b82f6\",\n  onPointClick,\n  onClusterClick,\n}: MapClusterLayerProps<T>) {\n  const { map, isLoaded } = useMap()\n\n  React.useEffect(() => {\n    if (!map || !isLoaded) return\n\n    const sourceId = \"clusters\"\n    const clusterLayerId = \"clusters-layer\"\n    const clusterCountLayerId = \"cluster-count\"\n    const pointLayerId = \"unclustered-point\"\n\n    // Add source\n    map.addSource(sourceId, {\n      type: \"geojson\",\n      data:\n        typeof data === \"string\" ? data : (data as GeoJSON.FeatureCollection),\n      cluster: true,\n      clusterMaxZoom,\n      clusterRadius,\n    })\n\n    // Add cluster circles\n    map.addLayer({\n      id: clusterLayerId,\n      type: \"circle\",\n      source: sourceId,\n      filter: [\"has\", \"point_count\"],\n      paint: {\n        \"circle-color\": [\n          \"step\",\n          [\"get\", \"point_count\"],\n          clusterColors[0],\n          clusterThresholds[0],\n          clusterColors[1],\n          clusterThresholds[1],\n          clusterColors[2],\n        ],\n        \"circle-radius\": [\"step\", [\"get\", \"point_count\"], 20, 100, 30, 750, 40],\n        \"circle-opacity\": 0.8,\n      },\n    })\n\n    // Add cluster count\n    map.addLayer({\n      id: clusterCountLayerId,\n      type: \"symbol\",\n      source: sourceId,\n      filter: [\"has\", \"point_count\"],\n      layout: {\n        \"text-field\": \"{point_count_abbreviated}\",\n        \"text-font\": [\"DIN Offc Pro Medium\", \"Arial Unicode MS Bold\"],\n        \"text-size\": 12,\n      },\n      paint: {\n        \"text-color\": \"#ffffff\",\n      },\n    })\n\n    // Add unclustered points\n    map.addLayer({\n      id: pointLayerId,\n      type: \"circle\",\n      source: sourceId,\n      filter: [\"!\", [\"has\", \"point_count\"]],\n      paint: {\n        \"circle-color\": pointColor,\n        \"circle-radius\": 6,\n        \"circle-stroke-width\": 2,\n        \"circle-stroke-color\": \"#fff\",\n      },\n    })\n\n    // Click handlers\n    if (onClusterClick) {\n      map.on(\"click\", clusterLayerId, (e) => {\n        const features = map.queryRenderedFeatures(e.point, {\n          layers: [clusterLayerId],\n        })\n\n        if (features.length > 0) {\n          const clusterId = features[0].properties?.cluster_id\n          const source = map.getSource(sourceId) as maplibregl.GeoJSONSource\n\n          source\n            .getClusterExpansionZoom(clusterId)\n            .then((zoom) => {\n              const coordinates = (\n                features[0].geometry as GeoJSON.Point\n              ).coordinates.slice() as [number, number]\n\n              map.easeTo({\n                center: coordinates,\n                zoom,\n              })\n\n              onClusterClick(\n                clusterId,\n                new maplibregl.LngLat(coordinates[0], coordinates[1])\n              )\n            })\n            .catch((err) => {\n              console.error(\"Error getting cluster expansion zoom:\", err)\n            })\n        }\n      })\n    }\n\n    if (onPointClick) {\n      map.on(\"click\", pointLayerId, (e) => {\n        if (e.features && e.features.length > 0) {\n          const feature = e.features[0] as unknown as GeoJSON.Feature<\n            GeoJSON.Point,\n            T\n          >\n          const coordinates = feature.geometry.coordinates.slice() as [\n            number,\n            number,\n          ]\n\n          onPointClick(\n            feature,\n            new maplibregl.LngLat(coordinates[0], coordinates[1])\n          )\n        }\n      })\n    }\n\n    // Cursor\n    map.on(\"mouseenter\", clusterLayerId, () => {\n      map.getCanvas().style.cursor = \"pointer\"\n    })\n    map.on(\"mouseleave\", clusterLayerId, () => {\n      map.getCanvas().style.cursor = \"\"\n    })\n    map.on(\"mouseenter\", pointLayerId, () => {\n      map.getCanvas().style.cursor = \"pointer\"\n    })\n    map.on(\"mouseleave\", pointLayerId, () => {\n      map.getCanvas().style.cursor = \"\"\n    })\n\n    return () => {\n      if (map.getLayer(pointLayerId)) map.removeLayer(pointLayerId)\n      if (map.getLayer(clusterCountLayerId))\n        map.removeLayer(clusterCountLayerId)\n      if (map.getLayer(clusterLayerId)) map.removeLayer(clusterLayerId)\n      if (map.getSource(sourceId)) map.removeSource(sourceId)\n    }\n  }, [\n    map,\n    isLoaded,\n    data,\n    clusterRadius,\n    clusterMaxZoom,\n    clusterColors,\n    clusterThresholds,\n    pointColor,\n    onPointClick,\n    onClusterClick,\n  ])\n\n  return null\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n  Map,\n  useMap,\n  MapMarker,\n  MarkerContent,\n  MarkerPopup,\n  MarkerTooltip,\n  MarkerLabel,\n  MapControls,\n  MapPopup,\n  MapRoute,\n  MapClusterLayer,\n}\n\nexport type {\n  MapProps,\n  MapMarkerProps,\n  MarkerContentProps,\n  MarkerPopupProps,\n  MarkerTooltipProps,\n  MarkerLabelProps,\n  MapControlsProps,\n  MapPopupProps as StandaloneMapPopupProps,\n  MapRouteProps,\n  MapClusterLayerProps,\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/menubar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\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        \"bg-background 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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium 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          \"bg-popover text-popover-foreground 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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\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        \"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 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none 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(\"bg-border -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(\n        \"text-muted-foreground ml-auto text-xs tracking-widest\",\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        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\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        \"bg-popover 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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\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/www/registry/creative-tim/ui/navigation-menu.tsx",
    "content": "import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDownIcon } from \"lucide-react\"\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 hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\"\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        \"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 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n        \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 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: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\",\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 bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow 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        \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_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        \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n        className\n      )}\n      {...props}\n    >\n      <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm 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/www/registry/creative-tim/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 { Button, buttonVariants } from \"@/components/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/www/registry/creative-tim/ui/popover.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\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  asChild = false,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return (\n    <PopoverPrimitive.Trigger\n      data-slot=\"popover-trigger\"\n      asChild={asChild}\n      {...props}\n    />\n  )\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          \"bg-popover 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md 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\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\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        \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"bg-primary h-full w-full flex-1 transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/radio-group.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\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        \"border-input text-primary 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:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\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=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/rating.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Star } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ratingVariants = cva(\"flex items-center gap-0.5\", {\n  variants: {\n    color: {\n      primary:\n        \"[&>svg[data-filled='true']]:fill-primary [&>svg[data-filled='true']]:text-primary\",\n      secondary:\n        \"[&>svg[data-filled='true']]:fill-secondary [&>svg[data-filled='true']]:text-secondary\",\n      info: \"[&>svg[data-filled='true']]:fill-blue-500 [&>svg[data-filled='true']]:text-blue-500\",\n      success:\n        \"[&>svg[data-filled='true']]:fill-green-500 [&>svg[data-filled='true']]:text-green-500\",\n      warning:\n        \"[&>svg[data-filled='true']]:fill-yellow-500 [&>svg[data-filled='true']]:text-yellow-500\",\n      error:\n        \"[&>svg[data-filled='true']]:fill-destructive [&>svg[data-filled='true']]:text-destructive\",\n    },\n  },\n  defaultVariants: {\n    color: \"warning\",\n  },\n})\n\ninterface RatingProps\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n    VariantProps<typeof ratingVariants> {\n  value?: number\n  max?: number\n  readonly?: boolean\n  onValueChange?: (value: number) => void\n  unratedIcon?: React.ComponentType<{ className?: string }>\n  ratedIcon?: React.ComponentType<{ className?: string }>\n}\n\nfunction Rating({\n  className,\n  value = 0,\n  max = 5,\n  readonly = false,\n  color,\n  onValueChange,\n  unratedIcon: UnratedIcon = Star,\n  ratedIcon: RatedIcon = Star,\n  ...props\n}: RatingProps) {\n  const [hoveredValue, setHoveredValue] = React.useState<number | null>(null)\n  const displayValue = hoveredValue ?? value\n\n  const handleClick = (index: number) => {\n    if (!readonly && onValueChange) {\n      onValueChange(index + 1)\n    }\n  }\n\n  const handleMouseEnter = (index: number) => {\n    if (!readonly) {\n      setHoveredValue(index + 1)\n    }\n  }\n\n  const handleMouseLeave = () => {\n    if (!readonly) {\n      setHoveredValue(null)\n    }\n  }\n\n  return (\n    <div\n      className={cn(ratingVariants({ color }), className)}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      {[...Array(max)].map((_, index) => {\n        const isFilled = index < displayValue\n        const Icon = isFilled ? RatedIcon : UnratedIcon\n        return (\n          <Icon\n            key={index}\n            data-filled={isFilled}\n            className={cn(\n              \"h-5 w-5 transition-colors\",\n              !readonly && \"cursor-pointer\",\n              !isFilled && \"fill-muted text-muted-foreground\"\n            )}\n            onClick={() => handleClick(index)}\n            onMouseEnter={() => handleMouseEnter(index)}\n          />\n        )\n      })}\n    </div>\n  )\n}\n\nexport { Rating, ratingVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/resizable.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\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}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n  return (\n    <ResizablePrimitive.PanelGroup\n      data-slot=\"resizable-panel-group\"\n      className={cn(\n        \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction ResizablePanel({\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n  return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n  withHandle,\n  className,\n  ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n  withHandle?: boolean\n}) {\n  return (\n    <ResizablePrimitive.PanelResizeHandle\n      data-slot=\"resizable-handle\"\n      className={cn(\n        \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center 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-offset-1 focus-visible:outline-hidden 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-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n        className\n      )}\n      {...props}\n    >\n      {withHandle && (\n        <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n          <GripVerticalIcon className=\"size-2.5\" />\n        </div>\n      )}\n    </ResizablePrimitive.PanelResizeHandle>\n  )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/scroll-area.tsx",
    "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\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=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] 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=\"bg-border relative flex-1 rounded-full\"\n      />\n    </ScrollAreaPrimitive.ScrollAreaScrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\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        \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 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 [&_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=\"size-4 opacity-50\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"popper\",\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          \"bg-popover 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 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 shadow-md\",\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)] 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(\"text-muted-foreground px-2 py-1.5 text-xs\", 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        \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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-[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=\"absolute right-2 flex size-3.5 items-center justify-center\">\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(\"bg-border pointer-events-none -mx-1 my-1 h-px\", 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/www/registry/creative-tim/ui/separator.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\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        \"bg-border shrink-0 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/www/registry/creative-tim/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\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        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        className={cn(\n          \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n          side === \"right\" &&\n            \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n          side === \"left\" &&\n            \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n          side === \"top\" &&\n            \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n          side === \"bottom\" &&\n            \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n          <XIcon className=\"size-4\" />\n          <span className=\"sr-only\">Close</span>\n        </SheetPrimitive.Close>\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(\"text-foreground font-semibold\", 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-muted-foreground text-sm\", 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/www/registry/creative-tim/ui/sidebar.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n  Sheet,\n  SheetContent,\n  SheetDescription,\n  SheetHeader,\n  SheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/registry/creative-tim/hooks/use-mobile\"\nimport { cn } from \"@/registry/creative-tim/lib/utils\"\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 has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\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          \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\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=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>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 text-sidebar-foreground hidden 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=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]: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        \"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]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] 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        \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\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        \"bg-background relative flex w-full flex-1 flex-col\",\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(\"bg-background h-8 w-full 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(\"bg-sidebar-border mx-2 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        \"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 : \"div\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-label\"\n      data-sidebar=\"group-label\"\n      className={cn(\n        \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium 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 : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-group-action\"\n      data-sidebar=\"group-action\"\n      className={cn(\n        \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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 outline-hidden 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\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 : \"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 : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"sidebar-menu-action\"\n      data-sidebar=\"menu-action\"\n      className={cn(\n        \"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 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform 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          \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 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        \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium 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        \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l 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 : \"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        \"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 flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 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\",\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/www/registry/creative-tim/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(\"bg-accent animate-pulse rounded-md\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\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          \"bg-muted relative grow overflow-hidden rounded-full 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            \"bg-primary absolute 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=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm 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/www/registry/creative-tim/ui/software-purchase-card.tsx",
    "content": "\"use client\"\n\nimport { Calendar, CreditCard, DollarSign, Users } from \"lucide-react\"\n\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Card,\n  CardContent,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\"\n\nexport interface SoftwarePurchaseCardProps {\n  softwareName?: string\n  startDate?: string\n  seats?: number\n  pricingType?: \"per-seat\" | \"flat-rate\" | \"usage-based\"\n  price?: string\n  onApprove?: () => void\n  onDiscard?: () => void\n}\n\nexport function SoftwarePurchaseCard({\n  softwareName = \"Enterprise Cloud Suite\",\n  startDate = \"2025-01-15\",\n  seats = 50,\n  pricingType = \"per-seat\",\n  price = \"$2,500\",\n  onApprove,\n  onDiscard,\n}: SoftwarePurchaseCardProps) {\n  const pricingTypeLabel = {\n    \"per-seat\": \"Per Seat\",\n    \"flat-rate\": \"Flat Rate\",\n    \"usage-based\": \"Usage Based\",\n  }[pricingType]\n\n  return (\n    <Card className=\"w-full max-w-md\">\n      <CardHeader>\n        <CardTitle className=\"flex items-center justify-between\">\n          {softwareName}\n          <Badge variant=\"secondary\">{pricingTypeLabel}</Badge>\n        </CardTitle>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Calendar className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Start Date</span>\n            <span className=\"font-medium\">\n              {new Date(startDate).toLocaleDateString(\"en-US\", {\n                month: \"long\",\n                day: \"numeric\",\n                year: \"numeric\",\n              })}\n            </span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <Users className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Seats</span>\n            <span className=\"font-medium\">{seats} users</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <CreditCard className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">Pricing Type</span>\n            <span className=\"font-medium\">{pricingTypeLabel}</span>\n          </div>\n        </div>\n\n        <div className=\"flex items-center gap-3 text-sm\">\n          <DollarSign className=\"text-muted-foreground size-4\" />\n          <div className=\"flex flex-col gap-0.5\">\n            <span className=\"text-muted-foreground text-xs\">\n              {pricingType === \"per-seat\" ? \"Monthly Cost\" : \"Price\"}\n            </span>\n            <span className=\"text-lg font-semibold\">{price}</span>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"flex gap-3\">\n        <Button variant=\"outline\" className=\"flex-1\" onClick={onDiscard}>\n          Discard\n        </Button>\n        <Button className=\"flex-1\" onClick={onApprove}>\n          Approve\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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, ToasterProps } from \"sonner\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = \"system\" } = useTheme()\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps[\"theme\"]}\n      className={cn(\n        \"toaster group [&>li]:flex [&>li]:items-start [&>li]:gap-3\"\n      )}\n      icons={{\n        success: (\n          <CircleCheckIcon className=\"mt-0.5 size-4 shrink-0 text-green-500\" />\n        ),\n        info: <InfoIcon className=\"mt-0.5 size-4 shrink-0 text-blue-500\" />,\n        warning: (\n          <TriangleAlertIcon className=\"mt-0.5 size-4 shrink-0 text-yellow-500\" />\n        ),\n        error: <OctagonXIcon className=\"mt-0.5 size-4 shrink-0 text-red-500\" />,\n        loading: (\n          <Loader2Icon className=\"mt-0.5 size-4 shrink-0 animate-spin\" />\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      {...props}\n    />\n  )\n}\n\nexport { Toaster }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/spinner.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst spinnerVariants = cva(\n  \"inline-block animate-spin rounded-full border-2 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]\",\n  {\n    variants: {\n      size: {\n        xs: \"h-4 w-4\",\n        sm: \"h-6 w-6\",\n        md: \"h-8 w-8\",\n        lg: \"h-12 w-12\",\n        xl: \"h-16 w-16\",\n        xxl: \"h-20 w-20\",\n      },\n    },\n    defaultVariants: {\n      size: \"md\",\n    },\n  }\n)\n\nexport interface SpinnerProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof spinnerVariants> {}\n\nfunction Spinner({ className, size, ...props }: SpinnerProps) {\n  return (\n    <div\n      role=\"status\"\n      className={cn(spinnerVariants({ size }), className)}\n      {...props}\n    >\n      <span className=\"sr-only\">Loading...</span>\n    </div>\n  )\n}\n\nexport { Spinner, spinnerVariants }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/stepper.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst StepperContext = React.createContext<{\n  activeStep: number\n  setActiveStep?: (step: number) => void\n}>({ activeStep: 0 })\n\ninterface StepperProps extends React.HTMLAttributes<HTMLDivElement> {\n  value?: number\n  onChange?: (value: number) => void\n}\n\nfunction Stepper({\n  className,\n  value = 0,\n  onChange,\n  children,\n  ...props\n}: StepperProps) {\n  const [activeStep, setActiveStep] = React.useState(value)\n\n  React.useEffect(() => {\n    if (value !== undefined) {\n      setActiveStep(value)\n    }\n  }, [value])\n\n  const handleStepChange = (step: number) => {\n    setActiveStep(step)\n    onChange?.(step)\n  }\n\n  return (\n    <StepperContext.Provider\n      value={{ activeStep, setActiveStep: handleStepChange }}\n    >\n      <div className={cn(\"flex w-full items-center\", className)} {...props}>\n        {children}\n      </div>\n    </StepperContext.Provider>\n  )\n}\n\ninterface StepperItemProps extends React.HTMLAttributes<HTMLDivElement> {\n  value: number\n  disabled?: boolean\n}\n\nfunction StepperItem({\n  className,\n  value,\n  disabled,\n  children,\n  ...props\n}: StepperItemProps) {\n  const { activeStep, setActiveStep } = React.useContext(StepperContext)\n  const isActive = activeStep === value\n  const isCompleted = activeStep > value\n  const isDisabled = disabled || activeStep < value\n\n  return (\n    <div\n      className={cn(\n        \"flex w-full items-center\",\n        !isDisabled && \"cursor-pointer\",\n        className\n      )}\n      data-active={isActive}\n      data-completed={isCompleted}\n      data-disabled={isDisabled}\n      onClick={() => !isDisabled && setActiveStep?.(value)}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction StepperHeader({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div className={cn(\"flex w-full items-center\", className)} {...props} />\n  )\n}\n\nfunction StepperSeparator({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"mx-2 h-0.5 flex-1 transition-colors\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction StepperIcon({\n  className,\n  children,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\n        \"relative z-10 flex size-10 items-center justify-center rounded-full border-2 transition-colors\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction StepperBody({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return <div className={cn(\"flex-1 text-center\", className)} {...props} />\n}\n\nexport {\n  Stepper,\n  StepperItem,\n  StepperHeader,\n  StepperSeparator,\n  StepperIcon,\n  StepperBody,\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/switch.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n  className,\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      className={cn(\n        \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className={cn(\n          \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n        )}\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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        \"bg-muted/50 border-t 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        \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\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        \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&: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(\"text-muted-foreground mt-4 text-sm\", 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/www/registry/creative-tim/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsList({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      className={cn(\n        \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n        className\n      )}\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        \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground 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 transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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 }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/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        \"border-input placeholder:text-muted-foreground 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:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/timeline.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TimelineContext = React.createContext<{\n  color?: \"primary\" | \"secondary\" | \"info\" | \"success\" | \"warning\" | \"error\"\n}>({ color: \"secondary\" })\n\nconst timelineVariants = cva(\"relative\", {\n  variants: {\n    orientation: {\n      vertical: \"flex flex-col\",\n      horizontal: \"flex flex-row\",\n    },\n  },\n  defaultVariants: {\n    orientation: \"vertical\",\n  },\n})\n\ninterface TimelineProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof timelineVariants> {\n  color?: \"primary\" | \"secondary\" | \"info\" | \"success\" | \"warning\" | \"error\"\n}\n\nfunction Timeline({\n  className,\n  orientation,\n  color = \"secondary\",\n  children,\n  ...props\n}: TimelineProps) {\n  return (\n    <TimelineContext.Provider value={{ color }}>\n      <div\n        className={cn(timelineVariants({ orientation }), className)}\n        {...props}\n      >\n        {children}\n      </div>\n    </TimelineContext.Provider>\n  )\n}\n\nfunction TimelineItem({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"relative flex gap-4 pb-8 last:pb-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TimelineHeader({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"flex w-6 shrink-0 flex-col items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TimelineSeparator({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  const { color = \"secondary\" } = React.useContext(TimelineContext)\n\n  const colorClasses = {\n    primary: \"bg-primary\",\n    secondary: \"bg-secondary\",\n    info: \"bg-blue-500\",\n    success: \"bg-green-500\",\n    warning: \"bg-yellow-500\",\n    error: \"bg-destructive\",\n  }\n\n  return (\n    <div\n      className={cn(\n        \"absolute top-3 left-[11px] h-full w-0.5\",\n        colorClasses[color],\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TimelineIcon({\n  className,\n  children,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  const { color = \"secondary\" } = React.useContext(TimelineContext)\n\n  const colorClasses = {\n    primary: \"bg-primary text-primary-foreground\",\n    secondary: \"bg-secondary text-secondary-foreground\",\n    info: \"bg-blue-500 text-white\",\n    success: \"bg-green-500 text-white\",\n    warning: \"bg-yellow-500 text-white\",\n    error: \"bg-destructive text-white\",\n  }\n\n  return (\n    <div\n      className={cn(\n        \"relative z-10 flex size-6 items-center justify-center rounded-full\",\n        colorClasses[color],\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n}\n\nfunction TimelineBody({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return <div className={cn(\"flex-1 pt-0.5\", className)} {...props} />\n}\n\nexport {\n  Timeline,\n  TimelineItem,\n  TimelineHeader,\n  TimelineSeparator,\n  TimelineIcon,\n  TimelineBody,\n  timelineVariants,\n}\n"
  },
  {
    "path": "apps/www/registry/creative-tim/ui/toggle-group.tsx",
    "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 \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants>\n>({\n  size: \"default\",\n  variant: \"default\",\n})\n\nfunction ToggleGroup({\n  className,\n  variant,\n  size,\n  children,\n  ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <ToggleGroupPrimitive.Root\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(\n        \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n        className\n      )}\n      {...props}\n    >\n      <ToggleGroupContext.Provider value={{ variant, size }}>\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      className={cn(\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-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/www/registry/creative-tim/ui/toggle.tsx",
    "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 hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\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 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\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/www/registry/creative-tim/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\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 (\n    <TooltipProvider>\n      <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n    </TooltipProvider>\n  )\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          \"bg-foreground text-background 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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "apps/www/registry/index.ts",
    "content": "import { registryItemSchema, type Registry } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nimport { blocks } from \"@/registry/registry-blocks\"\nimport { examples } from \"@/registry/registry-examples\"\nimport { hooks } from \"@/registry/registry-hooks\"\nimport { lib } from \"@/registry/registry-lib\"\nimport { ui } from \"@/registry/registry-ui\"\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\"],\n  devDependencies: [\"tw-animate-css\"],\n  registryDependencies: [\"utils\"],\n  cssVars: {},\n  files: [],\n}\n\nexport const registry = {\n  name: \"creative-tim/ui\",\n  homepage: \"https://creative-tim.com/ui\",\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      ...lib,\n      ...hooks,\n      ...examples,\n    ]\n      .filter((item) => {\n        return !DEPRECATED_ITEMS.includes(item.name)\n      })\n      .map((item) => {\n        // Temporary fix for dashboard-01.\n        if (item.name === \"dashboard-01\") {\n          item.dependencies?.push(\"@tabler/icons-react\")\n        }\n\n        if (item.name === \"accordion\" && \"tailwind\" in item) {\n          delete item.tailwind\n        }\n\n        return item\n      })\n  ),\n} satisfies Registry\n"
  },
  {
    "path": "apps/www/registry/registry-blocks.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const blocks: Registry[\"items\"] = [\n  {\n    name: \"software-purchase-01\",\n    description: \"Software purchase approval card\",\n    type: \"registry:block\",\n    registryDependencies: [\"software-purchase-card\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/software-purchase-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/software-purchase/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\",\n    },\n    categories: [\"forms\"],\n  },\n  {\n    name: \"billing-information-01\",\n    description: \"Manage billing contacts and company information\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/billing-information-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/billing-information/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\",\n    },\n    categories: [\"billing\"],\n  },\n  {\n    name: \"card-display-01\",\n    description: \"Credit card display with dark and light themes\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/card-display-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/card-display/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"400px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\",\n    },\n    categories: [\"billing\"],\n  },\n  {\n    name: \"payment-method-01\",\n    description: \"Payment method management with edit and delete\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"tooltip\"],\n    files: [\n      {\n        path: \"blocks/payment-method-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/payment-method/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\",\n    },\n    categories: [\"billing\"],\n  },\n  {\n    name: \"transaction-history-01\",\n    description: \"Financial transaction history with trend indicators\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"calendar\", \"card\", \"popover\"],\n    dependencies: [\"date-fns\"],\n    files: [\n      {\n        path: \"blocks/transaction-history-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/transaction-history/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\",\n    },\n    categories: [\"billing\"],\n  },\n  {\n    name: \"invoices-01\",\n    description: \"Invoice overview with status badges and download\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/invoices-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/invoices/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\",\n    },\n    categories: [\"billing\"],\n  },\n  {\n    name: \"simple-blog-content-01\",\n    description: \"Simple blog content cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\", \"card\"],\n    files: [\n      {\n        path: \"blocks/simple-blog-content-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/simple-blog-content/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"blog-cards-layout-01\",\n    description: \"Blog cards with view more button\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/blog-cards-layout-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/blog-cards-layout/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"blog-post-preview-tags-01\",\n    description: \"Blog posts with tags\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\"],\n    files: [\n      {\n        path: \"blocks/blog-post-preview-tags-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/blog-post-preview-tags/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"highlighted-blog-posts-01\",\n    description: \"Highlighted blog posts with icons\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/highlighted-blog-posts-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/highlighted-blog-posts/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"blog-rectangular-images-01\",\n    description: \"Blog posts with rectangular images\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/blog-rectangular-images-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/blog-rectangular-images/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"large-blog-preview-01\",\n    description: \"Large blog post preview\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\"],\n    files: [\n      {\n        path: \"blocks/large-blog-preview-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/large-blog-preview/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"blog\"],\n  },\n  {\n    name: \"simple-product-details-01\",\n    description: \"Simple product details grid\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"accordion\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/simple-product-details-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/simple-product-details/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"grid-ecommerce-01\",\n    description: \"Product grid with filters\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"select\"],\n    files: [\n      {\n        path: \"blocks/grid-ecommerce-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/grid-ecommerce/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"promotional-cards-01\",\n    description: \"Promotional product cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/promotional-cards-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/promotional-cards/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"order-history-01\",\n    description: \"Order history table\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/order-history-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/order-history/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"empty-shopping-cart-01\",\n    description: \"Empty shopping cart state\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/empty-shopping-cart-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/empty-shopping-cart/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"digital-product-overview-01\",\n    description: \"Digital product with plan options\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"label\", \"radio-group\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/digital-product-overview-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/digital-product-overview/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"product-description-01\",\n    description: \"Product description with gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/product-description-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/product-description/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"dark-product-overview-01\",\n    description: \"Dark themed product overview\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"tabs\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/dark-product-overview-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/dark-product-overview/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"shopping-cart-01\",\n    description: \"Shopping cart with summary\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"select\",\n      \"badge\",\n      \"separator\",\n    ],\n    files: [\n      {\n        path: \"blocks/shopping-cart-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/shopping-cart/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"checkout-01\",\n    description: \"Checkout form with order summary\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"checkbox\",\n      \"input\",\n      \"label\",\n      \"badge\",\n      \"separator\",\n    ],\n    files: [\n      {\n        path: \"blocks/checkout-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/checkout/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"complex-product-description-01\",\n    description: \"Product description with accordion\",\n    type: \"registry:block\",\n    registryDependencies: [\"accordion\", \"button\"],\n    files: [\n      {\n        path: \"blocks/complex-product-description-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/complex-product-description/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"interactive-product-preview-01\",\n    description: \"Interactive room product preview\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/interactive-product-preview-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/interactive-product-preview/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"order-details-01\",\n    description: \"Order details with timeline\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"badge\", \"separator\"],\n    files: [\n      {\n        path: \"blocks/order-details-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/order-details/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"product-details-01\",\n    description: \"Product details with image carousel\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/product-details-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/product-details/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"product-listing-filters-01\",\n    description: \"Product listing with filters and sort\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"badge\", \"select\"],\n    files: [\n      {\n        path: \"blocks/product-listing-filters-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/product-listing-filters/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"ecommerce-sections-01\",\n    description: \"Runway video spotlight with product cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/ecommerce-sections-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/ecommerce-sections/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"ecommerce-sections-02\",\n    description: \"Luxury product detail page with image gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\"],\n    files: [\n      {\n        path: \"blocks/ecommerce-sections-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/ecommerce-sections/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"ecommerce\"],\n  },\n  {\n    name: \"simple-faq-01\",\n    description: \"Simple FAQ with dividers\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [\n      {\n        path: \"blocks/simple-faq-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/simple-faq/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"faqs-list-01\",\n    description: \"FAQ list with accordion\",\n    type: \"registry:block\",\n    registryDependencies: [\"accordion\"],\n    files: [\n      {\n        path: \"blocks/faqs-list-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/faqs-list/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"faq-left-title-01\",\n    description: \"FAQ with left-aligned title and card grid\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/faq-left-title-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/faq-left-title/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"faqs-grid-cta-01\",\n    description: \"FAQ grid with CTA section\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/faqs-grid-cta-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/faqs-grid-cta/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"faqs-cards-icons-01\",\n    description: \"FAQ cards with icons and CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/faqs-cards-icons-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/faqs-cards-icons/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"faqs-grid-01\",\n    description: \"Simple FAQ grid layout\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/faqs-grid-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/faqs-grid/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"faqs\"],\n  },\n  {\n    name: \"contact-sections-01\",\n    description: \"Simple contact form with contact info\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"checkbox\",\n      \"input\",\n      \"label\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/contact-sections-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-02\",\n    description: \"Contact form with image background\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"checkbox\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-03\",\n    description: \"Contact form with dark info panel\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-04\",\n    description: \"Minimalist contact with icon cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-04/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-05\",\n    description: \"Contact form with map and option selection\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-05/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-06\",\n    description: \"Centered contact with circular icon badges\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [\n      {\n        path: \"blocks/contact-sections-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-06/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-07\",\n    description: \"Contact form with office location details\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"checkbox\",\n      \"input\",\n      \"label\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/contact-sections-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-07/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-08\",\n    description: \"Contact form with area of interest selection\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"radio-group\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/contact-sections-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-08/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-09\",\n    description: \"Dark background contact with detailed info\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"checkbox\",\n      \"input\",\n      \"label\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/contact-sections-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-09/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-10\",\n    description: \"Contact form with info cards\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-10/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-11\",\n    description: \"Dark gradient contact form with backdrop blur\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-11/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-12\",\n    description: \"Contact form with background image overlay\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-12/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-13\",\n    description: \"Contact information cards with form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-13/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-14\",\n    description: \"Gradient background contact form with asterisk fields\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"textarea\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-14/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"contact-sections-15\",\n    description: \"Contact options with quick contact form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/contact-sections-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/contact-sections-15/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"contact\"],\n  },\n  {\n    name: \"web3-01\",\n    description: \"NFT collection preview with pixel art\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/web3-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/web3-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"web3\"],\n  },\n  {\n    name: \"web3-02\",\n    description: \"NFT creator profile with collection gallery\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/web3-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/web3-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"web3\"],\n  },\n  {\n    name: \"web3-03\",\n    description: \"Top crypto auctions with countdown timer\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\", \"button\", \"card\", \"select\"],\n    files: [\n      {\n        path: \"blocks/web3-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/web3-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"web3\"],\n  },\n  {\n    name: \"web3-04\",\n    description: \"Trending NFT collections with gradient overlay\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"badge\", \"button\", \"card\", \"select\"],\n    files: [\n      {\n        path: \"blocks/web3-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/web3-04/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"web3\"],\n  },\n  {\n    name: \"web3-05\",\n    description: \"Top NFT creators with time filter\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/web3-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/web3-05/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"web3\"],\n  },\n  {\n    name: \"cruds-01\",\n    description: \"Edit apparel item form with product details\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/cruds-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/cruds-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"cruds\"],\n  },\n  {\n    name: \"cruds-02\",\n    description: \"Update retail staff profile form\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/cruds-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/cruds-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"cruds\"],\n  },\n  {\n    name: \"cruds-03\",\n    description: \"Stylist account settings with profile photo upload\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"select\"],\n    files: [\n      {\n        path: \"blocks/cruds-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/cruds-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1200px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"cruds\"],\n  },\n  {\n    name: \"footers-01\",\n    description: \"Simple footer with social links\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"300px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-02\",\n    description: \"Footer with navigation links and subscription\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"checkbox\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/footers-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-03\",\n    description: \"Website footer with CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"300px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-04\",\n    description: \"Simple dark footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\"],\n    files: [\n      {\n        path: \"blocks/footers-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-04/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-05\",\n    description: \"Complex dark footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"input\", \"label\", \"select\"],\n    files: [\n      {\n        path: \"blocks/footers-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-05/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-06\",\n    description: \"Advanced light footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-06/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-07\",\n    description: \"Simple footer with country selection\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"select\"],\n    files: [\n      {\n        path: \"blocks/footers-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-07/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"300px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-08\",\n    description: \"Simple footer with version number\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"button\"],\n    files: [\n      {\n        path: \"blocks/footers-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-08/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"300px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-09\",\n    description: \"Footer with notification and CTA\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-09/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"350px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-10\",\n    description: \"Footer with page links\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [\n      {\n        path: \"blocks/footers-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-10/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"350px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-11\",\n    description: \"Website footer with statement\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [\n      {\n        path: \"blocks/footers-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-11/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"450px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-12\",\n    description: \"Website footer with navigation\",\n    type: \"registry:block\",\n    registryDependencies: [],\n    files: [\n      {\n        path: \"blocks/footers-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-12/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"300px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-13\",\n    description: \"Simple centered website footer\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-13/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"450px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-14\",\n    description: \"Website footer for apps\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-14/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"footers-15\",\n    description: \"Website footer with quote\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"blocks/footers-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/footers-15/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"400px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"footers\"],\n  },\n  {\n    name: \"testimonials-01\",\n    description: \"Simple centered testimonials with avatars\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\", \"badge\"],\n    files: [\n      {\n        path: \"blocks/testimonials-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-02\",\n    description: \"Testimonial cards with social proof badges\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-03\",\n    description: \"Testimonial with statistics and metrics\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n      private: true,\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-04\",\n    description: \"Three column testimonials with star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-04/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n      private: true,\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-05\",\n    description: \"Dark testimonials with avatar and star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-05/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-06\",\n    description: \"Company logo testimonial with large quote\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-06/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-07\",\n    description: \"Interactive testimonials with profile switcher\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\"],\n    files: [\n      {\n        path: \"blocks/testimonials-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-07/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-08\",\n    description: \"Light testimonials with star ratings\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-08/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-09\",\n    description: \"Customer story with large heading and avatar\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-09/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-10\",\n    description: \"Monochromatic testimonials with company logos\",\n    type: \"registry:block\",\n    registryDependencies: [\"badge\", \"card\", \"button\"],\n    files: [\n      {\n        path: \"blocks/testimonials-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-10/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-11\",\n    description: \"Testimonial cards with focus state\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-11/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-12\",\n    description: \"Grid layout testimonials with company logos\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-12/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-12/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-13\",\n    description: \"Dark card testimonial with rounded avatar\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-13/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-13/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-14\",\n    description: \"Light testimonials with card shadow\",\n    type: \"registry:block\",\n    registryDependencies: [\"avatar\", \"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-14/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-14/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-15\",\n    description: \"Testimonials with submit button\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"blocks/testimonials-15/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-15/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-16\",\n    description: \"Dark carousel testimonials with navigation\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"button\"],\n    files: [\n      {\n        path: \"blocks/testimonials-16/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-16/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"testimonials-17\",\n    description: \"Background image carousel testimonials\",\n    type: \"registry:block\",\n    registryDependencies: [\"card\", \"button\"],\n    files: [\n      {\n        path: \"blocks/testimonials-17/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/testimonials-17/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"testimonials\"],\n  },\n  {\n    name: \"modals-01\",\n    description: \"Alert modal with confirmation input for reset settings\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/modals-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-01/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-02\",\n    description: \"Edit profile modal with form inputs and preferences\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"dialog\",\n      \"button\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"checkbox\",\n      \"radio-group\",\n    ],\n    files: [\n      {\n        path: \"blocks/modals-02/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-02/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-03\",\n    description: \"Invite members modal with team management\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"dialog\",\n      \"button\",\n      \"input\",\n      \"avatar\",\n      \"dropdown-menu\",\n    ],\n    files: [\n      {\n        path: \"blocks/modals-03/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-03/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-04\",\n    description: \"Update product modal with image gallery and form\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"dialog\",\n      \"button\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/modals-04/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-04/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-05\",\n    description: \"Upload files modal with drag and drop\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/modals-05/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-05/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-06\",\n    description: \"Publish capsule collection modal with metadata display\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/modals-06/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-06/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"650px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-07\",\n    description: \"Change collection visibility settings modal\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\"],\n    files: [\n      {\n        path: \"blocks/modals-07/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-07/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"500px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-08\",\n    description:\n      \"Disable collection lock rules modal with alert and impact list\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/modals-08/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-08/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"750px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-09\",\n    description:\n      \"Transfer showroom ownership modal with form fields and warning\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"dialog\",\n      \"button\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"card\",\n    ],\n    files: [\n      {\n        path: \"blocks/modals-09/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-09/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"750px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-10\",\n    description: \"Permanently remove archive modal with effects list\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/modals-10/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-10/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"750px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"modals-11\",\n    description: \"Confirm vault deletion modal with text input verification\",\n    type: \"registry:block\",\n    registryDependencies: [\"dialog\", \"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/modals-11/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/modals-11/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"550px\",\n      container: \"w-full bg-surface\",\n      mobile: \"component\",\n    },\n    categories: [\"modals\"],\n  },\n  {\n    name: \"account-basic-info-01\",\n    description: \"Personal information management form\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"calendar\",\n      \"popover\",\n    ],\n    dependencies: [\"date-fns\"],\n    files: [\n      {\n        path: \"blocks/account-basic-info-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-basic-info/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-2fa-01\",\n    description: \"Two-factor authentication setup\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\", \"switch\"],\n    files: [\n      {\n        path: \"blocks/account-2fa-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-2fa/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-change-password-01\",\n    description: \"Change password form with validation\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"blocks/account-change-password-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-change-password/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"700px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-notifications-01\",\n    description: \"Notification preferences management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"switch\"],\n    files: [\n      {\n        path: \"blocks/account-notifications-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-notifications/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-sessions-01\",\n    description: \"Active sessions and devices management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/account-sessions-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-sessions/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-avatar-upload-01\",\n    description: \"Profile avatar upload and management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\"],\n    files: [\n      {\n        path: \"blocks/account-avatar-upload-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-avatar-upload/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"600px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"account-integrations-01\",\n    description: \"Third-party integrations management\",\n    type: \"registry:block\",\n    registryDependencies: [\"button\", \"card\", \"switch\"],\n    files: [\n      {\n        path: \"blocks/account-integrations-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/account-integrations/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"900px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n    },\n    categories: [\"account\"],\n  },\n  {\n    name: \"ai-chat-streaming-01\",\n    description: \"AI chat with streaming responses and thinking process\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"scroll-area\",\n      \"avatar\",\n    ],\n    files: [\n      {\n        path: \"blocks/ai-chat-streaming-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/ai-chat-streaming/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"800px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\",\n    },\n    categories: [\"ai-agents\"],\n  },\n  {\n    name: \"ai-image-generator-01\",\n    description: \"AI image generator with upload and editor capabilities\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"slider\",\n      \"tabs\",\n      \"textarea\",\n    ],\n    files: [\n      {\n        path: \"blocks/ai-image-generator-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/ai-image-generator/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1000px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\",\n    },\n    categories: [\"ai-agents\"],\n  },\n  {\n    name: \"ai-video-generator-01\",\n    description: \"AI video generation agent with preview\",\n    type: \"registry:block\",\n    registryDependencies: [\n      \"button\",\n      \"card\",\n      \"input\",\n      \"label\",\n      \"select\",\n      \"textarea\",\n      \"progress\",\n      \"badge\",\n    ],\n    files: [\n      {\n        path: \"blocks/ai-video-generator-01/page.tsx\",\n        type: \"registry:page\",\n        target: \"app/ai-video-generator/page.tsx\",\n      },\n    ],\n    meta: {\n      iframeHeight: \"1100px\",\n      container:\n        \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n      mobile: \"component\",\n      details:\n        \"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\",\n    },\n    categories: [\"ai-agents\"],\n  },\n]\n"
  },
  {
    "path": "apps/www/registry/registry-categories.ts",
    "content": "export const registryCategories = [\n  {\n    name: \"Account\",\n    slug: \"account\",\n    hidden: false,\n  },\n  {\n    name: \"AI Agents\",\n    slug: \"ai-agents\",\n    hidden: false,\n  },\n  {\n    name: \"Billing\",\n    slug: \"billing\",\n    hidden: false,\n  },\n  {\n    name: \"Blog\",\n    slug: \"blog\",\n    hidden: false,\n  },\n  {\n    name: \"Contact\",\n    slug: \"contact\",\n    hidden: false,\n  },\n  {\n    name: \"CRUDs\",\n    slug: \"cruds\",\n    hidden: false,\n  },\n  {\n    name: \"Ecommerce\",\n    slug: \"ecommerce\",\n    hidden: false,\n  },\n  {\n    name: \"FAQs\",\n    slug: \"faqs\",\n    hidden: false,\n  },\n  {\n    name: \"Footers\",\n    slug: \"footers\",\n    hidden: false,\n  },\n  {\n    name: \"Modals\",\n    slug: \"modals\",\n    hidden: false,\n  },\n  {\n    name: \"Testimonials\",\n    slug: \"testimonials\",\n    hidden: false,\n  },\n  {\n    name: \"Web3\",\n    slug: \"web3\",\n    hidden: false,\n  },\n]\n"
  },
  {
    "path": "apps/www/registry/registry-examples.ts",
    "content": "import { type Registry } from \"shadcn/schema\"\n\nexport const examples: Registry[\"items\"] = [\n  {\n    name: \"software-purchase-card-demo\",\n    type: \"registry:example\",\n    registryDependencies: [\"software-purchase-card\"],\n    files: [\n      {\n        path: \"examples/software-purchase-card-demo.tsx\",\n        type: \"registry:example\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/www/registry/registry-hooks.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/www/registry/registry-lib.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/www/registry/registry-ui.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/react-accordion\"],\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/react-alert-dialog\"],\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/react-aspect-ratio\"],\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/react-avatar\"],\n    files: [\n      {\n        path: \"ui/avatar.tsx\",\n        type: \"registry:ui\",\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  },\n  {\n    name: \"breadcrumb\",\n    type: \"registry: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/react-slot\"],\n    files: [\n      {\n        path: \"ui/button.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"calendar\",\n    type: \"registry:ui\",\n    dependencies: [\"react-day-picker\", \"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    dependencies: [\"embla-carousel-react\"],\n    registryDependencies: [\"button\"],\n    files: [\n      {\n        path: \"ui/carousel.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"chart\",\n    type: \"registry:ui\",\n    dependencies: [\"recharts\", \"lucide-react\"],\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"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: \"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: \"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: \"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: \"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: \"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/react-dropdown-menu\"],\n    files: [\n      {\n        path: \"ui/dropdown-menu.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"form\",\n    type: \"registry:ui\",\n    dependencies: [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\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/react-hover-card\"],\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-otp\",\n    type: \"registry:ui\",\n    dependencies: [\"input-otp\"],\n    registryDependencies: [\"input\"],\n    files: [\n      {\n        path: \"ui/input-otp.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: \"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: \"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: \"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/react-popover\"],\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/react-progress\"],\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/react-radio-group\"],\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\"],\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/react-scroll-area\"],\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/react-select\"],\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/react-separator\"],\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/react-dialog\"],\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/react-slot\"],\n    registryDependencies: [\n      \"button\",\n      \"separator\",\n      \"sheet\",\n      \"skeleton\",\n      \"tooltip\",\n    ],\n    files: [\n      {\n        path: \"ui/sidebar.tsx\",\n        type: \"registry:ui\",\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/react-slider\"],\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\"],\n    files: [\n      {\n        path: \"ui/sonner.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: \"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/react-tabs\"],\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: \"toggle\",\n    type: \"registry:ui\",\n    dependencies: [\"@radix-ui/react-toggle\"],\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/react-toggle-group\"],\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/react-tooltip\"],\n    files: [\n      {\n        path: \"ui/tooltip.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"software-purchase-card\",\n    type: \"registry:ui\",\n    registryDependencies: [\"button\", \"card\", \"badge\"],\n    dependencies: [\"lucide-react\"],\n    files: [\n      {\n        path: \"ui/software-purchase-card.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card-demo\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\", \"button\", \"badge\"],\n    dependencies: [\"lucide-react\"],\n    files: [\n      {\n        path: \"examples/card-demo.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card-plain\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\"],\n    files: [\n      {\n        path: \"examples/card-plain.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card-with-button\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\", \"button\"],\n    files: [\n      {\n        path: \"examples/card-with-button.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card-blog\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\", \"button\"],\n    dependencies: [\"lucide-react\"],\n    files: [\n      {\n        path: \"examples/card-blog.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"card-ecommerce\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\", \"button\", \"badge\"],\n    dependencies: [\"lucide-react\"],\n    files: [\n      {\n        path: \"examples/card-ecommerce.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n  {\n    name: \"form-card-demo\",\n    type: \"registry:ui\",\n    registryDependencies: [\"card\", \"button\", \"input\", \"label\"],\n    files: [\n      {\n        path: \"examples/form-card-demo.tsx\",\n        type: \"registry:ui\",\n      },\n    ],\n  },\n]\n"
  },
  {
    "path": "apps/www/registry.json",
    "content": "{\n  \"name\": \"creative-tim/ui\",\n  \"homepage\": \"https://creative-tim.com/ui\",\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/creative-tim/ui/accordion.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alert\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/ui/avatar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/badge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"breadcrumb\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/ui/button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"react-day-picker\", \"date-fns\"],\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/calendar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/ui/carousel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"recharts\", \"lucide-react\"],\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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\": \"registry/creative-tim/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/creative-tim/ui/dropdown-menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"react-hook-form\", \"@hookform/resolvers\", \"zod\"],\n      \"registryDependencies\": [\"button\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/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/creative-tim/ui/input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"input-otp\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"input-otp\"],\n      \"registryDependencies\": [\"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/input-otp.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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/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/creative-tim/ui/sheet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sidebar\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"@radix-ui/react-slot\"],\n      \"registryDependencies\": [\n        \"button\",\n        \"separator\",\n        \"sheet\",\n        \"skeleton\",\n        \"tooltip\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sidebar.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"skeleton\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/ui/slider.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sonner\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"sonner\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/sonner.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/creative-tim/ui/switch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"table\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/ui/tabs.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"textarea\",\n      \"type\": \"registry:ui\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/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      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/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/creative-tim/ui/tooltip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"lucide-react\"],\n      \"registryDependencies\": [\"button\", \"card\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/ui/software-purchase-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-demo\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"lucide-react\"],\n      \"registryDependencies\": [\"card\", \"button\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-plain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-plain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-with-button\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"card\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-with-button.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-blog\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"lucide-react\"],\n      \"registryDependencies\": [\"card\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-blog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"card-ecommerce\",\n      \"type\": \"registry:ui\",\n      \"dependencies\": [\"lucide-react\"],\n      \"registryDependencies\": [\"card\", \"button\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/card-ecommerce.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"form-card-demo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [\"card\", \"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/form-card-demo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Software purchase approval card\",\n      \"registryDependencies\": [\"software-purchase-card\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/software-purchase-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/software-purchase/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"A comprehensive software purchase approval interface featuring company information, pricing tiers, and detailed cost breakdown with tax calculations.\"\n      },\n      \"categories\": [\"forms\"]\n    },\n    {\n      \"name\": \"billing-information-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Manage billing contacts and company information\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/billing-information-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/billing-information/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Easily manage billing contacts and information associated with different companies within one platform. Built with shadcn/ui Card and Button components for a clean, accessible interface. Perfect for multi-company billing management, enterprise dashboards, and SaaS platforms requiring organized billing contact management.\"\n      },\n      \"categories\": [\"billing\"]\n    },\n    {\n      \"name\": \"card-display-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Credit card display with dark and light themes\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/card-display-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/card-display/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Showcases dark and light versions of a card with bank brand logos. Built with shadcn/ui Card component for consistent styling across themes. Ideal for payment forms, checkout processes, wallet sections, financial dashboards, and any interface requiring elegant credit card visualization with theme support.\"\n      },\n      \"categories\": [\"billing\"]\n    },\n    {\n      \"name\": \"payment-method-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Payment method management with edit and delete\",\n      \"registryDependencies\": [\"button\", \"card\", \"tooltip\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/payment-method-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/payment-method/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Manage payment methods with a straightforward UI layout featuring shadcn/ui Card, Button, and Tooltip components. Card brands are clearly identified, sensitive information is partially hidden for security, and editing/deleting functions are easily accessible. Includes a call-to-action button for adding new payment methods. Perfect for account settings, billing pages, and checkout flows.\"\n      },\n      \"categories\": [\"billing\"]\n    },\n    {\n      \"name\": \"transaction-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Financial transaction history with trend indicators\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\"button\", \"calendar\", \"card\", \"popover\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/transaction-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/transaction-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides a detailed record of financial transactions with various service providers, featuring trend arrows indicating whether values are up or down. Built with shadcn/ui Button, Calendar, Card, and Popover components for an interactive filtering experience. Includes date range selection for easy transaction filtering. Ideal for billing dashboards, financial reports, and transaction monitoring interfaces.\"\n      },\n      \"categories\": [\"billing\"]\n    },\n    {\n      \"name\": \"invoices-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invoice overview with status badges and download\",\n      \"registryDependencies\": [\"badge\", \"button\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/invoices-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/invoices/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Provides an overview of invoices with shadcn/ui Badge components indicating payment status (paid, pending, overdue) and Button components for downloading invoice PDFs. Clean, organized layout with visual separators for easy scanning. Perfect for billing portals, accounting dashboards, and financial management systems requiring clear invoice tracking and download capabilities.\"\n      },\n      \"categories\": [\"billing\"]\n    },\n    {\n      \"name\": \"simple-blog-content-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple blog content cards\",\n      \"registryDependencies\": [\"avatar\", \"badge\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-blog-content-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-blog-content/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"blog-cards-layout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog cards with view more button\",\n      \"registryDependencies\": [\"avatar\", \"badge\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-cards-layout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-cards-layout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"blog-post-preview-tags-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with tags\",\n      \"registryDependencies\": [\"badge\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-post-preview-tags-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-post-preview-tags/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"highlighted-blog-posts-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Highlighted blog posts with icons\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/highlighted-blog-posts-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/highlighted-blog-posts/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"blog-rectangular-images-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Blog posts with rectangular images\",\n      \"registryDependencies\": [\"avatar\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/blog-rectangular-images-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/blog-rectangular-images/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"large-blog-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Large blog post preview\",\n      \"registryDependencies\": [\"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/large-blog-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/large-blog-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"blog\"]\n    },\n    {\n      \"name\": \"simple-product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple product details grid\",\n      \"registryDependencies\": [\"button\", \"card\", \"accordion\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"grid-ecommerce-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product grid with filters\",\n      \"registryDependencies\": [\"button\", \"card\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/grid-ecommerce-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/grid-ecommerce/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"promotional-cards-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Promotional product cards\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/promotional-cards-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/promotional-cards/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"order-history-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order history table\",\n      \"registryDependencies\": [\"badge\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-history-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-history/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"empty-shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Empty shopping cart state\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/empty-shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/empty-shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"digital-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Digital product with plan options\",\n      \"registryDependencies\": [\"button\", \"label\", \"radio-group\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/digital-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/digital-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with gallery\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"dark-product-overview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark themed product overview\",\n      \"registryDependencies\": [\"button\", \"tabs\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/dark-product-overview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/dark-product-overview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"shopping-cart-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Shopping cart with summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"select\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/shopping-cart-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/shopping-cart/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"checkout-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Checkout form with order summary\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"badge\",\n        \"separator\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/checkout-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/checkout/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"complex-product-description-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product description with accordion\",\n      \"registryDependencies\": [\"accordion\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/complex-product-description-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/complex-product-description/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"interactive-product-preview-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive room product preview\",\n      \"registryDependencies\": [\"button\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/interactive-product-preview-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/interactive-product-preview/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"order-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Order details with timeline\",\n      \"registryDependencies\": [\"button\", \"card\", \"badge\", \"separator\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/order-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/order-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"product-details-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product details with image carousel\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-details-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-details/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"product-listing-filters-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Product listing with filters and sort\",\n      \"registryDependencies\": [\"button\", \"badge\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/product-listing-filters-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/product-listing-filters/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"ecommerce-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Runway video spotlight with product cards\",\n      \"registryDependencies\": [\"badge\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"ecommerce-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Luxury product detail page with image gallery\",\n      \"registryDependencies\": [\"badge\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ecommerce-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ecommerce-sections/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"ecommerce\"]\n    },\n    {\n      \"name\": \"simple-faq-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ with dividers\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/simple-faq-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/simple-faq/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"faqs-list-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ list with accordion\",\n      \"registryDependencies\": [\"accordion\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-list-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-list/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"faq-left-title-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ with left-aligned title and card grid\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faq-left-title-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faq-left-title/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"faqs-grid-cta-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ grid with CTA section\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-cta-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid-cta/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"faqs-cards-icons-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"FAQ cards with icons and CTA\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-cards-icons-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-cards-icons/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"faqs-grid-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple FAQ grid layout\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/faqs-grid-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/faqs-grid/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"faqs\"]\n    },\n    {\n      \"name\": \"contact-sections-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple contact form with contact info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with image background\",\n      \"registryDependencies\": [\n        \"button\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with dark info panel\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Minimalist contact with icon cards\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with map and option selection\",\n      \"registryDependencies\": [\"badge\", \"button\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Centered contact with circular icon badges\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with office location details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with area of interest selection\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"radio-group\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark background contact with detailed info\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"checkbox\",\n        \"input\",\n        \"label\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with info cards\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark gradient contact form with backdrop blur\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact form with background image overlay\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact information cards with form\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Gradient background contact form with asterisk fields\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"textarea\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"contact-sections-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Contact options with quick contact form\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/contact-sections-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/contact-sections-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"contact\"]\n    },\n    {\n      \"name\": \"web3-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT collection preview with pixel art\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"web3\"]\n    },\n    {\n      \"name\": \"web3-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"NFT creator profile with collection gallery\",\n      \"registryDependencies\": [\"avatar\", \"badge\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"web3\"]\n    },\n    {\n      \"name\": \"web3-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top crypto auctions with countdown timer\",\n      \"registryDependencies\": [\"avatar\", \"badge\", \"button\", \"card\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"web3\"]\n    },\n    {\n      \"name\": \"web3-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Trending NFT collections with gradient overlay\",\n      \"registryDependencies\": [\"avatar\", \"badge\", \"button\", \"card\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"web3\"]\n    },\n    {\n      \"name\": \"web3-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Top NFT creators with time filter\",\n      \"registryDependencies\": [\"avatar\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/web3-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/web3-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"web3\"]\n    },\n    {\n      \"name\": \"cruds-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit apparel item form with product details\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"cruds\"]\n    },\n    {\n      \"name\": \"cruds-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update retail staff profile form\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"cruds\"]\n    },\n    {\n      \"name\": \"cruds-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Stylist account settings with profile photo upload\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/cruds-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/cruds-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1200px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"cruds\"]\n    },\n    {\n      \"name\": \"footers-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with social links\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with navigation links and subscription\",\n      \"registryDependencies\": [\"button\", \"checkbox\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with CTA\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple dark footer\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Complex dark footer\",\n      \"registryDependencies\": [\"button\", \"input\", \"label\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Advanced light footer\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with country selection\",\n      \"registryDependencies\": [\"button\", \"select\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple footer with version number\",\n      \"registryDependencies\": [\"badge\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with notification and CTA\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Footer with page links\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"350px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with statement\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with navigation\",\n      \"registryDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"300px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered website footer\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"450px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer for apps\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"footers-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Website footer with quote\",\n      \"registryDependencies\": [\"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/footers-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/footers-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"400px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"footers\"]\n    },\n    {\n      \"name\": \"testimonials-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Simple centered testimonials with avatars\",\n      \"registryDependencies\": [\"avatar\", \"card\", \"badge\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with social proof badges\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial with statistics and metrics\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Three column testimonials with star ratings\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\",\n        \"private\": true\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark testimonials with avatar and star ratings\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Company logo testimonial with large quote\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Interactive testimonials with profile switcher\",\n      \"registryDependencies\": [\"avatar\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with star ratings\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Customer story with large heading and avatar\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Monochromatic testimonials with company logos\",\n      \"registryDependencies\": [\"badge\", \"card\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonial cards with focus state\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-12\",\n      \"type\": \"registry:block\",\n      \"description\": \"Grid layout testimonials with company logos\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-12/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-12/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-13\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark card testimonial with rounded avatar\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-13/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-13/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-14\",\n      \"type\": \"registry:block\",\n      \"description\": \"Light testimonials with card shadow\",\n      \"registryDependencies\": [\"avatar\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-14/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-14/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-15\",\n      \"type\": \"registry:block\",\n      \"description\": \"Testimonials with submit button\",\n      \"registryDependencies\": [\"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-15/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-15/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-16\",\n      \"type\": \"registry:block\",\n      \"description\": \"Dark carousel testimonials with navigation\",\n      \"registryDependencies\": [\"card\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-16/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-16/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"testimonials-17\",\n      \"type\": \"registry:block\",\n      \"description\": \"Background image carousel testimonials\",\n      \"registryDependencies\": [\"card\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/testimonials-17/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/testimonials-17/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"testimonials\"]\n    },\n    {\n      \"name\": \"modals-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Alert modal with confirmation input for reset settings\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-01/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-02\",\n      \"type\": \"registry:block\",\n      \"description\": \"Edit profile modal with form inputs and preferences\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"checkbox\",\n        \"radio-group\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-02/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-02/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-03\",\n      \"type\": \"registry:block\",\n      \"description\": \"Invite members modal with team management\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"avatar\",\n        \"dropdown-menu\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-03/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-03/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-04\",\n      \"type\": \"registry:block\",\n      \"description\": \"Update product modal with image gallery and form\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-04/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-04/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-05\",\n      \"type\": \"registry:block\",\n      \"description\": \"Upload files modal with drag and drop\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-05/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-05/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-06\",\n      \"type\": \"registry:block\",\n      \"description\": \"Publish capsule collection modal with metadata display\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-06/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-06/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"650px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-07\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change collection visibility settings modal\",\n      \"registryDependencies\": [\"dialog\", \"button\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-07/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-07/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"500px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-08\",\n      \"type\": \"registry:block\",\n      \"description\": \"Disable collection lock rules modal with alert and impact list\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-08/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-08/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-09\",\n      \"type\": \"registry:block\",\n      \"description\": \"Transfer showroom ownership modal with form fields and warning\",\n      \"registryDependencies\": [\n        \"dialog\",\n        \"button\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"card\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-09/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-09/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-10\",\n      \"type\": \"registry:block\",\n      \"description\": \"Permanently remove archive modal with effects list\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-10/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-10/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"750px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"modals-11\",\n      \"type\": \"registry:block\",\n      \"description\": \"Confirm vault deletion modal with text input verification\",\n      \"registryDependencies\": [\"dialog\", \"button\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/modals-11/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/modals-11/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"550px\",\n        \"container\": \"w-full bg-surface\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"modals\"]\n    },\n    {\n      \"name\": \"account-basic-info-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Personal information management form\",\n      \"dependencies\": [\"date-fns\"],\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"calendar\",\n        \"popover\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-basic-info-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-basic-info/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-2fa-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Two-factor authentication setup\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\", \"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-2fa-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-2fa/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Secure your account with two-factor authentication. Enable authenticator apps, configure backup codes, and manage security verification methods for enhanced account protection.\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-change-password-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Change password form with validation\",\n      \"registryDependencies\": [\"button\", \"card\", \"input\", \"label\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-change-password-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-change-password/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"700px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-notifications-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Notification preferences management\",\n      \"registryDependencies\": [\"button\", \"card\", \"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-notifications-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-notifications/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-sessions-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Active sessions and devices management\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-sessions-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-sessions/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-avatar-upload-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Profile avatar upload and management\",\n      \"registryDependencies\": [\"button\", \"card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-avatar-upload-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-avatar-upload/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"600px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"account-integrations-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"Third-party integrations management\",\n      \"registryDependencies\": [\"button\", \"card\", \"switch\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/account-integrations-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/account-integrations/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"900px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\"\n      },\n      \"categories\": [\"account\"]\n    },\n    {\n      \"name\": \"ai-chat-streaming-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI chat with streaming responses and thinking process\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"scroll-area\",\n        \"avatar\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-chat-streaming-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-chat-streaming/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"800px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Interactive AI chat interface with real-time streaming responses and optional thinking process visualization. Features API provider selection from top 5 AI services, configurable API keys, and smooth message animations. Perfect for AI-powered chat applications, customer support bots, and conversational interfaces.\"\n      },\n      \"categories\": [\"ai-agents\"]\n    },\n    {\n      \"name\": \"ai-image-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI image generator with upload and editor capabilities\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"slider\",\n        \"tabs\",\n        \"textarea\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-image-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-image-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1000px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Comprehensive AI image generation tool with built-in editor. Generate images from text prompts using top AI providers, upload existing images, and edit with real-time adjustments for brightness, contrast, and saturation. Includes image size selection, download functionality, and intuitive tabbed interface. Ideal for creative applications, content generation, and image manipulation tools.\"\n      },\n      \"categories\": [\"ai-agents\"]\n    },\n    {\n      \"name\": \"ai-video-generator-01\",\n      \"type\": \"registry:block\",\n      \"description\": \"AI video generation agent with preview\",\n      \"registryDependencies\": [\n        \"button\",\n        \"card\",\n        \"input\",\n        \"label\",\n        \"select\",\n        \"textarea\",\n        \"progress\",\n        \"badge\"\n      ],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/blocks/ai-video-generator-01/page.tsx\",\n          \"type\": \"registry:page\",\n          \"target\": \"app/ai-video-generator/page.tsx\"\n        }\n      ],\n      \"meta\": {\n        \"iframeHeight\": \"1100px\",\n        \"container\": \"w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0\",\n        \"mobile\": \"component\",\n        \"details\": \"Advanced AI video generation interface with progress tracking and gallery view. Generate videos from text descriptions using leading AI providers like Runway, Pika, and OpenAI Sora. Features customizable duration, style selection, real-time progress indicators, video preview with playback controls, and generation history. Perfect for video content creation, marketing materials, and AI-powered media platforms.\"\n      },\n      \"categories\": [\"ai-agents\"]\n    },\n    {\n      \"name\": \"use-mobile\",\n      \"type\": \"registry:hook\",\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/hooks/use-mobile.ts\",\n          \"type\": \"registry:hook\"\n        }\n      ]\n    },\n    {\n      \"name\": \"software-purchase-card-demo\",\n      \"type\": \"registry:example\",\n      \"registryDependencies\": [\"software-purchase-card\"],\n      \"files\": [\n        {\n          \"path\": \"registry/creative-tim/examples/software-purchase-card-demo.tsx\",\n          \"type\": \"registry:example\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/www/scripts/build-registry.mts",
    "content": "import { exec } from \"child_process\"\nimport { existsSync, promises as fs } from \"fs\"\nimport path from \"path\"\nimport { rimraf } from \"rimraf\"\n\nimport { getAllBlocks } from \"@/lib/blocks\"\nimport { registry } from \"@/registry/index\"\n\nasync function buildRegistryIndex() {\n  let index = `/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// @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, any> = {`\n  for (const item of registry.items) {\n    const resolveFiles = item.files?.map(\n      (file) => `registry/creative-tim/${file.path}`\n    )\n    if (!resolveFiles) {\n      continue\n    }\n\n    const componentPath = item.files?.[0]?.path\n      ? `@/registry/creative-tim/${item.files[0].path}`\n      : \"\"\n\n    index += `\n  \"${item.name}\": {\n    name: \"${item.name}\",\n    description: \"${item.description ?? \"\"}\",\n    type: \"${item.type}\",\n    registryDependencies: ${JSON.stringify(item.registryDependencies)},\n    files: [${item.files?.map((file) => {\n      const filePath = `registry/creative-tim/${typeof file === \"string\" ? file : file.path}`\n      const resolvedFilePath = path.resolve(filePath)\n      return typeof file === \"string\"\n        ? `\"${resolvedFilePath}\"`\n        : `{\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  console.log(`#️⃣  ${Object.keys(registry.items).length} items found`)\n\n  // Write style index.\n  rimraf.sync(path.join(process.cwd(), \"registry/__index__.tsx\"))\n  await fs.writeFile(path.join(process.cwd(), \"registry/__index__.tsx\"), index)\n}\n\nasync function buildRegistryJsonFile() {\n  // 1. Add registry/creative-tim prefix for the build to work\n  const fixedRegistry = {\n    ...registry,\n    items: registry.items.map((item) => {\n      const files = item.files?.map((file) => {\n        return {\n          ...file,\n          path: `registry/creative-tim/${file.path}`,\n        }\n      })\n\n      return {\n        ...item,\n        files,\n      }\n    }),\n  }\n\n  // 2. Write the content of the registry to `registry.json`\n  rimraf.sync(path.join(process.cwd(), `registry.json`))\n  await fs.writeFile(\n    path.join(process.cwd(), `registry.json`),\n    JSON.stringify(fixedRegistry, null, 2)\n  )\n\n  // 3. Format the registry.json file.\n  await exec(`prettier --write registry.json`)\n\n  // 3. Copy the registry.json to the www/public/r/styles/creative-tim directory.\n  await fs.cp(\n    path.join(process.cwd(), \"registry.json\"),\n    path.join(\n      process.cwd(),\n      \"../www/public/r/styles/creative-tim/registry.json\"\n    ),\n    { recursive: true }\n  )\n}\n\nasync function buildRegistry() {\n  return new Promise((resolve, reject) => {\n    exec(\n      `pnpm dlx shadcn build registry.json --output public/r`,\n      async (error, stdout, stderr) => {\n        if (error) {\n          console.error(`Error: ${error.message}`)\n          reject(error)\n          return\n        }\n        if (stderr) {\n          console.error(`stderr: ${stderr}`)\n        }\n        if (stdout) {\n          console.log(stdout)\n        }\n\n        // Post-process the generated JSON files to remove registry/creative-tim prefix\n        console.log(\"📝 Cleaning up paths in generated JSON files...\")\n        await cleanupGeneratedPaths()\n\n        resolve(undefined)\n      }\n    )\n  })\n}\n\nasync function cleanupGeneratedPaths() {\n  const publicDir = path.join(process.cwd(), \"public/r\")\n\n  // Get all JSON files in the public/r directory\n  const files = await fs.readdir(publicDir)\n  const jsonFiles = files.filter(file => file.endsWith('.json'))\n\n  for (const file of jsonFiles) {\n    const filePath = path.join(publicDir, file)\n    const content = await fs.readFile(filePath, 'utf-8')\n    const json = JSON.parse(content)\n\n    // Clean up the paths in the files array\n    if (json.files) {\n      // Build a mapping of source paths to target paths for this block\n      const pathMappings = new Map<string, string>()\n\n      json.files.forEach((file: any) => {\n        if (typeof file === 'object' && file.path && file.target) {\n          // Map the source registry path to the target path\n          const sourcePath = file.path.replace(/^registry\\/creative-tim\\//, '')\n          pathMappings.set(sourcePath, file.target)\n        }\n      })\n\n      json.files = json.files.map((file: any) => {\n        if (typeof file === 'object' && file.path) {\n          // Remove only registry/ prefix, keep creative-tim/ for branding\n          let cleanPath = file.path.replace(/^registry\\//, '')\n\n          // For UI components, prepend with components/\n          if (cleanPath.startsWith('creative-tim/ui/')) {\n            cleanPath = 'components/' + cleanPath.replace(/^creative-tim\\//, '')\n          }\n          // For examples, prepend with components/\n          else if (cleanPath.startsWith('creative-tim/examples/')) {\n            cleanPath = 'components/' + cleanPath.replace(/^creative-tim\\//, '')\n          }\n\n          file.path = cleanPath\n\n          // Clean up imports in the content field using the path mappings\n          if (file.content) {\n            file.content = rewriteImports(file.content, pathMappings)\n          }\n        }\n        return file\n      })\n    }\n\n    // Write the cleaned JSON back\n    await fs.writeFile(filePath, JSON.stringify(json, null, 2))\n  }\n\n  console.log(`✨ Cleaned paths in ${jsonFiles.length} files`)\n}\n\nfunction rewriteImports(content: string, pathMappings: Map<string, string>): string {\n  // Sort mappings by path length (longest first) to handle more specific paths first\n  const sortedMappings = Array.from(pathMappings.entries()).sort(\n    ([a], [b]) => b.length - a.length\n  )\n\n  // Handle block-specific imports using the exact path mappings\n  sortedMappings.forEach(([sourcePath, targetPath]) => {\n    if (sourcePath.startsWith('blocks/')) {\n      // Remove the file extension from sourcePath to match import statements\n      const sourcePathNoExt = sourcePath.replace(/\\.(tsx?|jsx?)$/, '')\n\n      // Extract the directory from the target path (removing filename)\n      const targetPathNoExt = targetPath.replace(/\\.(tsx?|jsx?)$/, '')\n\n      // Create regex to match this specific import path\n      const escapedPath = sourcePathNoExt.replace(/\\//g, '\\\\/')\n      const importRegex = new RegExp(\n        `@\\\\/registry\\\\/creative-tim\\\\/${escapedPath}`,\n        'g'\n      )\n\n      content = content.replace(importRegex, `@/${targetPathNoExt}`)\n    }\n  })\n\n  // Rewrite imports from @/registry/creative-tim/ui/... to @/components/ui/...\n  content = content.replace(\n    /@\\/registry\\/creative-tim\\/ui\\//g,\n    '@/components/ui/'\n  )\n\n  // Rewrite imports from @/registry/creative-tim/examples/... to @/components/examples/...\n  content = content.replace(\n    /@\\/registry\\/creative-tim\\/examples\\//g,\n    '@/components/examples/'\n  )\n\n  // Rewrite imports from @/registry/creative-tim/lib/... to @/lib/...\n  content = content.replace(\n    /@\\/registry\\/creative-tim\\/lib\\//g,\n    '@/lib/'\n  )\n\n  return content\n}\n\nasync function buildPackageJson(\n  packageType: \"ui\" | \"blocks\" | \"agents\",\n  fileName: string,\n  description: string\n) {\n  console.log(`🎨 Building ${fileName} for ${packageType}...`)\n\n  // Filter components by type\n  const typeMap = {\n    ui: \"registry:ui\",\n    blocks: \"registry:block\",\n    agents: \"registry:agent\"\n  }\n  \n  const components = registry.items.filter(item => item.type === typeMap[packageType])\n\n  // Aggregate all dependencies and registryDependencies\n  const allDependencies = new Set<string>()\n  const allRegistryDependencies = new Set<string>()\n  const allFiles: any[] = []\n\n  // Build path mappings for import rewriting\n  const pathMappings = new Map<string, string>()\n\n  for (const component of components) {\n    // Collect dependencies\n    if (component.dependencies) {\n      component.dependencies.forEach(dep => allDependencies.add(dep))\n    }\n\n    // Collect registryDependencies\n    if (component.registryDependencies) {\n      component.registryDependencies.forEach(dep => allRegistryDependencies.add(dep))\n    }\n\n    // Collect files and read their content\n    if (component.files) {\n      for (const file of component.files) {\n        const filePath = `registry/creative-tim/${file.path}`\n        const absolutePath = path.join(process.cwd(), filePath)\n\n        // Read file content\n        let content = \"\"\n        if (existsSync(absolutePath)) {\n          content = await fs.readFile(absolutePath, 'utf-8')\n        }\n\n        // Clean path - remove registry/creative-tim/ prefix for UI components\n        let cleanPath = file.path\n        if (packageType === \"ui\") {\n          if (cleanPath.startsWith('ui/')) {\n            cleanPath = 'components/' + cleanPath\n          } else if (cleanPath.startsWith('examples/')) {\n            cleanPath = 'components/' + cleanPath\n          }\n        }\n\n        // Build path mapping\n        if (file.target) {\n          pathMappings.set(file.path, file.target)\n        }\n\n        allFiles.push({\n          path: cleanPath,\n          type: file.type,\n          target: file.target ?? \"\",\n          content: content\n        })\n      }\n    }\n  }\n\n  // Rewrite imports in all file contents\n  allFiles.forEach(file => {\n    if (file.content) {\n      file.content = rewriteImports(file.content, pathMappings)\n    }\n  })\n\n  // Create the JSON structure\n  const packageJson = {\n    \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n    name: fileName.replace('.json', ''),\n    type: typeMap[packageType],\n    description: description,\n    dependencies: Array.from(allDependencies).sort(),\n    registryDependencies: Array.from(allRegistryDependencies).sort(),\n    files: allFiles\n  }\n\n  // Write the JSON file\n  const outputPath = path.join(process.cwd(), \"public\", \"r\", fileName)\n  await fs.writeFile(outputPath, JSON.stringify(packageJson, null, 2))\n  \n  console.log(`✨ Generated ${fileName} with ${components.length} ${packageType} components`)\n}\n\nasync function buildAllJson() {\n  console.log(\"📦 Building all.json...\")\n\n  // Combine all components\n  const allDependencies = new Set<string>()\n  const allRegistryDependencies = new Set<string>()\n  const allFiles: any[] = []\n  const pathMappings = new Map<string, string>()\n\n  for (const component of registry.items) {\n    if (component.dependencies) {\n      component.dependencies.forEach(dep => allDependencies.add(dep))\n    }\n    if (component.registryDependencies) {\n      component.registryDependencies.forEach(dep => allRegistryDependencies.add(dep))\n    }\n\n    if (component.files) {\n      for (const file of component.files) {\n        const filePath = `registry/creative-tim/${file.path}`\n        const absolutePath = path.join(process.cwd(), filePath)\n\n        let content = \"\"\n        if (existsSync(absolutePath)) {\n          content = await fs.readFile(absolutePath, 'utf-8')\n        }\n\n        let cleanPath = file.path\n        if (component.type === \"registry:ui\") {\n          if (cleanPath.startsWith('ui/')) {\n            cleanPath = 'components/' + cleanPath\n          } else if (cleanPath.startsWith('examples/')) {\n            cleanPath = 'components/' + cleanPath\n          }\n        }\n\n        if (file.target) {\n          pathMappings.set(file.path, file.target)\n        }\n\n        allFiles.push({\n          path: cleanPath,\n          type: file.type,\n          target: file.target ?? \"\",\n          content: content\n        })\n      }\n    }\n  }\n\n  allFiles.forEach(file => {\n    if (file.content) {\n      file.content = rewriteImports(file.content, pathMappings)\n    }\n  })\n\n  const allJson = {\n    \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n    name: \"all\",\n    type: \"registry:all\",\n    description: \"All components from Creative Tim UI (UI components, blocks, and agents)\",\n    dependencies: Array.from(allDependencies).sort(),\n    registryDependencies: Array.from(allRegistryDependencies).sort(),\n    files: allFiles\n  }\n\n  // Write to public/r/all.json\n  const outputPath = path.join(process.cwd(), \"public/r/all.json\")\n  await fs.writeFile(outputPath, JSON.stringify(allJson, null, 2))\n\n  console.log(`✨ Generated all.json with ${registry.items.length} total components`)\n}\n\nasync function buildPackageRegistries() {\n  console.log(\"📦 Building package-specific registries...\")\n  \n  // Build UI components registry\n  await buildPackageJson(\n    \"ui\",\n    \"ui.json\",\n    \"All UI components from @creative-tim/ui\"\n  )\n  \n  // Build blocks registry\n  await buildPackageJson(\n    \"blocks\",\n    \"blocks.json\",\n    \"All blocks from @creative-tim/blocks\"\n  )\n  \n  // Future: Build agents registry\n  // await buildPackageJson(\n  //   \"agents\",\n  //   \"agents.json\",\n  //   \"All agent components from @creative-tim/agents\"\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  rimraf.sync(path.join(process.cwd(), \"registry/__blocks__.json\"))\n  await fs.writeFile(\n    path.join(process.cwd(), \"registry/__blocks__.json\"),\n    JSON.stringify(payload, null, 2)\n  )\n\n  await new Promise((resolve, reject) => {\n    exec(`prettier --write registry/__blocks__.json`, (error) => {\n      if (error) {\n        reject(error)\n        return\n      }\n      resolve(undefined)\n    })\n  })\n}\n\ntry {\n  console.log(\"🗂️ Building registry/__index__.tsx...\")\n  await buildRegistryIndex()\n\n  console.log(\"🗂️ Building registry/__blocks__.json...\")\n  await buildBlocksIndex()\n\n  console.log(\"💅 Building registry.json...\")\n  await buildRegistryJsonFile()\n\n  console.log(\"🏗️ Building registry...\")\n  await buildRegistry()\n\n  console.log(\"📦 Building package registries...\")\n  await buildPackageRegistries()\n  \n  console.log(\"📦 Building all.json...\")\n  await buildAllJson()\n} catch (error) {\n  console.error(error)\n  process.exit(1)\n}\n"
  },
  {
    "path": "apps/www/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(REGISTRY_PATH, `${block}-light.png`)\n    const darkPath = path.join(REGISTRY_PATH, `${block}-dark.png`)\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        `${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/www/scripts/validate-registries.mts",
    "content": "import { promises as fs } from \"fs\"\nimport path from \"path\"\nimport { registrySchema } from \"shadcn/schema\"\nimport { z } from \"zod\"\n\nconst registriesIndexSchema = z.record(\n  z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/),\n  z.string().refine((url) => url.includes(\"{name}\"))\n)\n\nasync function main() {\n  // 1. Validate the registries.json file.\n  const registriesFile = path.join(process.cwd(), \"public/r/registries.json\")\n  const content = await fs.readFile(registriesFile, \"utf-8\")\n  const data = JSON.parse(content)\n  const registries = registriesIndexSchema.parse(data)\n\n  // 2. Validate each registry endpoint.\n  const errors: string[] = []\n  for (const [name, url] of Object.entries(registries)) {\n    try {\n      const testUrl = url.replace(\"{name}\", \"registry\")\n      const response = await fetch(testUrl)\n\n      if (!response.ok) {\n        errors.push(`${name}: HTTP ${response.status}`)\n        continue\n      }\n\n      const json = await response.json()\n      registrySchema.parse(json)\n      console.log(`✅ ${name}`)\n    } catch (error) {\n      if (error instanceof z.ZodError) {\n        errors.push(`${name}: ${error.message}`)\n        continue\n      }\n\n      errors.push(\n        `${name}: ${error instanceof Error ? error.message : String(error)}`\n      )\n    }\n  }\n\n  if (errors.length > 0) {\n    console.error(\"\\n❌ Validation failed:\")\n    errors.forEach((err) => console.error(`   ${err}`))\n    process.exit(1)\n  }\n\n  console.log(\"\\n✅ All registries passed validation.\")\n  process.exit(0)\n}\n\nmain().catch((error) => {\n  console.error(\"❌ Error:\", error instanceof Error ? error.message : error)\n  process.exit(1)\n})\n"
  },
  {
    "path": "apps/www/source.config.ts",
    "content": "import {\n  defineConfig,\n  defineDocs,\n  frontmatterSchema,\n} from \"fumadocs-mdx/config\"\nimport rehypePrettyCode from \"rehype-pretty-code\"\nimport { z } from \"zod\"\n\nimport { transformers } from \"@/lib/highlight-code\"\n\nexport default defineConfig({\n  mdxOptions: {\n    rehypePlugins: (plugins) => {\n      plugins.shift()\n      plugins.push([\n        // TODO: fix the type.\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        rehypePrettyCode as any,\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  docs: {\n    schema: frontmatterSchema.extend({\n      links: z\n        .object({\n          doc: z.string().optional(),\n          api: z.string().optional(),\n        })\n        .optional(),\n    }),\n  },\n})\n"
  },
  {
    "path": "apps/www/styles/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n\n@import \"./themes.css\";\n\n@custom-variant dark (&:is(.dark *));\n\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-mono: var(--font-mono);\n  --font-geist: var(--font-geist);\n  --font-geist-bold: var(--font-geist-bold);\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  --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  --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.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  --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 scroll-smooth;\n  }\n  body {\n    font-synthesis-weight: none;\n    text-rendering: optimizeLegibility;\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\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-gradient-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  @apply relative;\n\n  &:before {\n    @apply text-muted-foreground right-0 mr-2 hidden size-7 items-center justify-center rounded-full text-center -indent-px font-mono text-sm font-medium md:absolute;\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@keyframes fade-in {\n  from {\n    opacity: 0;\n    transform: scale(0.95) translateY(10px);\n  }\n  to {\n    opacity: 1;\n    transform: scale(1) translateY(0);\n  }\n}\n\n@keyframes fade-in-up {\n  from {\n    opacity: 0;\n    transform: translateY(20px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@keyframes fade-in-down {\n  from {\n    opacity: 0;\n    transform: translateY(-20px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@keyframes fade-in-left {\n  from {\n    opacity: 0;\n    transform: translateX(20px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}\n\n@keyframes fade-in-right {\n  from {\n    opacity: 0;\n    transform: translateX(-20px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}\n\n@keyframes fade-in-scale {\n  from {\n    opacity: 0;\n    transform: scale(0.9);\n  }\n  to {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n@layer utilities {\n  .animate-fade-in {\n    animation: fade-in 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-up {\n    animation: fade-in-up 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-down {\n    animation: fade-in-down 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-left {\n    animation: fade-in-left 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-right {\n    animation: fade-in-right 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-scale {\n    animation: fade-in-scale 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-slow {\n    animation: fade-in 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n  }\n\n  .animate-fade-in-fast {\n    animation: fade-in 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\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-16;\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-lg);\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"
  },
  {
    "path": "apps/www/styles/themes.css",
    "content": ".theme-default .theme-container {\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-blue .theme-container {\n  --primary: var(--color-blue-600);\n  --primary-foreground: var(--color-blue-50);\n  --ring: var(--color-blue-400);\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-500);\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  --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  --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  --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  --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  --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  --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-mono .theme-container {\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    @apply !rounded-none !shadow-none;\n  }\n}\n\n.theme-scaled .theme-container {\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-red .theme-container {\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  --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  --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/www/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\": \"preserve\",\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  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "apps/www/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": "e2e/auth.login.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { apiRegister, uiLogin, uniqueEmail, trackRefresh } from './helpers';\n\ntest('login (happy): redirects to dashboard and avoids extra refresh calls', async ({ page, request }) => {\n  const email = uniqueEmail('login');\n  const password = 'Password!123';\n  await apiRegister(request, email, password);\n\n  const refreshHits = trackRefresh(page);\n\n  await uiLogin(page, email, password);\n  await expect(page).toHaveURL(/dashboard/i, { timeout: 10_000 });\n\n  // Should not need an immediate refresh after successful login\n  expect(refreshHits.length).toBeLessThanOrEqual(1);\n});\n\ntest('login (bad creds): shows error and DOES NOT call /auth/refresh', async ({ page }) => {\n  const refreshHits = trackRefresh(page);\n\n  await uiLogin(page, 'wrong@example.com', 'nope');\n  // expect some error UI; adjust text to your app\n  await expect(page.getByText(/invalid|wrong|credentials|creden/i)).toBeVisible();\n\n  expect(refreshHits.length).toBe(0);\n});\n"
  },
  {
    "path": "e2e/auth.logout.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { apiRegister, uiLogin, uniqueEmail } from './helpers';\n\ntest('logout clears session and allows login page to render', async ({ page, request }) => {\n  const email = uniqueEmail('logout');\n  const password = 'Password!123';\n  await apiRegister(request, email, password);\n  await uiLogin(page, email, password);\n  await expect(page).toHaveURL(/dashboard/);\n\n  // click your logout control; tweak selector to your UI\n  await page.getByRole('button', { name: /log ?out/i }).click();\n\n  // app should route to /login or home, and render the sign-in form again\n  await expect(page).toHaveURL(/login/);\n  await expect(page.getByRole('button', { name: /sign in/i })).toBeVisible();\n});\n"
  },
  {
    "path": "e2e/auth.password.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { apiRegister, uniqueEmail } from './helpers';\n\ntest('forgot + reset password flow works end-to-end with mock token', async ({ page, request }) => {\n  const email = uniqueEmail('pw');\n  const oldPass = 'OldPass!123';\n  const newPass = 'NewPass!123';\n\n  await apiRegister(request, email, oldPass);\n\n  // 1) Request reset\n  await page.goto('/forgot-password');\n  await page.getByLabel(/email/i).fill(email);\n  await page.getByRole('button', { name: /send|reset|submit/i }).click();\n\n  // The mock returns a token in the response body. Capture it with route interception.\n  // Alternative: call API programmatically here:\n  const apiBase = (process.env.NEXT_PUBLIC_API_URL || '').replace(/\\/+$/, '');\n  const resp = await request.post(`${apiBase}/auth/forgot-password`, { data: { email } });\n  expect(resp.ok()).toBeTruthy();\n  const { token } = await resp.json();\n\n  // 2) Complete reset\n  await page.goto('/reset-password');\n  await page.getByLabel(/token/i).fill(token);            // adjust if your UI reads token from URL param\n  await page.getByLabel(/^password$/i).fill(newPass);\n  await page.getByRole('button', { name: /reset/i }).click();\n  await expect(page.getByText(/updated|success/i)).toBeVisible();\n\n  // 3) Login with new password\n  await page.goto('/login');\n  await page.getByLabel(/email/i).fill(email);\n  await page.getByLabel(/password/i).fill(newPass);\n  await page.getByRole('button', { name: /sign in/i }).click();\n  await expect(page).toHaveURL(/dashboard/);\n});\n"
  },
  {
    "path": "e2e/auth.redirects.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { apiRegister, uiLogin, uniqueEmail, trackRefresh } from './helpers';\n\ntest('visiting /login while authenticated redirects quickly without refresh storms', async ({ page, request }) => {\n  const email = uniqueEmail('redir');\n  const password = 'Password!123';\n  await apiRegister(request, email, password);\n\n  await uiLogin(page, email, password);\n  await expect(page).toHaveURL(/dashboard/);\n\n  const refreshHits = trackRefresh(page);\n\n  // Go to /login again; AuthLayout + context should push back to dashboard\n  await page.goto('/login');\n  await expect(page).toHaveURL(/dashboard/);\n\n  expect(refreshHits.length).toBeLessThanOrEqual(1);\n});\n"
  },
  {
    "path": "e2e/auth.refresh-singleton.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { apiRegister, uiLogin, uniqueEmail, trackRefresh } from './helpers';\n\ntest('concurrent 401s trigger exactly one refresh (singleton)', async ({ page, request }) => {\n  const email = uniqueEmail('single');\n  const password = 'Password!123';\n  await apiRegister(request, email, password);\n  await uiLogin(page, email, password);\n  await expect(page).toHaveURL(/dashboard/);\n\n  const refreshHits = trackRefresh(page);\n\n  // Trigger two protected fetches in the app at once.\n  // E.g., navigate to a page that loads two protected endpoints on mount.\n  // If you don’t have such a page, add a tiny dev route that does it for tests,\n  // or invoke window.fetch twice via evaluate:\n  await page.evaluate(() => {\n    // these URLs should be protected in your app (adjust to real endpoints)\n    fetch(`${process.env.NEXT_PUBLIC_API_URL!.replace(/\\/+$/, '')}/protected/a`, { credentials: 'include' });\n    fetch(`${process.env.NEXT_PUBLIC_API_URL!.replace(/\\/+$/, '')}/protected/b`, { credentials: 'include' });\n  });\n\n  // Allow a moment for network to settle\n  await page.waitForTimeout(1000);\n\n  // The wrapper ensures only one refresh went out even if both 401'd\n  expect(refreshHits.length).toBeLessThanOrEqual(1);\n});\n"
  },
  {
    "path": "e2e/auth.register.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\nimport { uiRegister, uniqueEmail, trackRefresh } from './helpers';\n\ntest('register → creates account, sets session, redirects to dashboard, no extra refresh spam', async ({ page }) => {\n  const email = uniqueEmail('reg');\n  const refreshHits = trackRefresh(page);\n\n  await uiRegister(page, email, 'Password!123', 'Reg User');\n\n  await expect(page).toHaveURL(/dashboard/i, { timeout: 10_000 });\n\n  // sanity: check we appear logged-in (tweak selector to your header/avatar)\n  await expect(page.getByText(/reg user/i)).toBeVisible({ timeout: 10_000 });\n\n  // Registration API already returns tokens/user; no reason to instantly call /auth/refresh\n  expect(refreshHits.length).toBeLessThanOrEqual(1);\n});\n"
  },
  {
    "path": "e2e/helpers.ts",
    "content": "import { Page, APIRequestContext, expect } from '@playwright/test';\n\nexport function uniqueEmail(prefix = 'user'): string {\n  const rand = Math.random().toString(36).slice(2, 8);\n  return `${prefix}.${Date.now()}.${rand}@example.com`;\n}\n\n// Programmatic register via API (fast & reliable seed)\nexport async function apiRegister(request: APIRequestContext, email: string, password: string, name = 'Testy') {\n  const apiBase = (process.env.NEXT_PUBLIC_API_URL || '').replace(/\\/+$/, '');\n  const res = await request.post(`${apiBase}/auth/register`, {\n    data: { email, password, name },\n  });\n  expect(res.ok()).toBeTruthy();\n  return res.json();\n}\n\nexport async function apiLogout(request: APIRequestContext) {\n  const apiBase = (process.env.NEXT_PUBLIC_API_URL || '').replace(/\\/+$/, '');\n  await request.post(`${apiBase}/auth/logout`);\n}\n\n// UI helpers\nexport async function uiLogin(page: Page, email: string, password: string) {\n  await page.goto('/login');\n  await page.getByLabel(/email address/i).fill(email);\n  await page.getByLabel(/password/i).fill(password);\n  await page.getByRole('button', { name: /sign in/i }).click();\n}\n\nexport async function uiRegister(page: Page, email: string, password: string, name = 'Testy McTestface') {\n  await page.goto('/register');\n  await page.getByLabel(/name/i).fill(name);\n  await page.getByLabel(/email/i).fill(email);\n  await page.getByLabel(/password/i).fill(password);\n  await page.getByRole('button', { name: /create|register|sign up/i }).click();\n}\n\n// Count refresh calls on a page (works per test)\nexport function trackRefresh(page: Page) {\n  const hits: string[] = [];\n  page.on('request', req => {\n    if (/\\/auth\\/refresh\\b/i.test(req.url()) && req.method() === 'POST') hits.push(req.url());\n  });\n  return hits;\n}\n"
  },
  {
    "path": "mock-api/db.json",
    "content": "{\n  \"users\": [\n    {\n      \"id\": 1,\n      \"email\": \"john@example.com\",\n      \"password\": \"12345678\",\n      \"name\": \"John Doe\",\n      \"provider\": \"email\",\n      \"google_sub\": null,\n      \"created_at\": \"2024-01-01T10:00:00.000Z\",\n      \"updated_at\": \"2024-01-01T10:00:00.000Z\"\n    },\n    {\n      \"id\": 2,\n      \"email\": \"google.user@example.com\",\n      \"password\": \"FP8-BZu57tq6dbxily42G\",\n      \"name\": \"Google User\",\n      \"provider\": \"google\",\n      \"google_sub\": \"mock-google-sub-123456\",\n      \"created_at\": \"2025-10-13T13:47:58.962Z\",\n      \"updated_at\": \"2025-10-13T13:55:36.888Z\"\n    }\n  ],\n  \"revoked_tokens\": [\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6InJlZnJlc2giLCJqdGkiOiI4OU53cTNLTzQ3Y29PMkJORXRKSUYiLCJpYXQiOjE3NjAzNjMxMTMsImV4cCI6MTc2MDk2NzkxM30.0H2qIVgn1zqqqwPskQqiC9g8WxsSf3153RhjJRzaBRM\",\n      \"revoked_at\": \"2025-10-13T13:45:18.141Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6ImFjY2VzcyIsImlhdCI6MTc2MDM2MzExOCwiZXhwIjoxNzYwMzY0MDE4fQ.FYCDr4SKIW5QdlJTMzQiskE6S9PrEmQLQr3sqhss2Ac\",\n      \"revoked_at\": \"2025-10-13T13:47:52.407Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6InJlZnJlc2giLCJqdGkiOiJsdVgwZ1VqOUdiV1lsWGw4NzNxQW4iLCJpYXQiOjE3NjAzNjMxMTgsImV4cCI6MTc2MDk2NzkxOH0.S6dq8u02xUrsQ4Y-cj94_tUHq_uhXH5DWXFxVpTgptk\",\n      \"revoked_at\": \"2025-10-13T13:47:52.408Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6InJlZnJlc2giLCJqdGkiOiIwZ1NNa0dXRUV3ZFUzRFRadGU0MlkiLCJpYXQiOjE3NjAzNjM0NjYsImV4cCI6MTc2MDk2ODI2Nn0.vuC674JAaT5IQI8Fqc4DRK9n3VQsQjGC6Z3Ds-kb8Ik\",\n      \"revoked_at\": \"2025-10-13T13:51:13.439Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6ImFjY2VzcyIsImlhdCI6MTc2MDM2MzQ3MywiZXhwIjoxNzYwMzY0MzczfQ.irc95PuNnmUcEYsZTX--_SriXyD98KHtQ_VBgn5Walk\",\n      \"revoked_at\": \"2025-10-13T13:51:14.470Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoiam9obkBleGFtcGxlLmNvbSIsInR5cCI6InJlZnJlc2giLCJqdGkiOiJlN09WM056YU9TWHVtS1NjTVRpM2UiLCJpYXQiOjE3NjAzNjM0NzMsImV4cCI6MTc2MDk2ODI3M30.CeFZZ3lZktww4fm5NbWpMuU7y5_K7LxMyxoTbv7NldA\",\n      \"revoked_at\": \"2025-10-13T13:51:14.470Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiSDh0aEVSendvNjhyOGZfVDJ5aXp1IiwiaWF0IjoxNzYwMzYzNzM2LCJleHAiOjE3NjA5Njg1MzZ9.TanDpShEyP8YqwbLSB-_eg4sReXka_KC2ulQikeBTx0\",\n      \"revoked_at\": \"2025-10-13T13:55:43.888Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiT2d1M2ViV0xEQ0JIMzNjRGRISmo5IiwiaWF0IjoxNzYwMzYzNzQzLCJleHAiOjE3NjA5Njg1NDN9.CHqEkcxp1uLztk30MQ9abqv2_q7elOK8RGrj07T92PU\",\n      \"revoked_at\": \"2025-10-13T13:55:46.670Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiYTluNFpZSWpGd2FKRk5CS0hKNWFBIiwiaWF0IjoxNzYwMzYzNzQ2LCJleHAiOjE3NjA5Njg1NDZ9.H4Ka8kV9L-ekVCp63Kf0FolYpITSp08hKnRNy2lAWwY\",\n      \"revoked_at\": \"2025-10-13T13:55:49.862Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiM3o3Q3BtM2s5OVpQZkFWdGVVaEJPIiwiaWF0IjoxNzYwMzYzNzQ5LCJleHAiOjE3NjA5Njg1NDl9.eJVL1480PoxpDJ7qW_JRluYd6QUGHc1IOZiaN8JZmGE\",\n      \"revoked_at\": \"2025-10-13T13:57:34.751Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiSG9ncVhwTXBBaHhuV1lWZW5ORXJxIiwiaWF0IjoxNzYwMzYzODU0LCJleHAiOjE3NjA5Njg2NTR9.ynyXvZbeB2NUFgzT3Yhoo5hVMf2TZJshzAXxr0fQOPc\",\n      \"revoked_at\": \"2025-10-13T14:14:48.532Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiN0JoVG9xd2ozTTdDRFYxWVY3el9kIiwiaWF0IjoxNzYwMzY0ODg4LCJleHAiOjE3NjA5Njk2ODh9.-9Ji9DNPyM-RbVxx4VERSiLIeEBEMeafdshvB-r4y-0\",\n      \"revoked_at\": \"2025-10-13T14:21:50.105Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoieFVSMlZQVWNkRzVJdlRNbG9TWUtFIiwiaWF0IjoxNzYwMzY1MzEwLCJleHAiOjE3NjA5NzAxMTB9.MnruPjtk8nAACyWc6YL3vK1VnQrZl_9EV_gQpOCv1p0\",\n      \"revoked_at\": \"2025-10-13T14:23:27.771Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiSUNsS0JQSDZqbmRad1YzS0Z0Z256IiwiaWF0IjoxNzYwMzY1NDA3LCJleHAiOjE3NjA5NzAyMDd9.TwFjyIyE6ezXPy8A_ymsy5IGG7KUfiUWMjaolNeir5g\",\n      \"revoked_at\": \"2025-10-13T14:23:29.904Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiSmxSRWYyMnowbThDbXIzWFByT0J4IiwiaWF0IjoxNzYwMzY1NDA5LCJleHAiOjE3NjA5NzAyMDl9.LkmqBa7wzfza0_Yp3NKXrq3G3hc0B4em6MdsY_C3Il8\",\n      \"revoked_at\": \"2025-10-13T14:23:31.169Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoic2RVczNHTmdLMHdITjNzbTExZG1vIiwiaWF0IjoxNzYwMzY1NDExLCJleHAiOjE3NjA5NzAyMTF9.V7RvJToV3aJlzV2kPtPkuzy_96qissNcgwz8j4Uw7OY\",\n      \"revoked_at\": \"2025-10-13T14:23:32.221Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiZ2dudHBWM0JjZFJVVmtqaGc2dmdnIiwiaWF0IjoxNzYwMzY1NDEyLCJleHAiOjE3NjA5NzAyMTJ9.rG9zKWot4Z4he5ddN9L7ir95EOLW2r7Tk505KBJ3gwY\",\n      \"revoked_at\": \"2025-10-13T14:23:33.468Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiQ2RDX2hxZFB4SnJJSl9oak9pX2FyIiwiaWF0IjoxNzYwMzY1NDEzLCJleHAiOjE3NjA5NzAyMTN9.k5JxsrxGyd_c9Gn0FrNYaFHkKz7Rdi_G58xKJ8CJMso\",\n      \"revoked_at\": \"2025-10-13T14:40:58.867Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJhY2Nlc3MiLCJpYXQiOjE3NjAzNjY0NTgsImV4cCI6MTc2MDM2NzM1OH0.lI7QFYFiTTIRqn4vfQMmpCVRJbtRVsPpQ5gukoZ2LO8\",\n      \"revoked_at\": \"2025-10-13T14:40:59.484Z\"\n    },\n    {\n      \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsImVtYWlsIjoiZ29vZ2xlLnVzZXJAZXhhbXBsZS5jb20iLCJ0eXAiOiJyZWZyZXNoIiwianRpIjoiZ1FOTkhTWFYwV0pURFFDZHdhdm1vIiwiaWF0IjoxNzYwMzY2NDU4LCJleHAiOjE3NjA5NzEyNTh9.cLP_lTXsygnodOnw06XELcfeCOnimq-mwTvSDDBndrM\",\n      \"revoked_at\": \"2025-10-13T14:40:59.490Z\"\n    }\n  ],\n  \"password_resets\": []\n}"
  },
  {
    "path": "mock-api/package.json",
    "content": "{\n  \"name\": \"mock-auth-api\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"start\": \"node server.js\",\n    \"start:watch\": \"NODE_ENV=development nodemon server.js\"\n  },\n  \"dependencies\": {\n    \"cookie-parser\": \"^1.4.7\",\n    \"cors\": \"^2.8.5\",\n    \"dayjs\": \"^1.11.10\",\n    \"dotenv\": \"^16.4.5\",\n    \"json-server\": \"^0.17.4\",\n    \"jsonwebtoken\": \"^9.0.2\",\n    \"lodash-es\": \"^4.17.21\",\n    \"lowdb\": \"^6.1.1\",\n    \"nanoid\": \"^5.0.7\"\n  },\n  \"devDependencies\": {\n    \"nodemon\": \"^3.1.0\"\n  }\n}\n"
  },
  {
    "path": "mock-api/routes.json",
    "content": "{\n  \"/api/v1/auth/*\": \"/$1\",      \n  \"/api/v1/auth/me\": \"/me\",\n  \"/api/v1/auth/register\": \"/register\",\n  \"/api/v1/auth/login\": \"/login\",\n  \"/api/v1/auth/google\": \"/google\",\n  \"/api/v1/auth/logout\": \"/logout\",\n  \"/api/v1/auth/refresh\": \"/refresh\",\n  \"/api/v1/auth/forgot-password\": \"/forgot-password\",\n  \"/api/v1/auth/reset-password\": \"/reset-password\"\n}\n"
  },
  {
    "path": "mock-api/server.js",
    "content": "import \"dotenv/config\";\nimport jsonServer from \"json-server\";\nimport cors from \"cors\";\nimport cookieParser from 'cookie-parser';\nimport jwt from \"jsonwebtoken\";\nimport { nanoid } from \"nanoid\";\nimport { Low } from \"lowdb\";\nimport { JSONFile } from \"lowdb/node\";\n\n// -------------------- Env & Defaults --------------------\nconst {\n  JWT_SECRET = process.env.JWT_SECRET,\n  ACCESS_TTL_SEC = process.env.ACCESS_TTL_SEC,      // 15 minutes\n  REFRESH_TTL_SEC = process.env.REFRESH_TTL_SEC,  // 7 days\n  CLIENT_ORIGIN = process.env.CLIENT_ORIGIN,\n  PORT = \"4001\",               // match your NEXT_PUBLIC_API_URL host:port\n} = process.env;\n\nconst ACCESS_TTL = parseInt(ACCESS_TTL_SEC, 10);\nconst REFRESH_TTL = parseInt(REFRESH_TTL_SEC, 10);\n\n// -------------------- App & DB Setup --------------------\nconst app = jsonServer.create();\nconst router = jsonServer.router(\"db.json\");\nconst middlewares = jsonServer.defaults({ noCors: true });\n\nconst defaultData = {\n  users: [],\n  revoked_tokens: [],\n  password_resets: [],\n};\n\nconst adapter = new JSONFile(\"db.json\");\nconst db = new Low(adapter, defaultData);\nawait db.read();\ndb.data.users ??= [];\ndb.data.revoked_tokens ??= [];\ndb.data.password_resets ??= [];\n\n// -------------------- CORS (with credentials) --------------------\nconst corsOptions = {\n  origin: CLIENT_ORIGIN, // must be explicit when using credentials\n  credentials: true,\n  methods: [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"OPTIONS\"],\n  allowedHeaders: [\"Content-Type\", \"Authorization\"],\n};\napp.use(cors(corsOptions));\napp.use(\n  cors({\n    origin: CLIENT_ORIGIN,    // must be the exact origin when using credentials\n    credentials: true,\n    methods: ['GET','POST','PUT','PATCH','DELETE','OPTIONS'],\n    allowedHeaders: ['Content-Type','Authorization'],\n  })\n);\napp.options('*', cors({ origin: CLIENT_ORIGIN, credentials: true }));\napp.use(cookieParser());\n\n// -------------------- Middleware --------------------\napp.use(jsonServer.bodyParser);\napp.use(middlewares);\n\n// Optional request log to debug routes\napp.use((req, _res, next) => {\n  console.log(req.method, req.url);\n  next();\n});\n\n// -------------------- Helpers --------------------\nfunction signAccessToken(user) {\n  return jwt.sign(\n    { sub: user.id, email: user.email, typ: \"access\" },\n    JWT_SECRET,\n    { expiresIn: ACCESS_TTL }\n  );\n}\n\nfunction signRefreshToken(user) {\n  return jwt.sign(\n    { sub: user.id, email: user.email, typ: \"refresh\", jti: nanoid() },\n    JWT_SECRET,\n    { expiresIn: REFRESH_TTL }\n  );\n}\n\nfunction setRefreshCookie(res, token, maxAgeMs) {\n  res.cookie('refresh_token', token, {\n    httpOnly: true,\n    sameSite: 'lax',\n    secure: false,         // true in production if using HTTPS\n    maxAge: maxAgeMs,\n    path: '/',             // adjust if needed\n  });\n}\n\nfunction sanitizeUser(u) {\n  const { password, ...safe } = u;\n  return safe;\n}\n\nfunction authz(req) {\n  const h = req.headers.authorization || \"\";\n  const token = h.startsWith(\"Bearer \") ? h.slice(7) : null;\n  if (!token) return null;\n  try {\n    const payload = jwt.verify(token, JWT_SECRET);\n    return payload;\n  } catch {\n    return null;\n  }\n}\n\nasync function getUserByEmail(email) {\n  await db.read();\n  return db.data.users.find((u) => u.email.toLowerCase() === email.toLowerCase());\n}\n\nasync function getUserById(id) {\n  await db.read();\n  return db.data.users.find((u) => u.id === id);\n}\n\nasync function createUser({\n  email,\n  password,\n  name,\n  provider = \"email\",\n  google_sub = null,\n}) {\n  await db.read();\n  const nextId = db.data.users.length\n    ? Math.max(...db.data.users.map((u) => u.id)) + 1\n    : 1;\n  const now = new Date().toISOString();\n  const newUser = {\n    id: nextId,\n    email,\n    password, // ⚠️ mock only (no hashing)\n    name,\n    provider,\n    google_sub,\n    created_at: now,\n    updated_at: now,\n  };\n  db.data.users.push(newUser);\n  await db.write();\n  return newUser;\n}\n\nasync function upsertGoogleUser({ email, name, google_sub }) {\n  await db.read();\n  let user =\n    db.data.users.find((u) => u.google_sub === google_sub) ||\n    db.data.users.find((u) => u.email.toLowerCase() === email.toLowerCase());\n  if (user) {\n    user.google_sub = google_sub;\n    user.provider = \"google\";\n    user.name = user.name || name;\n    user.updated_at = new Date().toISOString();\n    await db.write();\n    return user;\n  }\n  return createUser({\n    email,\n    password: nanoid(),\n    name,\n    provider: \"google\",\n    google_sub,\n  });\n}\n\nasync function revokeToken(token) {\n  await db.read();\n  db.data.revoked_tokens.push({\n    token,\n    revoked_at: new Date().toISOString(),\n  });\n  await db.write();\n}\n\nasync function isRevoked(token) {\n  await db.read();\n  return !!db.data.revoked_tokens.find((t) => t.token === token);\n}\n\n// -------------------- AUTH Routes --------------------\n\n\n\n// POST /api/v1/auth/register\napp.post([\"/api/v1/auth/register\", \"/register\"], async (req, res) => {\n  const { email, password, name } = req.body || {};\n  if (!email || !password)\n    return res\n      .status(422)\n      .json({ message: \"email și password sunt obligatorii\" });\n\n  const existing = await getUserByEmail(email);\n  if (existing) return res.status(409).json({ message: \"Email deja folosit\" });\n\n  const user = await createUser({ email, password, name });\n  const access_token = signAccessToken(user);\n  const refresh_token = signRefreshToken(user);\n  setRefreshCookie(res, refresh_token, REFRESH_TTL * 1000);\n\n  res.json({ user: sanitizeUser(user), access_token, refresh_token });\n});\n\n// POST /api/v1/auth/login\napp.post([\"/api/v1/auth/login\", \"/login\"], async (req, res) => {\n  const { email, password } = req.body || {};\n  const user = await getUserByEmail(email || \"\");\n  if (!user || user.password !== password)\n    return res.status(401).json({ message: \"Credențiale invalide\" });\n\n  const access_token = signAccessToken(user);\n  const refresh_token = signRefreshToken(user);\n  setRefreshCookie(res, refresh_token, REFRESH_TTL * 1000);\n\n  res.json({ user: sanitizeUser(user), access_token, refresh_token });\n});\n\n// POST /api/v1/auth/google  (MOCK: sets refresh cookie like classic login)\napp.post([\"/api/v1/auth/google\", \"/google\"], async (req, res) => {\n  const { token } = req.body || {};\n  if (!token) return res.status(422).json({ message: \"token lipsă\" });\n\n  let payload;\n  try {\n    payload = typeof token === \"string\" ? JSON.parse(token) : token;\n  } catch {\n    return res\n      .status(400)\n      .json({ message: \"token invalid (mock așteaptă JSON cu {email,name,sub})\" });\n  }\n\n  const { email, name, sub } = payload || {};\n  if (!email || !sub) {\n    return res\n      .status(400)\n      .json({ message: \"token mock trebuie să conțină email și sub\" });\n  }\n\n  // create/update Google user\n  const user = await upsertGoogleUser({\n    email,\n    name: name || email.split(\"@\")[0],\n    google_sub: sub,\n  });\n\n  // issue tokens\n  const access_token = signAccessToken(user);\n  const refresh_token = signRefreshToken(user);\n\n  // ✅ set refresh cookie exactly like the classic login\n  setRefreshCookie(res, refresh_token, REFRESH_TTL * 1000);\n\n  // return same shape as login (keeps parity with Rails response)\n  return res.json({\n    user: sanitizeUser(user),\n    access_token,\n    refresh_token,\n  });\n});\n\n\n\n// POST /api/v1/auth/logout  — clear refresh cookie & revoke tokens\napp.post([\"/api/v1/auth/logout\", \"/logout\"], async (req, res) => {\n  const h = req.headers.authorization || \"\";\n  const at = h.startsWith(\"Bearer \") ? h.slice(7) : null;\n  if (at) await revokeToken(at);\n\n  const rt = req.cookies?.refresh_token;\n  if (rt) await revokeToken(rt);\n\n  res.clearCookie(\"refresh_token\", { httpOnly: true, sameSite: \"lax\", secure: false, path: \"/\" });\n  return res.json({ success: true });\n});\n\n\n// POST /api/v1/auth/refresh  — cookie-based (no body)\napp.post([\"/api/v1/auth/refresh\", \"/refresh\"], async (req, res) => {\n  const refresh_token = req.cookies?.refresh_token;\n  if (!refresh_token) return res.status(401).json({ message: \"No refresh token\" });\n\n  try {\n    const payload = jwt.verify(refresh_token, JWT_SECRET);\n    if (payload.typ !== \"refresh\") return res.status(401).json({ message: \"tip token greșit\" });\n    if (await isRevoked(refresh_token)) return res.status(401).json({ message: \"refresh token revocat\" });\n\n    const user = await getUserById(payload.sub);\n    if (!user) return res.status(401).json({ message: \"user inexistent\" });\n\n    await revokeToken(refresh_token);               // rotate\n    const new_access  = signAccessToken(user);\n    const new_refresh = signRefreshToken(user);\n    setRefreshCookie(res, new_refresh, REFRESH_TTL * 1000);\n\n    return res.json({ access_token: new_access });  // only access in body\n  } catch {\n    return res.status(401).json({ message: \"refresh token invalid sau expirat\" });\n  }\n});\n\n\n\n// GET /api/v1/auth/me\napp.get([\"/api/v1/auth/me\", \"/me\"], async (req, res) => {\n  const payload = authz(req);\n  if (!payload || payload.typ !== \"access\")\n    return res.status(401).json({ message: \"Unauthorized\" });\n  if (await isRevoked((req.headers.authorization || \"\").slice(7))) {\n    return res.status(401).json({ message: \"Token revocat\" });\n  }\n  const user = await getUserById(payload.sub);\n  if (!user) return res.status(404).json({ message: \"User not found\" });\n  res.json({ user: sanitizeUser(user) });\n});\n\n// -------------------- Password Reset (mock) --------------------\napp.post(\n  [\"/api/v1/auth/forgot-password\", \"/forgot-password\"],\n  async (req, res) => {\n    const { email } = req.body || {};\n    const user = email ? await getUserByEmail(email) : null;\n    if (!user)\n      return res.json({\n        message: \"Dacă emailul există, vei primi un link de resetare\",\n      });\n\n    const token = nanoid();\n    await db.read();\n    db.data.password_resets.push({\n      id: nanoid(),\n      user_id: user.id,\n      token,\n      created_at: new Date().toISOString(),\n      consumed_at: null,\n    });\n    await db.write();\n\n    // In mock, return token for testing the UI\n    res.json({ message: \"Reset email sent (mock)\", token });\n  }\n);\n\napp.post(\n  [\"/api/v1/auth/reset-password\", \"/reset-password\"],\n  async (req, res) => {\n    const { token, password } = req.body || {};\n    if (!token || !password)\n      return res\n        .status(422)\n        .json({ message: \"token și password sunt obligatorii\" });\n\n    await db.read();\n    const prIndex = db.data.password_resets.findIndex(\n      (r) => r.token === token && !r.consumed_at\n    );\n    if (prIndex === -1)\n      return res.status(400).json({ message: \"token invalid sau folosit\" });\n\n    const pr = db.data.password_resets[prIndex];\n    const user = await getUserById(pr.user_id);\n    if (!user) return res.status(404).json({ message: \"user inexistent\" });\n\n    user.password = password;\n    user.updated_at = new Date().toISOString();\n    db.data.password_resets[prIndex].consumed_at = new Date().toISOString();\n    await db.write();\n\n    res.json({ message: \"Parola a fost actualizată\" });\n  }\n);\n\n// -------------------- Mount json-server router for other CRUD --------------------\napp.use(\"/api\", router);\n\n// -------------------- Start --------------------\napp.listen(Number(PORT), () => {\n  console.log(`Mock AUTH API on http://localhost:${PORT}`);\n});\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@creative-tim/ui-monorepo\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"author\": {\n    \"name\": \"Creative Tim\",\n    \"email\": \"hello@creative-tim.com\",\n    \"url\": \"https://creative-tim.com\"\n  },\n  \"workspaces\": [\n    \"apps/*\",\n    \"packages/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"build:registry\": \"pnpm --filter=www build:registry && pnpm lint:fix && pnpm format:write -- --loglevel silent\",\n    \"registry:build\": \"pnpm --filter=www registry:build && pnpm lint:fix && pnpm format:write -- --loglevel silent\",\n    \"dev\": \"turbo run dev\",\n    \"lint\": \"turbo run lint\",\n    \"lint:fix\": \"turbo run lint:fix\",\n    \"typecheck\": \"turbo run typecheck\",\n    \"format:write\": \"turbo run format:write\",\n    \"format:check\": \"turbo run format:check\",\n    \"check\": \"turbo lint typecheck format:check\",\n    \"release\": \"changeset version\",\n    \"test:dev\": \"turbo run test --force\",\n    \"test\": \"start-server-and-test dev http://localhost:4000 test:dev\",\n    \"validate:registries\": \"pnpm validate:registries\",\n    \"dev:web\": \"pnpm --filter=www dev\",\n    \"mock\": \"pnpm --prefix mock-api run start\",\n    \"dev:stack\": \"concurrently -k -n MOCK,WEB -c magenta,cyan \\\"pnpm run mock\\\" \\\"pnpm run dev:web\\\"\",\n    \"test:unit\": \"vitest run --environment jsdom\",\n    \"test:e2e\": \"start-server-and-test dev:stack http://localhost:3000 \\\"playwright test\\\"\",\n    \"test:e2e:headed\": \"start-server-and-test dev:stack http://localhost:3000 \\\"playwright test --headed\\\"\",\n    \"test:all\": \"pnpm run test:unit && pnpm run test:e2e\",\n    \"test:e2e:report\": \"playwright show-report\"\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\": \"^17.6.3\",\n    \"@commitlint/config-conventional\": \"^17.6.3\",\n    \"@ianvs/prettier-plugin-sort-imports\": \"^3.7.2\",\n    \"@manypkg/cli\": \"^0.20.0\",\n    \"@playwright/test\": \"^1.56.0\",\n    \"@typescript-eslint/parser\": \"^5.59.7\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"concurrently\": \"^8.0.1\",\n    \"cross-env\": \"^7.0.3\",\n    \"eslint\": \"^8.41.0\",\n    \"eslint-config-next\": \"13.3.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    \"postcss\": \"^8.4.24\",\n    \"prettier\": \"^2.8.8\",\n    \"pretty-quick\": \"^3.1.3\",\n    \"puppeteer\": \"^23.6.0\",\n    \"tailwindcss\": \"3.4.6\",\n    \"tailwindcss-animate\": \"^1.0.5\",\n    \"tsx\": \"^4.1.4\",\n    \"turbo\": \"^2.5.8\",\n    \"vite\": \"^5.4.15\",\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}\n"
  },
  {
    "path": "playwright.config.ts",
    "content": "import { defineConfig, devices } from '@playwright/test';\n\nexport default defineConfig({\n  testDir: './e2e',\n  fullyParallel: true,\n  retries: 1,\n  use: {\n    baseURL: 'http://localhost:3000',\n    trace: 'on-first-retry',\n    screenshot: 'only-on-failure',\n    video: 'retain-on-failure',\n  },\n  projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],\n});\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n  - \"!**/test/**\"\n  - \"!**/fixtures/**\"\n  - \"!**/temp/**\"\n  - \"!packages/tests/temp/**\"\n"
  },
  {
    "path": "postcss.config.cjs",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\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  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  importOrderSeparation: false,\n  importOrderSortSpecifiers: true,\n  importOrderBuiltinModulesToTop: true,\n  importOrderParserPlugins: [\"typescript\", \"jsx\", \"decorators-legacy\"],\n  importOrderMergeDuplicateImports: true,\n  importOrderCombineTypeAndValueImports: true,\n  plugins: [\"@ianvs/prettier-plugin-sort-imports\"],\n}\n"
  },
  {
    "path": "skills/README.md",
    "content": "# Creative Tim UI — Agent Skills\n\nReusable skills for AI coding agents. Compatible with Claude Code, Cursor, Cline, GitHub Copilot, Windsurf, and 40+ other agents via the [skills CLI](https://skills.sh).\n\n## Install\n\n```bash\nnpx skills add creativetimofficial/ui\n```\n\nInstall globally (available in all your projects):\n\n```bash\nnpx skills add creativetimofficial/ui -g\n```\n\nInstall for a specific agent only:\n\n```bash\nnpx skills add creativetimofficial/ui --agent claude-code\nnpx skills add creativetimofficial/ui --agent cursor\n```\n\n## Available Skills\n\n| Skill | Description |\n|-------|-------------|\n| [creative-tim-ui](./creative-tim-ui/) | Block library assistant — design philosophy, install commands, PRO API key, design rules |\n\n## What the Skill Does\n\nOnce installed, your AI agent knows how to:\n\n- Discover and install any of the 390+ blocks via `npx @creative-tim/ui@latest add <block>`\n- Follow Creative Tim's design philosophy — minimalism, the 95% rule, deliberate restraint\n- Apply the correct design rules (brand colors, typography scale, Tailwind v4 constraints)\n- Set up PRO block access with `CREATIVE_TIM_UI_API_KEY`\n- Compose shadcn/ui primitives correctly without reimplementing them\n\nBrowse blocks: https://www.creative-tim.com/ui\nSkill page: https://skills.sh/creativetimofficial/ui/creative-tim-ui\n"
  },
  {
    "path": "skills/creative-tim-ui/AGENTS.md",
    "content": "# Creative Tim UI — Design & Usage Guide\n\n**Version 1.0.0**\nCreative Tim\nMarch 2026\n\n> **Note:**\n> This document is primarily for AI agents and LLMs generating, reviewing, or modifying\n> UI code that uses the Creative Tim UI block library. Guidance is optimised for\n> automation and consistency. Humans may also find it useful as a reference.\n\n---\n\n## Abstract\n\nCreative Tim UI is a block library of 390+ React + Tailwind CSS components built on shadcn/ui.\nThis guide covers the design philosophy behind every block, installation patterns, brand identity\nrules, Tailwind v4 constraints, and component conventions so AI-generated code stays consistent\nwith the library — not just visually, but in the decisions it makes.\n\n---\n\n## Table of Contents\n\n0. [Design Philosophy](#0-design-philosophy)\n1. [Installing Blocks](#1-installing-blocks)\n2. [PRO Blocks & API Key](#2-pro-blocks--api-key)\n3. [Brand Identity](#3-brand-identity)\n4. [Typography Rules](#4-typography-rules)\n5. [Tailwind v4 Constraints](#5-tailwind-v4-constraints)\n6. [Component Patterns](#6-component-patterns)\n7. [Hydration Safety](#7-hydration-safety)\n8. [Block Authoring Guide](#8-block-authoring-guide)\n\n---\n\n## 0. Design Philosophy\n\nAcross 300+ products and categories, Creative Tim has applied the same discipline: identify what developers actually need, build that exceptionally well, and cut everything else.\n\nThat discipline — research first, build only what's necessary, remove rather than add — is the foundation of every block in this library.\n\n**The five principles:**\n\n### 0.1 The 95% Rule\n\nBuild the common case exceptionally well. Do not reach for complex solutions to simple problems. A developer dropping in a block should not unwrap three layers of abstraction to change a label.\n\n### 0.2 The \"Light\" Principle\n\nA block is done not when there's nothing left to add, but when there's nothing left to remove. No feature flags for things that can be changed in code. No helper components used only once. No animations on elements that don't need to communicate state. No extra wrappers that exist only to satisfy a mental model.\n\n### 0.3 Research Before Rendering\n\nThe first question is always: what problem does this solve for the person looking at the screen? Not what looks good in isolation. A pricing table reduces friction in a purchase decision. A dashboard surfaces the one number a person needs to act on. If the purpose isn't clear, the block isn't clear.\n\n### 0.4 Standing on Foundations\n\nshadcn/ui's `Table`, `Card`, `Button`, `Badge`, `Dialog` are well-designed, accessible, and maintained. Do not rebuild them. Do not wrap them unnecessarily. The Creative Tim contribution is the **composition** — how primitives are assembled into something useful for real work.\n\n### 0.5 Real Use, Not Demo Use\n\nThe standard is: would a real team ship this to solve a real problem? Avoid visual complexity that doesn't carry information. A status badge that turns red when something is wrong is communication. A gradient that doesn't indicate anything is decoration. Only the first belongs.\n\nFull detail with code examples: `rules/brand-philosophy.md`\n\n---\n\n---\n\n## 1. Installing Blocks\n\n### 1.1 Creative Tim CLI\n\nThe preferred method. Installs the block and all shadcn/ui primitive dependencies automatically.\n\n```bash\n# Initialize project (auto-detects Next.js / Vite / Remix / Astro)\nnpx @creative-tim/ui@latest init\n\n# Add a block\nnpx @creative-tim/ui@latest add <block-name>\n```\n\n**Package:** `@creative-tim/ui` (v0.4.x+)\n**Binaries:** `creative-tim-ui`, `creative-tim` (aliases for the same CLI)\n\n```bash\n# All of these are equivalent:\nnpx @creative-tim/ui@latest add hero-01\nnpx creative-tim-ui add hero-01\nnpx creative-tim add hero-01\n```\n\n**Examples:**\n```bash\nnpx @creative-tim/ui@latest add hero-01\nnpx @creative-tim/ui@latest add ai-agent-activity-01\nnpx @creative-tim/ui@latest add agent-management-list-01\nnpx @creative-tim/ui@latest add pricing-01\n```\n\nThe CLI copies the component into `components/ui/` (or your configured components directory) and runs `npx shadcn@latest add` for each dependency.\n\n### 1.2 shadcn CLI (Full URL)\n\nUse this when you prefer the shadcn workflow or when integrating with shadcn's registry tooling.\n\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/<block-name>.json\n```\n\n**Examples:**\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/hero-01.json\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/testimonials-03.json\n```\n\n### 1.3 Block Discovery\n\nBrowse all blocks:\n- Website: https://www.creative-tim.com/ui\n- AI index: https://www.creative-tim.com/ui/llms.txt (grouped by category, machine-readable)\n\nIndividual block JSON (for programmatic access):\n```\nhttps://www.creative-tim.com/ui/r/<block-name>.json\n```\n\n---\n\n## 2. PRO Blocks & API Key\n\nPRO blocks require a `Creative-Tim-Api-Key` header when fetching the block JSON. Obtain a key at https://www.creative-tim.com/ui.\n\n### 2.1 Environment Setup\n\n```bash\n# .env.local (never commit this)\nCREATIVE_TIM_UI_API_KEY=pk_live_xxxxxxxxxxxxxxxx\n```\n\n### 2.2 CLI Install with Key\n\n```bash\nnpx @creative-tim/ui@latest add <pro-block-name> --api-key $CREATIVE_TIM_UI_API_KEY\n```\n\n### 2.3 Global Login (persists across sessions)\n\n```bash\nnpx @creative-tim/ui@latest login --api-key pk_live_xxxxxxxxxxxxxxxx\n```\n\nAfter login, all `add` commands automatically include the key — no `--api-key` flag needed.\n\n### 2.4 Detecting PRO Blocks\n\nPRO blocks are marked on the website. In the registry JSON they include `\"pro\": true`. Free-tier blocks have no `pro` field.\n\n---\n\n## 3. Brand Identity\n\n### 3.1 Primary Accent — Orange\n\n**Rule:** Use `orange` as the primary brand accent for interactive elements, icons, CTAs, and highlights.\n\n```tsx\n// CORRECT — orange accent\n<div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-orange-600\">\n  <Bot className=\"h-4 w-4 text-white\" />\n</div>\n<AvatarFallback className=\"bg-orange-100 text-orange-700\">JD</AvatarFallback>\n<Badge className=\"bg-orange-50 text-orange-700 border-orange-200\">OpenClaw</Badge>\n```\n\n```tsx\n// WRONG — violet/purple signals AI-generated defaults, not Creative Tim\n<div className=\"bg-violet-600\">...</div>\n<Badge className=\"text-purple-700\">...</Badge>\n```\n\n**Why:** Purple/violet is the default accent in many AI coding tools. Any block using it looks auto-generated and inconsistent with the library.\n\n### 3.2 Status Colors\n\n| State | Color |\n|-------|-------|\n| Active / Success | `emerald` |\n| Warning / Pending | `amber` |\n| Error / Stopped | `red` |\n| Info / In-Progress | `blue` |\n| Neutral / Inactive | `slate` |\n\n### 3.3 Surface Colors\n\n- Card backgrounds: `bg-background` (default card) or `bg-muted/30` (subtle areas like sidebars)\n- Borders: use `border` (theme token) — never hardcode `border-gray-200`\n- Text hierarchy: `text-foreground` (primary), `text-muted-foreground` (secondary)\n\n---\n\n## 4. Typography Rules\n\n### 4.1 `text-sm` for Readable Content\n\n**Rule:** Use `text-sm` for all body text that users need to read.\n\n```tsx\n// CORRECT\n<TableCell className=\"text-sm font-medium\">{agent.name}</TableCell>\n<p className=\"text-sm text-muted-foreground\">{description}</p>\n<span className=\"text-sm\">{agent.lastActive}</span>\n```\n\n```tsx\n// WRONG — text-xs for readable body content is too small\n<TableCell className=\"text-xs\">{agent.name}</TableCell>\n<p className=\"text-xs text-muted-foreground\">{description}</p>\n```\n\n### 4.2 `text-xs` Only for Tiny/Supplementary Elements\n\n`text-xs` is acceptable for:\n- Avatar initials (`AvatarFallback`)\n- `font-mono` timestamps and IDs\n- Badge/pill labels (priority, status)\n- Sidebar group headers (`uppercase tracking-wider`)\n- Action buttons with h-6 or h-7 (`className=\"h-6 px-2 text-xs\"`)\n\n### 4.3 Never Use Arbitrary Font Sizes\n\n```tsx\n// WRONG\n<span className=\"text-[10px]\">...</span>\n<p className=\"text-[11px]\">...</p>\n<div className=\"text-[0.65rem]\">...</div>\n```\n\n---\n\n## 5. Tailwind v4 Constraints\n\n### 5.1 No Arbitrary Values\n\nTailwind v4 uses a continuous numeric scale. Arbitrary bracket values are not allowed.\n\n```tsx\n// WRONG — arbitrary values\n<div className=\"h-[380px] w-[280px]\">\n<div className=\"max-w-[85%] min-w-[80px]\">\n<div className=\"gap-[14px] p-[18px]\">\n```\n\n```tsx\n// CORRECT — use the numeric scale\n<div className=\"h-96 w-72\">         // h-96 = 384px, w-72 = 288px\n<div className=\"max-w-sm\">          // 384px — close enough, or max-w-xs / max-w-md\n<div className=\"gap-3.5 p-4\">       // gap-3.5 = 14px, p-4 = 16px\n```\n\n### 5.2 Numeric Scale Reference\n\n```\nh-6  = 24px     h-8  = 32px     h-10 = 40px\nh-12 = 48px     h-16 = 64px     h-20 = 80px\nh-24 = 96px     h-32 = 128px    h-48 = 192px\nh-64 = 256px    h-80 = 320px    h-96 = 384px\n\ngap-1 = 4px     gap-2 = 8px     gap-3 = 12px\ngap-4 = 16px    gap-5 = 20px    gap-6 = 24px\n\np-2 = 8px       p-3 = 12px      p-4 = 16px\np-5 = 20px      p-6 = 24px\n```\n\n### 5.3 Use Semantic Width Utilities\n\n```tsx\n// CORRECT\n<div className=\"max-w-sm\">    // 384px\n<div className=\"max-w-md\">    // 448px\n<div className=\"max-w-lg\">    // 512px\n<div className=\"max-w-xl\">    // 576px\n<div className=\"max-w-2xl\">   // 672px\n<div className=\"w-64\">        // sidebar = 256px\n<div className=\"w-72\">        // kanban column = 288px\n```\n\n### 5.4 Responsive Breakpoints Only\n\n```tsx\n// CORRECT\n<div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4\">\n\n// WRONG — custom media query\n<div className=\"[@media(min-width:640px)]:grid-cols-2\">\n```\n\n---\n\n## 6. Component Patterns\n\n### 6.1 Card Structure\n\nUse `Card > CardHeader + CardContent` for content grouping.\n\n```tsx\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\n\n<Card>\n  <CardHeader>\n    <CardTitle>Section Title</CardTitle>\n  </CardHeader>\n  <CardContent>\n    {/* content */}\n  </CardContent>\n</Card>\n```\n\n### 6.2 KPI / Stat Cards — py-0\n\nKPI cards use `py-0` on CardContent to let the parent padding control vertical rhythm.\n\n```tsx\n// CORRECT\n<Card>\n  <CardContent className=\"px-4 py-0\">\n    <p className=\"text-muted-foreground text-sm\">Total Agents</p>\n    <p className=\"text-2xl font-bold\">42</p>\n  </CardContent>\n</Card>\n\n// WRONG — default py causes too much padding in stat grids\n<Card>\n  <CardContent className=\"p-4\">\n```\n\n### 6.3 Sidebar Navigation\n\nStandard sidebar width is `w-64` (256px), with `bg-muted/30 border-r`.\n\n```tsx\n<aside className=\"bg-muted/30 flex h-full w-64 flex-col border-r\">\n  {/* logo row */}\n  <div className=\"flex items-center gap-2.5 border-b px-5 py-4\">\n    <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-orange-600\">\n      <Bot className=\"h-4 w-4 text-white\" />\n    </div>\n    <span className=\"text-sm font-semibold\">App Name</span>\n  </div>\n  {/* nav */}\n  <nav className=\"flex-1 space-y-0.5 p-3\">\n    {NAV_ITEMS.map((item) => (\n      <button\n        key={item.label}\n        className={`flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors ${\n          item.active\n            ? \"bg-background text-foreground shadow-sm\"\n            : \"text-muted-foreground hover:bg-background/60 hover:text-foreground\"\n        }`}\n      >\n        <item.icon className=\"h-4 w-4\" />\n        {item.label}\n      </button>\n    ))}\n  </nav>\n</aside>\n```\n\n### 6.4 ScrollArea for Overflow\n\nAny list that may overflow its container must use `ScrollArea`.\n\n```tsx\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\n\n<ScrollArea className=\"flex-1\">\n  <div className=\"space-y-2 p-4\">\n    {items.map((item) => <Item key={item.id} {...item} />)}\n  </div>\n</ScrollArea>\n```\n\n### 6.5 Badge Variants\n\n```tsx\n// Status badge (with dot)\n<div className=\"inline-flex items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium bg-emerald-50 text-emerald-700 border-emerald-200\">\n  <span className=\"h-1.5 w-1.5 rounded-full bg-emerald-500\" />\n  Active\n</div>\n\n// Type badge\n<Badge variant=\"outline\" className=\"text-xs font-medium bg-orange-50 text-orange-700 border-orange-200\">\n  OpenClaw\n</Badge>\n```\n\n### 6.6 Avoid Inline Styles\n\n```tsx\n// WRONG\n<div style={{ color: '#ff6b35', padding: '16px' }}>\n\n// CORRECT\n<div className=\"text-orange-500 p-4\">\n```\n\n---\n\n## 7. Hydration Safety\n\n### 7.1 Never Use Date in useState Initializer\n\n`new Date()`, `Date.now()`, and `toLocaleTimeString()` return different values on the server vs. the client, causing React hydration errors.\n\n```tsx\n// WRONG — causes \"Hydration failed\" error\nconst [events, setEvents] = useState(() => [\n  { id: \"1\", timestamp: new Date().toLocaleTimeString() },\n])\n\n// WRONG — locale-dependent\nconst [time, setTime] = useState(new Date().toLocaleTimeString())\n```\n\n```tsx\n// CORRECT — static strings for initial SSR state\nconst INITIAL_TIMESTAMPS = [\"10:30:00\", \"10:30:04\", \"10:30:08\"]\n\nconst [events, setEvents] = useState(() =>\n  INITIAL_DATA.slice(0, 3).map((e, i) => ({\n    ...e,\n    id: `init-${i}`,\n    timestamp: INITIAL_TIMESTAMPS[i],\n  }))\n)\n\n// Live timestamps only inside useEffect / setInterval (client-only)\nfunction nowTimeString() {\n  const d = new Date()\n  return [d.getHours(), d.getMinutes(), d.getSeconds()]\n    .map((n) => String(n).padStart(2, \"0\"))\n    .join(\":\")\n}\n\nuseEffect(() => {\n  const interval = setInterval(() => {\n    setEvents((prev) => [\n      ...prev,\n      { id: `evt-${Date.now()}`, timestamp: nowTimeString(), ... }\n    ])\n  }, 2000)\n  return () => clearInterval(interval)\n}, [])\n```\n\n### 7.2 suppressHydrationWarning for Intentional Mismatches\n\nIf a mismatch is truly intentional (e.g. a live clock that intentionally differs):\n```tsx\n<time suppressHydrationWarning>{displayTime}</time>\n```\n\n---\n\n## 8. Block Authoring Guide\n\n### 8.1 File Structure\n\nEvery block consists of two files:\n1. `registry/creative-tim/blocks/<name>.tsx` — the component\n2. `registry/creative-tim/blocks/<name>/page.tsx` — the page wrapper\n\nThe page wrapper simply renders the block:\n```tsx\nimport BlockName from \"@/registry/creative-tim/blocks/<name>\"\nexport default function Page() {\n  return <BlockName />\n}\n```\n\n### 8.2 Registry Entry\n\nAdd to `registry/registry-blocks.ts`:\n```ts\n{\n  name: \"my-block-01\",\n  type: \"registry:block\",\n  categories: [\"my-category\"],\n  meta: {\n    isFree: true,\n    label: \"My Block\",\n    createdAt: \"2026-03-14\",\n  },\n  registryDependencies: [\"button\", \"card\", \"badge\"],  // SHORT NAMES ONLY\n  files: [\n    {\n      path: \"registry/creative-tim/blocks/my-block-01.tsx\",\n      type: \"registry:component\",\n    },\n    {\n      path: \"registry/creative-tim/blocks/my-block-01/page.tsx\",\n      type: \"registry:page\",\n      target: \"app/blocks/my-block-01/page.tsx\",\n    },\n  ],\n}\n```\n\n**IMPORTANT:** `registryDependencies` must use **short names** (`\"button\"`, `\"card\"`, `\"badge\"`) — never full URLs.\n\n### 8.3 After Adding Blocks\n\nRebuild the registry:\n```bash\npnpm --filter www registry:build\n```\n\nThis regenerates `public/r/*.json`, `__index__.tsx`, and `__blocks__.json` (which powers `llms.txt`).\n\n### 8.4 Import Paths in Blocks\n\nUse the registry alias, not relative paths:\n```tsx\nimport { Button } from \"@/registry/creative-tim/ui/button\"\nimport { Card, CardContent } from \"@/registry/creative-tim/ui/card\"\n```\n\n### 8.5 Block Checklist\n\nBefore submitting a new block:\n- [ ] No `violet` or `purple` colors — use `orange` for brand accent\n- [ ] All readable text uses `text-sm` minimum\n- [ ] No arbitrary Tailwind values (`[10px]`, `[85%]`, etc.)\n- [ ] KPI/stat `CardContent` uses `px-4 py-0`\n- [ ] No `new Date()` in `useState` initializers\n- [ ] No inline `style={{}}` attributes\n- [ ] `registryDependencies` uses short names\n- [ ] `registry:build` completes without errors\n"
  },
  {
    "path": "skills/creative-tim-ui/SKILL.md",
    "content": "---\nname: creative-tim-ui\ndescription: Creative Tim UI block library assistant. Use when adding, generating, or modifying UI blocks/components/pages from creative-tim.com/ui. Covers design philosophy (minimalism, the 95% rule, research-first), block discovery, both CLI install methods, PRO API key setup, and Creative Tim design rules (orange brand, shadcn/ui base, Tailwind v4). Generates blocks that are deliberate and restrained, not maximal.\nlicense: MIT\nmetadata:\n  author: creative-tim\n  version: \"1.0.0\"\n---\n\n# Creative Tim UI\n\nA comprehensive block library built on top of [shadcn/ui](https://ui.shadcn.com), with 390+ production-ready blocks across 40+ categories. All blocks are React + Tailwind CSS, compatible with Next.js (App Router), Remix, and Vite.\n\nBrowse the full library: **https://www.creative-tim.com/ui**\nAI-readable index: **https://www.creative-tim.com/ui/llms.txt**\n\n## Install This Skill\n\n```bash\n# Install via skills CLI (recommended)\nnpx skills add creativetimofficial/ui\n\n# Install globally (available in all projects)\nnpx skills add creativetimofficial/ui -g\n\n# Or install to a specific agent only\nnpx skills add creativetimofficial/ui --agent claude-code\n```\n\nSkill page: **https://skills.sh/creativetimofficial/ui/creative-tim-ui**\n\n## Design Philosophy\n\nAcross 300+ products and categories, Creative Tim has applied the same discipline: identify what developers actually need, build that exceptionally well, and cut everything else. That restraint is the core of the library.\n\nWhen generating or modifying blocks, follow these principles:\n\n**The 95% Rule** — build the common case exceptionally well. Don't add configuration, abstraction, or flexibility for problems that rarely exist. A developer should be able to read a block and immediately understand what it does.\n\n**The \"Light\" Principle** — a block is finished when there is nothing left to remove, not when there is nothing left to add. Question every wrapper div, every prop, every animation, every icon. If the block works without it, it probably should.\n\n**Research before rendering** — ask what the person looking at this screen is trying to *do*. A dashboard surfaces the number someone needs to act on. A form collects information with the least possible resistance. Design toward the purpose, not toward the surface.\n\n**Build on foundations** — shadcn/ui primitives (`Card`, `Table`, `Button`, `Badge`) are well-designed and maintained. Compose them; don't reimplement them. The Creative Tim contribution is in the composition and the judgment, not in the primitives.\n\n**Real use, not demo use** — the standard is: would a real team ship this in a production app? Avoid visual complexity that doesn't carry information. Communication beats decoration every time.\n\nFull detail with code examples: `rules/brand-philosophy.md`\n\n---\n\n## When to Apply\n\nUse this skill when:\n- Installing or customising a Creative Tim UI block in a project\n- Generating new blocks that should match Creative Tim's design system\n- Reviewing generated UI code for brand/style compliance\n- Setting up PRO API key access for premium blocks\n- Onboarding a new project to use the Creative Tim UI library\n\n## Block Categories\n\n| Category | Slug | Description |\n|----------|------|-------------|\n| AI Agents | `ai-agents` | Chat interfaces, activity feeds, tool use, transcription |\n| Pages | `pages` | Full-page agent management layouts |\n| Account | `account` | Profile, settings, billing management |\n| Authentication | `authentication` | Login, register, 2FA flows |\n| Hero | `hero` | Landing page hero sections |\n| Pricing | `pricing` | Pricing tables and billing plans |\n| Charts | `charts` | Data visualisation |\n| KPI | `kpi` | Metric cards and dashboards |\n| Stats | `stats` | Statistics sections |\n| Tables | `table` | Data tables with sorting/filtering |\n| Ecommerce | `ecommerce` | Product listings, carts, checkout |\n| Blog | `blog` | Article lists, post layouts |\n| Testimonials | `testimonials` | Social proof sections |\n| ... | | [Full list at /ui/llms.txt] |\n\n## Installing Blocks\n\nTwo methods are fully supported — choose whichever fits your setup.\n\n### Option 1 — Creative Tim CLI (recommended)\n\n```bash\nnpx @creative-tim/ui@latest add <block-name>\n```\n\nInitialize a new project first (auto-detects Next.js / Vite / Remix / Astro):\n```bash\nnpx @creative-tim/ui@latest init\n```\n\nExamples:\n```bash\nnpx @creative-tim/ui@latest add hero-01\nnpx @creative-tim/ui@latest add ai-agent-activity-01\nnpx @creative-tim/ui@latest add agent-management-list-01\n```\n\nThe package also ships named binaries (`creative-tim-ui`, `creative-tim`) — same commands:\n```bash\nnpx creative-tim-ui add hero-01\nnpx creative-tim add hero-01\n```\n\n### Option 2 — shadcn CLI (full URL)\n\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/<block-name>.json\n```\n\nExample:\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/hero-01.json\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/ai-agent-activity-01.json\n```\n\nBoth methods copy the component source into your project and install all required shadcn/ui primitives (Button, Card, Badge, etc.) automatically.\n\n## PRO Blocks (API Key)\n\nSome blocks are marked **PRO** and require a Creative Tim API key. You can get a free key at **https://www.creative-tim.com/ui**.\n\n### Setup\n\nAdd the key to your environment:\n```bash\n# .env.local\nCREATIVE_TIM_UI_API_KEY=pk_live_xxxxxxxxxxxxxxxx\n```\n\nPass the key when using either CLI:\n```bash\n# Creative Tim CLI\nnpx @creative-tim/ui@latest add pro-block-name --api-key $CREATIVE_TIM_UI_API_KEY\n\n# shadcn CLI — set Authorization header via registry config\n```\n\nOr set it globally via the Creative Tim CLI config:\n```bash\nnpx @creative-tim/ui@latest login --api-key pk_live_xxxxxxxxxxxxxxxx\n```\n\nAfter setting the key, PRO blocks install identically to free blocks.\n\n## Design Rules\n\nSee individual rule files for full detail. Quick summary:\n\n### Brand Colors\n- **Primary accent: orange** (`orange-500` / `orange-600`) — Creative Tim's brand color\n- Never use `violet`, `purple`, or `indigo` as accent colors — these signal AI-generated defaults\n- Neutral surfaces: `slate`, `gray`, `zinc`\n- Status: `emerald` (success), `amber` (warning), `red` (error), `blue` (info)\n\n### Typography\n- **`text-sm`** for all readable body content — labels, descriptions, table cells, list items\n- `text-xs` only for: avatar initials, `font-mono` timestamps, badge pills (status/priority), sidebar group headers (uppercase + tracking-wider), tiny h-6/h-7 action buttons\n- Never use `text-[10px]`, `text-[11px]`, or any arbitrary font-size values\n\n### Tailwind v4 — No Arbitrary Values\n- Use the numeric scale for spacing/sizing: `h-8`, `w-12`, `gap-3`, `p-4` — never `h-[32px]`\n- Use standard fractions for widths: `max-w-sm`, `max-w-2xl`, `w-1/2` — never `max-w-[85%]`\n- Responsive breakpoints only: `sm:`, `md:`, `lg:`, `xl:` — never `[@media(min-width:640px)]:`\n\n### Component Patterns\n- Prefer `Card > CardHeader + CardContent` for content grouping\n- KPI / stat cards: `CardContent className=\"px-4 py-0\"` (py-0, not default py-6)\n- Use `ScrollArea` for any list that can overflow\n- Sidebar navigation: 64 (`w-64`), border-r, `bg-muted/30`\n- Avoid inline `style={{}}` — always use Tailwind classes\n\n### Hydration Safety\n- Never use `new Date()`, `Date.now()`, or `toLocaleTimeString()` in `useState` initializers\n- Use static/hardcoded strings for SSR-safe initial state; switch to live values inside `useEffect` / `setInterval`\n\n## Full Design Guide\n\nFor the complete rules with code examples: `AGENTS.md`\n\nIndividual rules:\n```\nrules/install-blocks.md     — CLI install walkthrough\nrules/pro-api-key.md        — PRO key setup and auth\nrules/design-brand.md       — Brand colors and identity\nrules/tailwind-rules.md     — Tailwind v4 coding constraints\nrules/component-patterns.md — Preferred component patterns\nrules/hydration-safety.md   — SSR/CSR hydration rules\n```\n\n## Deploying This Skill\n\nThis skill lives in the repo at `.claude/skills/creative-tim-ui/`. Anyone can install it in their own Claude Code setup by running:\n\n```bash\nclaude skill install github.com/creativetimofficial/ui .claude/skills/creative-tim-ui\n```\n\nOr by cloning and symlinking manually:\n```bash\n# Clone or copy the skills directory into your project\ncp -r path/to/ui-repo/.claude/skills/creative-tim-ui .claude/skills/creative-tim-ui\n```\n\nOnce installed the skill is available as `/creative-tim-ui` in any Claude Code session inside that project.\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/brand-philosophy.md",
    "content": "# Creative Tim Design Philosophy\n\nThis is not a style guide. It's the thinking behind every decision — what to build, what to cut, and why.\n\nOver a decade, Creative Tim has shipped 300+ open source UI dashboards, templates, and tools used by 2.8 million developers worldwide. That scale of use across that many products leaves no room for guesswork. Every principle here has been tested against real projects, real teams, and real feedback — not theory.\n\n---\n\n## The 95% Rule — Solve the Common Case Exceptionally Well\n\nEvery product Creative Tim ships starts with the same question: what do developers actually need? The answer, across hundreds of products and categories, is consistently the same core set of elements — buttons, tables, cards, sidebars, charts, forms, modals, notifications.\n\nThat's the 95%. The remaining 5% is Kanban boards, drag-and-drop, custom file uploaders, timeline components, WYSIWYG editors — powerful, but rare.\n\n**The rule:** build the 95% so well that no one feels the lack of the 5%.\n\nFor agents generating code: do not reach for complex solutions to solve simple problems. A developer looking at a block should not find themselves unwrapping three layers of abstraction to change a label. The common case should be obvious, direct, and complete.\n\n```tsx\n// WRONG — solves a hypothetical future problem\n<DataTable\n  columns={columns}\n  data={data}\n  sortable\n  filterable\n  paginated\n  exportable\n  selectable\n  onRowClick={handleRowClick}\n  onSelectionChange={handleSelection}\n  renderCustomCell={(cell) => <CustomCell {...cell} />}\n/>\n\n// RIGHT — solves the actual problem in front of you\n<Table>\n  <TableHeader>...</TableHeader>\n  <TableBody>\n    {items.map((item) => (\n      <TableRow key={item.id}>\n        <TableCell>{item.name}</TableCell>\n        <TableCell>{item.status}</TableCell>\n      </TableRow>\n    ))}\n  </TableBody>\n</Table>\n```\n\n---\n\n## The \"Light\" Principle — A Block Is Done When There Is Nothing Left to Remove\n\nAcross Creative Tim's product line, \"light\" is a recurring word — not because the products lack capability, but because every addition is interrogated. Each plugin, prop, and wrapper adds CSS, JavaScript, and cognitive weight. Most are cut.\n\nThis is the hardest design discipline: not building things you know how to build.\n\n**What it means in practice:**\n\n- No feature flags or configuration props for things that can just be changed in code\n- No helper components that are only used once\n- No animation on elements that don't need to communicate state\n- No extra wrapper `div`s that exist only to satisfy a mental model\n- No icons that repeat information already conveyed by text\n- No empty states, loading states, or error states unless the block actually fetches data\n\nA block should look complete the moment a developer drops it in. Not because it handles every edge case, but because it clearly handles the right ones.\n\n```tsx\n// WRONG — wrapping for the sake of wrapping\n<SectionWrapper>\n  <ContentContainer>\n    <InnerContent>\n      <Card>...</Card>\n    </InnerContent>\n  </ContentContainer>\n</SectionWrapper>\n\n// RIGHT — as flat as the problem allows\n<Card>...</Card>\n```\n\n---\n\n## Understand the Problem Before Rendering\n\nThe first question is always **what problem does this solve for the person looking at the screen?** Not what looks good in isolation. Not what demonstrates technical capability.\n\nA pricing table exists to reduce friction in a purchase decision. A dashboard exists to surface the one number a person needs to act on. A form exists to collect information with the least possible resistance.\n\nIf the purpose of a block is not clear, the block is not clear.\n\n---\n\n## Standing on Foundations — Never Build What Already Exists Well\n\nCreative Tim's history is building *on top of* the best available foundation rather than beside it. Bootstrap → Material Design → shadcn/ui. Each transition kept what worked and added only what was missing.\n\nThe same applies to individual blocks. shadcn/ui's `Table`, `Card`, `Button`, `Badge`, `Dialog` are well-designed, accessible, and maintained. Do not rebuild them. Do not wrap them unnecessarily. Do not replicate their functionality in custom components.\n\nThe Creative Tim contribution is the **composition** — how these primitives are assembled into something useful for real work. That is where the judgment lives, not in the primitives themselves.\n\n```tsx\n// WRONG — reimplementing what shadcn already solved\nfunction CustomButton({ variant, children }) {\n  const styles = variant === 'primary' ? 'bg-orange-500 text-white' : 'bg-gray-100'\n  return <button className={styles}>{children}</button>\n}\n\n// RIGHT — extend the foundation\nimport { Button } from \"@/registry/creative-tim/ui/button\"\n<Button variant=\"default\">Save changes</Button>\n```\n\n---\n\n## Real Use, Not Demo Use\n\nThe benchmark for every block is whether a real team would ship it in a production app. Not \"does this look impressive in a screenshot?\" but \"would this hold up under real conditions, used by real people under time pressure?\"\n\n**Concretely:** avoid visual complexity that doesn't carry information. A gradient on a card header that doesn't indicate anything is decoration. A status badge that turns red when something is wrong is communication. Only the second one belongs.\n\n```tsx\n// WRONG — decoration that doesn't communicate\n<CardHeader className=\"bg-gradient-to-r from-orange-400 to-pink-500 text-white\">\n  <CardTitle>Users</CardTitle>\n</CardHeader>\n\n// RIGHT — surface that lets the content speak\n<CardHeader>\n  <CardTitle className=\"text-sm font-medium text-muted-foreground\">Users</CardTitle>\n</CardHeader>\n```\n\n---\n\n## Summary — The Questions to Ask\n\nBefore generating or modifying any block, run through these:\n\n1. **Is this in the 95%?** Does this element appear in most real dashboards/UIs, or is it a rare specialization?\n2. **What can be removed?** If the block works without it, it probably should.\n3. **What is the user trying to do?** Not \"what does this block contain\" but \"what decision does it help someone make?\"\n4. **Am I building on the foundation or beside it?** Use shadcn/ui primitives. Compose, don't reimplement.\n5. **Would this hold up in production?** Not in a demo. In a real app, used by real people under time pressure.\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/component-patterns.md",
    "content": "# Component Patterns\n\n## Card Structure\n\nStandard grouping pattern: `Card > CardHeader + CardContent`.\n\n```tsx\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\n\n<Card>\n  <CardHeader>\n    <CardTitle className=\"text-sm font-medium\">Section Title</CardTitle>\n  </CardHeader>\n  <CardContent>\n    {/* content */}\n  </CardContent>\n</Card>\n```\n\n## KPI / Stat Cards — Use py-0\n\nStat grid cards use `py-0` so vertical rhythm is controlled by the parent grid, not the card itself.\n\n```tsx\n// CORRECT\n<Card className=\"relative overflow-hidden\">\n  <CardContent className=\"px-4 py-0\">\n    <div className=\"absolute top-0 left-0 h-full w-1 bg-emerald-500\" />\n    <p className=\"text-muted-foreground text-sm\">Active Agents</p>\n    <p className=\"mt-1 text-2xl font-bold text-emerald-700\">4</p>\n  </CardContent>\n</Card>\n\n// WRONG — default py-6 causes excessive padding in stat grids\n<Card>\n  <CardContent className=\"p-4\">\n```\n\n## Sidebar Navigation\n\nWidth: `w-64` (256px). Background: `bg-muted/30`. Right border: `border-r`.\n\n```tsx\n<aside className=\"bg-muted/30 flex h-full w-64 flex-col border-r\">\n  <div className=\"flex items-center gap-2.5 border-b px-5 py-4\">\n    <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-orange-600\">\n      <Bot className=\"h-4 w-4 text-white\" />\n    </div>\n    <span className=\"text-sm font-semibold\">App Name</span>\n  </div>\n  <nav className=\"flex-1 space-y-0.5 p-3\">\n    {NAV_ITEMS.map((item) => (\n      <button\n        key={item.label}\n        className={`flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors ${\n          item.active\n            ? \"bg-background text-foreground shadow-sm\"\n            : \"text-muted-foreground hover:bg-background/60 hover:text-foreground\"\n        }`}\n      >\n        <item.icon className=\"h-4 w-4\" />\n        {item.label}\n      </button>\n    ))}\n  </nav>\n</aside>\n```\n\n## ScrollArea for Overflow\n\nAny list that can overflow must use `ScrollArea` (not `overflow-y-auto` directly).\n\n```tsx\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\n\n<ScrollArea className=\"flex-1\">\n  <div className=\"space-y-2 p-4\">\n    {items.map((item) => <Item key={item.id} {...item} />)}\n  </div>\n</ScrollArea>\n```\n\n## Status Badge with Dot\n\n```tsx\n<div className=\"inline-flex items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium bg-emerald-50 text-emerald-700 border-emerald-200\">\n  <span className=\"h-1.5 w-1.5 rounded-full bg-emerald-500\" />\n  Active\n</div>\n```\n\n## Avatar Fallback Colors\n\nUse orange tones for user/agent avatars:\n```tsx\n<AvatarFallback className=\"bg-orange-100 text-xs font-semibold text-orange-700\">\n  JD\n</AvatarFallback>\n```\n\n## Action Buttons in Tables\n\nSmall ghost buttons for row actions:\n```tsx\n<Button variant=\"ghost\" size=\"sm\" className=\"h-6 px-2 text-xs\">\n  <Eye className=\"mr-1 h-3 w-3\" />\n  View\n</Button>\n```\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/design-brand.md",
    "content": "# Brand & Design Identity Rules\n\n## Primary Accent — Orange\n\nCreative Tim's brand color is **orange**. Always use orange for primary accents, interactive elements, CTAs, and logo marks.\n\n### Correct\n\n```tsx\n// Logo / app icon\n<div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-orange-600\">\n  <Bot className=\"h-4 w-4 text-white\" />\n</div>\n\n// Avatar fallback\n<AvatarFallback className=\"bg-orange-100 text-orange-700\">JD</AvatarFallback>\n\n// Type badge\n<Badge className=\"bg-orange-50 text-orange-700 border-orange-200\">OpenClaw</Badge>\n\n// Active nav item accent\n<span className=\"h-1 w-5 rounded-full bg-orange-500\" />\n```\n\n### Wrong\n\n```tsx\n// DO NOT use violet or purple — signals AI-generated defaults\n<div className=\"bg-violet-600\">\n<Badge className=\"text-purple-700\">\n<span className=\"text-indigo-500\">\n```\n\n**Why:** Purple/violet is the default accent in many AI coding tools. Blocks using these colors look auto-generated and break visual consistency with the Creative Tim brand.\n\n## Status Color System\n\n| State | Tailwind Color |\n|-------|---------------|\n| Active / Success | `emerald` |\n| Warning / In-Review / Paused | `amber` |\n| Error / Stopped / Critical | `red` |\n| Info / In-Progress | `blue` |\n| Neutral / Backlog | `slate` |\n\n## Surface & Border Conventions\n\n- **Sidebar / subtle backgrounds:** `bg-muted/30`\n- **Card backgrounds:** default `bg-background` (Card component handles this)\n- **Borders:** use `border` theme token — never `border-gray-200` or hardcoded colors\n- **Text:** `text-foreground` (primary), `text-muted-foreground` (secondary/captions)\n\n## Do Not Use Inline Styles\n\n```tsx\n// WRONG\n<div style={{ color: '#ff6b35' }}>\n\n// CORRECT\n<div className=\"text-orange-500\">\n```\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/hydration-safety.md",
    "content": "# Hydration Safety Rules\n\n## Never Use Date in useState Initializer\n\n`new Date()`, `Date.now()`, and `toLocaleTimeString()` produce different values on the server vs. the client, causing React to throw a hydration mismatch error.\n\n### Wrong\n\n```tsx\n// Hydration error: server timestamp != client timestamp\nconst [events, setEvents] = useState(() => [\n  { id: \"1\", timestamp: new Date().toLocaleTimeString() },\n])\n\nconst [time, setTime] = useState(new Date().toLocaleTimeString())\n\nconst [id, setId] = useState(() => Date.now().toString())\n```\n\n### Correct\n\nUse static/hardcoded strings for SSR-safe initial state. Move live values inside `useEffect` or `setInterval`.\n\n```tsx\n// Static initial timestamps — identical on server and client\nconst INITIAL_TIMESTAMPS = [\"10:30:00\", \"10:30:04\", \"10:30:08\"]\n\nconst [events, setEvents] = useState(() =>\n  SEED_DATA.slice(0, 3).map((item, i) => ({\n    ...item,\n    id: `init-${i}`,\n    timestamp: INITIAL_TIMESTAMPS[i],\n  }))\n)\n\n// Pure function, safe to call client-side only\nfunction nowTimeString() {\n  const d = new Date()\n  return [d.getHours(), d.getMinutes(), d.getSeconds()]\n    .map((n) => String(n).padStart(2, \"0\"))\n    .join(\":\")\n}\n\n// Live updates only in useEffect (never runs on server)\nuseEffect(() => {\n  const interval = setInterval(() => {\n    setEvents((prev) => [\n      ...prev.slice(-49),\n      {\n        id: `evt-${Date.now()}`,\n        timestamp: nowTimeString(),\n        // ...rest of event\n      },\n    ])\n  }, 2000)\n  return () => clearInterval(interval)\n}, [])\n```\n\n## Locale-Dependent Formatting\n\n`toLocaleString()`, `toLocaleDateString()`, `toLocaleTimeString()` are locale-dependent — the server locale may differ from the browser locale.\n\n```tsx\n// WRONG — locale mismatch\n<span>{new Date(item.createdAt).toLocaleTimeString()}</span>\n\n// CORRECT — use fixed format string or static value\n<span>{item.createdAt}</span>  // pre-formatted string, e.g. \"2 hours ago\"\n```\n\n## suppressHydrationWarning\n\nOnly use `suppressHydrationWarning` when the mismatch is **intentional** (e.g. a live clock that is always slightly different):\n\n```tsx\n<time suppressHydrationWarning>{liveTime}</time>\n```\n\nDo not use it to silence bugs — fix the root cause instead.\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/install-blocks.md",
    "content": "# Installing Creative Tim UI Blocks\n\n## Summary\n\nTwo CLI methods install blocks and all their shadcn/ui dependencies automatically.\n\n## Method 1 — Creative Tim CLI (recommended)\n\n```bash\nnpx @creative-tim/ui@latest add <block-name>\n```\n\nThe package also exposes two named binaries you can use directly once installed globally:\n```bash\nnpx creative-tim-ui add <block-name>\n# or\nnpx creative-tim add <block-name>\n```\n\n### Examples\n\n```bash\nnpx @creative-tim/ui@latest add hero-01\nnpx @creative-tim/ui@latest add ai-agent-activity-01\nnpx @creative-tim/ui@latest add agent-management-list-01\nnpx @creative-tim/ui@latest add pricing-01\nnpx @creative-tim/ui@latest add testimonials-03\n```\n\n### Initialize a new project\n\n```bash\nnpx @creative-tim/ui@latest init\n```\n\n### What happens\n\n1. Fetches `https://www.creative-tim.com/ui/r/<block-name>.json`\n2. Copies the component source into your project\n3. Runs `npx shadcn@latest add` for each `registryDependency` (button, card, badge, etc.)\n\n## Method 2 — shadcn CLI\n\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/<block-name>.json\n```\n\n### Examples\n\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/hero-01.json\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/ai-agent-activity-01.json\n```\n\n## Block Discovery\n\n- Browse all blocks: https://www.creative-tim.com/ui\n- AI-readable index: https://www.creative-tim.com/ui/llms.txt\n- Latest blocks: https://www.creative-tim.com/ui/blocks/latest\n\nIndividual block JSON:\n```\nhttps://www.creative-tim.com/ui/r/<block-name>.json\n```\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/pro-api-key.md",
    "content": "# PRO Blocks & API Key Setup\n\n## Summary\n\nPRO blocks require a Creative Tim API key. Get yours at https://www.creative-tim.com/ui/dashboard → **API Keys** section.\n\nAPI key format: `pk_live_` prefix (e.g. `pk_live_a09e7677...`)\n\n## Authentication Methods\n\n### Method 1 — Environment Variable (recommended for development)\n\n```bash\n# macOS/Linux\nexport CREATIVE_TIM_UI_API_KEY=pk_live_your_key\n\n# Inline (one-off)\nCREATIVE_TIM_UI_API_KEY=pk_live_your_key npx @creative-tim/ui@latest add <block>\n\n# .env.local (Next.js / Vite) — never commit this file\nCREATIVE_TIM_UI_API_KEY=pk_live_xxxxxxxxxxxxxxxx\n```\n\nThen install normally — the CLI picks up the env var automatically:\n```bash\nnpx @creative-tim/ui@latest add <pro-block-name>\n```\n\nOr pass it explicitly:\n```bash\nnpx @creative-tim/ui@latest add <pro-block-name> --api-key $CREATIVE_TIM_UI_API_KEY\n```\n\n### Method 2 — components.json (recommended for teams / CI/CD)\n\nAdd a `registries` entry to `components.json`:\n\n```json\n{\n  \"registries\": {\n    \"@creative-tim\": {\n      \"url\": \"https://www.creative-tim.com/ui/r/{name}.json\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${CREATIVE_TIM_UI_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\nTeam members each set `CREATIVE_TIM_UI_API_KEY` in their own shell / CI secrets.\n\n### Method 3 — shadcn CLI\n\nThe same `components.json` config above works with the shadcn CLI:\n```bash\nnpx shadcn@latest add https://www.creative-tim.com/ui/r/<pro-block>.json\n```\n\n## Detecting PRO Blocks\n\nPRO blocks are marked on the website. In registry JSON they include `\"pro\": true`.\n"
  },
  {
    "path": "skills/creative-tim-ui/rules/tailwind-rules.md",
    "content": "# Tailwind v4 Rules\n\n## No Arbitrary Values\n\nThe project uses Tailwind v4 with a continuous numeric scale. Never use bracket arbitrary values.\n\n### Wrong\n\n```tsx\n<div className=\"h-[380px] w-[280px] max-w-[85%] min-w-[80px]\">\n<div className=\"gap-[14px] p-[18px] text-[10px] text-[11px]\">\n<div className=\"[@media(min-width:640px)]:grid-cols-2\">\n```\n\n### Correct\n\n```tsx\n<div className=\"h-96 w-72 max-w-sm\">          // h-96=384px, w-72=288px\n<div className=\"gap-3.5 p-4 text-xs\">          // gap-3.5=14px, p-4=16px\n<div className=\"sm:grid-cols-2\">\n```\n\n## Numeric Scale Reference\n\n### Height / Width\n```\nh-4  = 16px    h-5  = 20px    h-6  = 24px    h-7  = 28px\nh-8  = 32px    h-9  = 36px    h-10 = 40px    h-11 = 44px\nh-12 = 48px    h-14 = 56px    h-16 = 64px    h-20 = 80px\nh-24 = 96px    h-32 = 128px   h-40 = 160px   h-48 = 192px\nh-56 = 224px   h-64 = 256px   h-72 = 288px   h-80 = 320px\nh-96 = 384px\n```\n\n### Spacing (gap / padding / margin)\n```\n0.5=2px  1=4px  1.5=6px  2=8px  2.5=10px  3=12px  3.5=14px\n4=16px   5=20px  6=24px   7=28px  8=32px   9=36px  10=40px\n12=48px  14=56px  16=64px\n```\n\n### Max Width Semantic Utilities\n```\nmax-w-xs  = 320px     max-w-sm  = 384px\nmax-w-md  = 448px     max-w-lg  = 512px\nmax-w-xl  = 576px     max-w-2xl = 672px\nmax-w-3xl = 768px     max-w-4xl = 896px\nmax-w-5xl = 1024px    max-w-6xl = 1152px\nmax-w-7xl = 1280px\n```\n\n## Typography Scale\n\n```\ntext-xs   = 12px   (avatar initials, badge pills, mono timestamps, tiny buttons)\ntext-sm   = 14px   (body text, table cells, descriptions — DEFAULT)\ntext-base = 16px   (larger body, card titles)\ntext-lg   = 18px   (section headings)\ntext-xl   = 20px   (page headings)\ntext-2xl  = 24px   (stat values, hero text)\n```\n\n**Rule:** `text-sm` is the minimum for readable content. Use `text-xs` only for tiny decorative elements.\n\n## Responsive Breakpoints\n\nUse only standard Tailwind breakpoints:\n```\nsm: 640px    md: 768px    lg: 1024px    xl: 1280px    2xl: 1536px\n```\n\nNever use custom media query syntax.\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\": [\n    \"NODE_ENV\"\n  ],\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\n        \"^build\"\n      ],\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\": [\n        \"dist/**\",\n        \".next/**\"\n      ]\n    },\n    \"preview\": {\n      \"env\": [\n        \"NEXT_PUBLIC_APP_URL\"\n      ],\n      \"outputs\": [\n        \"dist/**\",\n        \".next/**\"\n      ]\n    },\n    \"start\": {\n      \"dependsOn\": [\n        \"^build\"\n      ]\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      \"cache\": false,\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  }\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"
  }
]