[
  {
    "path": ".github/pull_request_template.md",
    "content": "## I have read the [CONTRIBUTING.md](https://github.com/pqoqubbw/icons/blob/main/CONTRIBUTING.md) file.\n\nYES/NO\n\n## What kind of change does this PR introduce?\n\nBug fix, feature, docs update, ...\n\n## What is the new behavior?\n\nFeel free to include screenshots if it includes visual changes.\n\n## Demo\n\nPlease attach a short video demo of the changes.\n\n## Additional context\n\nAdd any other context or screenshots.\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  pull_request:\n    branches: [main]\n  push:\n    branches: [main]\n\njobs:\n  check-imports:\n    name: Check Imports\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup pnpm\n        uses: pnpm/action-setup@v4\n        with:\n          version: 9\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n          cache: 'pnpm'\n\n      - name: Install dependencies\n        run: pnpm install --frozen-lockfile\n\n      - name: Check imports\n        run: pnpm check-imports\n\n  check-duplicates:\n    name: Check Duplicates\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup pnpm\n        uses: pnpm/action-setup@v4\n        with:\n          version: 9\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n          cache: 'pnpm'\n\n      - name: Install dependencies\n        run: pnpm install --frozen-lockfile\n\n      - name: Check duplicates\n        run: pnpm check-duplicates\n"
  },
  {
    "path": ".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_app/*\n\npackage-lock.json\nyarn.lock\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n.cursor\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n# proprietary fonts (not licensed for public distribution)\n# fonts are downloaded at build time from Vercel Blob Storage\n/fonts/*.woff\n/fonts/*.woff2\n/fonts/*.ttf\n/fonts/*.otf\n/fonts/*EULA.pdf\n/fonts/Grilli-Type-EULA.pdf\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"cSpell.words\": [\"Downvote\", \"LUCIDE\", \"nuqs\", \"pqoqubbw\", \"Upvote\"],\n  \"typescript.tsdk\": \"node_modules/typescript/lib\",\n  \"css.lint.unknownAtRules\": \"ignore\",\n  \"editor.defaultFormatter\": \"biomejs.biome\",\n  \"editor.formatOnSave\": true,\n  \"biome.enabled\": true,\n  \"editor.codeActionsOnSave\": {\n    \"source.organizeImports.biome\": \"explicit\",\n    \"source.fixAll.biome\": \"explicit\"\n  },\n  \"[typescript]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"[typescriptreact]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"[javascript]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"[javascriptreact]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"[json]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"[jsonc]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  }\n}\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\n**IMPORTANT:** This project only accepts contributions based on [lucide icons](https://lucide.dev/). Pull requests containing custom icons or icons from other icon packs will be closed.\n\n**Animation Quality:** Pull requests with simple path length animations (`strokeDasharray`/`strokeDashoffset` \"drawing\" effect) will likely be rejected. This type of animation looks generic and doesn't add meaningful interaction. We're looking for creative, purposeful animations that enhance the icon's meaning.\n\nWe welcome contributions to our project! Please follow these steps to contribute:\n\n1. Fork the repository on GitHub.\n\n2. Clone your forked repository to your local machine:\n\n   ```\n   git clone https://github.com/pqoqubbw/icons.git\n   ```\n\n3. Navigate to the project directory:\n\n   ```\n   cd icons\n   ```\n\n4. Create a new branch for your feature or bug fix:\n\n   ```\n   git checkout -b your-branch-name\n   ```\n\n5. Install the project dependencies:\n\n   ```\n   pnpm install\n   ```\n\n6. **Create your animated icon:**\n\n   a. Navigate to the `/icons/` directory and create a new file with the icon name in lowercase, using hyphens for spaces (following Lucide naming convention):\n\n   ```\n   /icons/[icon-name].tsx\n   ```\n\n   For example: `heart-icon.tsx`, `arrow-up.tsx`, `user-profile.tsx`\n\n   b. Copy and paste the following template code into your new file:\n\n   ```tsx\n   'use client';\n\n   import { useAnimation } from 'motion/react';\n   import type { HTMLAttributes } from 'react';\n   import { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\n   import { cn } from '@/lib/utils';\n\n   export interface [YourIconName]IconHandle {\n     startAnimation: () => void;\n     stopAnimation: () => void;\n   }\n\n   interface [YourIconName]IconProps extends HTMLAttributes<HTMLDivElement> {\n     size?: number;\n   }\n\n   const [YourIconName]Icon = forwardRef<[YourIconName]IconHandle, [YourIconName]IconProps>(\n     ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n       const controls = useAnimation();\n       const isControlledRef = useRef(false);\n\n       useImperativeHandle(ref, () => {\n         isControlledRef.current = true;\n         return {\n           startAnimation: () => controls.start('animate'),\n           stopAnimation: () => controls.start('normal'),\n         };\n       });\n\n       const handleMouseEnter = useCallback(\n         (e: React.MouseEvent<HTMLDivElement>) => {\n           if (!isControlledRef.current) {\n             controls.start('animate');\n           } else {\n             onMouseEnter?.(e);\n           }\n         },\n         [controls, onMouseEnter]\n       );\n\n       const handleMouseLeave = useCallback(\n         (e: React.MouseEvent<HTMLDivElement>) => {\n           if (!isControlledRef.current) {\n             controls.start('normal');\n           } else {\n             onMouseLeave?.(e);\n           }\n         },\n         [controls, onMouseLeave]\n       );\n\n       return (\n         <div\n           className={cn(className)}\n           onMouseEnter={handleMouseEnter}\n           onMouseLeave={handleMouseLeave}\n           {...props}\n         >\n           <svg\n             xmlns=\"http://www.w3.org/2000/svg\"\n             width={size}\n             height={size}\n             viewBox=\"0 0 24 24\"\n             fill=\"none\"\n             stroke=\"currentColor\"\n             strokeWidth=\"2\"\n             strokeLinecap=\"round\"\n             strokeLinejoin=\"round\"\n           >\n             {/* your svg code here */}\n           </svg>\n         </div>\n       );\n     }\n   );\n\n   [YourIconName]Icon.displayName = '[YourIconName]Icon';\n\n   export { [YourIconName]Icon };\n   ```\n\n   c. Replace `[YourIconName]` with your icon name in **PascalCase** (e.g., `HeartIcon`, `ArrowUp`, `UserProfile`).\n\n   d. Find your icon on [lucide.dev](https://lucide.dev/), copy the SVG path elements, and replace the `{/* your svg code here */}` comment with the actual SVG content.\n\n   e. Add your animation logic using Framer Motion's `motion` components and the `controls` object to create engaging hover animations.\n\n7. **Add your icon to the icon list:**\n\n   a. Open the `icons/index.tsx` file.\n\n   b. Import your new icon component at the top of the file:\n\n   ```tsx\n   import { [YourIconName]Icon } from './[icon-name]';\n   ```\n\n   c. Add your icon to the `ICON_LIST` array at the very beginning (top) of the list in this format:\n\n   ```tsx\n   {\n     name: '[icon-name]',\n     icon: [YourIconName]Icon,\n     keywords: ['keyword1', 'keyword2', 'keyword3'],\n   },\n   ```\n\n   For example:\n\n   ```tsx\n   {\n     name: 'smile-plus',\n     icon: SmilePlusIcon,\n     keywords: ['smile', 'plus', 'emotion', 'face'],\n   },\n   ```\n\n   Note: Use the exact icon name, keywords, and other data from the [lucide.dev](https://lucide.dev/) website for your specific icon.\n\n8. **Update the registry (for new icons):**\n\n   After creating a new icon, you need to update the registry so it can be used with the shadcn CLI:\n\n   ```\n   pnpm run gen-cli\n   ```\n\n   This command will automatically sync your new icon to the registry and build the necessary JSON files.\n\n9. Build the project to check for errors:\n\n```\npnpm build\n```\n\n10. Test the application to ensure your changes work as expected:\n\n    ```\n    pnpm lint\n    ```\n\n11. Commit your changes:\n\n    ```\n    git commit -m \"Add [icon-name] animated icon\"\n    ```\n\n12. Push your changes to your fork:\n\n    ```\n    git push origin your-branch-name\n    ```\n\n13. Open a pull request on the original repository with a clear description of the icon you've added and the animation you've implemented.\n\nThank you for contributing to our project!\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2024-2026 pqoqubbw\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": "<a href=\"https://vercel.com/oss\">\n  <img alt=\"Vercel OSS Program\" src=\"https://vercel.com/oss/program-badge.svg\" />\n</a>\n<br />\n\n## `lucide-animated` is beautifully crafted animated icons.\n![preview](./public/og.png)\n\n**Demo** → [lucide-animated](https://lucide-animated.com)\n\n**Sponsorship** → [lucide-animated/sponsorship](https://lucide-animated.com/sponsorship)\n\n#### Svelte icons: [movingicons.dev](https://www.movingicons.dev/) by [@jis3r](https://github.com/jis3r)\n#### Vue icons: [imfenghuang.github.io/icons](https://imfenghuang.github.io/icons/) by [@imfenghuang](https://github.com/imfenghuang)\n#### Angular icons: [ajitzero/animated-icons](https://github.com/ajitzero/animated-icons) by [@ajitzero](https://github.com/ajitzero)\n#### Flutter icons: [flutter_lucide_animated](https://pub.dev/packages/flutter_lucide_animated) by [@ravikovind](https://github.com/ravikovind)\n\n\n## Contributing\n\nWe welcome contributions to `lucide-animated`! Please read our [contributing guidelines](CONTRIBUTING.md) on how to submit improvements and new icons.\n\n## Terms of Use\n\nFeel free to use these components in personal and commercial projects. However, while the tutorials and demos are available for your use as-is, they cannot be redistributed or resold. Let’s keep things fair and respect each other’s work.\n\nIf you have any questions or just want to say hi, feel free to reach out to me on X 👉 [@pqoqubbw](https://x.com/pqoqubbw).\n\n## Notes\n\nThis project is a work in progress, and i'm continuously working to improve and expand this collection. I’d love to hear your feedback or see your contributions as the project evolves!\n"
  },
  {
    "path": "actions/get-icon-content.ts",
    "content": "\"use server\";\n\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nconst ICONS_DIRECTORY = \"icons\";\n\nexport async function getIconContent(name: string): Promise<string> {\n  const iconsDir = path.join(process.cwd(), ICONS_DIRECTORY);\n  const content = await fs.readFile(\n    path.join(iconsDir, `${name}.tsx`),\n    \"utf-8\"\n  );\n  return content;\n}\n"
  },
  {
    "path": "actions/get-icons.ts",
    "content": "import { ICON_LIST } from \"@/icons\";\n\ntype Icon = {\n  name: string;\n  keywords: string[];\n};\n\nconst getIcons = (): Icon[] => {\n  return ICON_LIST.map(({ name, keywords }) => ({\n    name,\n    keywords,\n  }));\n};\n\nexport { getIcons };\nexport type { Icon };\n"
  },
  {
    "path": "actions/open-in-v0.ts",
    "content": "\"use server\";\n\nimport { SITE } from \"@/constants\";\nimport { getIconForV0 } from \"@/helpers/get-icon-for-v0\";\n\nexport async function openInV0Action(name: string) {\n  try {\n    const template = await getIconForV0(name);\n\n    if (!template) {\n      throw new Error(`Icon ${name} not found.`);\n    }\n\n    const payload = {\n      ...template,\n      meta: {\n        project: SITE.NAME,\n        author: SITE.AUTHOR.NAME,\n        url: SITE.URL,\n      },\n      source: {\n        title: SITE.NAME,\n        url: SITE.URL,\n        file: `${name}.tsx`,\n      },\n    };\n\n    const response = await fetch(\"https://v0.dev/chat/api/templates/open\", {\n      method: \"POST\",\n      body: JSON.stringify({\n        version: 3,\n        template: payload,\n      }),\n      headers: {\n        \"x-v0-edit-secret\": process.env.V0_API_KEY ?? \"\",\n        \"Content-Type\": \"application/json\",\n      },\n    });\n\n    if (!response.ok) {\n      if (response.status === 403) {\n        throw new Error(\"Unauthorized\");\n      }\n\n      console.error(\n        \"Eror fetching /api/templates/open:\",\n        await response.text()\n      );\n\n      throw new Error(\"Something went wrong. Please try again later.\");\n    }\n\n    const result = await response.json();\n\n    return {\n      error: null,\n      url: result.url,\n    };\n  } catch (error) {\n    console.error(error);\n\n    if (error instanceof Error) {\n      return { error: error.message, url: null };\n    }\n\n    return { error: \"Something went wrong. Please try again later.\", url: \"\" };\n  }\n}\n"
  },
  {
    "path": "app/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n@plugin \"@toolwind/corner-shape\";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --color-primary: var(--primary);\n  --color-secondary: var(--secondary);\n\n  --radius-lg: var(--radius);\n  --radius-md: calc(var(--radius) - 2px);\n  --radius-sm: calc(var(--radius) - 4px);\n}\n\n:root {\n  --background: #f2f2f2;\n  --foreground: #000;\n  --primary: #ee4822;\n  --secondary: #3f3f47;\n\n  --radius: 0.4rem;\n}\n\n.dark {\n  --background: #171717;\n  --foreground: #fff;\n  --secondary-bg: #262626;\n  --secondary: #d4d4d4;\n}\n\n@layer base {\n  * {\n    scrollbar-width: thin;\n    scrollbar-color: var(--color-neutral-700) transparent;\n  }\n\n  html {\n    scroll-behavior: smooth;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  html[data-base-ui-scroll-locked] {\n    scroll-behavior: auto;\n  }\n\n  body {\n    background-color: var(--background);\n    color: var(--foreground);\n    overscroll-behavior: none;\n  }\n\n  ::selection {\n    background-color: var(--primary);\n    color: white;\n  }\n\n  .root {\n    isolation: isolate;\n    display: flex;\n    flex-direction: column;\n    min-height: 100vh;\n  }\n\n  ::-webkit-scrollbar {\n    width: 2px;\n  }\n\n  ::-webkit-scrollbar-track {\n    background: transparent;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    background: var(--color-neutral-700);\n    border-radius: 6px;\n  }\n\n  kbd {\n    @apply flex size-5 items-center justify-center rounded-[4px] select-none;\n    @apply font-sans text-xs uppercase;\n    @apply bg-neutral-200 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-300;\n    @apply cursor-pointer transition-transform duration-100 active:scale-95;\n  }\n}\n"
  },
  {
    "path": "app/icon.tsx",
    "content": "import { ImageResponse } from \"next/og\";\n\nexport const runtime = \"edge\";\n\nexport const size = {\n  width: 31,\n  height: 30,\n};\n\nexport const contentType = \"image/png\";\n\nexport default function Icon() {\n  return new ImageResponse(\n    <svg\n      fill=\"none\"\n      height=\"30\"\n      viewBox=\"0 0 31 30\"\n      width=\"31\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M30.8574 13.4209H25.0322V24.8223H17.4414L17.4961 26.2822C17.9462 26.0015 18.5219 25.8223 19.1543 25.7988C20.6429 25.744 21.8818 26.5719 21.9219 27.6484C21.96 28.6881 20.8658 29.576 19.4502 29.6855V29.6924L17.5859 29.7617C17.043 29.7816 16.5855 29.3565 16.5654 28.8135L16.5303 27.8643H16.5312C16.531 27.8588 16.5305 27.8531 16.5303 27.8477C16.5292 27.8173 16.5324 27.787 16.5332 27.7568L16.4229 24.8223H13.2686L13.1494 27.9941C13.1502 28.0242 13.1534 28.0546 13.1523 28.085C13.1521 28.0902 13.1517 28.0963 13.1514 28.1016H13.1523L13.1172 29.0518C13.097 29.5946 12.6395 30.0188 12.0967 29.999L10.2324 29.9297V29.9238C8.81666 29.8144 7.7226 28.9265 7.76074 27.8867C7.80082 26.8101 9.03966 25.9813 10.5283 26.0361C11.1608 26.0596 11.7364 26.2396 12.1865 26.5205L12.25 24.8223H4.72266L5.2832 13.4209H0L14.0205 0L30.8574 13.4209Z\"\n        fill=\"#EE4822\"\n      />\n      <circle cx=\"10.4573\" cy=\"14.5408\" fill=\"white\" r=\"2.62989\" />\n      <circle cx=\"17.5155\" cy=\"14.5408\" fill=\"white\" r=\"2.62989\" />\n      <circle cx=\"10.6948\" cy=\"14.88\" fill=\"black\" r=\"0.763516\" />\n      <circle cx=\"17.0064\" cy=\"14.88\" fill=\"black\" r=\"0.763516\" />\n    </svg>,\n    {\n      ...size,\n    }\n  );\n}\n"
  },
  {
    "path": "app/icons/[slug]/icon-card.tsx",
    "content": "\"use client\";\n\nimport { useMemo, useRef } from \"react\";\nimport type { Icon } from \"@/actions/get-icons\";\n\nimport { Card, CardActions } from \"@/components/card\";\nimport { ICON_LIST } from \"@/icons\";\n\ntype Props = {\n  icon: Icon;\n};\n\nconst IconCard = ({ icon }: Props) => {\n  const animationRef = useRef<{\n    startAnimation: () => void;\n    stopAnimation: () => void;\n  }>(null);\n\n  const IconComponent = useMemo(() => {\n    return ICON_LIST.find((item) => item.name === icon.name)?.icon;\n  }, [icon.name]);\n\n  if (!IconComponent) {\n    return null;\n  }\n\n  return (\n    <Card\n      animationRef={animationRef}\n      className=\"w-full min-[880px]:w-auto\"\n      onMouseEnter={() => animationRef.current?.startAnimation()}\n      onMouseLeave={() => animationRef.current?.stopAnimation()}\n    >\n      <IconComponent\n        className=\"flex items-center justify-center [&>svg]:size-12 [&>svg]:text-neutral-800 dark:[&>svg]:text-neutral-100\"\n        ref={animationRef}\n      />\n      <CardActions alwaysVisible name={icon.name} />\n    </Card>\n  );\n};\n\nexport { IconCard };\n"
  },
  {
    "path": "app/icons/[slug]/page.tsx",
    "content": "import { ArrowLeftIcon } from \"lucide-react\";\nimport type { Metadata } from \"next\";\nimport Link from \"next/link\";\nimport { notFound } from \"next/navigation\";\n\nimport { CliBlock } from \"@/components/cli-block\";\nimport { LINK, SITE } from \"@/constants\";\nimport { ICON_LIST } from \"@/icons\";\nimport { kebabToPascalCase } from \"@/lib/kebab-to-pascal\";\nimport { BreadcrumbJsonLd } from \"@/seo/json-ld\";\nimport { baseMetadata } from \"@/seo/metadata\";\nimport { IconCard } from \"./icon-card\";\nimport { SimilarIcons } from \"./similar-icons\";\n\ntype Props = {\n  params: Promise<{ slug: string }>;\n};\n\nconst getIconBySlug = (slug: string) => {\n  return ICON_LIST.find((icon) => icon.name === slug);\n};\n\nexport const generateStaticParams = () => {\n  return ICON_LIST.map((icon) => ({\n    slug: icon.name,\n  }));\n};\n\nexport const generateMetadata = async ({\n  params,\n}: Props): Promise<Metadata> => {\n  const { slug } = await params;\n  const icon = getIconBySlug(slug);\n\n  if (!icon) {\n    return {\n      title: \"Icon Not Found\",\n    };\n  }\n\n  const pascalName = kebabToPascalCase(slug);\n  const [keyword] = pascalName.split(\"Icon\");\n\n  const title = `${keyword} Icon - Animated React Icon`;\n  const description = `Free animated ${icon.name} icon for React. Smooth Motion-powered animation, copy-paste ready. Keywords: ${icon.keywords.slice(0, 5).join(\", \")}.`;\n\n  return {\n    title,\n    description,\n    alternates: {\n      canonical: `/icons/${slug}`,\n    },\n    openGraph: {\n      ...baseMetadata.openGraph,\n      title: `${pascalName} | ${SITE.NAME}`,\n      description,\n      url: `${SITE.URL}/icons/${slug}`,\n      type: \"website\",\n    },\n    twitter: {\n      ...baseMetadata.twitter,\n      title: `${pascalName} | ${SITE.NAME}`,\n      description,\n    },\n    keywords: [\n      ...icon.keywords,\n      \"animated icon\",\n      \"react icon\",\n      \"motion icon\",\n      `${icon.name} animation`,\n      `${icon.name} react`,\n    ],\n  };\n};\n\nconst IconJsonLd = ({ icon }: { icon: (typeof ICON_LIST)[number] }) => {\n  const pascalName = kebabToPascalCase(icon.name);\n\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"SoftwareSourceCode\",\n    name: pascalName,\n    description: `Animated ${icon.name} icon component for React`,\n    codeRepository: LINK.GITHUB,\n    programmingLanguage: [\"TypeScript\", \"React\"],\n    license: LINK.LICENSE,\n    isPartOf: {\n      \"@type\": \"SoftwareSourceCode\",\n      name: SITE.NAME,\n      url: SITE.URL,\n    },\n    keywords: icon.keywords.join(\", \"),\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst IconPage = async ({ params }: Props) => {\n  const { slug } = await params;\n  const icon = getIconBySlug(slug);\n\n  if (!icon) {\n    notFound();\n  }\n\n  const pascalName = kebabToPascalCase(slug);\n\n  return (\n    <>\n      <BreadcrumbJsonLd\n        items={[\n          { name: \"Home\", url: SITE.URL },\n          { name: \"Icons\", url: `${SITE.URL}/icons` },\n          { name: pascalName, url: `${SITE.URL}/icons/${slug}` },\n        ]}\n      />\n      <IconJsonLd icon={icon} />\n\n      <section className=\"mx-auto mt-12 flex w-full max-w-[1292px] flex-col items-start px-4 min-[880px]:my-[60px]\">\n        <Link\n          className=\"mb-8 flex items-center gap-2 font-sans text-secondary text-sm transition-[color] duration-100 hover:text-primary focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-2\"\n          href=\"/\"\n        >\n          <ArrowLeftIcon className=\"size-4\" />\n          Back to all icons\n        </Link>\n\n        <div className=\"flex w-full flex-col gap-6 min-[880px]:flex-row min-[880px]:items-center\">\n          <IconCard icon={icon} />\n\n          <div className=\"flex h-full flex-col gap-1\">\n            <h1 className=\"font-sans text-[28px] min-[640px]:text-[36px]\">\n              {pascalName}\n            </h1>\n            <p className=\"font-mono text-secondary text-sm\">\n              Animated {icon.name.replace(/-/g, \" \")} icon for React\n            </p>\n            <CliBlock\n              className=\"mt-7 hidden px-0 min-[880px]:flex\"\n              staticIconName={slug}\n            />\n          </div>\n        </div>\n\n        <CliBlock\n          className=\"mt-8 flex px-0 min-[880px]:hidden\"\n          staticIconName={slug}\n        />\n\n        <div className=\"mt-12\">\n          <h2 className=\"mb-3 font-sans text-xl\">Keywords</h2>\n          <div className=\"flex flex-wrap gap-2\">\n            {icon.keywords.map((keyword, index) => (\n              <span\n                className=\"supports-[corner-shape:squircle]:corner-squircle rounded-[12px] bg-neutral-200 px-3 py-1 font-mono text-secondary text-sm supports-[corner-shape:squircle]:rounded-[20px] dark:bg-[#262626]\"\n                key={`${keyword}-${index}`}\n              >\n                {keyword}\n              </span>\n            ))}\n          </div>\n        </div>\n\n        <SimilarIcons currentIcon={icon} />\n      </section>\n    </>\n  );\n};\n\nexport default IconPage;\n"
  },
  {
    "path": "app/icons/[slug]/similar-icons.tsx",
    "content": "\"use client\";\n\nimport Link from \"next/link\";\nimport { useMemo, useRef } from \"react\";\nimport type { Icon } from \"@/actions/get-icons\";\n\nimport { Card, CardTitle } from \"@/components/card\";\nimport { ICON_LIST } from \"@/icons\";\n\ntype Props = {\n  currentIcon: Icon;\n};\n\nconst ICON_MAP = new Map(ICON_LIST.map((item) => [item.name, item.icon]));\n\nconst SimilarIconItem = ({\n  icon,\n  Icon,\n}: {\n  icon: Icon;\n  Icon: React.ElementType | undefined;\n}) => {\n  const animationRef = useRef<{\n    startAnimation: () => void;\n    stopAnimation: () => void;\n  }>(null);\n\n  if (!Icon) {\n    return null;\n  }\n\n  return (\n    <Link\n      className=\"focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-2\"\n      href={`/icons/${icon.name}`}\n    >\n      <Card\n        animationRef={animationRef}\n        className=\"pb-[50px]\"\n        onMouseEnter={() => animationRef.current?.startAnimation()}\n        onMouseLeave={() => animationRef.current?.stopAnimation()}\n      >\n        <Icon\n          className=\"flex items-center justify-center [&>svg]:size-10 [&>svg]:text-neutral-800 dark:[&>svg]:text-neutral-100\"\n          ref={animationRef}\n        />\n        <CardTitle>{icon.name}</CardTitle>\n      </Card>\n    </Link>\n  );\n};\n\nconst SimilarIcons = ({ currentIcon }: Props) => {\n  const similarIcons = useMemo(() => {\n    const currentKeywords = new Set(currentIcon.keywords);\n\n    const scored = ICON_LIST.filter((icon) => icon.name !== currentIcon.name)\n      .map((icon) => {\n        const sharedKeywords = icon.keywords.filter((kw) =>\n          currentKeywords.has(kw)\n        ).length;\n        return { icon, score: sharedKeywords };\n      })\n      .filter((item) => item.score > 0)\n      .sort((a, b) => b.score - a.score)\n      .slice(0, 6);\n\n    return scored.map((item) => item.icon);\n  }, [currentIcon]);\n\n  if (similarIcons.length === 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"mt-12 w-full\">\n      <h2 className=\"mb-4 font-sans text-xl\">Similar Icons</h2>\n      <div className=\"grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-[3px]\">\n        {similarIcons.map((icon) => (\n          <SimilarIconItem\n            Icon={ICON_MAP.get(icon.name) ?? undefined}\n            icon={icon}\n            key={icon.name}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport { SimilarIcons };\n"
  },
  {
    "path": "app/layout.tsx",
    "content": "import type { Viewport } from \"next\";\nimport localFont from \"next/font/local\";\n\nimport \"./globals.css\";\nimport { CircleXIcon, TriangleAlertIcon } from \"lucide-react\";\nimport { Geist, Geist_Mono } from \"next/font/google\";\nimport { NuqsAdapter } from \"nuqs/adapters/next/app\";\nimport { Toaster } from \"sonner\";\n\nimport { Analytics } from \"@/components/analytics\";\nimport { Footer } from \"@/components/footer\";\nimport { Header } from \"@/components/header\";\nimport { PackageNameProvider } from \"@/providers/package-name\";\nimport { ThemeProvider } from \"@/providers/theme\";\nimport { JsonLdScripts } from \"@/seo/json-ld\";\nimport { baseMetadata } from \"@/seo/metadata\";\n\nconst andaleMonoLocal = localFont({\n  src: \"../fonts/ANDALEMO.woff\",\n  variable: \"--font-mono\",\n  display: \"swap\",\n});\n\nconst gtCinetypeLocal = localFont({\n  src: \"../fonts/GT-Cinetype-Regular.woff\",\n  variable: \"--font-sans\",\n  display: \"swap\",\n  weight: \"400\",\n});\n\nconst geistMono = Geist_Mono({\n  subsets: [\"latin\"],\n  variable: \"--font-mono\",\n  display: \"swap\",\n});\n\nconst geist = Geist({\n  subsets: [\"latin\"],\n  variable: \"--font-sans\",\n  display: \"swap\",\n});\n\nconst useProductionFonts =\n  process.env.NODE_ENV === \"production\" ||\n  process.env.USE_PRODUCTION_FONTS === \"true\";\n\nconst andaleMono = useProductionFonts ? andaleMonoLocal : geistMono;\nconst gtCinetype = useProductionFonts ? gtCinetypeLocal : geist;\n\nexport const metadata = baseMetadata;\n\nexport const viewport: Viewport = {\n  width: \"device-width\",\n  initialScale: 1,\n  userScalable: false,\n  maximumScale: 1,\n  minimumScale: 1,\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html\n      className={`${andaleMono.variable} ${gtCinetype.variable}`}\n      lang=\"en\"\n      suppressHydrationWarning\n    >\n      <head>\n        <JsonLdScripts />\n      </head>\n      <body\n        className={`${gtCinetype.className} relative bg-background antialiased`}\n      >\n        <div className=\"root\">\n          <ThemeProvider\n            attribute=\"class\"\n            defaultTheme=\"system\"\n            disableTransitionOnChange\n            enableSystem\n          >\n            <PackageNameProvider>\n              <Header />\n              <main className=\"flex-1\">\n                <NuqsAdapter>\n                  {children}\n                  <Toaster\n                    icons={{\n                      error: (\n                        <CircleXIcon className=\"size-4 text-red-600 dark:text-red-400\" />\n                      ),\n                      warning: (\n                        <TriangleAlertIcon className=\"size-4 text-yellow-500 dark:text-yellow-400\" />\n                      ),\n                    }}\n                    position=\"top-center\"\n                    toastOptions={{\n                      classNames: {\n                        toast:\n                          \"!bg-white !px-4 !py-4 !flex-wrap dark:!bg-black !gap-0 !border-neutral-900/5 dark:!border-neutral-100/10 supports-[corner-shape:squircle]:!corner-squircle supports-[corner-shape:squircle]:!rounded-[30px] !rounded-[14px]\",\n                        title: \"font-sans text-black dark:!text-white\",\n                        icon: \"translate-y-[-9.5px]\",\n                        actionButton:\n                          \"!mt-2 w-full flex items-center justify-center !font-sans !bg-primary focus-visible:outline-primary cursor-pointer !h-8 !text-[14px] transition-colors duration-100 hover:!bg-[color-mix(in_oklab,var(--color-primary),black_10%)] focus-visible:outline-1 focus-visible:outline-offset-1 supports-[corner-shape:squircle]:!corner-squircle supports-[corner-shape:squircle]:!rounded-[30px] !rounded-[14px]\",\n                        description:\n                          \"font-sans text-secondary dark:!text-secondary\",\n                      },\n                    }}\n                  />\n                </NuqsAdapter>\n              </main>\n              <Analytics />\n              <Footer />\n            </PackageNameProvider>\n          </ThemeProvider>\n        </div>\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "app/llms.txt/route.ts",
    "content": "import { getIcons } from \"@/actions/get-icons\";\nimport { LINK, SITE } from \"@/constants\";\n\nexport function GET() {\n  const icons = getIcons();\n  const iconNames = icons.map((icon) => icon.name).join(\", \");\n\n  const content = `# ${SITE.NAME}\n\n> Beautifully crafted animated icons\n\n${SITE.NAME} is an open-source (MIT License) collection of smooth animated icons for React projects.\n\n## Overview\n\n- Website: ${SITE.URL}\n- GitHub: ${LINK.GITHUB}\n- Author: ${SITE.AUTHOR.TWITTER} (${LINK.TWITTER})\n\n## Tech Stack\n\n- React components with TypeScript\n- Animations powered by Motion (${LINK.MOTION})\n- Based on Lucide icons (${LINK.LUCIDE})\n\n## Installation\n\n\\`\\`\\`bash\nnpx shadcn@latest add \"${SITE.URL}/r/{icon-name}.json\"\n\\`\\`\\`\n\nReplace {icon-name} with the desired icon name (kebab-case).\n\n## Available Icons (${icons.length} total)\n\n${iconNames}\n\n## Usage\n\nEach icon is a React component that animates on hover. Example:\n\n\\`\\`\\`tsx\nimport { Activity } from '@/components/icons/activity';\n\nexport function MyComponent() {\n  return <Activity className=\"size-6\" />;\n}\n\\`\\`\\`\n\n## Ports\n\n- Svelte: https://www.movingicons.dev/ by @jis3r\n- Vue: https://imfenghuang.github.io/icons/ by @imfenghuang\n\n## License\n\nMIT License - free for personal and commercial use.\n\n## Contributing\n\nContributions welcome! See CONTRIBUTING.md for guidelines.\n`;\n\n  return new Response(content, {\n    headers: {\n      \"Content-Type\": \"text/plain; charset=utf-8\",\n    },\n  });\n}\n"
  },
  {
    "path": "app/page.tsx",
    "content": "import { getIcons } from \"@/actions/get-icons\";\nimport { CliBlock } from \"@/components/cli-block\";\nimport { CommentBlock } from \"@/components/comment\";\nimport { IconsList } from \"@/components/list\";\nimport { LINK } from \"@/constants\";\n\nconst Home = () => {\n  const icons = getIcons();\n\n  return (\n    <section className=\"mx-auto mt-[60px] flex w-full flex-col items-center justify-center\">\n      <h1 className=\"px-4 text-center font-sans text-[32px] min-[640px]:text-[42px]\">\n        Beautifully crafted <br />\n        animated icons<span className=\"text-primary\">*</span>\n      </h1>\n      <p className=\"mt-5 max-w-[582px] px-4 text-center font-mono text-secondary text-sm\">\n        an open-source (\n        <a\n          className=\"underline underline-offset-3 transition-[decoration-color] duration-100 focus-within:outline-offset-0 hover:decoration-primary focus-visible:outline-1 focus-visible:outline-primary\"\n          href={`${LINK.GITHUB}/blob/main/LICENSE`}\n          rel=\"noopener noreferrer\"\n          tabIndex={0}\n          target=\"_blank\"\n        >\n          MIT License\n        </a>\n        ) collection of smooth animated icons for your projects. feel free to\n        use them, share your feedback, and let&apos;s make this library awesome\n        together\n      </p>\n      <p className=\"mt-4 font-mono text-secondary text-xs min-[640px]:text-sm\">\n        Crafted with{\" \"}\n        <a\n          className=\"bg-[#E5E5E5] px-2 py-0.5 text-primary focus-within:outline-offset-1 focus-visible:outline-1 focus-visible:outline-primary dark:bg-[#262626]\"\n          href={LINK.MOTION}\n          rel=\"noopener noreferrer\"\n          tabIndex={0}\n          target=\"_blank\"\n        >\n          Motion\n        </a>{\" \"}\n        &{\" \"}\n        <a\n          className=\"bg-[#E5E5E5] px-2 py-0.5 text-primary focus-within:outline-offset-1 focus-visible:outline-1 focus-visible:outline-primary dark:bg-[#262626]\"\n          href={LINK.LUCIDE}\n          rel=\"noopener noreferrer\"\n          tabIndex={0}\n          target=\"_blank\"\n        >\n          Lucide\n        </a>\n      </p>\n      <CliBlock icons={icons.filter((icon) => icon.name.length <= 20)} />\n      <CommentBlock />\n      <IconsList icons={icons} />\n    </section>\n  );\n};\n\nexport default Home;\n"
  },
  {
    "path": "app/robots.ts",
    "content": "import type { MetadataRoute } from \"next\";\n\nimport { SITE } from \"@/constants\";\n\nexport default function robots(): MetadataRoute.Robots {\n  return {\n    rules: {\n      userAgent: \"*\",\n      allow: \"/\",\n    },\n    sitemap: `${SITE.URL}/sitemap.xml`,\n  };\n}\n"
  },
  {
    "path": "app/sitemap.ts",
    "content": "import type { MetadataRoute } from \"next\";\n\nimport { SITE } from \"@/constants\";\nimport { ICON_LIST } from \"@/icons\";\n\n// biome-ignore lint/suspicious/useAwait: ignore\nexport default async function sitemap(): Promise<MetadataRoute.Sitemap> {\n  const iconPages: MetadataRoute.Sitemap = ICON_LIST.map((icon) => ({\n    url: `${SITE.URL}/icons/${icon.name}`,\n    lastModified: new Date(),\n    changeFrequency: \"monthly\",\n    priority: 0.7,\n  }));\n\n  return [\n    {\n      url: SITE.URL,\n      lastModified: new Date(),\n      changeFrequency: \"weekly\",\n      priority: 1,\n    },\n    {\n      url: `${SITE.URL}/sponsorship`,\n      lastModified: new Date(),\n      changeFrequency: \"monthly\",\n      priority: 0.5,\n    },\n    ...iconPages,\n  ];\n}\n"
  },
  {
    "path": "app/sponsorship/page.tsx",
    "content": "import { AmountSelector } from \"@/components/sponsorship/amount-selector\";\nimport { createMetadata } from \"@/seo/metadata\";\n\nexport const metadata = createMetadata({\n  title: \"Sponsor lucide-animated\",\n  description:\n    \"Support the development of lucide-animated - free open-source animated React icons library. Your sponsorship helps maintain and grow this MIT licensed project.\",\n  canonical: \"/sponsorship\",\n  ogTitle: \"Sponsor lucide-animated | Support Open Source\",\n});\n\nconst SUPPORT_LIST = [\n  {\n    price: 5,\n    link: \"https://www.creem.io/payment/prod_1G8q9yoWDEMUuMaYXjdMnk\",\n  },\n  {\n    price: 10,\n    link: \"https://www.creem.io/payment/prod_2fx79crTzRv8c6DCBiYSt4\",\n  },\n  {\n    price: 25,\n    link: \"https://www.creem.io/payment/prod_5GxIWzOFwl7JvFxtWV1x1O\",\n  },\n  {\n    price: 50,\n    link: \"https://www.creem.io/payment/prod_4wOq9XhPSA4jIt1EBdVEcR\",\n  },\n  {\n    price: 100,\n    link: \"https://www.creem.io/payment/prod_2BWHaJvZZUTYQONb5xpQIR\",\n  },\n  {\n    price: 200,\n    link: \"https://www.creem.io/payment/prod_49xErbm5DmJJZDBW7lA2lO\",\n  },\n  {\n    price: 500,\n    link: \"https://www.creem.io/payment/prod_2HSF38lRw7yMNy8Lb9f3p1\",\n  },\n];\n\nconst Sponsorship = () => {\n  return (\n    <section className=\"mx-auto mt-[60px] flex w-full flex-col items-center justify-center overflow-hidden pb-20\">\n      <h1 className=\"px-4 text-center font-sans text-[32px] min-[640px]:text-[42px]\">\n        Support the project\n      </h1>\n      <p className=\"mt-5 max-w-[582px] px-4 text-center font-mono text-secondary text-sm\">\n        this is a place for those who want to go beyond a simple thank you.\n        I&apos;m grateful for any kind of support, whether it&apos;s just a DM\n        with kind words or something more. your donation is by no means required\n        - this page is made just for those who asked for it. I am incredibly\n        grateful for any support you choose to provide\n        <br />\n        <br />\n        Choose amount you want to support the project with:\n      </p>\n\n      <AmountSelector amounts={SUPPORT_LIST} />\n    </section>\n  );\n};\n\nexport { SUPPORT_LIST };\nexport default Sponsorship;\n"
  },
  {
    "path": "biome.jsonc",
    "content": "{\n  \"$schema\": \"./node_modules/@biomejs/biome/configuration_schema.json\",\n  \"extends\": [\n    \"ultracite/biome/core\",\n    \"ultracite/biome/react\",\n    \"ultracite/biome/next\"\n  ],\n  \"linter\": {\n    \"rules\": {\n      \"style\": {\n        \"useBlockStatements\": \"off\",\n        \"useConsistentTypeDefinitions\": \"off\",\n        \"noNestedTernary\": \"off\"\n      },\n      \"complexity\": {\n        \"noForEach\": \"off\"\n      },\n      \"a11y\": {\n        \"noSvgWithoutTitle\": \"off\",\n        \"noNoninteractiveElementInteractions\": \"off\",\n        \"noStaticElementInteractions\": \"off\"\n      },\n      \"suspicious\": {\n        \"noArrayIndexKey\": \"off\",\n        \"noSparseArray\": \"off\"\n      },\n      \"performance\": {\n        \"noNamespaceImport\": \"off\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "components/analytics.tsx",
    "content": "import { OpenPanelComponent } from \"@openpanel/nextjs\";\n\nconst ANALYTIC_EVENT = {\n  HEADER_GITHUB: \"header-github\",\n  ICON_COPY: \"icon-copy\",\n  ICON_COPY_TERMINAL: \"icon-copy-terminal\",\n  ICON_OPEN_IN_V0: \"icon-open-in-v0\",\n  COMMENT_ANIMATION_DEV_LINK: \"comment-link-click\",\n  COMMENT_BUTTON_CLICK: \"comment-button-click\",\n} as const;\n\nconst Analytics = () => {\n  if (process.env.NODE_ENV !== \"production\") return null;\n\n  return (\n    <OpenPanelComponent\n      clientId={process.env.CLIENT_ID ?? \"\"}\n      clientSecret={process.env.SECRET_KEY ?? \"\"}\n      trackScreenViews\n    />\n  );\n};\n\nexport { Analytics, ANALYTIC_EVENT };\n"
  },
  {
    "path": "components/card.tsx",
    "content": "\"use client\";\n\nimport { useOpenPanel } from \"@openpanel/nextjs\";\nimport { Copy, PauseIcon, PlayIcon, Terminal } from \"lucide-react\";\nimport type { RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { toast } from \"sonner\";\nimport { getIconContent } from \"@/actions/get-icon-content\";\nimport type { Icon } from \"@/actions/get-icons\";\nimport { openInV0Action } from \"@/actions/open-in-v0\";\nimport { ANALYTIC_EVENT } from \"@/components/analytics\";\nimport type { IconStatus } from \"@/components/ui/icon-state\";\nimport { IconState } from \"@/components/ui/icon-state\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { SITE } from \"@/constants\";\nimport { useTouchDevice } from \"@/hooks/use-touch-device\";\nimport { getPackageManagerPrefix } from \"@/lib/get-package-manager-prefix\";\nimport { cn } from \"@/lib/utils\";\nimport { usePackageNameContext } from \"@/providers/package-name\";\n\nconst V0Icon = ({ className }: { className?: string }) => {\n  return (\n    <svg\n      className={className}\n      fill=\"currentColor\"\n      viewBox=\"0 0 40 20\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path 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      <path 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    </svg>\n  );\n};\n\ninterface CardProps extends React.ComponentPropsWithoutRef<\"div\"> {\n  children: React.ReactNode;\n  animationRef?: RefObject<{\n    startAnimation: () => void;\n    stopAnimation: () => void;\n  } | null>;\n}\n\nconst Card = ({ children, animationRef, className, ...props }: CardProps) => {\n  const isTouchDevice = useTouchDevice();\n  const [isAnimating, setIsAnimating] = useState(false);\n  const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n  useEffect(() => {\n    return () => {\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n      }\n    };\n  }, []);\n\n  const handlePlayClick = (e: React.MouseEvent) => {\n    e.stopPropagation();\n\n    if (isAnimating) {\n      animationRef?.current?.stopAnimation();\n      setIsAnimating(false);\n      if (timeoutRef.current) {\n        clearTimeout(timeoutRef.current);\n        timeoutRef.current = null;\n      }\n    } else {\n      animationRef?.current?.startAnimation();\n      setIsAnimating(true);\n\n      timeoutRef.current = setTimeout(() => {\n        setIsAnimating(false);\n        animationRef?.current?.stopAnimation();\n      }, 1500);\n    }\n  };\n\n  return (\n    <div\n      className={cn(\n        \"group/card supports-[corner-shape:squircle]:corner-squircle relative flex flex-col items-center justify-center rounded-[20px] bg-white px-[28px] pt-[50px] supports-[corner-shape:squircle]:rounded-[30px] dark:bg-[#0A0A0A]\",\n        className\n      )}\n      {...props}\n      onMouseEnter={isTouchDevice ? undefined : props.onMouseEnter}\n      onMouseLeave={isTouchDevice ? undefined : props.onMouseLeave}\n    >\n      {isTouchDevice && (\n        <button\n          aria-label={isAnimating ? \"Stop animation\" : \"Play animation\"}\n          aria-pressed={isAnimating}\n          className=\"supports-[corner-shape:squircle]:corner-squircle absolute top-3 right-3 z-10 flex size-10 cursor-pointer items-center justify-center rounded-[14px] bg-neutral-200/20 transition-[background-color] duration-100 focus-within:-outline-offset-1 hover:bg-neutral-200 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-[20px] dark:bg-neutral-800/20 dark:hover:bg-neutral-700\"\n          onClick={handlePlayClick}\n          type=\"button\"\n        >\n          {isAnimating ? (\n            <PauseIcon\n              aria-hidden=\"true\"\n              className=\"size-4 text-neutral-800 dark:text-neutral-100\"\n            />\n          ) : (\n            <PlayIcon\n              aria-hidden=\"true\"\n              className=\"size-4 text-neutral-800 dark:text-neutral-100\"\n            />\n          )}\n        </button>\n      )}\n      {children}\n    </div>\n  );\n};\n\nconst Title = ({ children }: { children: React.ReactNode }) => {\n  return (\n    <p className=\"mt-[36px] text-center font-mono text-[#9F9FA9] text-xs dark:text-[#D4D4D4]\">\n      {children}\n    </p>\n  );\n};\n\nconst CopyCLIAction = ({ name }: Pick<Icon, \"name\">) => {\n  const op = useOpenPanel();\n  const { packageName } = usePackageNameContext();\n\n  const [state, setState] = useState<IconStatus>(\"idle\");\n\n  const handleCopy = async () => {\n    if (state !== \"idle\") return;\n\n    try {\n      op.track(ANALYTIC_EVENT.ICON_COPY_TERMINAL, { icon: `${name}.tsx` });\n      await navigator.clipboard.writeText(\n        `${getPackageManagerPrefix(packageName)} shadcn@latest add \"${SITE.URL}/r/${name}.json\"`\n      );\n      setState(\"done\");\n      setTimeout(() => setState(\"idle\"), 2000);\n    } catch {\n      toast.error(\"Failed to copy to clipboard\", {\n        description: \"Please check your browser permissions.\",\n      });\n      setState(\"error\");\n      setTimeout(() => setState(\"idle\"), 2000);\n    }\n  };\n\n  return (\n    <Tooltip>\n      <TooltipTrigger\n        aria-disabled={state !== \"idle\"}\n        aria-label=\"Copy shadcn/cli command\"\n        className=\"supports-[corner-shape:squircle]:corner-squircle flex size-10 cursor-pointer items-center justify-center rounded-[14px] bg-neutral-200/20 transition-[background-color] duration-100 focus-within:-outline-offset-1 hover:bg-neutral-200 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-[20px] dark:bg-neutral-800/20 dark:hover:bg-neutral-700\"\n        data-busy={state !== \"idle\" ? \"\" : undefined}\n        onClick={handleCopy}\n        tabIndex={0}\n      >\n        <IconState status={state}>\n          <Terminal\n            aria-hidden=\"true\"\n            className=\"size-4 text-neutral-800 dark:text-neutral-100\"\n          />\n        </IconState>\n      </TooltipTrigger>\n      <TooltipContent>\n        Copy{\" \"}\n        <code className=\"rounded-[4px] bg-neutral-50/20 px-1 py-0.5 font-mono\">\n          shadcn/cli\n        </code>{\" \"}\n        command\n      </TooltipContent>\n    </Tooltip>\n  );\n};\n\nconst CopyCodeAction = ({ name }: Pick<Icon, \"name\">) => {\n  const op = useOpenPanel();\n\n  const [state, setState] = useState<IconStatus>(\"idle\");\n\n  const handleCopy = async () => {\n    if (state !== \"idle\") return;\n\n    try {\n      setState(\"loading\");\n      op.track(ANALYTIC_EVENT.ICON_COPY, { icon: `${name}.tsx` });\n\n      const content = await getIconContent(name);\n\n      await navigator.clipboard.writeText(content);\n      setState(\"done\");\n      setTimeout(() => setState(\"idle\"), 2000);\n    } catch {\n      toast.error(\"Failed to copy to clipboard\", {\n        description: \"Please check your browser permissions.\",\n      });\n      setState(\"error\");\n      setTimeout(() => setState(\"idle\"), 2000);\n    }\n  };\n\n  return (\n    <Tooltip>\n      <TooltipTrigger\n        aria-disabled={state !== \"idle\"}\n        aria-label=\"Copy .tsx code\"\n        className=\"supports-[corner-shape:squircle]:corner-squircle flex size-10 cursor-pointer items-center justify-center rounded-[14px] bg-neutral-200/20 transition-[background-color] duration-100 focus-within:-outline-offset-1 hover:bg-neutral-200 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-[20px] dark:bg-neutral-800/20 dark:hover:bg-neutral-700\"\n        data-busy={state !== \"idle\" ? \"\" : undefined}\n        onClick={handleCopy}\n        tabIndex={0}\n      >\n        <IconState status={state}>\n          <Copy\n            aria-hidden=\"true\"\n            className=\"size-4 text-neutral-800 dark:text-neutral-100\"\n          />\n        </IconState>\n      </TooltipTrigger>\n      <TooltipContent>\n        Copy{\" \"}\n        <code className=\"rounded-[4px] bg-neutral-50/20 px-1 py-0.5 font-mono\">\n          .tsx\n        </code>{\" \"}\n        code\n      </TooltipContent>\n    </Tooltip>\n  );\n};\n\nconst OpenInV0Action = ({ name }: Pick<Icon, \"name\">) => {\n  const op = useOpenPanel();\n\n  const [state, setState] = useState<IconStatus>(\"idle\");\n\n  const handleOpenInV0 = async () => {\n    if (state !== \"idle\") return;\n    try {\n      setState(\"loading\");\n      op.track(ANALYTIC_EVENT.ICON_OPEN_IN_V0, { icon: `${name}.tsx` });\n      const data = await openInV0Action(name);\n\n      if (data.url) {\n        const popupOpened = window.open(data.url, \"_blank\");\n        if (popupOpened === null) {\n          toast.warning(\"Pop-up window blocked.\", {\n            description: \"Click below to continue in new tab.\",\n            duration: 5000,\n            action: {\n              label: \"Open in new tab\",\n              onClick: () => window.open(data.url, \"_blank\"),\n            },\n          });\n\n          setState(\"error\");\n        }\n      } else {\n        setState(\"done\");\n      }\n\n      setTimeout(() => setState(\"idle\"), 2000);\n    } catch (_error) {\n      toast.error(\"Failed to open in v0\", {\n        description: \"Please try again later.\",\n      });\n      setState(\"error\");\n      setTimeout(() => setState(\"idle\"), 2000);\n    }\n  };\n\n  return (\n    <Tooltip>\n      <TooltipTrigger\n        aria-disabled={state !== \"idle\"}\n        aria-label=\"Open in v0\"\n        className=\"supports-[corner-shape:squircle]:corner-squircle flex size-10 cursor-pointer items-center justify-center rounded-[14px] bg-neutral-200/20 transition-[background-color] duration-100 focus-within:-outline-offset-1 hover:bg-neutral-200 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-[20px] dark:bg-neutral-800/20 dark:hover:bg-neutral-700\"\n        data-busy={state !== \"idle\" ? \"\" : undefined}\n        onClick={handleOpenInV0}\n        tabIndex={0}\n      >\n        <IconState status={state}>\n          <V0Icon\n            aria-hidden=\"true\"\n            className=\"size-5 text-neutral-800 dark:text-neutral-100\"\n          />\n        </IconState>\n      </TooltipTrigger>\n      <TooltipContent>\n        Open in{\" \"}\n        <code className=\"rounded-[4px] bg-neutral-50/20 px-1 py-0.5 font-mono\">\n          v0\n        </code>\n      </TooltipContent>\n    </Tooltip>\n  );\n};\n\ntype ActionsProps = Pick<Icon, \"name\"> & {\n  alwaysVisible?: boolean;\n};\n\nconst Actions = ({ name, alwaysVisible = false }: ActionsProps) => {\n  return (\n    <TooltipProvider>\n      <div\n        className={cn(\n          \"my-6 flex items-center justify-center gap-2 transition-opacity duration-100\",\n          alwaysVisible\n            ? \"opacity-100\"\n            : \"opacity-0 group-hover/card:opacity-100 has-data-busy:opacity-100 has-data-popup-open:opacity-100 has-focus-visible:opacity-100 [@media(hover:none)]:opacity-100\"\n        )}\n      >\n        <CopyCodeAction name={name} />\n        <CopyCLIAction name={name} />\n        <OpenInV0Action name={name} />\n      </div>\n    </TooltipProvider>\n  );\n};\n\nconst CardTitle = Title;\nconst CardActions = Actions;\n\nexport { Card, CardTitle, CardActions };\n"
  },
  {
    "path": "components/cli-block.tsx",
    "content": "\"use client\";\n\nimport { ScrollArea as BaseScrollArea } from \"@base-ui/react/scroll-area\";\nimport { CopyIcon } from \"lucide-react\";\nimport { useRef, useState, useTransition } from \"react\";\nimport { toast } from \"sonner\";\nimport type { Icon } from \"@/actions/get-icons\";\nimport type { IconStatus } from \"@/components/ui/icon-state\";\n\nimport { IconState } from \"@/components/ui/icon-state\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { TextLoop } from \"@/components/ui/text-loop\";\nimport { PACKAGE_MANAGER } from \"@/constants\";\nimport { getPackageManagerPrefix } from \"@/lib/get-package-manager-prefix\";\nimport { cn } from \"@/lib/utils\";\nimport { usePackageNameContext } from \"@/providers/package-name\";\n\ntype CliBlockProps = {\n  icons?: Icon[];\n  staticIconName?: string;\n  className?: string;\n};\n\nconst CliBlock = ({ icons, staticIconName, className }: CliBlockProps) => {\n  const [state, setState] = useState<IconStatus>(\"idle\");\n  const [_, startTransition] = useTransition();\n  const currentIconName = useRef(staticIconName || \"\");\n\n  const { packageName, setPackageName } = usePackageNameContext();\n\n  const isStatic = !!staticIconName;\n\n  const handleCopyToClipboard = () => {\n    startTransition(async () => {\n      const iconName =\n        staticIconName || currentIconName.current || icons?.[0]?.name || \"\";\n\n      try {\n        await navigator.clipboard.writeText(\n          `${getPackageManagerPrefix(packageName)} shadcn add @lucide-animated/${iconName}`\n        );\n\n        setState(\"done\");\n        await new Promise((resolve) => setTimeout(resolve, 2000));\n        setState(\"idle\");\n      } catch {\n        toast.error(\"Failed to copy to clipboard\", {\n          description: \"Please check your browser permissions.\",\n        });\n        setState(\"error\");\n        await new Promise((resolve) => setTimeout(resolve, 2000));\n        setState(\"idle\");\n      }\n    });\n  };\n\n  return (\n    <div\n      className={cn(\"relative mt-[40px] w-full max-w-[642px] px-4\", className)}\n    >\n      <Tabs\n        className=\"w-full\"\n        onValueChange={setPackageName}\n        value={packageName}\n      >\n        <TabsList className=\"w-full\" onClick={(e) => e.stopPropagation()}>\n          {Object.values(PACKAGE_MANAGER).map((pm) => (\n            <TabsTrigger key={pm} value={pm}>\n              {pm}\n            </TabsTrigger>\n          ))}\n        </TabsList>\n        {Object.values(PACKAGE_MANAGER).map((pm) => (\n          <TabsContent\n            className=\"supports-[corner-shape:squircle]:corner-tr-squircle supports-[corner-shape:squircle]:corner-br-squircle supports-[corner-shape:squircle]:corner-bl-squircle mt-px overflow-hidden rounded-tr-[10px] rounded-br-[10px] rounded-bl-[10px] focus-within:outline-offset-0 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-tr-[14px] supports-[corner-shape:squircle]:rounded-br-[14px] supports-[corner-shape:squircle]:rounded-bl-[14px]\"\n            key={pm}\n            value={pm}\n          >\n            <BaseScrollArea.Root className=\"relative w-full overflow-hidden\">\n              <BaseScrollArea.Viewport\n                className={cn(\n                  \"overflow-hidden rounded-tr-[10px] rounded-br-[10px] rounded-bl-[10px] bg-white focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-0 dark:bg-white/10\",\n                  \"supports-[corner-shape:squircle]:corner-tr-squircle supports-[corner-shape:squircle]:corner-br-squircle supports-[corner-shape:squircle]:corner-bl-squircle supports-[corner-shape:squircle]:rounded-tr-[14px] supports-[corner-shape:squircle]:rounded-br-[14px] supports-[corner-shape:squircle]:rounded-bl-[14px]\",\n                  \"isolate whitespace-nowrap px-4 py-3 pr-20 font-mono text-sm tracking-[-0.39px]\",\n                  // left fade\n                  \"before:pointer-events-none before:absolute before:top-0 before:left-0 before:z-10 before:block before:h-full before:rounded-bl-[10px]\",\n                  \"supports-[corner-shape:squircle]:before:corner-bl-squircle supports-[corner-shape:squircle]:before:rounded-bl-[14px]\",\n                  \"before:transition-[width] before:duration-50 before:ease-out before:content-['']\",\n                  \"before:w-[min(40px,var(--scroll-area-overflow-x-start))] before:bg-[linear-gradient(to_right,white,transparent)] dark:before:bg-[linear-gradient(to_right,rgb(47_47_47/1),transparent)] before:[--scroll-area-overflow-x-start:inherit]\",\n                  // right fade\n                  \"after:pointer-events-none after:absolute after:top-0 after:right-0 after:z-10 after:block after:h-full after:rounded-r-[10px]\",\n                  \"supports-[corner-shape:squircle]:after:corner-r-squircle supports-[corner-shape:squircle]:after:rounded-r-[14px]\",\n                  \"after:transition-[width] after:duration-50 after:ease-out after:content-['']\",\n                  \"after:w-[calc(min(40px,var(--scroll-area-overflow-x-end,100px))+100px)] after:bg-[linear-gradient(to_left,white_0%,white_30%,transparent)] dark:after:bg-[linear-gradient(to_left,rgb(47_47_47/1)_0%,rgb(47_47_47/1)_30%,transparent)] after:[--scroll-area-overflow-x-end:inherit]\"\n                )}\n              >\n                <span className=\"sr-only\">\n                  {getPackageManagerPrefix(pm)} shadcn add @lucide-animated/\n                  {staticIconName || currentIconName.current}\n                </span>\n                <span\n                  aria-hidden=\"true\"\n                  className=\"text-neutral-600 dark:text-neutral-400\"\n                >\n                  {getPackageManagerPrefix(pm)}\n                </span>{\" \"}\n                <span aria-hidden=\"true\" className=\"text-black dark:text-white\">\n                  shadcn add @lucide-animated/\n                </span>\n                {isStatic ? (\n                  <span className=\"shrink-0 text-primary\">\n                    {staticIconName}\n                  </span>\n                ) : (\n                  <TextLoop\n                    interval={1.5}\n                    onIndexChange={(index) => {\n                      currentIconName.current = icons?.[index]?.name || \"\";\n                    }}\n                    transition={{\n                      duration: 0.25,\n                    }}\n                    variants={{\n                      initial: {\n                        y: -12,\n                        rotateX: -90,\n                        opacity: 0,\n                        filter: \"blur(2px)\",\n                      },\n                      animate: {\n                        y: 0,\n                        rotateX: 0,\n                        opacity: 1,\n                        filter: \"blur(0px)\",\n                      },\n                      exit: {\n                        y: 12,\n                        rotateX: 90,\n                        opacity: 0,\n                        filter: \"blur(2px)\",\n                      },\n                    }}\n                  >\n                    {(icons || [])\n                      .filter((icon) => icon.name.length <= 20)\n                      .map((icon) => (\n                        <span className=\"shrink-0 text-primary\" key={icon.name}>\n                          {icon.name}\n                        </span>\n                      ))}\n                  </TextLoop>\n                )}\n              </BaseScrollArea.Viewport>\n              <BaseScrollArea.Scrollbar\n                className=\"pointer-events-none absolute right-2! bottom-1! left-2! flex h-0.5 touch-none rounded bg-neutral-200 opacity-0 transition-opacity duration-100 data-hovering:pointer-events-auto data-scrolling:pointer-events-auto data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:duration-0 dark:bg-neutral-700\"\n                keepMounted={false}\n                orientation=\"horizontal\"\n              >\n                <BaseScrollArea.Thumb className=\"relative w-full rounded bg-neutral-600 dark:bg-neutral-400\" />\n              </BaseScrollArea.Scrollbar>\n              <button\n                aria-disabled={state !== \"idle\"}\n                aria-label=\"Copy to clipboard\"\n                className=\"supports-[corner-shape:squircle]:corner-squircle absolute top-1/2 right-1.5 z-20 -translate-y-1/2 cursor-pointer rounded-[6px] p-2 transition-[background-color] duration-100 focus-within:outline-offset-1 hover:bg-neutral-100 focus-visible:outline-1 focus-visible:outline-primary supports-[corner-shape:squircle]:rounded-[8px] dark:hover:bg-neutral-700\"\n                onClick={handleCopyToClipboard}\n                tabIndex={0}\n                type=\"button\"\n              >\n                <IconState status={state}>\n                  <CopyIcon aria-hidden=\"true\" className=\"size-4\" />\n                </IconState>\n              </button>\n            </BaseScrollArea.Root>\n          </TabsContent>\n        ))}\n      </Tabs>\n    </div>\n  );\n};\n\nexport { CliBlock };\n"
  },
  {
    "path": "components/comment.client.tsx",
    "content": "\"use client\";\n\nimport { useOpenPanel } from \"@openpanel/nextjs\";\nimport { ExternalLinkIcon } from \"lucide-react\";\n\nimport { ANALYTIC_EVENT } from \"./analytics\";\n\nconst CommentAnimationsDevLinkClient = () => {\n  const op = useOpenPanel();\n\n  return (\n    <a\n      className=\"inline-block underline underline-offset-3 transition-[decoration-color,color] duration-100 focus-within:outline-offset-0 hover:text-primary hover:decoration-primary focus-visible:text-primary focus-visible:outline-1 focus-visible:outline-primary\"\n      href=\"https://animations.dev/\"\n      onClick={() => op.track(ANALYTIC_EVENT.COMMENT_ANIMATION_DEV_LINK)}\n      rel=\"noopener external\"\n      tabIndex={0}\n      target=\"_blank\"\n    >\n      animations.dev\n    </a>\n  );\n};\n\nconst CommentButtonClient = () => {\n  const op = useOpenPanel();\n\n  return (\n    <a\n      className=\"supports-[corner-shape:squircle]:corner-squircle flex w-fit cursor-pointer items-center justify-center gap-1 rounded-[8px] bg-primary px-[12px] py-[4px] font-sans text-sm text-white transition-[background-color] duration-100 hover:bg-[color-mix(in_oklab,var(--color-primary),black_10%)] focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-1 supports-[corner-shape:squircle]:rounded-[12px] max-[445px]:w-full\"\n      href=\"https://animations.dev/\"\n      onClick={() => op.track(ANALYTIC_EVENT.COMMENT_BUTTON_CLICK)}\n      rel=\"noopener external\"\n      tabIndex={0}\n      target=\"_blank\"\n    >\n      Take the course\n      <ExternalLinkIcon className=\"size-3\" strokeWidth={2.5} />\n    </a>\n  );\n};\n\nexport { CommentAnimationsDevLinkClient, CommentButtonClient };\n"
  },
  {
    "path": "components/comment.tsx",
    "content": "import {\n  CommentAnimationsDevLinkClient,\n  CommentButtonClient,\n} from \"./comment.client\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"./ui/avatar\";\n\nconst CommentBlock = () => {\n  return (\n    <div className=\"relative my-[40px] flex w-full max-w-[610px] flex-col items-center justify-center pl-4 after:absolute after:left-0 after:h-full after:w-[4px] after:bg-neutral-400/50 max-[655px]:px-4 max-[655px]:after:left-4\">\n      <blockquote className=\"font-sans text-neutral-700 text-sm/[150%] tracking-[0.01em] before:content-[open-quote] after:content-[close-quote] max-[655px]:pl-4 dark:text-neutral-200\">\n        these icons were a way to practice what i learned from the{\" \"}\n        <CommentAnimationsDevLinkClient /> course.\n        <br />\n        it really helped me understand how to turn simple transitions into the\n        polished motion you see here\n      </blockquote>\n      <div className=\"mt-4 flex w-full flex-wrap items-center justify-between gap-4 border-neutral-200 border-t pt-4 max-[655px]:pl-4 dark:border-neutral-800\">\n        <div className=\"flex items-center gap-2\">\n          <Avatar size=\"sm\">\n            <AvatarImage\n              alt=\"Dmytro Tovstokor, the author of the lucide-animated\"\n              className=\"select-none\"\n              src=\"https://pqoqubbw.b-cdn.net/me.jpg\"\n            />\n            <AvatarFallback className=\"bg-neutral-200 font-sans dark:bg-neutral-800\">\n              DT\n            </AvatarFallback>\n          </Avatar>\n          <p className=\"text-[13px] text-neutral-600 tracking-[0.01em] dark:text-neutral-400\">\n            dmytro, creator of lucide-animated\n          </p>\n        </div>\n        <CommentButtonClient />\n      </div>\n    </div>\n  );\n};\n\nexport { CommentBlock };\n"
  },
  {
    "path": "components/footer.tsx",
    "content": "const Footer = () => {\n  return (\n    <footer className=\"mt-auto mb-6 flex w-full items-center justify-center gap-1 font-sans text-secondary text-xs\">\n      <span>analytics by</span>\n      <a\n        className=\"underline underline-offset-3 transition-[decoration-color] duration-100 focus-within:outline-offset-0 hover:decoration-primary focus-visible:outline-1 focus-visible:outline-primary\"\n        href=\"https://openpanel.dev\"\n        rel=\"noopener\"\n        tabIndex={0}\n        target=\"_blank\"\n      >\n        OpenPanel\n      </a>\n    </footer>\n  );\n};\n\nexport { Footer };\n"
  },
  {
    "path": "components/github-button.tsx",
    "content": "import { unstable_cache } from \"next/cache\";\nimport { LINK } from \"@/constants\";\n\nconst DEFAULT_STARS = 6077;\nconst CACHE_TIME = 86_400; // 1 day\n\nconst fetchGithubStars = async (): Promise<number> => {\n  try {\n    const res = await fetch(\"https://api.github.com/repos/pqoqubbw/icons\", {\n      headers: {\n        Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n      },\n    });\n\n    if (!res.ok) {\n      return DEFAULT_STARS;\n    }\n\n    const data = await res.json();\n\n    return data.stargazers_count < DEFAULT_STARS\n      ? DEFAULT_STARS\n      : data.stargazers_count;\n  } catch (error) {\n    console.error(\"Failed to fetch GitHub stars:\", error);\n    return DEFAULT_STARS;\n  }\n};\n\nconst getGithubStars = unstable_cache(fetchGithubStars, [\"github-stars\"], {\n  revalidate: CACHE_TIME,\n});\n\nconst GithubStartsButton = async () => {\n  const stars =\n    process.env.NODE_ENV === \"production\"\n      ? await getGithubStars()\n      : DEFAULT_STARS;\n\n  return (\n    <a\n      className=\"group/github-stars flex items-center gap-2 bg-white px-2.5 py-2 focus-within:outline-offset-2 focus-visible:outline-1 focus-visible:outline-primary dark:bg-white/10\"\n      href={LINK.GITHUB}\n      rel=\"noopener noreferrer\"\n      tabIndex={0}\n      target=\"_blank\"\n    >\n      <span className=\"sr-only\">\n        Star on GitHub ({stars.toLocaleString()} stars)\n      </span>\n      <svg\n        aria-hidden=\"true\"\n        className=\"size-4\"\n        fill=\"none\"\n        height=\"96\"\n        viewBox=\"0 0 98 96\"\n        width=\"98\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g clipPath=\"url(#clip0_730_27126)\">\n          <path\n            className=\"fill-black dark:fill-white\"\n            d=\"M41.4395 69.3848C28.8066 67.8535 19.9062 58.7617 19.9062 46.9902C19.9062 42.2051 21.6289 37.0371 24.5 33.5918C23.2559 30.4336 23.4473 23.7344 24.8828 20.959C28.7109 20.4805 33.8789 22.4902 36.9414 25.2656C40.5781 24.1172 44.4062 23.543 49.0957 23.543C53.7852 23.543 57.6133 24.1172 61.0586 25.1699C64.0254 22.4902 69.2891 20.4805 73.1172 20.959C74.457 23.543 74.6484 30.2422 73.4043 33.4961C76.4668 37.1328 78.0937 42.0137 78.0937 46.9902C78.0937 58.7617 69.1934 67.6621 56.3691 69.2891C59.623 71.3945 61.8242 75.9883 61.8242 81.252L61.8242 91.2051C61.8242 94.0762 64.2168 95.7031 67.0879 94.5547C84.4102 87.9512 98 70.6289 98 49.1914C98 22.1074 75.9883 6.69539e-07 48.9043 4.309e-07C21.8203 1.92261e-07 -1.9479e-07 22.1074 -4.3343e-07 49.1914C-6.20631e-07 70.4375 13.4941 88.0469 31.6777 94.6504C34.2617 95.6074 36.75 93.8848 36.75 91.3008L36.75 83.6445C35.4102 84.2188 33.6875 84.6016 32.1562 84.6016C25.8398 84.6016 22.1074 81.1563 19.4277 74.7441C18.375 72.1602 17.2266 70.6289 15.0254 70.3418C13.877 70.2461 13.4941 69.7676 13.4941 69.1934C13.4941 68.0449 15.4082 67.1836 17.3223 67.1836C20.0977 67.1836 22.4902 68.9063 24.9785 72.4473C26.8926 75.2227 28.9023 76.4668 31.2949 76.4668C33.6875 76.4668 35.2187 75.6055 37.4199 73.4043C39.0469 71.7773 40.291 70.3418 41.4395 69.3848Z\"\n          />\n        </g>\n        <defs>\n          <clipPath id=\"clip0_730_27126\">\n            <rect fill=\"white\" height=\"96\" width=\"98\" />\n          </clipPath>\n        </defs>\n      </svg>\n      <span\n        aria-hidden=\"true\"\n        className=\"font-sans text-black text-sm tabular-nums tracking-[-0.4px] [text-shadow:-0.1px_0_0_currentColor,0.1px_0_0_currentColor] dark:text-white\"\n      >\n        {stars.toLocaleString()}\n      </span>\n      <svg\n        aria-hidden=\"true\"\n        className=\"text-neutral-400 transition-colors duration-100 group-hover/github-stars:text-[#e3b341]\"\n        fill=\"none\"\n        height=\"13\"\n        viewBox=\"0 0 13 13\"\n        width=\"13\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          clipRule=\"evenodd\"\n          d=\"M6.45803 2.89654e-06C6.6061 0.000101587 6.75082 0.0440267 6.87397 0.126243C6.99712 0.208458 7.09317 0.325286 7.15003 0.462003L8.56003 3.855L12.224 4.148C12.3717 4.15988 12.5125 4.2152 12.6287 4.30699C12.7449 4.39878 12.8314 4.52293 12.8772 4.66379C12.923 4.80464 12.926 4.9559 12.8859 5.09849C12.8459 5.24108 12.7645 5.36861 12.652 5.465L9.86103 7.855L10.714 11.43C10.7483 11.574 10.7392 11.725 10.6878 11.8638C10.6364 12.0027 10.5451 12.1233 10.4253 12.2103C10.3056 12.2973 10.1627 12.347 10.0148 12.353C9.86685 12.359 9.72045 12.3211 9.59403 12.244L6.45603 10.33L3.32103 12.245C3.19461 12.3221 3.04821 12.36 2.90027 12.354C2.75234 12.348 2.60949 12.2983 2.48972 12.2113C2.36996 12.1243 2.27864 12.0037 2.22726 11.8649C2.17589 11.726 2.16676 11.575 2.20103 11.431L3.05303 7.857L0.263028 5.467C0.150277 5.37074 0.0685828 5.24323 0.028266 5.10056C-0.0120509 4.9579 -0.00918217 4.80648 0.0365099 4.66545C0.082202 4.52441 0.168667 4.40008 0.284984 4.30816C0.401301 4.21624 0.54225 4.16086 0.690028 4.149L4.35303 3.856L5.76303 0.463003C5.81993 0.325626 5.91638 0.208264 6.04013 0.125824C6.16387 0.0433847 6.30933 -0.000410263 6.45803 2.89654e-06Z\"\n          fill=\"currentColor\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </a>\n  );\n};\n\nexport { GithubStartsButton };\n"
  },
  {
    "path": "components/header.tsx",
    "content": "import Link from \"next/link\";\n\nimport { GithubStartsButton } from \"@/components/github-button\";\nimport { ThemeToggle } from \"@/components/ui/theme-toggle\";\nimport { cn } from \"@/lib/utils\";\n\ntype LogoProps = {\n  className?: string;\n  type?: \"christmas\" | \"default\";\n};\n\nconst Logo = ({ className, type = \"default\" }: LogoProps) => {\n  if (type === \"christmas\") {\n    return (\n      <svg\n        aria-hidden=\"true\"\n        className={cn(className)}\n        data-type=\"christmas\"\n        fill=\"none\"\n        viewBox=\"0 0 382 502\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M381.997 296.275H309.884V437.321H215.915L216.597 455.488C222.168 452.015 229.293 449.8 237.12 449.512C255.552 448.832 270.892 459.089 271.384 472.42C271.858 485.293 258.315 496.324 240.788 497.68L240.79 497.723L217.701 498.574C210.978 498.822 205.326 493.573 205.078 486.85L204.645 475.096H204.647C204.644 475.025 204.638 474.953 204.636 474.882C204.616 474.334 204.622 473.789 204.652 473.248L203.304 437.321H164.245L162.786 476.194C162.816 476.736 162.823 477.282 162.803 477.831C162.8 477.901 162.794 477.971 162.791 478.041H162.797L162.363 489.796C162.115 496.519 156.464 501.769 149.74 501.521L126.651 500.669L126.653 500.629C109.125 499.274 95.5801 488.242 96.0547 475.369C96.5465 462.038 111.887 451.781 130.318 452.461C138.145 452.75 145.271 454.965 150.842 458.438L151.634 437.321H58.4609L65.3975 296.275H0L173.564 130.131L381.997 296.275Z\"\n          fill=\"currentColor\"\n        />\n        <circle cx=\"129.45\" cy=\"310.15\" fill=\"white\" r=\"32.5568\" />\n        <circle cx=\"216.829\" cy=\"310.15\" fill=\"white\" r=\"32.5568\" />\n        <circle cx=\"132.392\" cy=\"314.35\" fill=\"black\" r=\"9.45197\" />\n        <circle cx=\"210.526\" cy=\"314.35\" fill=\"black\" r=\"9.45197\" />\n        <path\n          className=\"fill-red-800\"\n          d=\"M219.443 149.146L135.452 148.927L177.707 50.6971L219.443 149.146Z\"\n        />\n        <path\n          d=\"M135.983 183.242L128.794 176.012L128.841 157.621L136.072 150.432L218.813 150.642L226.012 157.871L225.965 176.261L218.736 183.461L135.983 183.242Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M136.689 151.925L218.193 152.135L224.509 158.49L224.459 175.633L221.282 178.791L218.105 181.949L136.601 181.739L130.651 175.755L130.285 175.384L130.334 158.241L136.318 152.291L136.689 151.925ZM135.452 148.928C132.284 152.084 130.505 153.847 127.337 157.003L127.29 176.631C130.446 179.799 132.209 181.578 135.365 184.745L219.356 184.964C222.524 181.808 224.303 180.045 227.47 176.889L227.518 157.261C224.362 154.093 222.598 152.314 219.443 149.146L135.452 148.928Z\"\n          fill=\"black\"\n        />\n        <path\n          d=\"M170.115 67.773C165.024 64.9802 161.889 59.6705 161.903 53.8372C161.919 46.4387 167.161 39.9423 174.367 38.3939C175.462 38.1586 176.602 38.0364 177.737 38.0378C186.446 38.0585 193.511 45.1833 193.484 53.9137C193.465 59.7274 190.324 65.0052 185.245 67.7844L170.115 67.773Z\"\n          fill=\"white\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M174.682 39.8603C175.68 39.646 176.7 39.5393 177.734 39.5421C181.551 39.5504 185.136 41.0506 187.826 43.7659C190.517 46.4812 191.998 50.0906 191.992 53.9173C191.981 59.0543 189.265 63.7395 184.863 66.2913L170.519 66.2746C166.11 63.7034 163.401 58.9976 163.408 53.8411C163.42 47.139 168.171 41.2596 174.692 39.8582M174.052 36.9273C166.27 38.5997 160.424 45.5225 160.399 53.8331C160.379 60.5471 164.17 66.381 169.732 69.2769L185.61 69.2914C191.161 66.4211 194.957 60.624 194.979 53.9197C195.007 44.34 187.28 36.5598 177.732 36.5354C176.463 36.5319 175.233 36.6633 174.05 36.9175L174.052 36.9273Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M142.888 60.7772C142.633 59.5943 141.477 58.8302 140.302 59.0725L136.013 59.9634C134.83 60.2176 134.066 61.374 134.308 62.5493C134.563 63.7323 135.719 64.4964 136.894 64.2541L141.183 63.3631C142.366 63.1089 143.13 61.9526 142.888 60.7772Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M142.081 39.6042L137.919 38.2279C136.774 37.85 135.527 38.4758 135.15 39.6208C134.772 40.7657 135.398 42.0121 136.542 42.39L140.705 43.7662C141.85 44.1441 143.096 43.5183 143.474 42.3733C143.852 41.2284 143.226 39.982 142.081 39.6042Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M150.454 20.3558C149.646 19.4552 148.268 19.3729 147.358 20.1823C146.458 20.9895 146.375 22.3675 147.185 23.2778L150.097 26.5489C150.904 27.4494 152.282 27.5317 153.192 26.7224C154.093 25.9152 154.175 24.5372 153.366 23.6269L150.454 20.3558Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M167.644 9.4405C166.461 9.69472 165.697 10.8511 165.939 12.0264L166.83 16.3149C167.084 17.4979 168.241 18.262 169.416 18.0197C170.599 17.7655 171.363 16.6091 171.121 15.4338L170.23 11.1453C169.976 9.96226 168.819 9.19816 167.644 9.4405Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M190.584 10.2898C189.439 9.91192 188.193 10.5377 187.815 11.6827L186.439 15.8447C186.061 16.9897 186.687 18.236 187.832 18.6139C188.977 18.9918 190.223 18.366 190.601 17.221L191.977 13.059C192.355 11.914 191.729 10.6677 190.584 10.2898Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M206.577 28.4957L209.848 25.5834C210.748 24.7762 210.831 23.3982 210.021 22.4879C209.214 21.5874 207.836 21.5051 206.926 22.3144L203.655 25.2267C202.754 26.0339 202.672 27.4119 203.481 28.3222C204.288 29.2227 205.667 29.305 206.577 28.4957Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M218.179 41.0793L213.891 41.9702C212.708 42.2245 211.944 43.3808 212.186 44.5561C212.44 45.7391 213.596 46.5032 214.772 46.2609L219.06 45.37C220.243 45.1158 221.007 43.9594 220.765 42.7841C220.511 41.6011 219.355 40.837 218.179 41.0793Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M218.531 62.943L214.369 61.5668C213.224 61.1889 211.978 61.8147 211.6 62.9597C211.222 64.1046 211.848 65.3509 212.993 65.7288L217.155 67.1051C218.3 67.483 219.546 66.8571 219.924 65.7122C220.302 64.5672 219.676 63.3209 218.531 62.943Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M204.979 78.7942C204.171 77.8937 202.793 77.8114 201.883 78.6207C200.983 79.4279 200.9 80.806 201.71 81.7163L204.622 84.9874C205.429 85.8879 206.807 85.9702 207.717 85.1609C208.628 84.3516 208.7 82.9756 207.891 82.0654L204.979 78.7942Z\"\n        />\n        <path\n          className=\"fill-black dark:fill-white\"\n          d=\"M148.497 76.8378L145.226 79.7501C144.325 80.5573 144.243 81.9354 145.052 82.8456C145.859 83.7461 147.237 83.8285 148.148 83.0191L151.419 80.1069C152.319 79.2996 152.402 77.9216 151.592 77.0113C150.785 76.1108 149.407 76.0285 148.497 76.8378Z\"\n        />\n      </svg>\n    );\n  }\n\n  if (type === \"default\") {\n    return (\n      <svg\n        aria-hidden=\"true\"\n        className={cn(className)}\n        data-type=\"default\"\n        fill=\"none\"\n        viewBox=\"0 0 31 30\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M30.8574 13.4209H25.0322V24.8223H17.4414L17.4961 26.2822C17.9462 26.0015 18.5219 25.8223 19.1543 25.7988C20.6429 25.744 21.8818 26.5719 21.9219 27.6484C21.96 28.6881 20.8658 29.576 19.4502 29.6855V29.6924L17.5859 29.7617C17.043 29.7816 16.5855 29.3565 16.5654 28.8135L16.5303 27.8643H16.5312C16.531 27.8588 16.5305 27.8531 16.5303 27.8477C16.5292 27.8173 16.5324 27.787 16.5332 27.7568L16.4229 24.8223H13.2686L13.1494 27.9941C13.1502 28.0242 13.1534 28.0546 13.1523 28.085C13.1521 28.0902 13.1517 28.0963 13.1514 28.1016H13.1523L13.1172 29.0518C13.097 29.5946 12.6395 30.0188 12.0967 29.999L10.2324 29.9297V29.9238C8.81666 29.8144 7.7226 28.9265 7.76074 27.8867C7.80082 26.8101 9.03966 25.9813 10.5283 26.0361C11.1608 26.0596 11.7364 26.2396 12.1865 26.5205L12.25 24.8223H4.72266L5.2832 13.4209H0L14.0205 0L30.8574 13.4209Z\"\n          fill=\"currentColor\"\n        />\n        <circle cx=\"10.457\" cy=\"14.541\" fill=\"white\" r=\"2.62989\" />\n        <circle cx=\"17.5156\" cy=\"14.541\" fill=\"white\" r=\"2.62989\" />\n        <circle cx=\"10.6947\" cy=\"14.8797\" fill=\"currentColor\" r=\"0.763516\" />\n        <circle cx=\"17.0062\" cy=\"14.8797\" fill=\"currentColor\" r=\"0.763516\" />\n      </svg>\n    );\n  }\n\n  return null;\n};\n\nconst Header = () => {\n  return (\n    <header className=\"mx-auto mt-[25px] w-full max-w-[1292px] px-4 font-mono\">\n      <div className=\"flex h-full w-full justify-between gap-4\">\n        <Link\n          aria-label=\"Lucide Animated - Home\"\n          className=\"mr-auto flex h-[42px] items-center gap-2 font-sans text-base focus-within:outline-offset-4 focus-visible:outline-1 focus-visible:outline-primary max-[524px]:translate-y-[-2px] min-[395px]:text-xl\"\n          href=\"/\"\n          tabIndex={0}\n        >\n          <Logo\n            className=\"w-6 text-primary data-[type='christmas']:translate-y-[-4px] min-[395px]:w-8\"\n            type=\"default\"\n          />\n          lucide-animated\n        </Link>\n        <div className=\"ml-auto flex w-full flex-1 flex-wrap-reverse items-center justify-end gap-2\">\n          <Link\n            aria-label=\"Sponsor Project\"\n            className=\"flex items-center gap-1 pr-1 font-sans text-[#3F3F47] text-sm underline-offset-4 focus-within:outline-offset-4 hover:underline focus-visible:outline-1 focus-visible:outline-primary dark:text-[#FAFAFA]\"\n            href=\"/sponsorship\"\n            tabIndex={0}\n          >\n            <svg\n              fill=\"none\"\n              height=\"16\"\n              viewBox=\"0 0 16 16\"\n              width=\"16\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                className=\"fill-primary\"\n                d=\"M7.72238 13.5321L7.71838 13.5297L7.70318 13.5217C7.38749 13.3499 7.07746 13.1679 6.77358 12.976C6.04907 12.5202 5.35871 12.0122 4.70798 11.456C3.23598 10.1864 1.59998 8.28165 1.59998 6.00005C1.60005 5.25562 1.8309 4.52952 2.26074 3.92172C2.69058 3.31393 3.29827 2.85433 4.00014 2.60622C4.702 2.35811 5.46353 2.33369 6.17985 2.53631C6.89618 2.73894 7.53207 3.15865 7.99998 3.73765C8.46788 3.15865 9.10377 2.73894 9.8201 2.53631C10.5364 2.33369 11.2979 2.35811 11.9998 2.60622C12.7017 2.85433 13.3094 3.31393 13.7392 3.92172C14.1691 4.52952 14.3999 5.25562 14.4 6.00005C14.4 8.28165 12.7648 10.1864 11.292 11.456C10.3674 12.246 9.36371 12.9382 8.29678 13.5217L8.28158 13.5297L8.27758 13.5321H8.27598C8.19097 13.5771 8.09627 13.6007 8.00007 13.6008C7.90388 13.601 7.80911 13.5776 7.72398 13.5329L7.72238 13.5321Z\"\n              />\n            </svg>\n            Sponsor Project\n          </Link>\n          <div className=\"flex items-center gap-2\">\n            <ThemeToggle />\n            <GithubStartsButton />\n          </div>\n        </div>\n      </div>\n    </header>\n  );\n};\n\nexport { Header };\n"
  },
  {
    "path": "components/list.tsx",
    "content": "\"use client\";\n\nimport Fuse from \"fuse.js\";\nimport { useDeferredValue, useMemo, useRef, useState } from \"react\";\nimport type { Icon } from \"@/actions/get-icons\";\n\nimport { Card, CardActions, CardTitle } from \"@/components/card\";\nimport { ICON_LIST } from \"@/icons\";\nimport { SearchInput } from \"./search-input\";\n\ntype Props = {\n  icons: Icon[];\n};\n\nconst ICON_MAP = new Map(ICON_LIST.map((item) => [item.name, item.icon]));\n\nconst IconItem = ({\n  icon,\n  Icon,\n}: {\n  icon: Icon;\n  Icon: React.ElementType | undefined;\n}) => {\n  const animationRef = useRef<{\n    startAnimation: () => void;\n    stopAnimation: () => void;\n  }>(null);\n\n  if (!Icon) {\n    return null;\n  }\n\n  return (\n    <Card\n      animationRef={animationRef}\n      className=\"[contain-intrinsic-size:auto_180px] [content-visibility:auto]\"\n      key={icon.name}\n      onMouseEnter={() => animationRef.current?.startAnimation()}\n      onMouseLeave={() => animationRef.current?.stopAnimation()}\n    >\n      <Icon\n        className=\"flex items-center justify-center [&>svg]:size-10 [&>svg]:text-neutral-800 dark:[&>svg]:text-neutral-100\"\n        ref={animationRef}\n      />\n      <CardTitle>{icon.name}</CardTitle>\n      <CardActions {...icon} />\n    </Card>\n  );\n};\n\nconst IconsList = ({ icons }: Props) => {\n  const [searchValue, setSearchValue] = useState(\"\");\n  const [searchOpen, setSearchOpen] = useState(false);\n  const deferredSearchValue = useDeferredValue(searchValue);\n\n  const fuse = useMemo(\n    () =>\n      new Fuse(icons, {\n        keys: [\n          { name: \"name\", weight: 3 },\n          { name: \"keywords\", weight: 2 },\n        ],\n        threshold: 0.3,\n        ignoreLocation: true,\n        findAllMatches: true,\n        isCaseSensitive: false,\n        minMatchCharLength: 2,\n      }),\n    [icons]\n  );\n\n  const filteredIcons = useMemo(() => {\n    if (!deferredSearchValue.trim()) return icons;\n    return fuse.search(deferredSearchValue).map((result) => result.item);\n  }, [fuse, icons, deferredSearchValue]);\n\n  return (\n    <div className=\"mb-20 w-full\">\n      <SearchInput\n        searchOpen={searchOpen}\n        searchValue={searchValue}\n        setSearchOpen={setSearchOpen}\n        setSearchValue={setSearchValue}\n      />\n      <div className=\"grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-[3px]\">\n        {filteredIcons.length === 0 && (\n          <div className=\"col-span-full pt-10 text-center text-neutral-500 text-sm\">\n            No icons found\n          </div>\n        )}\n        {filteredIcons.map((icon) => (\n          <IconItem\n            Icon={ICON_MAP.get(icon.name) ?? undefined}\n            icon={icon}\n            key={icon.name}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport { IconsList };\n"
  },
  {
    "path": "components/search-input.tsx",
    "content": "import { useHotkey } from \"@tanstack/react-hotkeys\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { Portal } from \"@/components/ui/portal\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"./ui/input\";\n\ntype SearchInputProps = {\n  searchValue: string;\n  setSearchValue: (value: string) => void;\n  searchOpen: boolean;\n  setSearchOpen: (value: boolean) => void;\n};\n\nconst SearchInput = ({\n  searchValue,\n  setSearchValue,\n  searchOpen,\n  setSearchOpen,\n}: SearchInputProps) => {\n  useHotkey(\n    \"Mod+F\",\n    () => {\n      setSearchOpen(!searchOpen);\n      setSearchValue(\"\");\n    },\n    {\n      ignoreInputs: false,\n    }\n  );\n\n  useHotkey(\n    \"Escape\",\n    () => {\n      setSearchOpen(false);\n      setSearchValue(\"\");\n    },\n    {\n      ignoreInputs: false,\n    }\n  );\n\n  return (\n    <>\n      <div\n        className={cn(\n          \"hidden items-center justify-end gap-1 pr-4 pb-2 opacity-100 transition-opacity duration-75 md:flex\",\n          searchOpen && \"opacity-0\"\n        )}\n      >\n        <div className=\"flex items-center justify-center gap-0.5\">\n          <kbd>⌘</kbd>\n          <kbd>F</kbd>\n        </div>\n        <span className=\"font-sans text-neutral-500 text-sm dark:text-neutral-500\">\n          for the search\n        </span>\n      </div>\n      {searchOpen && (\n        <Portal>\n          <div className=\"fixed top-4 right-4 w-[400px]\">\n            <Input\n              aria-label=\"Search icons\"\n              autoCapitalize=\"off\"\n              autoComplete=\"off\"\n              autoCorrect=\"off\"\n              autoFocus\n              className=\"shadow-sm\"\n              inputMode=\"search\"\n              leadingIcon={\n                <SearchIcon\n                  className=\"size-4 text-neutral-400\"\n                  strokeWidth={2.5}\n                />\n              }\n              onChange={(e) => setSearchValue(e.target.value)}\n              placeholder=\"Search icons...\"\n              role=\"search\"\n              spellCheck=\"false\"\n              trailingIcon={<kbd className=\"w-8\">esc</kbd>}\n              value={searchValue}\n            />\n          </div>\n        </Portal>\n      )}\n    </>\n  );\n};\n\nexport { SearchInput };\n"
  },
  {
    "path": "components/sponsorship/amount-selector.tsx",
    "content": "\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { SUPPORT_LIST } from \"@/app/sponsorship/page\";\n\nimport { Radio, RadioGroup } from \"@/components/ui/radio\";\nimport { cn } from \"@/lib/utils\";\nimport { Stamp } from \"./stamp\";\n\nconst DESIGN_WIDTH = 1040;\nconst DESIGN_HEIGHT = 460;\n\ntype AmountSelectorProps = {\n  amounts: typeof SUPPORT_LIST;\n};\n\nconst AmountSelector = ({ amounts }: AmountSelectorProps) => {\n  const [selectedAmount, setSelectedAmount] = useState(\n    amounts[0].price.toString()\n  );\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [scale, setScale] = useState(0);\n\n  useEffect(() => {\n    const container = containerRef.current;\n    if (!container) return;\n\n    const updateScale = () => {\n      const width = container.offsetWidth;\n      setScale(width / DESIGN_WIDTH);\n    };\n\n    updateScale();\n\n    const resizeObserver = new ResizeObserver(updateScale);\n    resizeObserver.observe(container);\n\n    return () => resizeObserver.disconnect();\n  }, []);\n\n  const formatCurrency = (amount: number) => {\n    return new Intl.NumberFormat(\"en-US\", {\n      style: \"currency\",\n      currency: \"USD\",\n      minimumFractionDigits: 0,\n      maximumFractionDigits: 0,\n    }).format(amount);\n  };\n\n  const isLastItemOdd = amounts.length % 2 !== 0;\n  const buyLink = amounts.find(\n    (amount) => amount.price.toString() === selectedAmount\n  )?.link;\n\n  return (\n    <div className=\"mx-auto mt-8 flex w-full max-w-[1016px] flex-col items-center gap-6 px-4\">\n      <RadioGroup\n        aria-label=\"Select donation amount\"\n        className=\"grid w-full grid-cols-2 gap-1 min-[610px]:flex min-[610px]:flex-row min-[610px]:justify-center\"\n        onValueChange={(value) => setSelectedAmount(value as string)}\n        value={selectedAmount}\n      >\n        {amounts.map((amount, index) => {\n          const isLastItem = index === amounts.length - 1;\n          const shouldSpanFull = isLastItem && isLastItemOdd;\n\n          return (\n            <label\n              className={cn(\n                \"group relative flex w-full cursor-pointer items-center justify-center data-checked:bg-primary data-unchecked:bg-white hover:data-unchecked:bg-neutral-50/80 dark:data-unchecked:bg-black dark:hover:data-unchecked:bg-neutral-950/60\",\n                \"h-[60px] min-[786px]:h-[84px]\",\n                \"supports-[corner-shape:squircle]:corner-squircle\",\n                shouldSpanFull && \"max-[610px]:col-span-2\",\n                \"max-[610px]:odd:rounded-l-[20px] max-[610px]:odd:supports-[corner-shape:squircle]:rounded-l-[20px]\",\n                \"max-[610px]:even:rounded-r-[20px] max-[610px]:even:supports-[corner-shape:squircle]:rounded-r-[20px]\",\n                shouldSpanFull &&\n                  \"max-[610px]:rounded-r-[20px] max-[610px]:supports-[corner-shape:squircle]:rounded-r-[20px]\",\n                \"min-[610px]:first:rounded-l-[20px] min-[610px]:first:supports-[corner-shape:squircle]:rounded-l-[30px]\",\n                \"min-[610px]:last:rounded-r-[20px] min-[610px]:last:supports-[corner-shape:squircle]:rounded-r-[30px]\",\n                \"has-focus-visible:outline-2 has-focus-visible:outline-primary has-focus-visible:outline-offset-2\"\n              )}\n              data-checked={\n                selectedAmount === amount.price.toString() ? \"\" : undefined\n              }\n              data-unchecked={\n                selectedAmount !== amount.price.toString() ? \"\" : undefined\n              }\n              htmlFor={amount.price.toString()}\n              key={amount.price}\n            >\n              <Radio.Root\n                aria-label={formatCurrency(amount.price)}\n                className=\"peer absolute inset-0 opacity-0\"\n                value={amount.price.toString()}\n              >\n                <Radio.Indicator />\n              </Radio.Root>\n              <span className=\"pointer-events-none font-sans text-[#0A0A0A] text-[24px] group-data-checked:text-white min-[786px]:text-[30px] dark:text-white\">\n                {formatCurrency(amount.price)}\n              </span>\n            </label>\n          );\n        })}\n      </RadioGroup>\n\n      <div\n        className={cn(\n          \"supports-[corner-shape:squircle]:corner-squircle relative w-full rounded-[40px] bg-white supports-[corner-shape:squircle]:rounded-[60px] dark:bg-black\",\n          \"max-[610px]:hidden\",\n          \"transition-opacity duration-100\",\n          scale === 0 ? \"opacity-0\" : \"opacity-100\"\n        )}\n        ref={containerRef}\n        style={{\n          height: scale === 0 ? DESIGN_HEIGHT : DESIGN_HEIGHT * scale,\n        }}\n      >\n        <div\n          className=\"origin-top-left\"\n          style={{\n            width: DESIGN_WIDTH,\n            height: DESIGN_HEIGHT,\n            transform: `scale(${scale})`,\n          }}\n        >\n          <div className=\"flex items-center justify-between px-[70px] pt-[38px]\">\n            <p className=\"font-sans text-[#525252] text-[42px] dark:text-[#D4D4D4]\">\n              Chill Guy Certificate\n            </p>\n            <p className=\"font-sans text-[#737373] text-[24px] dark:text-[#D4D4D4]\">\n              Supporter\n            </p>\n          </div>\n          <div\n            aria-hidden=\"true\"\n            className=\"pointer-events-none relative mt-[38px] w-full select-none\"\n          >\n            <svg\n              className=\"w-full\"\n              height=\"2px\"\n              preserveAspectRatio=\"none\"\n              width=\"100%\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <line\n                className=\"text-background\"\n                stroke=\"currentColor\"\n                strokeDasharray=\"14 14\"\n                strokeWidth=\"2\"\n                x1=\"0\"\n                x2=\"100%\"\n                y1=\"50%\"\n                y2=\"50%\"\n              />\n            </svg>\n            <div className=\"absolute top-1/2 left-0 size-[100px] -translate-y-1/2 overflow-hidden\">\n              <div className=\"size-full -translate-x-1/2 rounded-full bg-background\" />\n            </div>\n            <div className=\"absolute top-1/2 right-0 size-[100px] -translate-y-1/2 overflow-hidden\">\n              <div className=\"size-full translate-x-1/2 rounded-full bg-background\" />\n            </div>\n          </div>\n          <div className=\"mt-[38px] flex w-full items-center gap-[60px] px-[70px]\">\n            <div className=\"supports-[corner-shape:squircle]:corner-squircle h-[242px] w-[220px] overflow-hidden rounded-[20px] border border-[#DBD8D8] supports-[corner-shape:squircle]:rounded-[40px] dark:border-neutral-900\">\n              <svg\n                className=\"scale-105\"\n                fill=\"none\"\n                height=\"242\"\n                viewBox=\"0 0 220 242\"\n                width=\"220\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <g clipPath=\"url(#clip0_143_5174)\">\n                  <path\n                    clipRule=\"evenodd\"\n                    d=\"M387.445 310.024C392.203 352.113 365.537 391.74 340.112 425.638C317.539 455.734 279.093 466.745 251.066 491.851C218.362 521.145 205.465 582.328 161.659 585.487C117.56 588.667 97.3329 526.999 58.585 505.731C23.546 486.498 -31.3131 501.235 -52.9846 467.669C-74.8857 433.747 -39.8347 389.355 -42.5564 349.077C-45.1892 310.113 -76.4582 275.144 -68.5785 236.891C-60.2811 196.611 -29.9371 164.636 1.02023 137.532C34.1658 108.511 71.7354 81.9862 115.372 75.834C159.818 69.5677 207.436 78.4201 244.877 103.151C280.668 126.793 291.176 172.726 315.509 208.034C339.526 242.883 382.691 267.978 387.445 310.024Z\"\n                    fill=\"#F2F2F2\"\n                    fillRule=\"evenodd\"\n                    opacity=\"0.7\"\n                  />\n                  <path\n                    d=\"M233.483 147.193H192.798V226.768H50.9526L54.8667 147.193H17.9702L115.891 53.459L233.483 147.193Z\"\n                    fill=\"#EE4822\"\n                  />\n                  <circle cx=\"91.0027\" cy=\"155.021\" fill=\"white\" r=\"18.3677\" />\n                  <circle cx=\"140.3\" cy=\"155.021\" fill=\"white\" r=\"18.3677\" />\n                  <circle\n                    cx=\"92.6623\"\n                    cy=\"157.391\"\n                    fill=\"#09090B\"\n                    r=\"5.33255\"\n                  />\n                  <circle\n                    cx=\"136.743\"\n                    cy=\"157.391\"\n                    fill=\"#09090B\"\n                    r=\"5.33255\"\n                  />\n                  <path\n                    d=\"M117.653 35.7343C116.161 32.7765 114.169 30.8566 113.209 29.9355C112.93 29.6696 112.762 29.5074 112.658 29.3712C112.029 28.5474 111.899 27.821 111.769 27.114C111.698 26.7313 111.627 26.3291 111.471 25.875C111.276 25.3107 110.868 24.1302 109.798 23.3843C109.324 23.0665 108.332 22.5541 107.106 22.7746C105.594 23.073 104.816 24.5908 103.843 26.5107C102.773 28.6318 101.553 31.0382 98.8876 32.5041C97.8043 33.1009 96.8768 33.3278 96.0335 33.49C96.0335 33.49 90.4034 34.6057 88.4899 34.9883C88.2824 35.0273 88.1461 34.7938 88.2759 34.6251C88.5353 34.2943 88.7883 33.957 89.0542 33.6327C92.0704 29.9355 93.1471 25.2783 92.0055 20.8741C89.9688 12.9867 81.4198 8.35546 72.9551 10.5414C70.873 11.0797 68.8947 12.0202 67.1693 13.3045C65.4699 14.5629 64.0169 16.152 62.9337 17.9682C61.2473 20.7962 60.3392 24.461 60.9489 27.8015C60.9878 28.0285 60.9035 28.2555 60.7154 28.3917C59.9824 28.9171 59.2106 30.0263 58.5619 30.396C57.0571 31.2522 55.4874 30.182 53.8918 30.7852C53.3469 30.9863 52.8929 31.4209 52.7177 31.9722C52.2507 33.4381 53.6907 34.7289 54.8518 35.3776C56.6096 36.357 59.3792 36.8889 62.4213 36.5905C62.577 36.5775 62.6872 36.7332 62.6159 36.8694C62.1424 37.8424 61.8764 38.9321 61.844 39.4574C61.7727 40.7353 62.5186 41.812 63.8548 41.8444C64.5683 41.8639 65.2558 41.5979 65.8915 41.2866C66.9034 40.7872 68.0774 39.8077 69.0568 38.5299C69.193 38.3548 69.4266 38.2899 69.6341 38.3807C70.1011 38.5818 71.8524 39.1721 72.8708 39.5094C73.1303 39.5937 73.1368 39.9504 72.8903 40.0607C72.1573 40.372 71.606 40.5991 71.366 40.7288C69.699 41.598 67.766 42.7525 66.0212 44.7308C64.4515 46.5211 63.2515 48.7329 62.6483 50.9578C61.6559 54.6874 62.1878 57.5868 62.8105 59.3575C64.9315 65.3898 71.0157 67.6341 72.8319 68.179C73.4416 68.3606 74.0902 68.3736 74.7064 68.2114L110.654 58.9165C111.867 58.6051 112.976 58.1057 113.949 57.4441C114.234 57.2495 114.416 57.1003 114.572 56.9706C118.074 53.9933 119.313 50.0561 119.683 48.4994C119.696 48.441 121.097 42.2141 117.646 35.7732V35.7343H117.653Z\"\n                    fill=\"#FDC700\"\n                  />\n                  <path\n                    d=\"M117.653 35.7343C116.161 32.7765 114.169 30.8566 113.209 29.9355C112.93 29.6696 112.762 29.5074 112.658 29.3712C112.029 28.5474 111.899 27.821 111.769 27.114C111.698 26.7313 111.627 26.3291 111.471 25.875C111.276 25.3107 110.868 24.1302 109.798 23.3843C109.324 23.0665 108.332 22.5541 107.106 22.7746C105.594 23.073 104.816 24.5908 103.843 26.5107C102.773 28.6318 101.553 31.0382 98.8876 32.5041C97.8043 33.1009 96.8768 33.3278 96.0335 33.49C96.0335 33.49 90.4034 34.6057 88.4899 34.9883C88.2824 35.0273 88.1461 34.7938 88.2759 34.6251C88.5353 34.2943 88.7883 33.957 89.0542 33.6327C92.0704 29.9355 93.1471 25.2783 92.0055 20.8741C89.9688 12.9867 81.4198 8.35546 72.9551 10.5414C70.873 11.0797 68.8947 12.0202 67.1693 13.3045C65.4699 14.5629 64.0169 16.152 62.9337 17.9682C61.2473 20.7962 60.3392 24.461 60.9489 27.8015C60.9878 28.0285 60.9035 28.2555 60.7154 28.3917C59.9824 28.9171 59.2106 30.0263 58.5619 30.396C57.0571 31.2522 55.4874 30.182 53.8918 30.7852C53.3469 30.9863 52.8929 31.4209 52.7177 31.9722C52.2507 33.4381 53.6907 34.7289 54.8518 35.3776C56.6096 36.357 59.3792 36.8889 62.4213 36.5905C62.577 36.5775 62.6872 36.7332 62.6159 36.8694C62.1424 37.8424 61.8764 38.9321 61.844 39.4574C61.7727 40.7353 62.5186 41.812 63.8548 41.8444C64.5683 41.8639 65.2558 41.5979 65.8915 41.2866C66.9034 40.7872 68.0774 39.8077 69.0568 38.5299C69.193 38.3548 69.4266 38.2899 69.6341 38.3807C70.1011 38.5818 71.8524 39.1721 72.8708 39.5094C73.1303 39.5937 73.1368 39.9504 72.8903 40.0607C72.1573 40.372 71.606 40.5991 71.366 40.7288C69.699 41.598 67.766 42.7525 66.0212 44.7308C64.4515 46.5211 63.2515 48.7329 62.6483 50.9578C61.6559 54.6874 62.1878 57.5868 62.8105 59.3575C64.9315 65.3898 71.0157 67.6341 72.8319 68.179C73.4416 68.3606 74.0902 68.3736 74.7064 68.2114L110.654 58.9165C111.867 58.6051 112.976 58.1057 113.949 57.4441C114.234 57.2495 114.416 57.1003 114.572 56.9706C118.074 53.9933 119.313 50.0561 119.683 48.4994C119.696 48.441 121.097 42.2141 117.646 35.7732V35.7343H117.653Z\"\n                    fill=\"#FDC700\"\n                  />\n                  <path\n                    d=\"M57.5 30.5C58.8723 30.3475 61 28 61 28C63.8333 31.3333 69.5 38.1 69.5 38.5C69.5 38.9 67.1667 40.8333 66 41.5C65.3333 41.8333 64 42.5 62.5 41.5C61.4475 40.7984 61.5 39 62.5 37C57.5 38 53 35 52.5 33.5C52.5 31.5 53.0528 31.2236 53.5 31C54.5 30.5 56 30.6667 57.5 30.5Z\"\n                    fill=\"#E7000B\"\n                  />\n                  <path\n                    d=\"M66.7994 19.8228C64.9508 19.7839 63.5173 21.9308 63.4524 24.8237C63.3876 27.7166 64.7303 29.9285 66.5724 29.9674C66.7994 29.9674 67.0264 29.9414 67.2405 29.8831C67.9345 29.6885 68.5637 29.1566 69.0437 28.3458C69.582 27.4377 69.8934 26.2378 69.9193 24.9729C69.9842 22.08 68.6415 19.8682 66.7994 19.8292V19.8228Z\"\n                    fill=\"white\"\n                  />\n                  <path\n                    d=\"M66.7477 21.6517C65.7552 21.6258 64.9834 23.0009 64.951 24.8495C64.9121 26.6981 65.632 28.1121 66.6244 28.1381C66.7477 28.1381 66.8644 28.1251 66.9812 28.0862C67.3574 27.963 67.6882 27.6192 67.9477 27.1003C68.2331 26.5165 68.4017 25.7511 68.4211 24.9403C68.4601 23.0917 67.7401 21.6777 66.7477 21.6517Z\"\n                    fill=\"black\"\n                  />\n                  <path\n                    d=\"M91.1039 89.4934C91.1039 77.0266 80.9981 66.9209 68.5314 66.9209C56.0646 66.9209 45.9589 77.0266 45.9589 89.4934C45.9589 96.8164 49.4486 103.322 54.8517 107.448C51.4464 109.329 48.988 112.701 48.3459 116.691C47.0681 116.269 45.6995 116.029 44.279 116.029C37.1375 116.029 31.3452 121.821 31.3452 128.963C31.3452 136.104 37.1375 141.897 44.279 141.897C50.7134 141.897 56.0322 137.194 57.0311 131.045C58.3089 131.467 59.6776 131.706 61.0981 131.706C68.2395 131.706 74.0318 125.914 74.0318 118.773C74.0318 116.204 73.2729 113.817 71.9821 111.806C82.8143 110.146 91.1104 100.786 91.1104 89.4934H91.1039Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                  <path\n                    d=\"M42.0736 110.983C44.7525 110.983 46.9189 108.81 46.9189 106.137C46.9189 103.465 44.746 101.292 42.0736 101.292C39.4012 101.292 37.2283 103.465 37.2283 106.137C37.2283 108.81 39.4012 110.983 42.0736 110.983Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                  <path\n                    d=\"M3.28509 167.303C7.38683 167.303 10.712 163.978 10.712 159.876C10.712 155.774 7.38683 152.449 3.28509 152.449C-0.816657 152.449 -4.14178 155.774 -4.14178 159.876C-4.14178 163.978 -0.816657 167.303 3.28509 167.303Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                  <path\n                    d=\"M223.334 196.855C219.105 196.855 215.155 198.023 211.769 200.04C209.603 196.057 206.262 192.801 202.221 190.725C203.869 188.553 204.861 185.854 204.861 182.916C204.861 175.774 199.069 169.982 191.927 169.982C184.786 169.982 178.994 175.774 178.994 182.916C178.994 185.854 179.986 188.553 181.634 190.725C175.465 193.891 170.951 199.813 169.705 206.863H64.9897C65.2297 205.287 65.353 203.679 65.353 202.038C65.353 184.291 50.9662 169.904 33.2196 169.904C17.2308 169.904 3.97919 181.58 1.50789 196.868C1.36519 196.868 1.22896 196.855 1.08626 196.855C-11.3805 196.855 -21.4862 206.961 -21.4862 219.428C-21.4862 231.894 -11.3805 242 1.08626 242H223.341C235.808 242 245.913 231.894 245.913 219.428C245.913 206.961 235.808 196.855 223.341 196.855H223.334Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                  <path\n                    d=\"M223.334 196.855C219.105 196.855 215.155 198.023 211.769 200.04C209.603 196.057 206.262 192.801 202.221 190.725C203.869 188.553 204.861 185.854 204.861 182.916C204.861 175.774 199.069 169.982 191.927 169.982C184.786 169.982 178.994 175.774 178.994 182.916C178.994 185.854 179.986 188.553 181.633 190.725C175.465 193.891 170.951 199.813 169.705 206.863H64.9896C65.2296 205.287 65.3528 203.679 65.3528 202.038C65.3528 184.291 50.9661 169.904 33.2195 169.904C17.2306 169.904 3.97906 181.58 1.50777 196.868C1.36507 196.868 1.22884 196.855 1.08614 196.855C-11.3806 196.855 -21.4863 206.961 -21.4863 219.428C-21.4863 231.894 -11.3806 242 1.08614 242H223.341C235.807 242 245.913 231.894 245.913 219.428C245.913 206.961 235.807 196.855 223.341 196.855H223.334Z\"\n                    fill=\"#B8E6FE\"\n                    opacity=\"0.16\"\n                  />\n                  <path\n                    d=\"M209.707 172.149C212.383 172.149 214.552 169.979 214.552 167.303C214.552 164.627 212.383 162.458 209.707 162.458C207.031 162.458 204.861 164.627 204.861 167.303C204.861 169.979 207.031 172.149 209.707 172.149Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                  <path\n                    d=\"M217.133 190.342C221.235 190.342 224.56 187.017 224.56 182.915C224.56 178.813 221.235 175.488 217.133 175.488C213.032 175.488 209.707 178.813 209.707 182.915C209.707 187.017 213.032 190.342 217.133 190.342Z\"\n                    fill=\"#B8E6FE\"\n                  />\n                </g>\n                <defs>\n                  <clipPath id=\"clip0_143_5174\">\n                    <rect fill=\"white\" height=\"242\" rx=\"30\" width=\"220\" />\n                  </clipPath>\n                </defs>\n              </svg>\n            </div>\n            <div className=\"flex flex-col gap-[18px]\">\n              <h3 className=\"font-sans text-[#0A0A0A] text-[42px] dark:text-white\">\n                <span className=\"tabular-nums\">\n                  {formatCurrency(Number(selectedAmount))}\n                </span>{\" \"}\n                Donation\n              </h3>\n              <p className=\"max-w-[345px] font-mono text-[#404040] text-[14px] dark:text-[#D4D4D4]\">\n                The icons will always be free and open-source, regardless of\n                donations\n              </p>\n              <a\n                className=\"mt-[16px] flex w-fit cursor-pointer items-center justify-center bg-primary px-[24px] py-[8px] font-sans text-[18px] text-white transition-colors duration-100 hover:bg-[color-mix(in_oklab,var(--color-primary),black_10%)] focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-1\"\n                href={buyLink}\n                rel=\"noopener noreferrer\"\n                tabIndex={0}\n                target=\"_blank\"\n              >\n                Sponsor\n              </a>\n            </div>\n            <Stamp className=\"absolute -right-[56px] -bottom-[48px] size-[230px]\" />\n          </div>\n        </div>\n      </div>\n\n      <a\n        className=\"supports-[corner-shape:squircle]:corner-squircle hidden w-full cursor-pointer items-center justify-center rounded-[12px] bg-primary px-[24px] py-[8px] font-sans text-[18px] text-white transition-colors duration-100 hover:bg-[color-mix(in_oklab,var(--color-primary),black_10%)] focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-1 supports-[corner-shape:squircle]:rounded-[20px] max-[610px]:flex\"\n        href={buyLink}\n        rel=\"noopener noreferrer\"\n        tabIndex={0}\n        target=\"_blank\"\n      >\n        Sponsor\n      </a>\n    </div>\n  );\n};\n\nexport { AmountSelector };\n"
  },
  {
    "path": "components/sponsorship/stamp.tsx",
    "content": "import { cn } from \"@/lib/utils\";\n\nconst DuckSvg = () => {\n  return (\n    <svg\n      className=\"translate-y-[-5%] [grid-area:1/1]\"\n      fill=\"none\"\n      height=\"87\"\n      viewBox=\"0 0 101 87\"\n      width=\"101\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M97.1846 38.3866C94.9593 33.9746 91.9889 31.1107 90.557 29.7368C90.1409 29.3401 89.8894 29.0982 89.7346 28.895C88.7961 27.6663 88.6026 26.5826 88.4091 25.528C88.3026 24.9572 88.1962 24.3573 87.964 23.68C87.6737 22.8382 87.0642 21.0774 85.4677 19.9647C84.7614 19.4906 83.2811 18.7263 81.4525 19.0552C79.1981 19.5003 78.0371 21.7643 76.5858 24.6282C74.9893 27.7921 73.1704 31.3816 69.1938 33.5682C67.578 34.4584 66.1944 34.797 64.9367 35.0389C64.9367 35.0389 56.5384 36.703 53.6842 37.2739C53.3746 37.3319 53.1714 36.9836 53.3649 36.732C53.7519 36.2386 54.1293 35.7355 54.526 35.2518C59.025 29.7368 60.6311 22.7899 58.9282 16.2203C55.8902 4.45512 43.1381 -2.45308 30.5117 0.807517C27.4059 1.61057 24.455 3.01345 21.8813 4.92917C19.3464 6.80619 17.1791 9.17665 15.5633 11.8857C13.0477 16.1042 11.6932 21.5708 12.6026 26.5536C12.6607 26.8923 12.5349 27.2309 12.2543 27.434C11.161 28.2178 10.0097 29.8723 9.04212 30.4238C6.79743 31.7009 4.45599 30.1044 2.07585 31.0043C1.26312 31.3042 0.585848 31.9525 0.324614 32.7749C-0.372012 34.9615 1.77595 36.8869 3.50784 37.8544C6.12986 39.3154 10.2612 40.1088 14.799 39.6637C15.0312 39.6444 15.1956 39.8766 15.0892 40.0797C14.3829 41.531 13.9862 43.1565 13.9378 43.9402C13.8314 45.8462 14.9441 47.4523 16.9372 47.5007C18.0015 47.5297 19.0271 47.1331 19.9753 46.6687C21.4846 45.9237 23.2359 44.4627 24.6968 42.5566C24.9 42.2954 25.2483 42.1987 25.558 42.3341C26.2546 42.6341 28.8669 43.5145 30.3859 44.0176C30.773 44.1434 30.7827 44.6755 30.415 44.84C29.3217 45.3044 28.4992 45.6431 28.1413 45.8366C25.6547 47.1331 22.7714 48.8553 20.1688 51.8063C17.8273 54.4767 16.0374 57.776 15.1376 61.0946C13.6572 66.658 14.4506 70.9828 15.3795 73.6242C18.5433 82.6222 27.6188 85.97 30.3279 86.7827C31.2374 87.0536 32.2049 87.0729 33.1241 86.831L86.7449 72.9663C88.5542 72.5018 90.2087 71.7569 91.66 70.77C92.0857 70.4797 92.3566 70.2572 92.5888 70.0636C97.8135 65.6227 99.6615 59.7497 100.213 57.4276C100.232 57.3406 102.322 48.0522 97.1749 38.4446V38.3866H97.1846Z\"\n        fill=\"#FDC700\"\n      />\n      <path\n        d=\"M97.1846 38.3866C94.9593 33.9746 91.9889 31.1107 90.557 29.7368C90.1409 29.3401 89.8894 29.0982 89.7346 28.895C88.7961 27.6663 88.6026 26.5826 88.4091 25.528C88.3026 24.9572 88.1962 24.3573 87.964 23.68C87.6737 22.8382 87.0642 21.0774 85.4677 19.9647C84.7614 19.4906 83.2811 18.7263 81.4525 19.0552C79.1981 19.5003 78.0371 21.7643 76.5858 24.6282C74.9893 27.7921 73.1704 31.3816 69.1938 33.5682C67.578 34.4584 66.1944 34.797 64.9367 35.0389C64.9367 35.0389 56.5384 36.703 53.6842 37.2739C53.3746 37.3319 53.1714 36.9836 53.3649 36.732C53.7519 36.2386 54.1293 35.7355 54.526 35.2518C59.025 29.7368 60.6311 22.7899 58.9282 16.2203C55.8902 4.45512 43.1381 -2.45308 30.5117 0.807517C27.4059 1.61057 24.455 3.01345 21.8813 4.92917C19.3464 6.80619 17.1791 9.17665 15.5633 11.8857C13.0477 16.1042 11.6932 21.5708 12.6026 26.5536C12.6607 26.8923 12.5349 27.2309 12.2543 27.434C11.161 28.2178 10.0097 29.8723 9.04212 30.4238C6.79743 31.7009 4.45599 30.1044 2.07585 31.0043C1.26312 31.3042 0.585848 31.9525 0.324614 32.7749C-0.372012 34.9615 1.77595 36.8869 3.50784 37.8544C6.12986 39.3154 10.2612 40.1088 14.799 39.6637C15.0312 39.6444 15.1956 39.8766 15.0892 40.0797C14.3829 41.531 13.9862 43.1565 13.9378 43.9402C13.8314 45.8462 14.9441 47.4523 16.9372 47.5007C18.0015 47.5297 19.0271 47.1331 19.9753 46.6687C21.4846 45.9237 23.2359 44.4627 24.6968 42.5566C24.9 42.2954 25.2483 42.1987 25.558 42.3341C26.2546 42.6341 28.8669 43.5145 30.3859 44.0176C30.773 44.1434 30.7827 44.6755 30.415 44.84C29.3217 45.3044 28.4992 45.6431 28.1413 45.8366C25.6547 47.1331 22.7714 48.8553 20.1688 51.8063C17.8273 54.4767 16.0374 57.776 15.1376 61.0946C13.6572 66.658 14.4506 70.9828 15.3795 73.6242C18.5433 82.6222 27.6188 85.97 30.3279 86.7827C31.2374 87.0536 32.2049 87.0729 33.1241 86.831L86.7449 72.9663C88.5542 72.5018 90.2087 71.7569 91.66 70.77C92.0857 70.4797 92.3566 70.2572 92.5888 70.0636C97.8135 65.6227 99.6615 59.7497 100.213 57.4276C100.232 57.3406 102.322 48.0522 97.1749 38.4446V38.3866H97.1846Z\"\n        fill=\"#FDC700\"\n      />\n      <path\n        d=\"M7.45825 30.5787C9.50519 30.3513 12.679 26.8496 12.679 26.8496C16.9053 31.8218 25.358 41.9153 25.358 42.5119C25.358 43.1086 21.8775 45.9924 20.1373 46.9869C19.1428 47.4841 17.154 48.4785 14.9164 46.9869C13.3465 45.9403 13.4248 43.2578 14.9165 40.2745C7.45825 41.7661 0.745825 37.2912 0 35.0537C0 32.0704 0.824535 31.6581 1.49165 31.3246C2.9833 30.5787 5.22077 30.8273 7.45825 30.5787Z\"\n        fill=\"#E7000B\"\n      />\n      <path\n        d=\"M21.3296 14.6531C18.5721 14.5951 16.4339 17.7976 16.3371 22.1128C16.2403 26.428 18.2431 29.7273 20.9909 29.7853C21.3296 29.7853 21.6682 29.7466 21.9875 29.6595C23.0227 29.3693 23.9613 28.5759 24.6773 27.3665C25.4803 26.0119 25.9447 24.222 25.9834 22.3354C26.0802 18.0201 24.0774 14.7208 21.3296 14.6627V14.6531Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M21.2523 17.3814C19.772 17.3427 18.6207 19.3939 18.5723 22.1514C18.5143 24.9089 19.5882 27.0181 21.0685 27.0568C21.2523 27.0568 21.4265 27.0374 21.6007 26.9794C22.1619 26.7956 22.6553 26.2827 23.0423 25.5087C23.468 24.6379 23.7196 23.4962 23.7486 22.2868C23.8067 19.5293 22.7327 17.4201 21.2523 17.3814Z\"\n        fill=\"black\"\n      />\n    </svg>\n  );\n};\n\nconst Circles = () => {\n  return (\n    <svg\n      className=\"[grid-area:1/1]\"\n      fill=\"none\"\n      height=\"235\"\n      viewBox=\"0 0 236 235\"\n      width=\"236\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle\n        cx=\"117.318\"\n        cy=\"117.235\"\n        r=\"104.12\"\n        stroke=\"#737373\"\n        strokeWidth=\"5\"\n      />\n      <path\n        d=\"M214.885 61.1481C215.447 62.6633 212.922 57.9804 214.347 61.2351C213.955 60.6129 213.554 59.9917 213.15 59.3785C213.185 59.14 213.216 58.8968 213.249 58.6571C213.805 59.4786 214.349 60.3065 214.886 61.1477C214.886 61.1478 214.886 61.1479 214.885 61.1481ZM217.23 61.3868C216.399 60.7882 214.835 58.3322 216.059 61.26C216.313 61.4033 216.57 61.5533 216.824 61.6992C217.258 62.7145 217.679 63.7378 218.081 64.76C218.314 65.0818 218.545 65.4048 218.774 65.7302C218.769 66.2954 218.756 66.8556 218.742 67.4184C218.581 67.0044 218.415 66.5857 218.249 66.1736C217.266 64.7104 216.493 63.3674 215.285 61.3265C215.335 61.5377 215.384 61.7491 215.433 61.9604C214.934 60.8632 214.418 59.7738 213.886 58.6962C214.514 59.5308 215.203 60.4774 215.765 61.2709C215.36 59.7177 213.744 57.4878 212.901 56.3403C211.755 54.776 212.154 55.0377 211.287 53.8889C211.148 53.7059 211.008 53.7696 210.75 53.397C209.468 51.5046 206.855 47.9116 208.698 49.7813C210.898 52.844 212.928 55.3691 214.762 58.6006C214.601 57.5513 215.758 59.1331 217.23 61.3868ZM166.582 15.3642C167.699 15.6779 169.741 16.8029 171.052 17.6763C171.054 17.6771 171.055 17.678 171.057 17.6789C171.347 17.8704 171.906 18.478 170.921 17.9298C169.317 17.0443 168.709 16.2724 167.718 16.0921C167.355 15.8518 166.968 15.6089 166.582 15.3642ZM162.942 13.7069C161.947 13.1606 162.545 13.0707 163.807 13.7285C163.807 13.7282 163.807 13.728 163.807 13.7278C164.331 14.0059 163.174 13.745 165.204 14.4031C165.514 14.7643 165.821 15.1079 166.122 15.4636C165.656 15.243 165.228 15.0465 164.735 14.8207C165.202 14.6816 163.935 14.2541 162.942 13.7069ZM207.404 48.3578C207.064 48.3937 207.524 48.982 208.115 50.1179C207.413 49.1536 206.695 48.1981 205.965 47.2599C206.448 47.6226 206.925 47.9857 207.404 48.3578ZM221.547 72.6153C221.548 72.617 221.549 72.6187 221.549 72.6203C221.746 72.9639 221.942 73.3086 222.132 73.6485C222.127 73.9049 222.12 74.1582 222.112 74.414C222.726 75.6572 223.321 76.9224 223.891 78.1951C223.54 78.1431 222.713 75.7931 221.985 74.6152C221.305 72.7032 221.064 71.7298 221.259 71.4999C221.356 71.87 221.451 72.2399 221.547 72.6153ZM5.08692 140.586C5.2683 141.029 5.45102 141.464 5.6374 141.903C5.54286 141.286 5.44443 140.673 5.36563 140.05C4.67329 138.52 4.96932 138.305 4.58391 136.19C3.53212 129.707 3.16491 131.449 3.51509 125.47C3.86125 130.22 4.12174 128.359 4.75096 131.168C4.58239 131.791 3.71443 129.021 3.82764 130.956C4.47754 134.228 5.21713 137.352 6.13408 140.908C6.15224 140.794 6.17083 140.681 6.18933 140.567C6.04392 139.998 5.90572 139.443 5.7698 138.877C5.99749 139.472 6.22515 140.047 6.46654 140.651C6.05337 139.912 6.61846 141.897 6.28055 141.689C6.12809 141.597 5.76114 140.742 5.53331 140.236C5.74758 141.617 6.00022 143.024 6.27036 144.406C5.99827 143.722 5.73236 143.035 5.47373 142.347C5.34011 141.764 5.21278 141.184 5.08806 140.597C5.08768 140.593 5.08731 140.59 5.08692 140.586ZM225.102 152.177C224.856 153.942 223.825 156.97 222.894 158.411C223.693 156.349 224.426 154.28 225.102 152.177ZM221.407 71.2883C221.442 71.4913 221.473 71.6883 221.506 71.8913C221.068 71.1225 220.621 70.3557 220.167 69.6009C220.229 69.3866 220.29 69.1685 220.348 68.949C220.709 69.7223 221.064 70.5058 221.407 71.2883ZM186.985 27.5148C187.497 27.9032 187.54 27.9417 188.153 28.4567C188.152 28.456 188.151 28.4554 188.151 28.4547C188.399 28.6527 190.392 30.4069 190.089 30.3078C189.079 29.4635 187.99 28.5802 186.927 27.7528C186.941 27.669 186.979 27.6053 186.985 27.5148ZM198.504 37.8885C198.505 37.89 198.506 37.8915 198.507 37.8929C198.83 38.248 199.12 38.5989 199.457 38.9613C198.096 37.8008 198.125 37.3783 196.911 36.3025C195.691 35.2333 194.847 34.6806 194.132 33.4279C194.553 33.7252 195.021 34.0318 195.457 34.3384C197.008 36.0529 197.556 36.3731 198.979 37.5734C198.82 37.6783 198.663 37.7833 198.504 37.8885ZM3.73931 111.39C3.54534 110.937 3.78621 110.456 3.79185 110.406C3.79204 110.407 3.79224 110.408 3.79244 110.409C3.85753 106.5 3.85599 110.916 4.17659 107.258C4.18321 107.806 4.19743 108.345 4.21275 108.889C4.04788 109.716 3.87673 110.574 3.73931 111.39ZM72.3753 12.7552C72.4332 12.7988 72.4975 12.8399 72.5553 12.8837C70.522 13.75 70.1192 14.2127 68.3695 14.7918C69.6878 14.0874 71.023 13.4082 72.375 12.7545C72.3751 12.7547 72.3752 12.7549 72.3753 12.7552ZM178.128 20.737C180.267 21.9508 181.811 22.9288 183.622 24.4549C183.623 24.4562 183.624 24.4574 183.626 24.4587C183.729 24.5471 183.118 24.2726 183.243 24.4027C183.65 24.6684 184.075 24.9374 184.486 25.2084C184.477 25.3329 184.466 25.4555 184.457 25.5793C183.363 24.7394 182.252 23.918 181.122 23.114C181.256 23.2801 181.395 23.4488 181.528 23.6154C180.541 22.9756 179.552 22.3563 178.547 21.7485C178.984 21.8235 179.42 21.9008 179.854 21.978C179.283 21.5594 178.707 21.1461 178.128 20.737ZM41.0553 31.9667C41.3925 31.7575 40.9301 32.3252 41.4216 31.9657C41.9115 31.6053 42.6705 30.7762 42.6003 31.0946C42.0019 31.6485 41.3818 32.2386 40.7858 32.8162C42.9909 31.2801 44.8391 29.3512 45.1469 29.6581C43.1076 31.1995 41.5625 32.6302 39.8388 34.4028C39.6727 34.0808 41.3062 32.1834 39.9337 33.0033C40.3017 32.6589 40.6895 32.2985 41.0517 31.9709C41.0529 31.9695 41.0541 31.9681 41.0553 31.9667ZM234.777 105.34C234.919 106.889 235.325 110.497 235.189 112.478C235.163 112.968 234.57 114.606 234.483 114.598C234.2 114.555 234.11 112.592 233.979 114.701C233.962 113.993 233.93 113.307 233.898 112.608C233.713 112.741 233.528 112.872 233.343 112.999C233.402 113.846 233.452 114.698 233.493 115.551C233.431 115.594 233.368 115.637 233.306 115.679C233.245 112.619 233.039 114.43 232.764 112.859C232.703 114.313 232.616 115.781 232.502 117.234C232.516 116.395 232.515 115.408 232.515 114.671C232.193 114.58 232.298 116.333 232.236 116.636C231.954 118.32 231.914 109.735 231.313 109.064C231.358 110.434 231.382 111.872 231.378 113.263C231.306 112.866 231.233 112.464 231.157 112.069C231.34 108.886 231.161 105.334 230.859 101.631C230.801 101.302 230.74 100.972 230.681 100.649C230.55 100.767 230.42 100.878 230.289 100.995C230.202 100.5 230.11 100.005 230.015 99.507C230.709 100.906 230.421 98.8643 230.258 96.359C230.666 97.6328 230.822 99.2749 231.114 99.114C230.175 94.6344 229.339 89.3487 227.823 85.1436C227.444 84.1044 227.078 84.2281 226.325 81.7527C226.394 81.8224 226.475 81.8119 226.548 81.848C224.964 77.6608 223.9 75.1794 222.224 70.846C222.2 71.1503 222.172 71.4503 222.144 71.7536C222.603 72.6273 223.05 73.5037 223.484 74.383C223.505 75.0951 223.061 74.2083 224.114 76.9405C224.952 79.1908 224.553 77.8138 224.845 78.402C225.236 79.1997 225.311 79.9943 225.716 80.8606C226.026 81.5331 225.972 80.7105 226.514 82.5587C226.035 81.8982 225.537 81.2339 225.042 80.5864C224.947 80.1271 224.851 79.6712 224.751 79.2127C224.972 79.6336 225.189 80.0493 225.406 80.4743C224.753 78.9406 224.108 77.5072 223.366 75.9537C223.916 76.3399 223.142 74.7338 222.731 73.863C222.093 72.5054 222.824 73.5924 222.402 72.7017C221.975 71.8096 221.294 70.9492 220.604 69.3139C221.154 70.1087 220.744 68.8702 220.988 69.0329C221.234 69.1947 222.05 70.9019 221.445 69.1803C219.844 66.0775 220.938 69.7436 219.841 67.6662C218.503 65.188 219.007 64.166 219.582 64.8214C220.035 65.3374 221.025 67.4166 221.451 67.9562C219.919 64.1148 219.343 64.3665 218.93 63.7931C217.369 61.7418 219.147 62.7224 217.322 60.2698C217.526 60.2189 217.707 60.169 217.904 60.1227C217.611 59.6847 217.395 59.4072 217.05 58.8753C217.646 60.6878 216.897 59.3552 216.498 58.6838C215.869 57.6255 216.674 59.3592 216.464 59.1041C215.906 58.413 215.236 57.1994 215.529 58.0161C215.401 57.6484 215.254 57.2516 215.115 56.8752C214.276 55.6936 211.731 53.35 213.61 55.9362C213.186 55.8535 212.756 54.9064 212.349 54.2099C211.942 53.5139 211.784 53.6386 211.417 53.0331C209.936 50.6355 211.264 51.9494 211.742 52.1682C209.431 49.2243 211.492 52.2409 208.188 48.0059C207.702 47.7264 209.01 49.8366 207.666 48.2738C207.734 47.746 207.044 46.3582 205.242 43.993C204.991 43.8274 204.739 43.6641 204.486 43.5009C203.699 42.0471 204.526 42.4148 202.201 40.4653C203.868 41.1351 202.772 40.6346 201.167 38.4402C200.838 37.9951 201.828 38.807 201.364 38.19C201.153 37.91 200.482 37.383 199.957 36.7073C199.705 36.3759 198.554 34.7747 197.478 33.9479C197.917 34.9091 195.859 33.3814 197.203 35.1242C194.367 32.2759 192.109 30.558 195.805 33.2096C195.137 32.4248 194.456 31.6476 193.765 30.8794C193.168 30.4738 192.563 30.0697 191.957 29.6724C192.077 29.3648 192.234 29.3458 190.016 27.5999C191.013 28.3129 191.999 29.0397 192.979 29.7889C193.053 29.7676 193.226 29.8297 193.236 29.7556C192.028 28.8389 188.696 26.2005 187.817 25.6547C186.95 25.0938 188.509 26.3257 188.224 26.2102C185.862 25.2415 186.318 24.9718 184.825 24.0205C183.948 23.468 185.899 24.9824 185.434 24.6804C183.719 23.5561 183.147 22.7173 181.639 21.6886C182.062 22.22 182.473 22.754 182.87 23.2831C181.317 22.1822 179.55 21.0143 178.016 20.1327C177.414 19.7869 177.778 20.1935 177.677 20.1421C177.175 19.8833 175.179 18.7799 174.968 18.6633C173.397 17.7523 173.455 17.544 171.908 16.6812C172.527 16.9979 173.107 17.3015 173.706 17.6218C174.143 17.4775 174.587 17.3388 175.028 17.1989C173.525 16.3015 171.999 15.4371 170.453 14.6072C171.54 15.2991 172.616 16.0096 173.678 16.7368C171.795 15.995 169.909 15.3116 168.005 14.6766C167.151 14.0651 166.295 13.4679 165.423 12.879C162.836 11.7504 163.078 12.6278 162.087 11.5438C161.304 11.2667 160.518 10.9985 159.729 10.7381C159.871 10.7022 160.012 10.6659 160.154 10.6306C159.205 10.3058 158.252 9.99315 157.293 9.69375C158.175 10.3464 159.018 11.0166 159.865 11.6768C158.028 11.0134 158.08 10.7713 157.831 10.6044C157.165 10.166 155.642 9.85674 155.114 9.50701C154.936 9.3839 156.801 9.87162 156.245 9.46379C156.142 9.3816 153.939 7.8371 152.299 7.49823C152.289 7.632 152.362 7.82332 152.383 7.97899C150.247 7.3802 149.35 6.42963 149.685 6.32466C148.508 6.11703 146.824 5.6785 146.535 5.82073C145.943 5.67136 145.365 5.53 144.775 5.39094C145.512 5.04424 143.023 4.54348 142.764 4.94055C143.778 5.18035 144.787 5.43437 145.79 5.70072C144.89 6.04811 147.898 7.04497 141.623 5.09421C140.454 4.55303 143.795 5.61363 142.841 5.18881C141.129 4.6763 139.475 4.44591 137.847 3.95512C135.812 3.36562 138.407 3.51867 133.502 3.08997C144.061 5.61531 131.982 3.16533 126.903 3.12053C125.734 2.34985 122.243 1.78399 117.318 1.8871C116.68 1.90074 116.02 1.9258 115.341 1.96327C115.707 2.08203 116.503 2.08491 117.318 2.08952C117.888 2.09236 118.464 2.09555 118.906 2.13041C119.978 2.21797 118.817 2.32181 120.148 2.44925C121.478 2.57212 124.288 2.84119 125.623 3.09611C124.468 3.10174 118.869 3.17725 122.579 2.98128C120.523 2.73496 119.27 2.54846 117.318 2.45665C116.659 2.42719 115.922 2.41105 115.05 2.41786C114.024 2.77924 114.108 2.94825 110.77 3.12794C112.736 2.55736 108.89 2.45554 109.701 1.93363C112.108 1.90054 110.798 2.44085 112.18 2.59445C112.32 2.60551 114.531 2.41358 115.05 2.41786C112.799 2.05208 112.009 1.94569 113.378 1.39683C111.785 1.4941 110.79 1.49399 110.655 1.7371C110.316 1.65377 109.974 1.57196 109.639 1.49123C109.118 1.52796 108.65 1.57095 108.099 1.61224C108.885 1.90923 107.397 1.79993 106.375 2.06045C105.351 2.32578 106.776 2.44925 103.923 2.76641C104.882 2.7395 105.76 2.72082 106.679 2.71561C104.864 2.97389 103.023 3.28019 101.224 3.62543C102.528 3.65151 105.34 3.66137 105.293 3.95985C104.439 3.93011 101.606 4.48096 101.3 4.54066C100.102 4.7421 100.731 4.46996 100.64 4.47827C98.7314 4.66874 97.18 5.01096 96.4159 4.87407C95.0215 5.25918 93.9444 5.40477 92.4467 5.74265C91.6245 5.93063 91.8297 6.09141 91.3415 6.16499C88.1104 6.70412 91.0401 5.61544 85.0834 7.792C85.8554 7.71095 86.6188 7.64366 87.3916 7.57963C86.719 7.81751 86.0541 8.06051 85.3887 8.31027C84.9265 8.41903 84.4691 8.52925 84.0085 8.6437C83.9293 8.35048 83.852 8.05602 83.773 7.76276C83.2685 7.89985 82.7575 8.04325 82.2517 8.1884C83.104 7.88315 83.9559 7.58935 84.8116 7.3055C84.8754 7.23097 84.9341 7.158 84.9982 7.08356C83.6897 7.38066 82.3856 7.70027 81.0808 8.04519C81.0896 8.15355 81.0989 8.2625 81.1077 8.37085C78.1989 9.20382 78.0963 9.14924 75.5157 10.4521C73.4532 11.257 71.9746 12.3786 70.8891 13.0664C70.4482 13.1984 70.007 13.3327 69.5627 13.4724C69.3338 13.6746 69.103 13.8785 68.8764 14.0822C68.301 14.2179 67.7193 14.3614 67.1427 14.5083C66.9742 14.9039 66.8612 15.0372 68.9392 14.158C68.3833 14.7822 64.7607 16.4101 63.2947 17.0942C62.1743 17.6033 63.2339 16.6992 63.0826 16.7421C62.5713 16.8777 60.8463 17.959 60.4702 18.1581C58.8671 18.988 57.7943 19.6554 56.3795 20.4703C56.1039 20.6279 55.258 20.9539 55.1917 20.9909C54.6804 21.2813 53.4241 22.0106 53.287 22.1024C46.2462 26.888 54.0702 22.2192 47.6905 26.8468C47.9411 26.7853 48.1762 26.7357 48.4226 26.679C47.9543 27.0439 47.4838 27.4159 47.0215 27.7878C46.3777 28.1865 46.9899 27.4938 45.9024 28.5285C45.8975 28.3673 45.8932 28.2058 45.8934 28.0417C45.4276 28.5042 44.9844 28.9544 44.5152 29.4339C43.4134 29.7439 40.4629 32.2055 40.3218 31.6436C40.2656 31.4448 42.2062 29.4978 40.9908 30.3107C40.0819 31.0634 40.8213 30.6941 40.4694 31.0215C37.9471 33.4032 37.9117 33.0734 36.9376 34.1096C36.8658 34.3569 36.7885 34.614 36.7158 34.8657C36.3082 35.2122 35.9016 35.5627 35.4948 35.9188C35.468 36.0677 35.4379 36.2203 35.4117 36.3691C35.7685 36.0157 36.1728 35.6202 36.5049 35.3009C36.2513 35.9644 32.3147 40.3294 33.6502 38.5072C34.1908 37.7602 35.3984 36.5922 34.3767 37.08C33.3171 38.2563 32.139 39.6119 31.0798 40.8944C30.9821 40.8771 30.8866 40.857 30.7888 40.8399C29.3509 42.5654 30.9499 41.2497 31.0828 41.3752C30.7489 41.7622 30.4135 42.1551 30.0848 42.5466C29.8815 42.6578 29.6824 42.759 29.4746 42.8813C29.5619 42.9829 29.6023 43.3914 28.5481 44.4942C27.8726 45.207 28.5896 43.7989 27.4485 45.2834C27.6973 45.3026 28.3029 44.9278 27.0671 46.5972C26.7726 46.6283 26.4434 46.7343 26.1684 46.7246C24.7506 48.9075 23.7812 49.6602 22.2433 52.3049C21.2677 53.9849 20.3063 56.4833 18.9586 57.1217C18.2045 58.3191 18.6156 58.0415 18.4398 58.4231C17.6196 60.224 16.5749 61.3167 16.3753 61.6294C15.1172 63.6187 14.7589 64.6159 13.7412 66.25C13.9236 66.2241 14.0777 66.2373 14.2473 66.229C14.8266 64.5622 15.2358 63.7734 16.459 61.644C16.0867 62.3811 15.7251 63.1187 15.3701 63.8612C15.5419 63.7995 15.7131 63.7394 15.8818 63.683C19.1265 56.8203 18.8848 58.7414 16.0287 64.3705C15.574 64.7469 15.1127 65.1463 14.6636 65.5278C13.3402 68.9681 12.3429 70.3958 10.6981 74.2107C10.5025 74.6638 9.97034 76.3856 9.7101 77.1134C9.71542 77.1017 9.72073 77.0899 9.72606 77.0782C9.76047 77.6039 10.0806 77.0285 10.2884 77.0245C10.1645 77.423 10.0417 77.8246 9.923 78.2223C9.47175 79.0455 9.45946 78.6947 8.89782 80.4387C9.11581 80.2518 9.33321 80.0691 9.55204 79.8847C8.90657 81.7737 8.354 82.9845 7.88943 84.7835C7.92511 84.468 7.96085 84.1562 7.99917 83.8408C6.71681 87.692 6.78452 84.351 6.37236 87.4384C6.24897 87.6089 6.12655 87.7748 6.0039 87.9465C6.30999 86.7072 6.63702 85.475 6.98157 84.256C6.88715 84.2009 6.79379 84.1438 6.69794 84.0935C6.33759 85.409 5.9993 86.7398 5.68515 88.0721C5.86799 87.0873 6.06504 86.1001 6.27326 85.1218C5.78528 86.6284 5.32474 88.16 4.90059 89.6823C5.68307 88.1452 5.2068 90.2698 5.68153 89.9636C4.72286 92.5979 3.81258 94.673 3.38134 99.0153C3.30473 99.8797 3.62688 99.4486 2.96733 101.819C3.46513 101.292 3.28615 104.342 3.74517 104C3.82221 103.158 3.91997 102.289 4.00757 101.477C3.74286 102.379 3.33205 102.485 3.41097 101.061C3.50766 99.25 4.23762 96.6683 3.79443 96.7035C3.94293 95.9926 4.08021 95.3324 4.23393 94.6463C4.28299 94.951 4.33506 95.2496 4.38745 95.5485C4.59697 93.5613 4.9314 92.3269 5.40828 91.4539C4.93534 93.7949 4.53994 96.1254 4.21391 98.4863C4.28905 98.143 4.36667 97.7958 4.44425 97.4538C4.42195 99.2733 4.95987 97.492 4.51754 100.799C4.39514 100.761 4.27208 100.726 4.14908 100.688C4.29564 101.935 3.91315 105.243 4.42278 104.232C4.19182 105.215 4.09714 105.419 4.25009 106C3.70075 108.589 3.24259 110.286 2.85437 109.306C2.85859 110.3 2.87533 111.304 2.90576 112.281C3.05202 111.718 3.20186 111.155 3.35669 110.589C3.25051 112.307 3.18314 114.018 3.15401 115.736C2.77924 115.893 3.12383 112.427 2.77393 113.419C2.70157 113.617 2.81531 114.547 2.77471 114.79C2.33387 117.356 2.69401 113.321 2.37929 114.073C2.25476 116.77 2.00828 116.054 1.994 117.234C1.9923 117.734 2.03398 118.576 2.19822 120.146C2.09736 120.288 1.99496 120.441 1.89497 120.574C1.94822 122.416 2.17975 122.247 2.30712 123.828C2.38993 124.816 2.06374 126.09 2.4382 127.156C2.51319 127.343 2.83279 125.484 3.18032 129.308C3.49359 132.287 3.00285 131.09 3.08196 132.714C3.15506 134.338 4.25783 137.925 3.92514 139.094C3.83777 138.246 3.6855 137.173 3.59166 136.23C3.42081 135.868 3.2544 135.515 3.08829 135.155C3.55908 137.278 3.81231 139.498 4.36622 140.868C4.55606 143.789 5.74026 146.814 5.957 145.857C5.66274 144.96 5.72078 146.003 5.52674 144.7C5.59678 144.545 5.66494 144.383 5.73562 144.228C6.24485 146.39 6.67503 147.892 6.09624 146.989C6.17847 147.326 6.26137 147.661 6.34659 147.997C6.58645 147.995 6.82521 147.986 7.06497 147.984C7.20057 148.374 7.33847 148.764 7.4781 149.152C7.55659 149.605 7.63756 150.059 7.72242 150.516C7.19885 150.027 6.85138 149.009 7.71136 152.44C7.83511 152.411 7.95987 152.387 8.08361 152.358C8.85538 155.211 8.57134 155.383 9.9027 158.86C8.46089 156.347 8.71429 154.609 7.87917 154.907C7.70028 154.21 7.52681 153.504 7.361 152.803C7.20566 152.738 7.05047 152.674 6.89678 152.614C8.10347 156.309 11.2372 161.922 11.8176 164.482C12.0073 164.739 12.1904 165 12.3887 165.257C13.1442 167.689 14.3038 168.337 15.0946 170.801C15.1848 171.053 14.2633 170.904 15.9069 173.832C15.9466 173.714 16.0611 173.6 16.1299 173.484C16.4328 174.144 16.7378 174.8 17.0494 175.45C17.1887 175.52 17.3311 175.595 17.4709 175.664C16.8759 174.584 16.3002 173.496 15.7395 172.397C16.2552 173.283 16.7854 174.168 17.3234 175.038C16.7767 173.813 16.4902 173.286 17.0775 173.876C17.6583 174.875 18.2552 175.864 18.8647 176.843C18.9752 176.915 19.0861 176.986 19.1969 177.058C19.0511 176.492 18.905 175.925 18.7713 175.359C20.1736 178.003 21.5873 180.187 22.6158 182.275C22.7948 182.628 21.8112 181.619 23.5143 183.697C23.4423 183.799 23.4061 183.913 23.3446 184.014C25.5331 186.487 26.0994 187.397 28.0702 190.211C26.8459 188.349 27.9769 189.98 28.4288 190.338C28.7367 190.585 27.7726 189.426 27.9482 189.503C28.1208 189.586 29.6262 190.873 28.5998 189.558C25.4889 186.801 25.4525 185.416 22.1999 181.282C22.7285 181.903 23.2666 182.522 23.807 183.13C23.638 182.783 23.4887 182.472 23.3089 182.097C24.8731 184.571 24.1333 183.354 24.9204 184.266C25.7109 185.176 27.0996 186.861 28.0341 187.983C28.3283 188.337 27.8998 188.057 28.5399 188.877C28.9739 189.437 30.392 190.771 30.4745 191.288C30.5324 191.628 28.1142 189.576 30.9368 192.854C31.3404 193.584 30.0161 191.984 29.9742 191.961C29.5649 191.812 31.1913 193.938 32.1476 194.736C32.2246 194.8 31.6922 193.971 32.4507 194.709C34.2575 196.453 35.1346 197.61 36.1073 198.94C36.445 198.854 38.1786 200.09 40.0385 201.935C40.195 201.962 40.3472 201.984 40.504 202.01C40.173 201.771 39.8435 201.53 39.5146 201.287C39.2258 200.946 38.9101 200.597 38.6398 200.254C40.6057 202.003 41.1687 201.931 42.2042 202.652C45.7815 205.064 43.1145 204.197 42.3973 203.828C42.0225 203.403 41.6709 202.982 41.3095 202.553C41.2865 202.671 41.2638 202.791 41.2369 202.907C46.1338 207.136 41.5272 204.077 43.9283 206.351C44.9117 206.499 46.8013 207.989 49.096 210.08C49.3729 210.28 49.6505 210.482 49.9295 210.68C50.0192 210.653 50.0851 210.56 50.1891 210.574C53.2582 212.657 53.4037 213.638 53.6531 213.904C54.7852 215.047 56.074 215.31 56.4678 215.55C58.1378 216.559 58.5203 217.021 60.1768 217.87C61.9643 218.77 60.8494 217.963 61.447 218.138C61.9256 218.28 63.3141 219.009 63.9419 219.205C63.6706 219.169 63.3746 219.117 63.1036 219.079C64.8634 220.159 66.3248 221.037 68.4361 222.061C71.1156 222.558 72.7436 224.475 72.2684 223.259C70.2513 222.327 69.1743 221.703 68.2087 220.984C69.5303 221.576 70.8653 222.146 72.2115 222.689C72.5607 222.951 72.7978 223.16 73.2196 223.45C74.3007 223.67 76.6063 224.673 77.5602 224.949C82.0098 226.216 80.7644 225.398 84.601 227.242C81.6839 226.418 81.58 226.704 78.7438 225.673C79.2831 226.098 80.7564 226.552 79.7289 226.477C82.5306 227.354 81.7069 226.822 82.8545 226.974C83.8419 227.102 85.7335 227.642 85.6915 227.387C85.8498 227.565 85.9661 227.726 86.1255 227.903C87.9508 228.415 89.7813 228.881 91.6258 229.301C90.8097 229.251 89.9941 229.192 89.1789 229.125C89.7585 229.322 90.3416 229.514 90.9263 229.703C95.5487 230.446 103.412 232.281 102.277 231.061C104.503 231.311 104.776 231.459 105.969 231.779C106.11 231.713 106.246 231.66 106.387 231.585C107.816 231.802 108.946 231.59 110.215 231.746C111.488 231.898 111.791 232.187 111.997 231.727C112.811 231.899 113.626 232.04 114.445 232.185C114.944 232.091 115.442 231.994 115.934 231.893C116.394 231.932 116.856 231.968 117.318 232.001C117.635 232.024 117.952 232.045 118.269 232.066C118.684 231.846 121.731 231.878 123.053 231.65C124.335 231.82 124.358 232.608 127.352 232.228C127.258 232.047 127.166 231.865 127.073 231.684C127.76 231.665 128.447 231.641 129.138 231.61C129.185 231.667 129.228 231.725 129.275 231.782C128.921 231.799 128.578 231.814 128.226 231.827C128.539 231.903 128.845 231.977 129.155 232.051C130.192 231.789 131.223 231.514 132.248 231.225C130.827 231.292 129.384 231.334 127.974 231.346C129.72 231.044 130.982 231.037 132.49 230.683C133.855 230.762 133.387 230.976 132.882 231.331C133.376 231.24 133.874 231.146 134.365 231.048C134.078 231.372 134.95 231.439 132.03 231.803C132.241 231.858 132.456 231.908 132.663 231.965C133.14 231.889 133.46 231.913 133.98 231.807C135.393 231.518 136.416 230.838 136.287 230.684C136.22 230.604 134.843 231 134.879 230.862C134.975 230.526 138.195 230.178 133.53 230.566C135.027 230.146 135.398 230.243 137.094 230.012C136.944 229.931 136.799 229.851 136.654 229.769C137.443 229.683 138.23 229.59 139.015 229.488C138.029 230.236 143.83 229.288 138.731 230.777C140.272 230.513 141.814 230.216 143.345 229.889C143.043 230.016 142.74 230.14 142.437 230.264C141.739 230.389 141.039 230.507 140.342 230.619C141.177 230.553 142.019 230.476 142.855 230.392C144.752 229.833 145.448 229.451 146.258 228.999C144.007 229.388 144.788 229.438 143.063 229.888C143.09 229.728 142.98 229.611 143.096 229.422C144.064 229.532 146.911 228.58 147.576 228.373C149.601 227.765 148.087 228.506 149.451 228.125C150.814 227.739 152.351 227.067 153.547 226.991C153.474 226.835 153.331 226.697 153.204 226.575C155.274 225.828 154.919 226.148 155.144 226.101C158.717 225.293 160.448 224.24 164.238 222.524C163.734 222.691 163.225 222.862 162.715 223.027C165.442 221.431 163.559 222.415 161.008 223.343C163.371 222.403 164.576 221.513 166.153 220.67C167.734 219.833 170.538 218.572 171.58 218.14C169.413 219.534 166.86 220.659 164.281 221.878C164.649 221.903 164.997 221.906 165.383 221.939C166.812 220.879 167.818 220.65 168.357 220.438C169.933 219.81 169.738 219.551 170.799 219.379C170.708 219.296 170.636 219.224 170.55 219.147C173.656 217.586 176.998 215.832 178.68 214.252C179.003 214.376 179.279 214.518 179.633 214.628C180.767 213.652 181.935 213.127 182.936 212.376C183.928 211.626 183.414 211.715 184.548 210.798C184.758 210.628 185.296 210.413 185.767 209.935C186.252 209.456 187.73 207.345 188.374 207.692C189.356 206.923 190.287 206.199 191.23 205.422C190.342 206.217 189.442 206.996 188.534 207.761C189.433 207.261 190.322 206.753 191.211 206.227C191.217 206.031 191.222 205.833 191.225 205.643C193.203 203.747 194.842 202.605 196.809 200.66C197.134 200.333 196.155 200.881 197.673 199.513C199.177 198.134 200.653 197.44 202.858 194.715C202.969 194.576 203.354 193.538 204.388 192.783C204.624 192.611 203.908 193.577 204.403 193.141C204.905 192.711 206.839 190.515 207.134 190.46C207.059 190.439 206.885 190.533 206.773 190.555C207.063 190.147 207.353 189.734 207.642 189.319C207.77 189.362 207.9 189.401 208.028 189.443C209.579 186.995 210.104 185.552 212.644 182.152C211.82 183.035 210.982 183.901 210.138 184.748C210.051 185.087 209.962 185.427 209.875 185.762C208.67 187.3 207.424 188.811 206.145 190.282C206.055 190.623 205.966 190.96 205.872 191.301C205.524 191.687 205.177 192.067 204.824 192.448C204.829 192.281 204.833 192.113 204.84 191.941C204.194 192.737 203.537 193.526 202.874 194.301C203.806 192.357 206.692 189.939 206.113 189.807C206.466 189.504 206.819 189.198 207.17 188.89C207.096 188.572 207.74 187.893 208.769 186.607C208.441 186.831 208.09 187.086 207.779 187.28C208.904 186.131 210.568 183.837 211.561 182.512C212 181.93 211.738 182.633 211.879 182.467C212.611 181.618 213.51 179.67 213.768 179.309C215.323 177.162 216.749 175.988 217.825 173.255C216.261 175.813 217.1 174.415 216.374 175.224C216.147 175.478 214.05 178.712 216.566 174.595C216.927 174.156 221.351 166.559 220.311 169.267C220.863 167.946 221.242 166.888 221.692 165.662C223.793 163.11 222.597 163.786 221.82 164.449C222.033 163.974 222.23 163.519 222.445 163.027C222.428 164.268 224.738 158.915 225.162 156.958C225.318 156.31 224.54 157.994 225.002 156.536C225.281 155.866 225.596 155.104 225.879 154.389C225.241 155.346 225.841 153.245 225.544 153.18C226.233 151.945 227.084 151.082 227.145 151.911C227.377 150.766 227.59 149.621 227.785 148.474C227.571 148.971 227.353 149.473 227.133 149.966C228.417 146.4 229.059 141.575 229.82 140.923C229.919 140.428 230.015 139.934 230.107 139.442C230.033 139.27 229.957 139.103 229.883 138.932C230.398 136.732 230.85 134.502 231.234 132.273C231.029 134.28 231.108 134.778 230.636 136.855C230.894 136.07 231.148 135.261 231.387 134.486C231.506 131.284 231.392 130.811 231.89 126.055C231.925 125.844 232.41 122.22 232.428 122.102C232.573 121.54 232.715 122.409 232.787 122.159C233.011 121.472 233.515 117.159 233.564 117.236C234.577 118.3 233.672 132.936 232.789 136.82C226.54 177.694 196.827 212.53 158.595 226.804C158.202 226.953 158.415 227 158.249 227.067C157.214 227.486 156.127 227.671 155.737 227.799C154.903 228.07 155.415 228.075 154.807 228.281C148.522 230.393 142.393 231.798 135.857 232.875C135.43 232.944 135.845 232.741 135.098 232.881C134.716 232.954 133.537 233.338 132.659 233.455C129.587 233.861 127.013 234.037 123.749 234.223C121.977 234.326 119.322 234.386 117.318 234.384C117.314 234.384 117.31 234.384 117.306 234.384C116.422 234.385 115.502 234.471 114.631 234.454C113.398 234.428 113.656 234.237 113.467 234.22C112.64 234.139 112.517 234.348 111.73 234.307C110.264 234.222 110.186 234.079 108.327 233.957C107 233.874 103.954 233.687 102.279 233.496C98.409 232.849 93.5219 232.007 89.9415 231.191C87.8273 230.711 87.6845 230.453 86.828 230.227C83.8193 229.415 81.4849 228.955 78.7079 228.002C75.0299 226.727 71.8938 225.275 68.4748 223.695C67.9215 223.438 67.9715 223.663 67.4266 223.413C65.4089 222.488 62.8589 221.222 61.1398 220.246C59.219 219.155 58.649 218.519 56.7775 217.458C56.23 217.144 55.9483 217.248 55.0325 216.71C53.5691 215.85 52.1371 214.653 51.177 213.965C49.8633 213.019 50.8799 214.023 49.1146 212.735C49.0423 212.681 48.8754 212.353 48.4918 212.085C47.378 211.296 47.4029 211.49 45.8201 210.266C45.6636 210.152 43.6846 208.383 43.4864 208.211C42.2782 207.241 39.9523 205.161 39.2531 204.569C36.7461 202.456 38.4679 204.386 36.8123 202.08C35.8303 201.334 34.8638 200.581 33.8536 199.747C34.5464 200.283 32.2118 197.637 32.0445 197.456C30.5829 196.02 31.2432 197.069 29.5314 195.11C32.187 197.338 27.3449 192.571 26.4131 191.368C21.764 185.748 18.1328 180.162 14.5823 173.76C13.393 171.62 11.8066 168.728 10.7284 166.37C10.4757 165.821 10.7732 166.187 10.5546 165.702C10.337 165.218 10.4592 165.809 10.2163 165.253C8.71539 161.78 7.87273 158.948 6.43803 155.793C6.42548 155.619 6.46073 155.613 6.41702 155.333C5.19879 152.752 4.05429 147.4 3.64565 145.403C2.97396 142.287 2.63196 141.506 2.2256 139.229C1.67728 136.201 1.44811 131.584 1.12191 133.706C0.810893 131.627 0.573659 129.583 0.447433 127.469C0.433549 127.233 0.601745 127.382 0.596853 127.288C0.568696 126.689 0.415843 126.505 0.378837 126.1C0.28214 125.003 0.575632 126.783 0.419063 125.22C0.342987 124.398 0.177454 123.922 0.083938 121.636C0.029081 120.188 0.000665412 118.72 0.000422266 117.234C-0.0362182 104.599 2.18106 91.2292 6.36027 79.1979C6.68034 78.2766 6.32589 78.8329 6.74374 77.6828C8.15589 73.6525 11.4595 66.7957 13.1624 63.5494C14.8349 60.2952 14.2684 60.923 15.3154 58.8748C15.5212 58.481 15.4477 58.8586 15.65 58.512C17.005 56.1803 18.8941 53.5633 20.1412 51.779C20.9681 50.596 20.7438 50.5815 21.3072 49.7517C22.1502 48.5165 23.2235 47.4004 23.7083 46.7696C25.991 43.8069 27.5108 41.7209 29.8935 39.1606C29.7702 39.2337 29.6803 39.2746 29.5716 39.3329C32.3281 36.2408 35.2432 33.2982 38.3091 30.5128C38.1382 30.6152 37.972 30.7135 37.8011 30.8163C41.422 27.567 41.3275 28.3091 40.403 27.8912C40.6512 27.6353 40.9138 27.3627 41.1542 27.121C41.3549 27.5667 43.799 25.9019 46.8503 23.7496C47.071 23.5892 48.2821 22.1319 48.438 22.6847C48.7476 22.2968 48.9266 22.0564 49.19 21.7264C49.928 21.3984 50.6759 21.071 51.4179 20.7591C51.7557 20.4986 52.1003 20.2374 52.4404 19.9809C52.4345 19.8586 52.3335 19.7949 52.3903 19.6331C54.0202 18.5049 57.5526 16.4829 58.908 15.7062C62.2553 13.7305 65.6802 11.6896 68.5594 10.7127C69.8887 10.0765 68.4653 10.4838 70.4852 9.62024C70.7545 9.61674 71.0083 9.61602 71.2881 9.61316C72.7555 8.48648 73.2096 8.59632 75.5335 7.80201C77.1116 7.27269 78.09 6.80001 79.5937 6.30962C79.9748 6.18642 79.9648 6.33449 80.223 6.24329C81.0851 5.93152 83.5302 4.97189 84.1514 4.79155C89.7849 3.09391 94.7254 2.055 100.273 1.28485C100.867 1.20422 100.078 1.1812 100.694 1.09885C101.685 0.969466 101.131 1.25606 101.705 1.18851C103.31 1.0097 103.296 0.782246 105.545 0.536951C109.245 0.147761 113.253 -0.035006 117.318 0.00488463C121.353 0.0415845 125.402 0.297601 129.233 0.693443C129.474 0.717938 129.474 0.588952 129.737 0.615247C131.455 0.789318 133.158 1.18383 134.693 1.41083C137.255 1.79423 139.199 1.96198 141.704 2.48745C146.602 3.53398 150.881 4.80975 155.746 6.49293C159.713 7.88433 163.119 9.23334 167.293 11.1934C185.513 19.7457 202.073 33.1585 213.543 49.9805C213.834 50.4078 213.621 50.3 213.715 50.4265C214.607 51.6314 214.804 51.6625 214.835 52.2817C215.938 53.8352 216.472 54.2104 217.667 56.1881C218.295 57.2459 217.509 56.6457 218.727 58.3379C219.798 59.8846 219.022 57.9511 221.478 62.9746C221.541 63.109 221.678 63.8563 222.25 64.8673C222.818 65.8878 222.382 64.5974 223.641 67.111C226.593 73.0275 229.342 80.9623 231.249 88.3934C231.391 88.8463 232.543 93.3472 232.75 94.2379C233.192 95.9539 233.298 95.557 233.727 97.8284C234.049 99.5956 234.071 101.06 234.36 103.139C234.392 103.381 234.643 103.765 234.777 105.34ZM7.2097 147.753C7.51292 148.108 8.37896 148.648 8.91763 151.122C8.97007 151.359 8.11575 150.261 8.46116 151.627C7.99772 150.329 7.60307 149.053 7.20898 147.753C7.20922 147.753 7.20946 147.753 7.2097 147.753ZM230.839 116.747C230.866 114.842 230.847 112.946 230.781 111.054C230.937 112.356 231.07 113.656 231.182 114.963C231.072 115.56 230.958 116.152 230.839 116.747ZM61.6551 17.8858C61.6567 17.8849 61.6583 17.884 61.6599 17.8831C59.9617 18.9417 58.2973 20.0417 56.6605 21.1861C56.8014 21.017 56.9433 20.8477 57.0856 20.6792C58.368 19.7522 59.6666 18.8539 60.9843 17.9821C61.2078 17.9494 61.4318 17.9171 61.6551 17.8858ZM75.6458 10.4754C76.8719 10.0861 76.6277 10.3275 77.3338 10.202C77.3337 10.2017 77.3336 10.2015 77.3335 10.2012C77.5198 10.1674 78.3428 9.89637 78.6578 9.78947C78.5134 9.75146 78.3355 9.72698 78.1813 9.69372C80.9266 8.4673 86.6943 7.38971 79.6429 10.0383C79.7134 9.90018 79.7797 9.76432 79.8509 9.62634C76.3279 10.8743 72.3749 12.29 75.6458 10.4754ZM19.2805 175.295C21.2311 177.853 21.821 178.674 23.811 182.005C23.4175 181.612 23.026 181.215 22.6376 180.816C22.364 180.228 22.0975 179.642 21.8344 179.051C21.8335 179.049 21.8325 179.048 21.8315 179.046C21.6727 178.997 21.5136 178.947 21.3576 178.901C20.6444 177.713 19.948 176.505 19.2805 175.295ZM191.161 29.9593C191.385 31.0747 191.465 30.5792 189.401 29.0801C188.684 28.566 189.272 29.2027 188.834 28.8734C186.464 27.1125 186.54 26.6197 187.218 26.8264C188.558 27.8427 189.886 28.8998 191.156 29.9557C191.158 29.9569 191.159 29.9581 191.161 29.9593ZM229.651 95.1281C229.651 95.1299 229.651 95.1317 229.652 95.1335C229.499 95.241 229.224 94.08 229.325 95.431C229.131 94.4287 228.923 93.4198 228.7 92.4122C228.782 92.7043 228.862 93.0033 228.941 93.2965C228.942 93.0226 228.943 92.7477 228.943 92.4736C228.672 92.1594 228.712 91.8034 228.528 90.7383C228.393 91.0765 228.257 91.4122 228.119 91.7481C227.9 90.5166 227.664 89.2943 227.404 88.0659C227.451 88.0375 227.498 88.0088 227.545 87.9804C227.359 87.5407 227.17 87.1077 226.979 86.6719C227.006 86.5317 227.032 86.3959 227.058 86.2555C226.858 85.7206 226.654 85.1873 226.445 84.6574C226.54 84.4487 226.969 85.6269 226.287 83.5151C226.637 84.1187 226.982 84.7264 227.324 85.3453C228.245 88.5746 229.02 91.833 229.651 95.1281ZM171.926 17.0202C175.161 18.7841 174.187 18.3888 173.282 18.2638C172.836 17.8474 172.381 17.4309 171.926 17.0202ZM12.2835 71.7942C12.0733 72.8736 11.8788 73.9481 11.6858 75.0445C11.0027 77.1012 9.86788 79.007 10.2728 77.4082C10.7733 75.4815 11.7513 73.6614 12.2835 71.7942ZM3.04825 120.221C3.10425 117.549 3.42909 120.058 3.61384 120.648C3.37389 121.392 3.42843 122.403 3.49428 124.06C3.38205 122.508 3.03914 120.667 3.0475 120.221C3.04775 120.221 3.048 120.221 3.04825 120.221ZM36.4742 36.6491C37.2224 35.8883 37.9379 35.0994 38.6853 34.4997C38.6297 34.8593 37.1199 36.0382 38.331 35.3305C37.8451 35.8072 37.3628 36.2886 36.8897 36.7706C37.0957 36.369 36.6135 36.7037 36.4766 36.6477C36.4758 36.6482 36.475 36.6486 36.4742 36.6491ZM138.438 5.35056C136.434 4.71161 136.007 4.75614 133.904 4.62744C133.637 4.36597 136.187 4.3748 137.759 4.58488C137.985 4.83905 138.21 5.09418 138.438 5.35056ZM213.981 177.604C213.961 178.183 211.971 181.322 210.828 182.776C210.92 182.572 211.012 182.368 211.103 182.164C212.099 180.666 213.059 179.145 213.981 177.604ZM3.52459 124.846C3.51452 124.57 3.50431 124.308 3.49428 124.06C3.51353 124.335 3.52548 124.6 3.52459 124.846ZM59.3436 216.86C58.447 216.636 60.6745 218.053 57.969 216.334C57.9689 216.334 57.9687 216.334 57.9686 216.334C56.1909 215.179 55.8044 214.912 54.1707 213.827C54.9475 213.935 58.3383 215.978 53.7949 212.949C53.7355 212.909 53.7427 213.157 53.0334 212.647C52.8147 212.488 52.1898 211.871 51.1471 211.076C50.8094 210.819 48.25 208.931 51.786 211.44C51.8142 211.174 52.1405 211.113 52.2617 210.92C53.6809 211.824 54.5008 212.923 56.0148 213.875C58.2688 215.281 59.6705 215.543 59.8031 216.328C57.7922 215.353 54.5499 213.278 54.3455 212.69C52.5577 211.494 51.8779 211.377 53.2364 212.483C59.6031 216.384 54.6785 214.052 60.4316 217.194C60.5409 217.159 60.8201 217.213 60.8235 217.123C62.4199 218.364 59.6604 216.947 59.3436 216.86ZM46.7705 207.553C47.8958 208.206 49.0283 208.836 50.1653 209.443C49.9949 209.676 49.2642 209.485 47.546 208.38C47.2875 208.106 47.0262 207.828 46.7705 207.553ZM149.285 227.237C149.419 227.034 149.852 226.756 150.151 226.508C150.582 226.607 159.366 223.679 154.968 225.361C154.333 225.623 150.274 226.637 149.285 227.237ZM152.556 8.70297C151.551 8.26516 150.549 7.84439 149.538 7.43749C151.156 7.84115 152.779 8.2831 154.384 8.75912C153.773 8.73488 153.166 8.71725 152.556 8.70297ZM6.25379 88.508C6.37591 88.0617 6.1999 89.6027 6.62664 87.8311C6.41348 89.1814 6.22807 90.4295 6.06162 91.7469C5.87315 92.1095 5.68592 92.4779 5.50093 92.8441C5.49997 93.1604 5.49867 93.4826 5.50036 93.7988C5.39121 93.5865 5.28179 93.3944 5.17343 93.1704C5.96372 91.0547 5.72786 90.4795 6.25379 88.508ZM39.7056 31.9956C40.2194 31.9649 37.9679 34.2972 40.3498 32.1842C40.0473 32.7496 39.4035 33.4794 38.0765 34.7784C37.8047 34.9259 37.5342 35.0746 37.2631 35.2246C37.3874 35.4109 37.0995 35.8013 36.4742 36.6491C36.4734 36.6495 36.4725 36.65 36.4717 36.6505C34.5031 38.6669 34.5858 38.5112 33.8526 38.7543C36.0626 36.726 35.8992 36.4467 37.221 34.87C38.1327 33.7901 39.5223 32.5871 39.7056 31.9956ZM139.688 229.579C141.701 228.881 139.799 229.045 143.518 228.505C143.299 228.628 143.078 228.751 142.857 228.873C141.807 229.123 140.741 229.36 139.688 229.579ZM48.4637 26.1684C47.9662 25.9057 46.1389 26.8226 46.387 27.6812C48.0126 26.6168 46.9826 26.8291 48.4637 26.1684ZM2.2374 119.324C2.22641 118.35 2.268 117.673 2.33288 117.234C2.48672 116.215 2.75725 116.486 2.96569 117.234C3.01371 117.406 3.05887 117.602 3.09927 117.815C2.99671 118.053 2.8947 118.291 2.79417 118.524C2.84851 119.18 2.90846 119.834 2.97312 120.486C2.72619 120.102 2.4805 119.714 2.2374 119.324ZM108.991 2.81698C106.169 3.38242 112.083 2.80986 110.106 3.16924C108.529 3.44294 106.421 3.27274 107.187 2.97528C107.736 2.92089 108.347 2.867 108.986 2.81738C108.988 2.81725 108.989 2.81711 108.991 2.81698ZM92.6572 5.28223C93.1984 5.56222 92.5119 5.58115 94.7055 5.06062C95.3213 4.88692 100.392 4.17308 98.2197 4.21615C96.4093 4.51958 94.5261 4.87606 92.6572 5.28223ZM11.5746 161.319C11.4208 161.426 9.61358 157.891 9.53812 157.371C9.53788 157.371 9.53765 157.371 9.53741 157.371C9.2895 156.003 10.8002 159.886 10.4787 158.075C11.6387 161.909 12.8447 162.692 11.8348 162.826C10.8679 160.67 11.4949 161.621 11.5746 161.319ZM231.081 132.284C231.081 132.282 231.081 132.28 231.082 132.278C231.045 132.543 230.491 134.661 230.442 134.385C230.887 131.812 230.986 132.29 231.002 129.832C231.102 129.708 231.197 129.603 231.299 129.468C231.245 130.44 231.288 130.989 231.081 132.284ZM158.9 224.339C158.015 224.733 156.296 225.177 155.265 225.546C158.325 223.744 162.41 222.742 158.9 224.339ZM217.235 61.3937C217.233 61.3914 217.232 61.3891 217.23 61.3868C217.231 61.3874 217.232 61.3881 217.233 61.3887C217.233 61.3903 217.234 61.392 217.235 61.3937ZM85.5165 227.201C85.6231 227.279 85.6797 227.336 85.6944 227.377C85.6935 227.38 85.6926 227.383 85.6917 227.386C85.6389 227.327 85.5821 227.266 85.5165 227.201ZM15.0438 168.736C15.5689 170.316 12.7816 165.573 12.175 163.893C12.3232 163.963 12.4194 163.941 12.6495 164.155C12.9696 165.582 14.9476 168.482 15.0438 168.736ZM24.1913 50.4826C21.6865 54.0157 24.1844 48.8662 24.9393 49.1272C24.9437 49.1419 24.2534 50.3903 24.1913 50.4826ZM4.35029 136.505C3.8978 135.462 4.16408 137.667 3.66732 134.149C3.70899 133.935 3.75146 133.721 3.79431 133.507C3.96537 134.503 4.15168 135.508 4.35029 136.505ZM9.5397 74.844C7.65435 80.0236 6.48171 85.1434 8.26534 81.9713C8.36857 81.5711 8.47654 81.1664 8.58408 80.7677C8.24874 80.5894 8.9161 79.2073 9.70554 77.1235C9.67492 76.7723 10.0856 75.6022 10.0536 75.3399C9.98915 74.8298 9.30767 76.0999 9.5397 74.844ZM200.662 37.7472C200.555 37.7278 200.449 37.7103 200.342 37.6909C199.692 37.1175 199.035 36.55 198.373 35.9925C198.559 36.0036 198.745 36.0153 198.931 36.0273C199.514 36.594 200.088 37.164 200.659 37.7429C200.66 37.7444 200.661 37.7458 200.662 37.7472ZM42.1512 204.793C42.9926 204.57 41.5704 203.584 38.7471 201.449C39.8564 202.584 40.9941 203.702 42.1512 204.793ZM68.8547 12.366C69.0428 12.5005 69.2284 12.6355 69.4202 12.7686C71.0314 11.8062 70.6293 11.7407 69.6979 11.8665C69.4139 12.0328 69.1368 12.1976 68.8547 12.366ZM94.461 3.9111C93.6921 4.0238 94.1126 4.10465 94.0324 4.11744C92.0834 4.43909 91.79 4.42134 89.4743 5.10929C89.1978 5.22166 88.9273 5.33593 88.6526 5.45149C89.8336 5.5888 90.558 5.16016 92.9147 4.89734C92.469 4.84591 92.0242 4.79647 91.5769 4.74957C92.8633 4.48771 94.1562 4.24721 95.4435 4.03106C95.5876 3.95803 95.7323 3.8856 95.8769 3.8131C95.408 3.84292 94.9232 3.87155 94.461 3.9111ZM207.105 45.3895C207.887 46.3926 208.656 47.4139 209.406 48.4428C209.517 48.4179 209.627 48.3912 209.738 48.3665C208.877 47.3591 207.997 46.3638 207.105 45.3895ZM63.9419 219.205C64.0483 219.22 64.1526 219.232 64.2475 219.239C64.2188 219.276 64.1045 219.257 63.9419 219.205ZM232.034 129.007C232.255 127.583 232.375 125.501 232.478 123.91C232.225 124.026 232.009 128.047 231.683 129.431C231.705 129.662 231.941 129.615 232.034 129.007ZM2.28311 114.117C2.16296 113.751 2.04514 113.386 1.92821 113.024C1.97365 112.148 2.02926 111.279 2.09514 110.392C1.99055 110.359 1.88503 110.327 1.78047 110.295C1.71767 114.195 1.47519 113.276 1.12248 115.21C1.50749 114.839 1.89409 114.479 2.28311 114.117ZM227.035 80.5294C226.065 77.8846 225.574 77.0135 225.814 78.6024C226.215 79.5079 226.606 80.4262 226.983 81.3462C227.001 81.0727 227.018 80.7986 227.035 80.5294ZM112.807 232.461C115.09 232.422 115.181 232.824 117.318 232.635C117.376 232.629 117.435 232.623 117.495 232.617C117.436 232.613 117.377 232.61 117.318 232.606C116.14 232.531 114.97 232.437 113.81 232.327C113.478 232.373 113.138 232.418 112.807 232.461ZM16.9763 176.439C17.3611 177.378 18.9139 178.611 20.0184 181.24C20.5176 181.713 20.8743 181.978 21.3234 182.367C21.3738 182.737 21.4504 183.146 21.4971 183.502C21.4982 183.504 21.4992 183.505 21.5003 183.507C23.0108 185.565 22.2309 184.089 22.4077 184.036C22.4799 184.018 23.4809 185.621 23.266 185.049C22.8778 184.077 20.6124 181.029 20.8959 180.831C21.5303 182.004 23.0997 184.083 22.8406 183.325C22.5547 182.502 20.8432 180.711 20.1789 179.285C20.9377 181.454 18.5829 177.473 18.6817 176.803C17.0342 174.642 18.1608 176.857 19.6657 179.199C18.4942 177.931 19.9704 179.954 19.9822 180.438C18.8558 179.075 15.9123 173.807 16.9763 176.439ZM19.8784 54.4323C18.8697 56.0143 17.2022 58.4399 16.7988 59.6901C16.5587 60.412 18.1296 57.9373 17.3267 59.805C18.2171 58.2188 18.3606 57.8204 18.0165 57.9774C18.208 57.6077 18.4044 57.2353 18.6011 56.8669C18.7369 56.7242 18.8753 56.5774 19.0118 56.4357C19.0528 56.2041 19.0958 55.9717 19.1356 55.7443C19.3855 55.3785 19.6401 55.0099 19.8945 54.6476C19.8858 54.5802 19.9018 54.4849 19.8784 54.4323ZM177.156 215.811C176.715 216.082 176.276 216.348 175.832 216.614C175.907 216.629 175.993 216.641 176.076 216.653C176.138 216.665 176.2 216.677 176.262 216.689C175.928 216.72 173.669 217.742 172.829 218.377C172.407 218.697 173.596 218.383 171.661 219.481C173.076 218.711 174.365 217.944 175.703 217.133C175.625 217.277 175.551 217.419 175.472 217.563C175.473 217.563 175.474 217.562 175.475 217.562C175.935 217.317 176.399 217.066 176.856 216.814C176.959 216.479 177.057 216.146 177.156 215.811ZM67.3069 12.6556C65.7761 13.5773 65.2914 13.9294 66.1586 13.7947C66.1603 13.794 66.162 13.7933 66.1637 13.7926C66.7018 13.3932 67.2459 12.9972 67.7906 12.6072C67.6309 12.6224 67.4714 12.6375 67.3069 12.6556ZM77.5328 226.188C81.4142 226.527 73.2534 224.163 74.6378 225.035C74.6969 225.084 77.2348 225.968 77.5328 226.188ZM1.93804 120.022C1.90872 119.098 1.89086 118.169 1.88359 117.234C1.88274 117.125 1.88203 117.015 1.88147 116.905C1.82435 117.014 1.76748 117.124 1.71076 117.234C1.64231 117.367 1.5741 117.501 1.50597 117.633C1.64168 118.433 1.78622 119.231 1.93804 120.022ZM222.958 68.944C222.766 67.832 221.629 65.2427 220.722 64.1643C221.02 64.8221 221.312 65.483 221.598 66.1464C220.965 64.9373 220.317 63.7566 219.641 62.5643C219.26 62.6855 220.218 63.9607 221.174 66.141C221.328 66.4806 221.9 68.7977 222.56 69.3848C222.7 69.5009 221.693 67.2133 222.624 68.6968C222.32 67.9989 222.036 67.4087 221.731 66.7567C221.792 66.6692 221.853 66.582 221.912 66.4896C222.272 67.3073 222.617 68.1198 222.958 68.944ZM14.4168 63.8941C13.2174 66.1768 13.237 66.5444 13.248 67.144C13.7396 66.0526 14.2486 64.9694 14.7733 63.8952C14.6535 63.8971 14.5372 63.8923 14.4168 63.8941ZM211.395 48.9888C210.596 47.8197 210.772 48.4426 210.4 48.0111C208.985 46.3867 208.207 45.1353 206.782 43.5592C206.905 43.6402 207.019 43.7144 207.137 43.7928C207.136 43.7913 207.135 43.7899 207.133 43.7884C200.717 36.0381 203.875 40.3087 207.731 44.9023C207.754 45.0641 207.772 45.2216 207.795 45.3829C209.581 47.3883 211.143 49.3191 211.395 48.9888ZM48.0603 210.291C48.1222 210.401 47.1371 210.088 48.7052 211.052C50.1624 211.516 48.0984 210.31 47.7386 209.799C48.1624 210.06 48.5945 210.324 49.0164 210.576C46.7242 208.71 46.3294 208.513 46.9659 209.456C47.0119 209.523 47.9986 210.183 48.0603 210.291ZM64.4666 220.784C65.1459 220.343 61.7031 218.891 61.7179 219.136C62.1682 219.392 62.5771 219.475 63.0354 219.779C63.499 220.084 63.5456 220.3 64.4666 220.784ZM3.01771 137.468C3.0321 137.576 2.93462 138.715 3.14643 138.564C3.43498 137.13 2.65925 134.479 2.54355 134.98C2.69223 135.88 2.87201 136.465 3.01697 137.468C3.01722 137.468 3.01746 137.468 3.01771 137.468ZM229.046 84.8587C229.057 84.8003 228.378 82.1342 228.153 81.8275C227.944 81.5863 227.771 81.4895 227.579 81.3213C228.176 82.726 228.939 85.6853 229.044 84.8533C229.045 84.8551 229.045 84.8569 229.046 84.8587Z\"\n        fill=\"#737373\"\n      />\n    </svg>\n  );\n};\n\nconst Vector = () => {\n  return (\n    <svg\n      fill=\"none\"\n      height=\"22\"\n      viewBox=\"0 0 93 22\"\n      width=\"93\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M85.4315 8.12658C85.8083 7.83705 85.7188 7.76394 86.1501 7.45874C86.0094 7.56389 85.6668 7.90328 85.966 7.66256C86.6558 7.22122 86.2649 7.34041 86.6796 7.02305C86.6132 7.14569 86.8528 6.91901 86.9189 6.87642C86.9469 6.88667 86.9675 6.88763 86.9866 6.88157C86.9906 6.87879 86.9947 6.87602 86.9988 6.87324C87.1136 6.7562 87.2262 6.63987 87.3407 6.5207C87.8246 6.10459 88.2925 5.68361 88.7565 5.24517C88.9783 5.45491 89.2004 5.66439 89.4228 5.8736C89.4407 5.98062 85.3893 9.39718 85.3263 9.3618C85.3266 9.34944 85.3251 9.34101 85.3201 9.33428C85.2621 9.37735 85.2045 9.42 85.1469 9.46239C85.1922 9.40328 85.2374 9.34396 85.2829 9.28428C85.0964 9.21112 84.3103 9.98688 84.0226 10.2063C83.8316 10.2164 83.7999 10.4823 83.4477 10.6273C83.6105 10.4648 82.8282 10.987 82.8039 11.0754C82.4009 11.3006 82.4991 11.1965 82.3267 11.3867C81.8971 11.7145 81.6328 11.5588 81.5208 11.9301C80.6093 12.5125 80.2177 12.5645 79.8077 12.8344C79.064 13.2166 79.9184 12.8705 79.3839 13.1787C79.3591 13.1882 78.9152 13.4487 79.1594 13.2924C79.26 13.1798 78.7749 13.4424 79.1351 13.2172C78.9756 13.1677 77.9519 13.7435 78.7816 13.4082C79.1477 13.3269 78.3896 13.5838 78.106 13.7224C78.09 13.7245 78.0575 13.7352 78.0218 13.7562C77.9863 13.7771 77.9961 13.7799 78.0183 13.7738C78.0009 13.7892 77.9951 13.8019 78.0152 13.8079C76.2768 14.6004 77.6017 14.1293 76.9703 14.3775C76.9559 14.2134 76.2057 14.7636 76.1247 14.7766C76.0602 14.8154 75.8576 14.8519 75.7203 14.9738C75.6398 14.9964 75.5707 15.0344 75.5122 15.0687C75.5073 15.0671 75.4522 15.0912 75.4522 15.0912C75.4435 15.0992 75.4723 15.0896 75.4927 15.0801C75.4443 15.1085 75.4034 15.1329 75.3682 15.1423C75.3455 15.154 75.3242 15.1651 75.312 15.175C75.2973 15.1879 75.3072 15.1918 75.2811 15.207C75.2614 15.2176 75.2725 15.2064 75.2583 15.2114C75.2146 15.2239 75.2004 15.2382 75.1663 15.2539C75.1493 15.2617 75.1345 15.2654 75.1209 15.2716C75.0931 15.2828 75.0503 15.3056 75.0498 15.3059C75.0657 15.2955 75.0841 15.2816 75.0954 15.2702C75.0958 15.2711 75.0962 15.272 75.0966 15.2728C75.1531 15.243 75.1292 15.2624 75.1571 15.2512C75.1922 15.238 75.2217 15.2214 75.2557 15.2057C75.2645 15.1978 75.226 15.2124 75.2248 15.2098C75.2239 15.2072 75.2433 15.1967 75.2424 15.1941C75.2412 15.1916 75.2325 15.1909 75.2325 15.1909C75.2445 15.1808 75.3132 15.1598 75.3256 15.1509C75.3269 15.1503 75.3291 15.1482 75.3321 15.1458C75.3243 15.145 75.3167 15.1432 75.3094 15.1399C75.6803 14.9419 74.9899 15.2004 74.7422 15.316C74.3583 15.4738 74.1498 15.7619 73.9096 15.8597C73.8947 15.7035 73.7825 15.7927 73.5104 15.9286C73.5092 15.926 73.4908 15.9308 73.4704 15.9403C73.45 15.9499 73.4303 15.9796 73.4449 15.9757C73.327 16.0336 73.2247 16.0619 73.0493 16.1174C72.8588 16.2345 73.181 16.0926 73.2241 16.0696C72.828 16.2776 72.793 16.2028 72.539 16.4127C72.2429 16.5205 72.0739 16.6025 71.903 16.67C71.9132 16.6652 71.9232 16.6603 71.9259 16.657C71.8791 16.6607 71.8571 16.6664 71.8017 16.6892C71.7876 16.7046 71.8252 16.698 71.8646 16.6854C71.7524 16.7278 71.6369 16.7621 71.4798 16.7922C71.0812 16.9243 71.3147 16.9993 70.4976 17.2554C70.2402 17.3274 69.5802 17.475 69.791 17.4958C69.1733 17.7836 68.386 18.0063 68.285 17.9419C67.9742 17.9811 68.0811 18.0531 68.3656 17.9581C68.1167 18.0651 67.7216 18.0994 67.4462 18.2316C67.4492 18.3013 67.6658 18.1452 67.6618 18.2044C67.8712 18.1573 67.1751 18.4309 67.0523 18.4514C67.0295 18.4586 67.0067 18.4659 66.9839 18.4732C66.9942 18.4684 67.0224 18.4579 67.0224 18.4579C67.0253 18.457 67.0283 18.456 67.0312 18.4551C66.6494 18.5204 66.7871 18.5215 66.2304 18.7086C66.3799 18.6208 66.9311 18.4502 66.4906 18.5358C66.1697 18.6133 66.4701 18.5577 66.5139 18.5594C66.2602 18.6653 66.2477 18.6256 66.2342 18.5815C65.9405 18.7467 66.0864 18.6612 66.2081 18.6619C66.3711 18.6185 65.9691 18.7895 65.8312 18.8255C65.4157 18.9652 65.4903 18.8887 65.1499 18.9898C65.3372 18.8979 65.3 18.8626 64.9717 18.9926C65.0823 19.0109 64.84 19.0643 64.65 19.0947C64.6572 19.0927 64.6608 19.0917 64.6605 19.0904C64.6593 19.0863 64.5975 19.1023 64.5975 19.1023C64.549 19.1095 64.5077 19.1146 64.4812 19.117C64.5743 19.1719 63.9448 19.2831 63.6835 19.404C63.6317 19.3281 63.4132 19.4315 63.0963 19.5417C62.9163 19.5194 63.0798 19.5844 62.4488 19.7004C62.6013 19.6761 62.5346 19.6887 62.5259 19.7061C62.4203 19.7235 62.4233 19.7068 62.4161 19.7086C62.4054 19.712 62.4462 19.7362 62.4573 19.7341C61.7999 19.9817 60.2975 20.2852 59.6664 20.323C59.532 20.3756 59.5922 20.4096 59.1523 20.4833C59.3213 20.4874 58.7216 20.599 58.605 20.6234C58.7615 20.5875 58.7423 20.5485 58.6022 20.5698C58.6751 20.6752 57.3773 20.8246 57.0433 20.916C56.5306 20.9486 56.7063 20.8747 57.2516 20.83C57.0533 20.844 57.0883 20.827 57.003 20.8157C56.8629 20.858 56.8113 20.8442 56.9458 20.857C56.7294 20.8859 56.2482 20.9423 56.5469 20.9461C56.3503 20.9784 56.2882 21.0402 56.3821 21.0113C56.6359 20.9554 56.5325 20.9748 56.7239 20.955C56.0985 21.0961 55.8775 21.11 55.7228 21.0654C55.9728 20.9714 55.5548 21.055 55.4331 21.0981C55.8668 21.0956 55.2474 21.1159 55.0693 21.1394C54.7607 21.2399 55.2727 21.1507 55.3955 21.1485C55.09 21.2617 54.7637 21.2157 54.7464 21.274C54.1952 21.3527 53.8428 21.3871 53.8626 21.3086C53.2215 21.4915 53.5468 21.2816 53.1704 21.4193C53.0386 21.4966 52.3699 21.4537 52.6788 21.4844C52.3769 21.5494 52.1481 21.5885 52.0929 21.5261C52.0193 21.5366 51.8708 21.549 51.7501 21.5617C51.7614 21.5613 51.7729 21.5615 51.7731 21.5636C51.7736 21.5685 51.7245 21.5712 51.7165 21.5663C51.719 21.5656 51.722 21.5652 51.7253 21.5647C51.5986 21.5792 51.5214 21.5947 51.6487 21.6124C51.758 21.6924 50.01 21.7599 50.0445 21.6993C49.9236 21.8016 49.8121 21.8083 49.2062 21.8388C48.6188 21.863 48.6102 21.8489 48.0132 21.8712C47.4424 21.9273 46.969 21.9413 46.5076 21.8525C46.3835 21.8618 46.8806 21.8967 46.3425 21.8881C46.4657 21.8415 46.069 21.8669 45.9756 21.8397C46.065 21.8331 46.2067 21.8299 46.2181 21.8116C45.9703 21.8296 45.8698 21.8384 45.7727 21.8469C45.6834 21.8546 45.5971 21.8618 45.4033 21.8722C45.9544 21.9161 45.4145 21.8887 45.703 21.9337C45.7288 21.9348 45.752 21.9357 45.7727 21.9362C46.1386 21.9453 45.7459 21.8697 45.8375 21.8708C45.9789 21.8664 46.1434 21.8816 46.3012 21.9017C46.1399 21.9209 45.9456 21.937 45.7727 21.9419C45.5787 21.9473 45.4097 21.9386 45.3426 21.9066C44.8307 21.9004 45.3998 21.8669 45.3733 21.8453C45.1064 21.8561 45.1514 21.8582 44.8725 21.8522C44.8725 21.8531 44.8724 21.854 44.8724 21.8549C44.8687 21.8541 44.8648 21.8534 44.8611 21.8533C44.8611 21.8529 44.8611 21.8524 44.8611 21.852C44.8586 21.8519 44.856 21.8519 44.8535 21.8519C44.8572 21.8526 44.8611 21.8533 44.8611 21.8533C44.8611 21.8538 44.8611 21.8542 44.8611 21.8547C44.8429 21.8544 44.8667 21.8575 44.8683 21.8577C44.8683 21.8567 44.8684 21.8558 44.8684 21.8548C45.2225 21.9144 44.4751 21.8683 44.5553 21.828C44.8809 21.8074 44.4652 21.8015 44.532 21.8513C44.2967 21.8565 44.2283 21.8722 44.1695 21.8411C44.076 21.8375 43.939 21.7822 43.9484 21.8337C43.6899 21.8163 43.8067 21.8082 43.5551 21.7963C43.2806 21.7806 43.2735 21.8525 42.9738 21.8536C42.9739 21.8522 42.9739 21.8508 42.974 21.8494C42.9589 21.8486 42.9474 21.8507 42.9397 21.8531C42.9131 21.853 42.8939 21.8534 42.8636 21.8517C42.8383 21.8328 43.1632 21.7871 42.7745 21.7527C42.7322 21.7712 42.683 21.7803 42.6265 21.7832C42.6301 21.7786 42.5702 21.7806 42.5513 21.7843C42.4936 21.7825 42.4316 21.7758 42.3669 21.7667C42.5304 21.7773 42.5581 21.745 42.3891 21.7403C42.3295 21.7434 42.5071 21.7638 42.3625 21.7661C42.3279 21.7612 42.2925 21.7558 42.2568 21.7498C42.2682 21.7492 42.3357 21.7508 42.3357 21.7508C42.366 21.7458 42.232 21.732 42.2568 21.7491C42.2383 21.7457 42.2158 21.7421 42.1934 21.7384C41.4072 21.6631 42.6059 21.8289 41.9448 21.7918C41.9304 21.7783 41.8117 21.7642 41.7248 21.7532C41.7486 21.7567 41.7901 21.756 41.7739 21.7475C41.741 21.7463 41.7116 21.7482 41.7097 21.7483C41.7106 21.7502 41.716 21.7519 41.7236 21.7531C41.6392 21.7424 41.5855 21.7349 41.688 21.7353C41.4989 21.677 40.999 21.6938 40.735 21.6606C40.7389 21.6602 40.7463 21.6615 40.7464 21.6601C40.6955 21.6413 40.6992 21.6403 40.6242 21.6366C40.6204 21.6369 40.624 21.6388 40.6238 21.6402C40.5908 21.63 40.5656 21.6169 40.5634 21.5998C39.9609 21.5059 40.7511 21.6544 40.1878 21.6119C40.165 21.6124 40.1387 21.6111 40.1159 21.6115C40.0713 21.6033 40.0559 21.6066 40.0553 21.6115C39.5595 21.6018 38.9129 21.4621 38.4939 21.3712C38.5285 21.3959 38.5271 21.4106 38.4992 21.4178C38.5673 21.4216 38.6058 21.4178 38.6692 21.4443C38.6161 21.4495 38.5202 21.439 38.461 21.4229C38.2365 21.4349 37.4625 21.2809 37.168 21.2505C37.5051 21.282 36.9117 21.1176 36.8372 21.0779C36.7041 21.0983 37.273 21.2616 36.6125 21.074C35.1896 20.7991 37.2835 21.2691 35.6374 20.9928C35.5092 20.9833 35.2069 20.9011 35.4825 20.9618C35.4893 20.8862 35.1263 20.9138 34.7979 20.8386C35.0471 20.8465 35.5949 20.9346 34.9705 20.7727C35.2053 20.8672 34.9765 20.8381 34.8657 20.7839C34.9509 20.6966 34.4875 20.7106 34.8903 20.813C34.789 20.8049 34.6432 20.7901 34.4946 20.7691C34.5072 20.763 34.4423 20.7437 34.3721 20.7503C34.3498 20.7472 34.324 20.7427 34.3019 20.7383C34.3488 20.7307 34.0378 20.6633 34.2633 20.702C34.0289 20.6492 34.2153 20.7123 34.2908 20.7368C34.1208 20.706 33.9747 20.6685 33.9406 20.6293C33.5697 20.5502 33.8178 20.5907 33.8509 20.5627C33.9987 20.5717 33.5381 20.481 33.5111 20.4984C33.8302 20.5884 33.2457 20.4785 33.3479 20.4709C32.9794 20.3974 34.19 20.7051 33.5039 20.5663C33.3524 20.5504 33.0714 20.4225 33.0757 20.4714C33.1485 20.489 32.931 20.4498 33.033 20.456C33.023 20.4151 33.0241 20.3933 32.8948 20.3714C32.8789 20.3678 32.863 20.3643 32.8471 20.3607C32.8504 20.3628 32.8612 20.366 32.8685 20.3677C32.8389 20.3631 32.7978 20.3581 32.7494 20.3521C32.7531 20.3522 32.7566 20.353 32.7567 20.3524C32.7069 20.3396 32.655 20.3201 32.653 20.3193C32.6183 20.3199 32.6421 20.3327 32.6781 20.3431C31.8958 20.1777 32.3497 20.1821 32.0489 20.1644C31.8331 20.095 31.5994 20.1087 31.5953 20.0623C31.6171 20.0676 31.6351 20.0734 31.6361 20.0694C31.6183 20.0636 31.5967 20.0576 31.5955 20.0615C31.5965 20.0575 31.5975 20.0535 31.5984 20.0494C31.386 20.0518 31.2574 19.9937 31.0258 19.931C31.0298 19.9306 31.0299 19.9298 31.0302 19.9284C31.0772 19.926 30.8704 19.8731 30.8976 19.9017C30.905 19.9029 30.9195 19.9073 30.9303 19.9101C30.8413 19.8952 30.734 19.8753 30.6159 19.8516C30.6423 19.8549 30.6411 19.8445 30.5873 19.8275C30.5653 19.8245 30.5616 19.8368 30.5614 19.8373C30.5755 19.8424 30.5865 19.8453 30.5973 19.8481C30.494 19.8275 30.3836 19.8041 30.2697 19.7787C30.2878 19.7821 30.3106 19.7812 30.3116 19.7812C30.28 19.7684 30.2209 19.7577 30.2481 19.7723C30.255 19.7748 30.2587 19.7757 30.2659 19.7776C29.7904 19.671 29.2438 19.5214 28.9038 19.3713C28.6379 19.2745 28.3327 19.2131 28.2366 19.1292C28.0913 19.0925 28.1934 19.1816 27.8989 19.0805C27.2223 18.9182 26.9618 18.8072 26.0161 18.5007C26.0459 18.5064 26.0563 18.4995 26.0448 18.4749C25.9351 18.4364 25.7013 18.3539 25.7111 18.383C25.7911 18.4158 25.8638 18.4473 25.9197 18.4693C25.8733 18.4542 25.8233 18.4379 25.7698 18.4202C25.216 18.2053 25.2578 18.1214 25.8745 18.4052C25.6789 18.3159 25.7489 18.3309 25.6552 18.2689C25.5533 18.2536 25.459 18.1941 25.5919 18.2795C25.4076 18.203 24.7892 17.9666 25.2296 18.1698C25.0921 18.1428 24.8857 18.074 25.0295 18.1499C25.204 18.1853 25.2173 18.204 25.3562 18.261C24.7357 18.1038 24.1797 17.7868 24.5596 17.8947C24.5019 17.87 24.4534 17.8498 24.4127 17.8331C24.4232 17.8456 24.2643 17.8038 24.229 17.7692C24.2259 17.7657 24.2331 17.7671 24.246 17.7708C24.1 17.7285 24.4913 17.9432 23.8225 17.6175C23.6008 17.6107 23.4197 17.5789 22.8387 17.3231C23.0451 17.4033 22.7448 17.245 22.6022 17.1973C22.6531 17.1914 22.7336 17.2325 22.744 17.2065C22.8394 17.2409 23.046 17.3608 23.1498 17.4043C22.9217 17.3284 23.189 17.4684 23.1768 17.438C23.2846 17.4711 23.3097 17.5521 23.3603 17.4839C23.3077 17.4328 23.5212 17.5356 23.6095 17.5565C23.6611 17.5777 23.4379 17.4593 23.4397 17.4756C23.3147 17.4967 22.8509 17.2003 22.515 17.0619C22.0998 16.9285 22.7126 17.2438 22.2977 17.0591C22.175 17.0227 22.2371 16.999 22.2638 16.9932C22.2587 16.9463 21.7693 16.7972 22.0094 16.9319C21.962 16.9123 21.9146 16.8927 21.8672 16.8731C21.864 16.871 21.8573 16.8674 21.8439 16.8611C21.8232 16.8525 21.811 16.8421 21.7866 16.8327C21.7789 16.8317 21.7819 16.8346 21.7917 16.8402C21.6959 16.7972 21.6678 16.7771 21.8383 16.8254C21.6595 16.7289 21.7255 16.7938 21.5085 16.6812C21.6102 16.7587 21.0807 16.5662 21.163 16.5645C21.176 16.5723 21.1862 16.5774 21.1994 16.5846C21.2186 16.5936 21.235 16.6007 21.2368 16.6015C21.2332 16.6013 21.2302 16.6001 21.2296 16.5999C21.3453 16.6537 21.3851 16.6268 21.1607 16.5414C21.0185 16.5018 20.8179 16.4081 20.6432 16.3397C20.6332 16.3345 20.6195 16.3285 20.6126 16.3254C20.6052 16.3237 20.6083 16.3259 20.6115 16.328C20.5203 16.2933 20.4342 16.2651 20.3711 16.2592C20.0203 16.0875 20.0772 16.0804 19.8093 16.0257C19.3545 15.8104 19.6934 15.8557 19.2583 15.733C19.2105 15.7199 19.1911 15.7077 19.1419 15.6799C19.1989 15.6997 19.2151 15.7005 19.2104 15.6929C19.2305 15.703 19.2474 15.7116 19.2495 15.7072C19.234 15.6961 19.2132 15.6871 19.2018 15.6848C19.1707 15.6626 19.086 15.6229 19.0382 15.6188C19.0429 15.6443 19.1476 15.7206 18.9858 15.659C18.8409 15.6227 18.208 15.2826 18.0793 15.204C18.0484 15.1903 18.0277 15.1809 18.0002 15.1688C18.0042 15.1693 18.0081 15.1697 18.0023 15.1645C17.9738 15.1458 17.9181 15.1236 17.9419 15.1432C17.7999 15.08 17.7235 15.0429 17.684 15.021C17.6483 15.002 17.6167 14.9819 17.6008 14.966C17.6191 14.9752 17.6355 14.9826 17.6504 14.9891C17.6701 14.9771 17.7605 14.9883 17.3034 14.7488C16.9955 14.6015 17.3627 14.7965 17.416 14.8256C17.4147 14.8281 17.1073 14.7034 17.4711 14.8912C17.3963 14.8559 17.2081 14.7866 17.2199 14.7635C16.8193 14.5249 16.657 14.6312 16.4377 14.3065C16.8571 14.5168 15.9665 14.0578 16.3309 14.2753C16.041 14.1077 15.3042 13.6944 15.7785 13.8987C15.4867 13.7365 15.4994 13.7832 15.2834 13.6695C15.1227 13.5342 14.578 13.338 14.8824 13.4179C14.3383 13.0374 14.7802 13.4754 14.4879 13.2669C14.3904 13.0004 14.1536 13.1459 13.9417 12.9199C13.7676 12.779 13.8605 12.8502 13.5891 12.7111C13.5854 12.6445 13.3058 12.541 13.1231 12.4136C12.919 12.2864 13.2636 12.523 13.1761 12.493C12.946 12.3354 12.8674 12.3478 12.7706 12.2893C12.7201 12.2209 13.0914 12.4219 12.8664 12.2706C12.8823 12.2177 12.7137 12.1594 12.5879 12.1085C12.6075 12.113 12.5674 12.0744 12.5327 12.0525C12.4882 12.0244 12.4373 12.0278 12.5559 12.0935C12.5614 12.0967 12.5663 12.0992 12.5705 12.1013C12.5067 12.0751 12.458 12.0515 12.4567 12.0324C12.3932 11.9793 12.3362 11.9347 12.2856 11.8969C12.2854 11.8966 12.2816 11.894 12.2814 11.8937C11.9143 11.6204 11.8568 11.7179 11.7538 11.5673C11.4915 11.4245 11.4511 11.3349 11.1967 11.1339C10.6377 10.646 10.8295 10.9928 10.4257 10.7215C10.4478 10.736 10.4747 10.7497 10.4651 10.7371C10.4396 10.7143 10.3876 10.6839 10.4083 10.7069C10.4102 10.7107 10.4163 10.715 10.4224 10.7192C10.3848 10.6939 10.342 10.6631 10.2911 10.624C9.84949 10.3797 10.4751 10.6561 9.70156 10.1325C9.6861 10.1542 9.88831 10.2661 9.91107 10.2994C9.90947 10.3017 9.62343 10.1314 9.95596 10.3727C9.82065 10.2896 9.33605 9.92513 9.3797 9.90341C9.35427 9.80728 8.50038 9.3085 8.21492 8.99484C9.1354 9.58094 7.97983 8.76764 7.6317 8.54713C7.47651 8.46903 7.51795 8.44742 7.617 8.50471C7.52532 8.29406 6.99352 8.05895 6.91111 7.98022C6.38202 7.53809 7.16368 8.1772 6.599 7.67743C7.09335 8.08631 6.16264 7.2409 6.07471 7.21562C6.09449 7.27286 5.85969 7.09439 6.09586 7.31201C6.10112 7.34054 5.71262 7.03236 5.72605 7.01165C6.28666 7.38593 4.986 6.25431 4.88546 6.23786C4.99959 6.38746 4.80286 6.1654 4.82723 6.1506C5.44406 6.6923 4.5116 5.7637 4.75381 6.04128C4.65336 6.0156 4.56234 5.88043 4.42824 5.70457C4.34154 5.65853 4.25521 5.61244 4.16847 5.56552C2.67092 4.12314 1.26917 2.57067 5.35846e-05 0.907839C0.226632 0.664209 0.45423 0.421708 0.682842 0.180351C2.60911 2.74315 4.86261 5.04791 7.31745 7.10019C7.07153 6.99205 6.82505 6.88067 6.57986 6.76755C6.67743 6.82555 6.79659 6.91537 6.97966 7.0853C7.35458 7.47202 6.57117 6.56152 7.21928 7.17667C6.85241 6.71486 7.85826 7.77551 7.71669 7.46461C8.05379 7.75977 7.86441 7.70572 8.20357 7.91148C8.24152 8.02482 8.66689 8.27128 8.33046 7.99032C8.38673 8.02095 8.52033 8.15686 8.5022 8.0962C8.86063 8.36402 8.13836 7.89468 8.64943 8.29814C8.67217 8.26903 8.86583 8.44798 8.92091 8.49196C8.9964 8.50317 8.90426 8.39836 9.11801 8.6061C9.44033 8.80033 9.09429 8.62559 8.97093 8.53046C9.13316 8.75746 9.2962 8.79514 9.34086 8.81578C9.49759 8.8667 9.70633 8.9897 9.55702 8.95432C9.56794 9.04573 9.90144 9.17408 9.92979 9.21004C9.86693 9.23345 10.1131 9.41776 10.2535 9.48918C10.2491 9.50156 10.2608 9.52307 10.2953 9.5513C10.3591 9.60225 10.4095 9.57634 10.3903 9.53332C10.5113 9.63146 10.7719 9.79599 10.8954 9.87175C10.7256 9.81069 11.5816 10.514 11.1519 10.1129C11.6139 10.3149 12.8843 11.2382 13.714 11.7147C13.6125 11.7674 13.9988 11.8664 14.2848 12.0576C14.265 12.1682 14.6406 12.2108 14.816 12.3799C14.7611 12.3164 15.0827 12.5355 15.1081 12.5558C15.0359 12.5626 15.0232 12.5403 15.21 12.6463C15.7216 12.9668 15.236 12.699 15.6634 12.8518C16.1101 13.0912 15.1868 12.6732 15.9466 13.0276C15.7009 12.9443 15.9274 13.047 16.0763 13.1374C16.0726 13.1369 16.0748 13.1404 16.0863 13.1498C16.0871 13.1487 16.0944 13.1504 16.0952 13.1492C16.1046 13.1552 16.1143 13.1605 16.1234 13.1671C16.2062 13.17 16.0827 13.0718 16.3358 13.2492C16.7517 13.4146 15.8567 13.107 16.4893 13.3943C16.4949 13.3303 17.2311 13.6459 17.0279 13.6354C17.1008 13.7037 17.2521 13.7093 17.2346 13.727C17.1127 13.7769 17.9954 14.1171 17.5073 13.8445C17.9114 14.0619 18.2428 14.2102 18.4031 14.3448C18.2479 14.3 18.5175 14.4302 18.5122 14.4421C18.6529 14.4909 18.5497 14.424 18.4837 14.3822C19.2152 14.6466 21.7386 15.8875 22.183 16.0071C23.0075 16.3141 22.8445 16.4042 23.1194 16.4846C23.5461 16.6947 22.9573 16.2808 23.3748 16.5335C23.5822 16.6028 23.2439 16.4618 23.2258 16.4273C23.3435 16.4716 23.4185 16.5033 23.4721 16.5287C23.4701 16.5245 23.4711 16.5214 23.4713 16.521C23.5309 16.5444 23.5906 16.5676 23.6503 16.5908C23.6623 16.6007 23.6597 16.6071 23.6597 16.6071C23.6514 16.6053 23.5617 16.5631 23.509 16.5463C23.6641 16.6268 23.5607 16.6376 23.9086 16.7847C24.2507 16.8117 23.9802 16.8146 24.2479 16.9232C24.3748 16.9126 24.6127 16.9417 24.9701 17.0948C24.5858 17.0259 25.3821 17.3497 25.3664 17.2501C25.7639 17.4561 25.5682 17.2994 25.2328 17.1838C25.6166 17.2959 25.6979 17.3976 25.8479 17.4633C25.9355 17.4708 25.9735 17.4632 25.9946 17.5156C26.2864 17.6383 26.084 17.5255 26.1856 17.5335C26.0548 17.4815 25.9425 17.4676 25.8775 17.4085C25.951 17.434 26.0244 17.4594 26.098 17.4846C26.1438 17.5061 26.1796 17.5242 26.205 17.5406C26.2489 17.5639 26.3387 17.6117 26.4101 17.6398C26.3807 17.6343 26.3283 17.6268 26.3248 17.6256C26.4045 17.6674 26.4297 17.6625 26.4309 17.6474C26.4481 17.654 26.466 17.6586 26.4772 17.6602C26.4773 17.66 26.4774 17.6597 26.4775 17.6595C26.5073 17.6636 26.5185 17.6541 26.4985 17.6208C27.0293 17.7814 26.9373 17.9077 27.0133 17.7946C27.2605 17.8466 27.0619 17.9084 27.2578 17.927C27.3245 17.961 27.4414 17.9708 27.2328 17.9079C27.2665 17.9123 27.4744 17.9665 27.4771 17.946C27.9059 18.0765 27.2042 17.9239 27.6397 18.0703C27.6703 17.9491 28.0347 18.247 28.0248 18.1418C27.9345 18.1086 28.0367 18.1169 28.0784 18.132C28.2535 18.2292 28.4023 18.236 28.6652 18.3104C28.7473 18.3721 27.999 18.1886 28.4078 18.3317C28.4171 18.301 28.6754 18.38 28.6936 18.3188C28.9405 18.3683 28.7381 18.4665 28.9595 18.4363C28.8858 18.3324 29.2233 18.4954 29.3097 18.5447C29.2961 18.4234 30.4987 18.8873 30.7664 18.9267C30.7883 18.9193 31.1091 18.9968 31.5572 19.1055C31.5311 19.1184 31.6787 19.1517 31.5714 19.109C32.6478 19.3778 34.4478 19.7711 34.5107 19.8167C34.5408 19.7441 35.0249 19.8804 35.1182 19.902C35.4038 19.9657 34.8543 19.9201 35.2876 19.964C35.4865 19.8697 35.4121 20.0674 35.6512 20.0601C35.4253 19.9657 35.8807 20.0453 36.2824 20.1088C36.1091 20.0854 36.385 20.1889 36.4482 20.2067C36.5448 20.1882 36.5309 20.181 36.3624 20.1594C36.3837 20.0787 36.5805 20.1986 36.6604 20.2124C36.4571 20.0935 37.5555 20.3274 37.8352 20.3723C37.8204 20.3722 37.8241 20.3727 37.8427 20.3733C37.93 20.3881 37.9266 20.3842 37.7535 20.3433C38.5909 20.4425 38.4751 20.5333 38.5325 20.4883C38.6428 20.5328 38.7906 20.4893 38.788 20.5101C38.7059 20.5413 39.5612 20.5903 38.9928 20.5737C38.8134 20.5751 39.2789 20.613 39.2608 20.6069C39.3784 20.5887 39.0502 20.5031 39.3356 20.5716C39.5168 20.5532 39.7012 20.6395 39.9471 20.6243C39.9102 20.6535 40.2274 20.7287 40.3616 20.7661C39.9942 20.5655 42.9841 20.9164 43.5816 20.9269C43.8354 20.8782 43.899 20.9464 44.1454 20.9686C43.9202 20.8846 45.2819 20.9547 44.8213 20.9772C45.5468 21.0232 44.9156 20.9314 45.5353 20.9487C45.628 20.9502 45.718 20.9535 45.7727 20.9593C45.8308 20.9655 45.8493 20.9747 45.7889 20.9877C46.0085 21.0018 46.2813 21.0002 46.064 20.9646C46.1595 20.9543 46.3215 20.9613 46.4695 20.9664C46.4547 20.9659 46.4362 20.9669 46.4252 20.9698C46.4548 20.9743 46.4957 20.9752 46.5327 20.976C46.5178 20.97 46.4991 20.9674 46.4806 20.9662C46.662 20.9723 46.8148 20.9748 46.7806 20.9384C47.4501 20.8987 46.8688 21.0023 47.2951 20.9601C47.3781 20.9136 47.3469 20.9706 47.3362 20.9828C47.4908 20.998 47.6264 20.9744 47.6589 20.9522C47.6849 20.9605 47.7624 20.9592 47.8362 20.9564C47.8502 20.9405 47.7094 20.9164 47.6622 20.9355C47.6435 20.9256 47.5989 20.918 47.4961 20.9212C48.0913 20.9222 48.7205 20.8484 48.7093 20.9211C49.5569 20.8229 53.4616 20.4495 53.4284 20.481C53.6784 20.4678 53.9073 20.5125 53.5797 20.447C53.8796 20.4424 54.1011 20.3134 54.1718 20.3673C54.4102 20.3375 54.5686 20.3199 54.2864 20.3338C54.4455 20.3151 55.6144 20.1406 55.8587 20.0985C55.2038 20.215 56.1894 20.1731 55.8582 20.1404C56.0912 20.0744 56.0022 20.0803 56.1133 20.1167C56.1046 20.0634 56.1847 20.0726 56.4328 20.0471C56.4489 20.009 56.1451 20.0606 56.0196 20.0724C56.5438 19.9699 56.7228 20.0266 57.0111 19.9646C56.9363 19.9011 57.1093 19.9488 57.3123 19.8466C57.654 19.7852 57.9273 19.7719 57.7602 19.8264C57.979 19.8057 57.786 19.7816 57.8622 19.7458C57.9914 19.707 58.5245 19.6432 58.3564 19.649C58.6559 19.5691 58.2932 19.7667 58.6613 19.5955C58.8614 19.6359 58.9312 19.57 58.9327 19.5404C58.9054 19.5168 59.1052 19.5165 59.15 19.5135C59.2321 19.4895 59.5644 19.3799 59.5935 19.4085C59.5307 19.434 59.4933 19.4542 59.5939 19.4105C59.5938 19.4098 59.5936 19.4091 59.5935 19.4085C59.6318 19.3931 59.6771 19.3749 59.706 19.3686C59.946 19.3374 59.7176 19.4549 59.8919 19.3856C59.7697 19.3607 60.0288 19.2712 60.1108 19.3001C60.2228 19.2939 60.2451 19.309 60.182 19.2635C60.867 19.101 61.2244 19.0551 61.7075 18.9334C61.7583 18.9004 65.3205 17.9443 65.4232 17.9449C65.4433 17.8449 65.8399 17.8026 65.9807 17.7312C66.2465 17.6763 65.8387 17.8484 66.1831 17.709C66.3835 17.519 66.2586 17.7872 66.616 17.6055C66.1985 17.6822 66.7434 17.5302 66.8251 17.4704C67.1159 17.3791 67.1426 17.3661 67.0974 17.3834C67.1353 17.3711 67.1732 17.3587 67.2111 17.3464C67.1511 17.3888 67.1533 17.3726 67.0927 17.3893C67.0679 17.396 67.0413 17.4089 67.034 17.4114C67.0324 17.4119 67.0312 17.4115 67.0295 17.4114C66.9773 17.4347 66.9234 17.464 66.9408 17.481C67.1694 17.4549 67.6245 17.2511 67.2344 17.3792C67.18 17.3544 67.4035 17.2657 67.4203 17.3167C67.5766 17.3533 67.3356 17.2721 67.8585 17.1331C67.8104 17.234 67.9998 17.0539 68.3867 16.953C68.3804 17.0477 69.1042 16.6981 68.5614 16.8924C69.3158 16.6201 69.0318 16.7814 69.5013 16.6429C69.5374 16.5903 69.4344 16.5998 69.7033 16.5379C69.5837 16.5233 70.2523 16.3375 69.758 16.526C69.3973 16.6708 69.7926 16.6088 69.7328 16.5747C69.9459 16.5112 69.8007 16.4918 69.9816 16.4688C70.1764 16.3665 69.9795 16.3995 70.1423 16.3178C70.5345 16.2262 70.0419 16.4919 70.5853 16.2132C70.8883 16.0739 70.8515 16.1116 70.734 16.2079C71.1124 16.0987 70.9126 16.0744 71.0733 15.9676C71.1185 16.0225 71.5788 15.828 71.3087 15.8896C71.8832 15.6526 71.8948 15.6415 71.6457 15.8558C72.0505 15.7408 72.1431 15.7012 71.7608 15.8933C71.7815 15.925 72.0051 15.8252 72.1279 15.7825C72.6019 15.5321 71.2267 15.955 72.101 15.6378C71.7346 15.621 73.9238 14.8194 74.1485 14.7216C74.2082 14.6653 74.5743 14.6487 74.6569 14.4721C74.3093 14.5847 74.9059 14.3399 75.1601 14.2113C74.3874 14.5944 75.2597 14.2496 75.4326 14.1563C75.5515 14.079 75.5303 14.0519 75.4168 14.0887C75.5072 14.0463 75.8962 13.8578 75.7482 13.9499C75.9365 13.9243 75.8339 13.8979 75.8424 13.882C75.9487 13.8308 76.1664 13.821 76.1238 13.8433C76.411 13.6877 76.1069 13.7665 76.5118 13.6654C76.767 13.4969 76.4401 13.6543 76.5627 13.5432C76.6009 13.5533 76.9335 13.3583 77.1205 13.2858C77.1061 13.2657 77.2007 13.2564 77.1648 13.2827C77.1431 13.297 77.1344 13.3046 77.1323 13.3088C77.0435 13.3628 77.0776 13.3887 77.1941 13.3079C77.1814 13.3073 77.1686 13.3067 77.1559 13.3062C77.2197 13.2846 77.3962 13.1993 77.4243 13.1973C77.2478 13.2342 77.5011 13.1126 77.5559 13.1138C77.7079 13.1562 77.7381 12.9735 77.6138 12.992C77.8141 12.872 77.6467 13.0388 77.7911 13.027C77.8582 13.0272 77.7698 13.0819 77.6773 13.1374C77.6804 13.1191 77.6326 13.1253 77.5309 13.1781C77.3632 13.2644 77.3788 13.3107 77.5322 13.2367C77.516 13.2608 77.5654 13.2613 77.7514 13.2154C77.7346 13.3118 77.8605 13.1744 78.0402 13.0767C77.9515 13.0999 77.986 13.0541 77.8495 13.1141C77.5961 13.207 77.9092 13.0362 77.9239 13.0717C78.0527 13.0291 78.2718 12.981 78.2643 12.912C78.278 12.9689 78.3758 12.8531 78.5128 12.8177C78.7819 12.6288 78.1171 12.8425 78.4746 12.778C78.2212 12.926 78.3027 12.8263 78.3804 12.7518C78.2406 12.8204 78.0201 12.9828 78.0863 12.9808C77.9071 13.0474 78.0172 12.8034 78.198 12.6792C78.3478 12.6296 78.0942 12.8773 78.3517 12.7538C78.3343 12.7135 79.0147 12.4069 78.6975 12.529C78.7379 12.4566 78.8946 12.4268 78.8357 12.4881C78.9918 12.3883 79.1152 12.2901 79.3106 12.1453C79.2911 12.1482 79.2935 12.1373 79.3055 12.1209C79.2572 12.141 79.1578 12.2064 79.1506 12.2088C79.1429 12.2098 79.1671 12.1779 79.1557 12.1723C79.1547 12.1706 79.1396 12.1715 79.1384 12.1716C79.1544 12.1625 79.1705 12.1535 79.1865 12.1445C79.2377 12.1222 79.3146 12.0851 79.3231 12.0995C79.3933 12.0278 79.5715 11.8997 79.6555 11.89C79.475 12.0213 79.2665 12.1726 79.4361 12.1337C79.3344 12.2026 79.206 12.2316 79.2721 12.2585C79.4907 12.1246 79.8639 12.0583 79.7784 11.984C79.9492 11.8641 79.7943 11.6792 80.2293 11.5882C80.6521 11.2591 80.5275 11.4391 80.2615 11.5774C80.1757 11.6647 80.4688 11.5214 80.5431 11.5232C80.7122 11.3495 81.4845 10.9971 81.3815 10.951C81.6013 10.7996 81.427 10.8908 81.6871 10.7484C81.7763 10.6406 81.7201 10.697 81.6456 10.6828C81.7675 10.5719 82.0074 10.5086 81.8526 10.6433C81.9984 10.5846 82.2577 10.4359 82.1447 10.4258C82.724 10.1573 81.348 10.9755 82.387 10.4434C82.0024 10.7948 82.6931 10.2448 82.6771 10.2015C82.3717 10.3455 82.3231 10.4331 82.5901 10.171C83.0266 9.82953 82.3977 10.4174 82.9255 10.045C83.1929 9.7398 82.6037 10.1092 83.1086 9.70836C83.2773 9.6152 83.2009 9.76473 83.2075 9.83388C83.1513 9.86967 83.096 9.9071 83.096 9.9071C83.0414 9.95844 83.1304 9.91111 83.2143 9.85651C83.2408 9.88797 83.339 9.85077 83.6613 9.58845C82.829 9.85693 83.8241 9.43873 83.3562 9.5725C83.7139 9.29161 84.2301 8.88296 84.4214 8.8445C85.0284 8.49744 84.5932 8.75352 84.8207 8.5064C84.8507 8.60247 85.5986 8.08819 85.2449 8.25479C85.1267 8.32018 84.9992 8.38529 85.2342 8.24083C85.471 8.01378 85.3371 8.15588 85.4315 8.12658ZM35.6116 21.0023C35.5833 20.9972 35.555 20.992 35.5267 20.9869C35.5376 20.9875 35.5653 20.9911 35.5677 20.9914C35.5776 20.9932 35.5875 20.995 35.5974 20.9968C35.6041 20.9994 35.6107 21.002 35.6116 21.0023ZM55.6716 21.1088C55.6574 21.1145 55.6434 21.121 55.6585 21.1214C55.6661 21.1203 55.724 21.1176 55.7293 21.1174C55.7233 21.119 55.7174 21.1207 55.7114 21.1223C55.725 21.1202 55.7386 21.118 55.7522 21.1159C55.7523 21.1168 55.7525 21.1178 55.7526 21.1187C55.6678 21.1335 55.5722 21.1511 55.5429 21.157C55.5251 21.1611 55.4975 21.1709 55.4961 21.1714C55.437 21.1804 55.378 21.1894 55.319 21.1983C55.3334 21.1947 55.3407 21.1922 55.34 21.188C55.3399 21.1871 55.3398 21.1861 55.3396 21.1852C55.391 21.176 55.4386 21.1659 55.4386 21.1659C55.4457 21.1647 55.4378 21.1604 55.4378 21.1604C55.4561 21.1528 55.6389 21.1259 55.6393 21.1202C55.6391 21.1188 55.6304 21.1123 55.6304 21.1123C55.6441 21.1111 55.6578 21.11 55.6716 21.1088ZM74.6553 15.4805C74.6555 15.4809 74.6557 15.4813 74.6559 15.4817C74.6581 15.4807 74.6603 15.4797 74.6625 15.4787C74.6733 15.4754 74.6754 15.4797 74.7039 15.4699C74.7995 15.436 74.9032 15.3921 74.9924 15.3614C74.9382 15.3961 74.9012 15.4237 74.8685 15.4516C74.8332 15.4677 74.798 15.4836 74.7627 15.4996C74.7476 15.5026 74.7325 15.5062 74.725 15.508C74.645 15.5311 74.5471 15.569 74.4547 15.6102C74.4401 15.5961 74.5744 15.5476 74.6054 15.5251C74.6202 15.5123 74.5294 15.5294 74.6553 15.4805ZM79.0389 13.3329C79.0274 13.3432 79.016 13.3542 79.0305 13.3495C79.0371 13.3459 79.0967 13.3211 79.0967 13.3211C79.0957 13.3222 79.0948 13.3233 79.0938 13.3244C79.106 13.3177 79.1181 13.3111 79.1302 13.3044C79.1306 13.3052 79.1311 13.306 79.1315 13.3068C79.0564 13.3496 78.9719 13.3988 78.9462 13.4144C78.9309 13.4243 78.9082 13.4426 78.9067 13.4439C78.8493 13.475 78.7919 13.5061 78.7344 13.5371C78.7228 13.5394 78.6959 13.5522 78.6939 13.5485C78.7143 13.5391 78.8332 13.4688 78.8373 13.4663C78.8439 13.4627 78.8347 13.4614 78.8347 13.4614C78.8489 13.4483 79.0138 13.3601 79.0122 13.3546C79.0115 13.3534 79.0011 13.3503 79.0011 13.3503C79.0137 13.3445 79.0263 13.3387 79.0389 13.3329ZM57.5158 20.8181C57.5264 20.7729 57.1766 20.8337 57.1418 20.873C57.3038 20.8457 57.3234 20.8693 57.5158 20.8181ZM54.655 21.2438C54.9558 21.1777 54.0279 21.2817 54.4208 21.2766C54.4707 21.2824 54.2058 21.3092 54.4482 21.3104C54.5713 21.2417 54.5944 21.352 54.655 21.2438ZM65.9195 18.7681C65.6798 18.8814 66.1157 18.7322 65.9264 18.766C65.9241 18.7667 65.9218 18.7674 65.9195 18.7681ZM65.7823 18.8328C65.869 18.7835 65.5962 18.836 65.6205 18.8658C65.7607 18.8131 65.6895 18.8613 65.7823 18.8328ZM80.2726 12.6407C80.3768 12.5804 80.3981 12.542 80.4848 12.519C80.437 12.5639 80.323 12.6302 80.2726 12.6407ZM48.8469 21.8338C48.8135 21.8314 48.7534 21.8394 48.7838 21.8448C48.8067 21.8492 48.8694 21.8396 48.8469 21.8338ZM61.8385 19.8794C61.8049 19.8833 61.7483 19.902 61.7789 19.9018C61.8016 19.9019 61.8371 19.8803 61.8385 19.8794ZM35.7361 20.9969C35.7499 20.9837 35.6366 20.9563 35.6582 20.9843C35.6763 20.9897 35.729 20.9942 35.7361 20.9969ZM67.1693 18.3852C67.1752 18.3671 67.0628 18.3958 67.0948 18.4105C67.1133 18.4068 67.1617 18.3862 67.1693 18.3852ZM75.1224 15.2932C75.1264 15.2929 75.1407 15.288 75.1543 15.2817C75.1496 15.285 75.1382 15.2932 75.1326 15.2971C75.1385 15.2921 75.1304 15.2926 75.1224 15.2932ZM18.7058 15.4871C18.6105 15.4253 18.4276 15.3548 18.3862 15.354C18.4898 15.416 18.6141 15.4525 18.7058 15.4871ZM37.9405 21.3368C38.3203 21.3738 37.9684 21.2743 37.7361 21.2587C38.1829 21.333 37.4834 21.3065 37.9405 21.3368ZM29.3678 19.5102C29.1901 19.4496 29.1712 19.4747 29.3569 19.5208C29.4054 19.5287 29.425 19.5285 29.3678 19.5102ZM60.8727 20.0953C60.6882 20.1274 60.684 20.1584 60.8686 20.1098C60.9147 20.0935 60.9315 20.084 60.8727 20.0953ZM39.4615 21.5003C39.584 21.549 39.366 21.5139 39.4726 21.5375C39.6811 21.558 39.6664 21.519 39.4615 21.5003ZM69.3725 17.5719C68.7402 17.7825 69.4575 17.5541 69.1087 17.7247C69.3948 17.635 69.4249 17.5851 69.3725 17.5719ZM81.0842 12.0472C80.5361 12.3849 81.4404 11.915 81.0342 12.1907C81.4196 11.9742 81.3215 11.9446 81.0842 12.0472ZM48.3784 21.857C48.8068 21.8165 47.6339 21.8046 47.9519 21.8386C48.3459 21.8121 47.7121 21.8878 48.3784 21.857ZM70.7917 17.0591C70.5567 17.1572 70.9215 17.0423 70.6224 17.1718C70.7184 17.15 70.9714 17.0154 70.7917 17.0591ZM50.9234 21.6869C51.3348 21.6612 51.0311 21.6254 51.0792 21.6612C51.0491 21.6625 50.9 21.677 50.9234 21.6869ZM58.1083 20.6805C58.5717 20.5856 57.6724 20.6594 57.8131 20.675C58.3236 20.6096 57.7331 20.7778 58.1083 20.6805ZM49.5779 21.777C49.7496 21.7582 49.2508 21.7755 49.4283 21.7894C49.1371 21.8158 49.4591 21.8059 49.5779 21.777ZM26.4171 18.521C26.3431 18.5534 26.868 18.7203 26.478 18.6342C27.0574 18.8159 26.6194 18.6364 26.4171 18.521ZM29.916 19.6373C29.8708 19.6329 29.9255 19.6588 29.9438 19.6768C30.0026 19.6892 29.9694 19.6548 29.916 19.6373ZM61.4294 19.9403C61.3838 19.959 61.4446 19.9554 61.4694 19.9624C61.5304 19.9443 61.4847 19.9301 61.4294 19.9403ZM33.0697 20.4464C33.0683 20.4539 33.1531 20.4683 33.1332 20.4546C33.1 20.4487 33.0697 20.4464 33.0697 20.4464ZM52.2363 21.5336C52.2491 21.5808 52.5215 21.4981 52.2443 21.537C52.255 21.5316 52.2586 21.5312 52.2363 21.5336ZM27.6981 19.0061C27.6968 19.01 27.6889 19.0113 27.6877 19.0152C27.6876 19.0155 27.6875 19.0157 27.6874 19.016C27.7298 19.0313 27.7897 19.0396 27.6964 19.0114C27.697 19.0096 27.6975 19.0078 27.6981 19.0061ZM62.0974 19.7895C62.0763 19.7976 62.0795 19.8104 62.0795 19.8104C62.1573 19.7991 62.1779 19.7739 62.0974 19.7895ZM59.174 20.4574C59.1747 20.4608 59.168 20.4658 59.1687 20.4692C59.2603 20.4503 59.2195 20.4558 59.174 20.4574ZM19.5966 15.8953C19.5634 15.8962 19.6947 15.9695 19.7139 15.9637C19.7243 15.9584 19.6352 15.91 19.5966 15.8953ZM27.7434 19.0121C27.7108 19.0174 27.8502 19.0729 27.8685 19.0646C27.8782 19.0581 27.7836 19.0217 27.7434 19.0121ZM59.2123 20.4403C59.1864 20.4606 59.335 20.442 59.347 20.4259C59.3524 20.4155 59.252 20.4293 59.2123 20.4403ZM82.1464 11.4747C82.1292 11.503 82.2623 11.4327 82.2678 11.4134C82.2691 11.4018 82.1799 11.4503 82.1464 11.4747ZM29.5478 19.5485C29.5546 19.5511 29.5322 19.5543 29.5307 19.5545C29.5566 19.5595 29.5613 19.5559 29.5478 19.5485ZM61.0526 20.0416C61.0595 20.0408 61.0422 20.0538 61.0405 20.0551C61.0653 20.0472 61.0679 20.0417 61.0526 20.0416ZM10.4326 10.6982C10.5022 10.75 10.509 10.7403 10.437 10.6919C10.4355 10.694 10.4341 10.6961 10.4326 10.6982ZM40.0534 21.5915C40.1394 21.6034 40.1406 21.5916 40.0542 21.5839C40.0539 21.5864 40.0537 21.589 40.0534 21.5915ZM30.265 19.7528C30.3477 19.7779 30.3508 19.7664 30.267 19.7454C30.2663 19.7479 30.2656 19.7504 30.265 19.7528ZM50.7279 21.6859C50.7046 21.678 50.6491 21.684 50.6723 21.6933C50.6871 21.6921 50.7019 21.688 50.7279 21.6859ZM61.7877 19.8752C61.8717 19.8577 61.8689 19.8462 61.7859 19.8678C61.7865 19.8703 61.7871 19.8728 61.7877 19.8752ZM58.806 20.525C58.7482 20.5216 58.6641 20.5383 58.6754 20.5567C58.7306 20.5479 58.7941 20.5423 58.806 20.525ZM80.9609 12.2076C81.0009 12.1651 80.7428 12.3033 80.81 12.3064C80.8357 12.2904 80.961 12.2077 80.9609 12.2076ZM16.7008 14.476C16.6322 14.4369 16.6073 14.4356 16.6705 14.4687C16.7101 14.4895 16.7009 14.4761 16.7008 14.476ZM24.6859 17.9869C24.6128 17.9574 24.588 17.9594 24.655 17.9838C24.6973 17.9991 24.6845 17.9908 24.6859 17.9869ZM35.7625 20.9773C35.9077 20.996 35.6655 20.9232 35.6783 20.9566C35.7074 20.9647 35.7625 20.9773 35.7625 20.9773ZM47.369 21.8693C47.2908 21.8688 47.2687 21.8798 47.3393 21.8778C47.384 21.8766 47.3692 21.8735 47.369 21.8693ZM55.9828 21.0332C55.9325 21.0271 55.8879 21.0569 55.8508 21.0614C55.8826 21.0539 55.953 21.052 55.976 21.0394C55.9707 21.0426 55.9831 21.043 56.0176 21.0375C56.062 21.0303 56.0468 21.0292 56.0461 21.0251C56.0072 21.03 55.9827 21.0359 55.9764 21.0392C55.9796 21.0374 55.9817 21.0354 55.9828 21.0332ZM67.1833 18.3556C67.32 18.3043 67.0726 18.3531 67.0996 18.3767C67.1285 18.3703 67.1819 18.356 67.1833 18.3556ZM24.616 17.9592C24.5809 17.9241 24.5343 17.9421 24.4882 17.9156C24.5032 17.9293 24.6112 17.9724 24.616 17.9592ZM28.9968 19.3874C28.9682 19.3929 29.0157 19.4045 29.0851 19.4209C29.0919 19.4221 28.9816 19.3896 28.9968 19.3874ZM60.4937 20.1647C60.4712 20.1833 60.518 20.1708 60.5864 20.1518C60.5935 20.1495 60.4809 20.174 60.4937 20.1647ZM16.6351 14.4392C16.5921 14.4 16.5157 14.3598 16.5128 14.3812C16.5617 14.4094 16.615 14.4452 16.6351 14.4392ZM27.3422 18.887C27.2929 18.856 27.2106 18.8299 27.2116 18.8515C27.2646 18.8706 27.3234 18.8965 27.3422 18.887ZM79.3002 13.1595C79.2439 13.1739 79.1683 13.2156 79.1847 13.2298C79.235 13.2045 79.2942 13.1796 79.3002 13.1595ZM30.1714 19.7111C30.0804 19.6894 30.1866 19.7404 30.2056 19.7274C30.2064 19.7235 30.1735 19.7118 30.1714 19.7111ZM61.6784 19.8851C61.588 19.9098 61.7063 19.9035 61.7168 19.883C61.7156 19.8789 61.6784 19.8851 61.6784 19.8851ZM10.3896 10.6546C10.3872 10.6317 10.279 10.5823 10.3544 10.6385C10.3726 10.6512 10.3889 10.6545 10.3896 10.6546ZM18.3361 15.3025C18.3757 15.3155 18.2377 15.2482 18.2426 15.263C18.2832 15.2799 18.3336 15.3014 18.3361 15.3025ZM78.2823 13.688C78.2847 13.6882 78.287 13.6884 78.2894 13.6885C78.3065 13.6862 78.3625 13.6566 78.4097 13.6315C78.4141 13.6292 78.4185 13.6269 78.4229 13.6245C78.3918 13.6458 78.3781 13.6602 78.3549 13.6804C78.3389 13.6904 78.3218 13.6908 78.3078 13.6966C78.2756 13.7081 78.2278 13.7302 78.1912 13.7495C78.188 13.7433 78.2465 13.7171 78.2578 13.7064C78.2642 13.7023 78.2232 13.7129 78.281 13.6855C78.2814 13.6863 78.2819 13.6872 78.2823 13.688ZM26.3124 18.5378C26.3522 18.5607 26.3221 18.5691 26.4179 18.5899C26.4495 18.5893 26.3804 18.5591 26.3124 18.5378ZM57.737 20.7162C57.779 20.7177 57.7567 20.7396 57.8505 20.7114C57.8816 20.6949 57.8067 20.7019 57.737 20.7162ZM47.2944 21.8701C47.246 21.8595 47.1882 21.8596 47.1658 21.8692C47.2114 21.8709 47.2803 21.8816 47.2944 21.8701ZM32.776 20.3654C32.7649 20.3636 32.7217 20.3501 32.7398 20.3542C32.7545 20.3575 32.776 20.3654 32.776 20.3654ZM34.2721 20.6587C33.9844 20.5679 34.1478 20.6478 33.9137 20.5929C34.195 20.6971 34.3105 20.6757 34.2721 20.6587ZM57.6968 20.7264C57.6824 20.7305 57.6515 20.7483 57.6847 20.7422C57.6844 20.7408 57.6755 20.7346 57.6968 20.7264ZM65.6484 18.7897C65.4095 18.8126 65.6185 18.8337 65.3902 18.8786C65.6829 18.8529 65.9091 18.6954 65.6484 18.7897ZM64.229 19.2158C64.164 19.2055 64.0405 19.2919 64.2186 19.234C64.3102 19.2006 64.1435 19.2431 64.229 19.2158ZM12.5879 12.1085C12.5842 12.1077 12.5787 12.1056 12.5705 12.1013C12.5762 12.1037 12.582 12.1062 12.5879 12.1085ZM27.6105 18.9466C27.5845 18.9553 27.6928 18.9986 27.6928 18.9986C27.6884 18.9877 27.655 18.9678 27.6105 18.9466ZM59.0687 20.4461C59.0499 20.4664 59.1652 20.4522 59.1652 20.4521C59.156 20.4447 59.1176 20.4433 59.0687 20.4461ZM49.5763 21.7526C49.5786 21.737 49.4013 21.7249 49.2237 21.7558C49.4031 21.7507 49.5334 21.7883 49.5763 21.7526ZM37.6117 21.2553C37.6257 21.2637 37.6731 21.2735 37.6948 21.2809C37.7105 21.2768 37.6599 21.2625 37.6117 21.2553ZM68.9473 17.7398C68.9635 17.7408 69.0105 17.7273 69.0331 17.7238C69.0449 17.713 68.9932 17.7238 68.9473 17.7398ZM32.8903 20.3769C32.9106 20.3859 32.937 20.3981 32.9522 20.4015C32.9522 20.4015 32.927 20.3929 32.9162 20.3898C32.912 20.3888 32.9011 20.3825 32.8903 20.3769ZM18.6998 15.4734C18.6584 15.4294 18.6589 15.3588 18.3665 15.2401C18.2318 15.2166 18.5728 15.4169 18.6998 15.4734ZM24.9276 18.0484C24.9192 18.0508 24.8581 18.0421 24.9341 18.0719C24.9507 18.0756 24.935 18.0624 24.9288 18.0533C24.9284 18.0517 24.928 18.05 24.9276 18.0484ZM32.8733 20.3758C32.8608 20.3802 32.8174 20.369 32.7776 20.3585C32.7788 20.3587 32.7799 20.359 32.7811 20.3593C32.7961 20.3612 32.822 20.3657 32.8369 20.3676C32.849 20.3703 32.8611 20.3731 32.8733 20.3758ZM62.5295 19.6678C62.5691 19.6434 62.3629 19.6954 62.4006 19.7075C62.4439 19.6953 62.5404 19.6809 62.5295 19.6678ZM18.2217 15.2288C18.2573 15.25 18.2961 15.2736 18.3461 15.2995C18.3359 15.2859 18.2741 15.2497 18.2217 15.2288ZM11.8872 11.6177C11.8315 11.5857 11.6352 11.4461 11.7524 11.5488C11.7399 11.5886 12.0781 11.7459 11.8872 11.6177ZM33.0194 20.3807C32.9662 20.3782 33.0442 20.4235 33.1271 20.4303C33.0091 20.4092 33.1308 20.4127 33.0194 20.3807ZM41.8113 21.7027C41.673 21.6831 41.7464 21.7111 41.6517 21.7122C41.7407 21.7367 41.897 21.719 41.8113 21.7027ZM54.7756 21.1851C54.7414 21.2097 54.8615 21.2009 54.9345 21.1797C54.8859 21.1847 54.7736 21.1931 54.7756 21.1851ZM29.5237 19.5096C29.2986 19.4391 29.5022 19.5168 29.416 19.4918C29.5164 19.5361 29.4926 19.5096 29.5237 19.5096ZM61.0128 20.0191C60.7815 20.0653 60.9973 20.0358 60.9096 20.0552C61.0188 20.0459 60.9855 20.034 61.0128 20.0191ZM51.1255 21.6325C51.1175 21.629 51.0836 21.6279 51.0953 21.6338C51.0956 21.6366 51.1255 21.6325 51.1255 21.6325ZM12.3843 11.936C12.4208 11.9765 12.459 12 12.3693 11.9596C12.5549 12.0806 12.5409 12.0255 12.3843 11.936ZM42.3669 21.7667C42.3637 21.7665 42.3605 21.7665 42.3572 21.7662C42.359 21.7662 42.3608 21.7662 42.3625 21.7661C42.364 21.7663 42.3654 21.7665 42.3669 21.7667ZM32.5539 20.2808C32.6165 20.2931 32.5291 20.3052 32.5906 20.3057C32.6993 20.335 32.5839 20.2842 32.5539 20.2808ZM20.0746 16.0951C20.0629 16.0937 20.0583 16.0948 20.0928 16.1096C20.0871 16.1039 20.0746 16.0951 20.0746 16.0951ZM32.8685 20.3677C32.8734 20.3684 32.8819 20.3724 32.8903 20.3769C32.8814 20.3729 32.874 20.3693 32.8685 20.3677ZM64.0765 19.2252C64.0183 19.2536 64.0745 19.2462 64.0638 19.2636C64.1985 19.2178 64.1384 19.2249 64.0765 19.2252ZM64.3798 19.1716C64.3004 19.1931 64.3707 19.18 64.4208 19.1645C64.4096 19.1662 64.3798 19.1716 64.3798 19.1716ZM66.5242 18.4793C66.3395 18.5659 67.0446 18.4001 66.9888 18.3856C67.3774 18.2643 66.7133 18.43 66.5242 18.4793ZM47.0439 21.8546C47.0505 21.8551 47.0515 21.8563 47.0516 21.8565C47.0479 21.8587 47.044 21.8617 47.044 21.8617C47.0517 21.865 47.0631 21.8605 47.0516 21.8565C47.0516 21.8558 47.0516 21.8551 47.0516 21.8544C47.049 21.8545 47.0464 21.8545 47.0439 21.8546ZM75.0977 15.2568C75.1262 15.2468 75.1705 15.2265 75.1705 15.2265C75.1541 15.243 75.1038 15.2621 75.1006 15.2632C75.0996 15.2611 75.0987 15.259 75.0977 15.2568ZM54.9632 21.1699C54.9634 21.1727 54.9417 21.1786 54.9417 21.1786C54.9491 21.1775 54.9635 21.1726 54.9632 21.1699ZM44.6229 21.8534C44.6076 21.8587 44.6867 21.866 44.6868 21.8604C44.6868 21.8563 44.6267 21.8536 44.6229 21.8534ZM77.2121 14.2422C77.2131 14.244 77.203 14.2491 77.1929 14.2542C77.1993 14.2502 77.2054 14.2455 77.2121 14.2422ZM12.2856 11.8969C12.2854 11.8966 12.2816 11.894 12.2814 11.8937C12.2828 11.8948 12.2842 11.8959 12.2856 11.8969ZM12.8857 12.2686C12.8704 12.2655 12.9332 12.3047 12.9368 12.3069C12.939 12.3033 12.9048 12.2805 12.8857 12.2686ZM33.1006 20.4109C33.0852 20.4132 33.1616 20.4301 33.1616 20.4301C33.1624 20.426 33.1225 20.4158 33.1006 20.4109ZM35.1157 20.7947C35.0711 20.7871 35.4071 20.8933 35.35 20.8711C35.8201 20.9535 35.3926 20.85 35.1157 20.7947ZM63.1324 19.5018C63.1103 19.5062 63.0811 19.5131 63.0896 19.516C63.1114 19.5103 63.1335 19.5059 63.1324 19.5018ZM21.8777 16.8677C21.8554 16.8531 21.8208 16.8387 21.8177 16.8456C21.8408 16.8568 21.8761 16.8672 21.8777 16.8677ZM33.283 20.4525C33.2859 20.4567 33.3232 20.4619 33.313 20.4561C33.2987 20.453 33.2836 20.4525 33.283 20.4525ZM59.5442 20.3432C59.4996 20.3497 59.4835 20.3645 59.5453 20.3486C59.5682 20.3481 59.5731 20.335 59.5442 20.3432ZM28.0741 19.0843C28.0906 19.0922 28.0483 19.078 28.0453 19.077C28.0096 19.0785 28.1412 19.1084 28.0741 19.0843ZM64.7899 19.039C64.7428 19.051 64.739 19.0644 64.7854 19.0497C64.7848 19.0476 64.7833 19.0424 64.7899 19.039ZM14.0391 12.9466C14.0207 12.9318 13.8532 12.8342 13.9249 12.8961C13.9586 12.9202 14.0214 12.9394 14.0391 12.9466ZM44.305 21.8263C44.2111 21.8194 44.0651 21.8293 44.2105 21.8395C44.2142 21.839 44.3189 21.8289 44.305 21.8263ZM10.5592 10.7342C10.591 10.7478 10.44 10.6284 10.4633 10.6676C10.4737 10.6799 10.5592 10.7342 10.5592 10.7342ZM61.7851 19.832C61.7898 19.8337 61.8183 19.8267 61.8183 19.8267C61.8072 19.828 61.7995 19.8285 61.7851 19.832ZM19.1418 15.6366C19.1493 15.6471 19.1807 15.6682 19.1807 15.6682C19.242 15.6961 19.184 15.6526 19.1418 15.6366ZM50.0699 21.6869C50.0777 21.6898 50.0929 21.6915 50.1081 21.6932C50.1115 21.6887 50.0961 21.6836 50.0699 21.6869ZM11.5592 11.3968C11.5387 11.3874 11.5552 11.4033 11.5897 11.4261C11.599 11.4322 11.5592 11.3968 11.5592 11.3968ZM26.6153 18.5771C26.5498 18.5607 26.6879 18.632 26.7333 18.6497C26.6975 18.6269 26.7032 18.6091 26.6153 18.5771ZM58.0208 20.6039C57.9558 20.6212 58.1109 20.6166 58.1596 20.6102C58.1172 20.6076 58.1134 20.5892 58.0208 20.6039ZM33.0768 20.3812C33.076 20.3846 33.039 20.3779 33.0348 20.3798C33.0635 20.3884 33.0768 20.3812 33.0768 20.3812ZM64.5476 19.091C64.545 19.0953 64.5065 19.1107 64.5065 19.1107C64.5395 19.1035 64.5516 19.0913 64.5476 19.091ZM82.3336 11.2719C82.2113 11.2539 81.171 11.9126 81.8825 11.5489C81.8732 11.6333 82.1616 11.4064 82.3336 11.2719ZM8.6705 9.34102C8.74086 9.35416 8.56264 9.22209 8.46807 9.16592C8.37806 9.12235 8.6112 9.31289 8.6705 9.34102ZM50.0695 21.6812C50.0544 21.6823 50.0622 21.6868 50.0622 21.6875C50.0734 21.6846 50.0695 21.6812 50.0695 21.6812ZM48.2396 21.7911C48.5189 21.7912 48.3435 21.7509 48.2246 21.7904C48.225 21.7916 48.2379 21.7911 48.2396 21.7911ZM17.6657 14.9148C17.6298 14.8858 17.5622 14.8448 17.5072 14.8287C17.437 14.8097 17.6006 14.8853 17.6657 14.9148ZM19.1675 15.6348C19.1326 15.6122 19.1262 15.6255 19.1351 15.6328C19.1425 15.6347 19.1675 15.6348 19.1675 15.6348ZM10.2769 10.4867C10.1998 10.4066 9.73371 10.1398 10.1201 10.4086C10.1844 10.4483 10.3409 10.5591 10.2769 10.4867ZM4.57603 5.83371C4.53959 5.80085 4.47174 5.74641 4.51416 5.79486C4.61044 5.90155 4.69805 5.94617 4.57603 5.83371ZM11.4271 11.283C11.3857 11.2571 11.3095 11.2155 11.3596 11.2557C11.4727 11.3437 11.5665 11.3722 11.4271 11.283ZM23.4025 17.447C23.3676 17.4335 23.3283 17.4212 23.2924 17.4102C23.3338 17.4278 23.393 17.4508 23.4025 17.447ZM9.83319 10.1885C9.81147 10.1671 9.60227 10.0071 9.63855 10.0532C9.65777 10.0786 9.89002 10.2441 9.83319 10.1885ZM46.5898 21.8219C46.5635 21.8265 46.5299 21.8333 46.5751 21.8368C46.5976 21.8351 46.5899 21.8268 46.5898 21.8219ZM64.5719 19.0797C64.4909 19.1092 64.6848 19.0537 64.6901 19.0434C64.6507 19.0555 64.6113 19.0676 64.5719 19.0797ZM24.3001 17.789C24.2828 17.7826 24.2687 17.7778 24.2572 17.7742C24.2693 17.7781 24.2843 17.7833 24.3001 17.789ZM30.0262 19.6173C30.0276 19.6119 30.0181 19.618 30.0181 19.618C30.0466 19.6272 30.0444 19.6215 30.0262 19.6173ZM61.5058 19.8724C61.5045 19.867 61.4991 19.877 61.4991 19.877C61.5284 19.8714 61.5238 19.8675 61.5058 19.8724ZM8.91597 9.49172C8.81534 9.41239 8.77603 9.42669 8.93715 9.52605C8.97281 9.54757 8.95505 9.52114 8.91597 9.49172ZM16.2892 14.1706C16.1779 14.1079 16.1414 14.1281 16.3153 14.2012C16.3536 14.2168 16.3322 14.1935 16.2892 14.1706ZM70.5605 17.0928C70.5102 17.108 70.4294 17.148 70.4256 17.1591C70.4916 17.1329 70.5501 17.1079 70.5605 17.0928ZM39.2182 21.4229C39.1654 21.4236 39.2329 21.4274 39.2589 21.4305C39.2552 21.4287 39.2182 21.4229 39.2182 21.4229ZM30.5731 19.7629C30.8649 19.848 30.7123 19.7654 30.6567 19.7848C30.6289 19.7775 30.601 19.7702 30.5731 19.7629ZM62.054 19.7388C62.353 19.6735 62.1769 19.6747 62.1375 19.7182C62.1097 19.7251 62.0819 19.7319 62.054 19.7388ZM46.7742 21.8119C46.7482 21.8201 46.7748 21.8287 46.8763 21.819C46.8461 21.8161 46.8119 21.8141 46.7742 21.8119ZM10.3983 10.5829C10.3849 10.5625 10.328 10.532 10.3441 10.5484C10.3503 10.5528 10.3983 10.5829 10.3983 10.5829ZM19.5926 15.8049C19.6327 15.8436 19.8975 15.9854 19.7351 15.8718C19.7363 15.8693 19.6164 15.8159 19.5926 15.8049ZM81.3071 11.8917C81.2281 11.9569 81.3537 11.9029 81.4374 11.845C81.5272 11.7826 81.3863 11.8263 81.3071 11.8917ZM20.5246 16.2461C20.5137 16.2337 20.4749 16.2196 20.4662 16.2203C20.4831 16.2285 20.5158 16.2476 20.5246 16.2461ZM73.4577 15.9199C73.3864 15.9436 73.2232 16.029 73.4319 15.9453C73.5066 15.9294 73.4911 15.9216 73.4577 15.9199ZM13.3477 12.5085C13.3636 12.5108 13.3069 12.4664 13.2904 12.4646C13.2811 12.4662 13.3477 12.5085 13.3477 12.5085ZM45.133 21.8247C45.1477 21.8186 45.0765 21.8093 45.0613 21.816C45.0539 21.8222 45.103 21.8243 45.133 21.8247ZM65.0276 18.9299C64.9825 18.948 65.0159 18.9426 65.0623 18.9292C65.0685 18.9238 65.0276 18.9299 65.0276 18.9299ZM75.8832 14.8448C75.8939 14.8327 75.8263 14.8557 75.8157 14.8684C75.8117 14.8773 75.8832 14.8448 75.8832 14.8448ZM15.4173 13.6911C15.3883 13.6743 15.4037 13.7083 15.4778 13.7445C15.5574 13.7789 15.4518 13.7063 15.4173 13.6911ZM21.6825 16.7316C21.6873 16.7396 21.731 16.7611 21.7529 16.7672C21.7293 16.7558 21.7136 16.7446 21.6825 16.7316ZM76.5099 14.5222C76.4164 14.5617 76.4374 14.5708 76.488 14.5461C76.5358 14.5243 76.5548 14.5034 76.5099 14.5222ZM20.5892 16.257C20.5583 16.2533 20.6158 16.2803 20.6575 16.2971C20.6355 16.2821 20.6203 16.27 20.5892 16.257ZM10.4631 10.6085C10.4278 10.5933 10.4918 10.6398 10.5236 10.6601C10.57 10.6899 10.467 10.6115 10.4631 10.6085ZM75.5909 14.963C75.6259 14.9581 75.7547 14.8974 75.784 14.8718C75.7197 14.9023 75.6553 14.9327 75.5909 14.963ZM6.61887 7.63088C6.61085 7.59264 6.25257 7.31017 6.46628 7.53036C6.67212 7.71498 7.0174 7.93537 6.61887 7.63088ZM15.9777 14.004C15.9799 14.0053 15.982 14.0067 15.9841 14.0081C15.9845 14.0075 15.9848 14.0069 15.9851 14.0063C15.9827 14.0055 15.9802 14.0047 15.9777 14.004ZM10.5448 10.6621C10.548 10.6779 10.6662 10.7512 10.6091 10.7083C10.6017 10.699 10.566 10.6777 10.5448 10.6621ZM5.36164 6.52514C5.28636 6.45637 5.27358 6.47029 5.34889 6.53912C5.42438 6.60792 5.43709 6.59391 5.36164 6.52514ZM68.3936 17.8428C68.2766 17.8583 68.112 17.9103 68.0014 17.9569C68.0854 17.9484 68.5399 17.8322 68.3936 17.8428ZM80.2167 12.4895C80.2371 12.4723 79.9672 12.6343 79.9298 12.653C80.0678 12.6291 80.6327 12.3465 80.2167 12.4895ZM13.7289 12.697C13.608 12.6367 13.8076 12.7703 13.8188 12.759C13.8195 12.7431 13.7514 12.7105 13.7289 12.697ZM76.3532 14.5861C76.3003 14.5886 76.1867 14.663 76.2344 14.65C76.2434 14.6473 76.3772 14.5845 76.3532 14.5861ZM78.0078 13.7051C77.7452 13.8265 77.5446 13.975 77.9328 13.7807C78.0929 13.7381 78.065 13.709 78.0078 13.7051ZM83.0449 10.7897C83.0626 10.762 82.9136 10.8363 82.9033 10.8622C82.8917 10.8857 82.9986 10.8221 83.0449 10.7897ZM9.82289 10.1062C9.5764 9.93412 9.64692 10.0286 9.86614 10.1682C9.88977 10.1739 9.91885 10.1718 9.82289 10.1062ZM71.2414 16.7891C71.2589 16.7928 71.3097 16.7782 71.3565 16.7644C71.3459 16.7581 71.2867 16.7715 71.2414 16.7891ZM72.7071 16.2117C72.8134 16.1653 72.6524 16.2163 72.6394 16.2337C72.6604 16.2279 72.7041 16.2127 72.7071 16.2117ZM84.2871 9.88603C84.0986 10.0044 84.1467 10.0209 84.2516 9.9471C84.3386 9.88741 84.3862 9.82438 84.2871 9.88603ZM76.6356 14.4294C76.7395 14.3689 76.5157 14.4493 76.4648 14.4904C76.4097 14.5399 76.5667 14.4681 76.6356 14.4294ZM82.4341 11.1359C82.5145 11.1143 82.7737 10.9459 82.8321 10.8772C82.6999 10.9639 82.5672 11.0502 82.4341 11.1359ZM76.8594 14.2982C76.8738 14.2771 76.7241 14.3623 76.6589 14.3913C76.6952 14.3883 76.8364 14.3277 76.8594 14.2982ZM21.9743 16.791C21.892 16.7662 22.2455 16.9285 22.0818 16.8354C22.0459 16.8206 22.0101 16.8058 21.9743 16.791ZM7.85893 8.57098C7.56054 8.35302 7.8123 8.59256 7.95524 8.67965C8.02894 8.72627 8.00519 8.6775 7.85893 8.57098ZM6.43032 7.36931C6.31269 7.27526 6.26177 7.28224 6.41868 7.41752C6.65851 7.6248 6.66596 7.55762 6.43032 7.36931ZM53.0888 21.3071C53.1004 21.3092 53.111 21.3031 53.111 21.3031C53.1007 21.3043 53.0903 21.3067 53.0888 21.3071ZM5.90534 6.92288C5.83326 6.86268 5.78198 6.84692 5.88681 6.94377C6.06178 7.10404 6.06545 7.05419 5.90534 6.92288ZM10.4246 10.4468C10.4062 10.4272 10.2741 10.341 10.3122 10.384C10.3628 10.4231 10.4537 10.4766 10.4246 10.4468ZM84.319 9.63249C84.6149 9.39583 84.1606 9.60956 83.9525 9.83552C83.991 9.85134 84.1777 9.74445 84.319 9.63249ZM79.6754 12.4645C79.5039 12.5104 79.0342 12.8658 79.5051 12.6267C79.7021 12.5262 79.7769 12.4388 79.6754 12.4645ZM72.6244 15.9536C72.7747 15.8783 72.5465 15.9603 72.4797 16.0134C72.5279 15.9935 72.5762 15.9736 72.6244 15.9536ZM80.9435 11.7046C80.8763 11.8036 81.3465 11.5666 81.3636 11.5019C81.379 11.4565 81.0735 11.6159 80.9435 11.7046ZM76.6842 14.0376C77.4649 13.6072 76.6808 13.9211 76.4222 14.1818C76.3308 14.2753 77.1422 13.9107 76.6842 14.0376ZM81.1186 11.4814C80.9353 11.5964 80.866 11.6845 80.9902 11.6299C81.2286 11.5249 81.4879 11.2483 81.1186 11.4814ZM82.6635 10.4848C82.5903 10.5296 82.5249 10.5867 82.4529 10.6336C82.5262 10.7311 83.2256 10.1303 82.6635 10.4848ZM84.6409 9.15828C84.9841 8.94625 84.445 9.18025 84.4899 9.25494C84.5413 9.27523 84.6394 9.16017 84.6409 9.15828ZM71.2716 16.3319C71.2382 16.3465 71.255 16.3521 71.2557 16.3524C71.2747 16.3404 71.2731 16.3358 71.2716 16.3319ZM71.9005 16.052C71.8173 16.0841 71.7414 16.1446 71.8794 16.0892C71.9296 16.0645 71.9809 16.0226 71.9005 16.052ZM83.4261 9.96925C83.3517 10.0185 83.2905 10.094 83.4135 10.0101C83.4572 9.97513 83.4981 9.92337 83.4261 9.96925ZM81.1186 11.4314C81.062 11.4604 80.9765 11.5277 81.0216 11.5158C81.0487 11.5101 81.178 11.4214 81.1186 11.4314ZM81.5948 11.0125C81.3746 11.1296 81.509 11.156 81.5992 11.0616C81.6199 11.0388 81.6011 11.0226 81.5948 11.0125ZM21.9053 16.1908C21.9202 16.1932 21.8415 16.1669 21.8393 16.1661C21.8072 16.1663 21.9317 16.2238 21.9053 16.1908ZM83.066 10.0543C83.0005 10.0967 82.9394 10.1461 82.8807 10.1854C82.8753 10.2434 83.2978 9.90707 83.066 10.0543ZM71.3326 16.1419C71.3559 16.1605 71.4733 16.1149 71.462 16.0863C71.4177 16.1053 71.3774 16.1243 71.3326 16.1419ZM8.89003 8.72068C9.1121 8.94493 9.08047 8.76574 8.81211 8.62722C8.76115 8.65679 8.83064 8.66988 8.89003 8.72068ZM16.0993 13.3811C16.0097 13.3131 16.0208 13.3701 16.1155 13.398C16.1169 13.3955 16.0993 13.3811 16.0993 13.3811ZM81.7264 10.8247C82.3244 10.3573 81.1013 11.1803 81.5029 11.0263C81.5194 11.0213 81.1198 11.2401 81.2209 11.2562C81.2199 11.2568 81.2189 11.2574 81.2179 11.2581C81.4091 11.1703 81.852 10.787 81.7264 10.8247ZM80.6708 11.5479C80.7742 11.6035 81.0536 11.1666 80.672 11.5064C80.7245 11.5001 80.7589 11.4778 80.6708 11.5479ZM83.129 9.91612C83.083 9.96683 83.1337 10.0153 83.2073 9.95858C83.31 9.87854 83.2203 9.85925 83.129 9.91612ZM10.0773 9.55532C10.0096 9.50977 10.0552 9.56721 10.092 9.5989C10.2132 9.6846 10.1481 9.60309 10.0773 9.55532ZM86.6896 7.3201C86.6207 7.37704 86.5164 7.46165 86.472 7.50763C86.4091 7.60696 86.7131 7.32487 86.6896 7.3201ZM17.4444 14.0553C17.421 14.0441 17.3971 14.0507 17.4662 14.0948C17.4951 14.1032 17.5027 14.0797 17.4444 14.0553ZM47.866 21.1592C47.9386 21.1187 47.662 21.147 47.8439 21.1627C47.8621 21.1627 47.866 21.1606 47.866 21.1592ZM84.3657 9.08318C84.355 9.09359 84.4147 9.10634 84.4284 9.09988C84.5962 8.958 84.6734 8.84404 84.3657 9.08318ZM16.2995 13.4564C16.2682 13.4442 16.259 13.4457 16.3108 13.4824C16.3148 13.475 16.2995 13.4564 16.2995 13.4564ZM37.8822 20.5885C37.8665 20.596 37.9005 20.6113 37.9013 20.6117C37.9672 20.6219 37.9042 20.5916 37.8822 20.5885ZM70.7706 16.3144C70.7376 16.4448 71.398 15.9639 71.0103 16.1522C70.7252 16.2678 70.955 16.2359 70.7706 16.3144ZM73.1812 15.3213C73.1821 15.3249 73.1393 15.3635 73.1739 15.3609C73.2255 15.3304 73.2469 15.2955 73.1812 15.3213ZM73.9874 14.9704C74.0026 14.9682 73.9934 14.9837 74.005 14.9916C74.1364 14.931 74.1266 14.9093 73.9874 14.9704ZM85.635 8.09843C85.5554 8.15933 85.5883 8.20195 85.6676 8.1404C85.7472 8.07934 85.714 8.03695 85.635 8.09843ZM24.1117 16.9593C23.994 16.8938 24.0459 16.9859 24.1221 17.0148C24.1485 16.9971 24.0714 16.9613 24.1117 16.9593ZM12.3423 11.0757C12.2744 11.0575 12.4065 11.1539 12.4364 11.1623C12.4813 11.1746 12.3983 11.1054 12.3423 11.0757ZM85.0198 8.6301C85.266 8.46078 85.2866 8.34621 84.9962 8.5859C84.9651 8.61269 84.9637 8.6607 85.0198 8.6301ZM85.4747 8.24972C85.5182 8.19053 85.5372 8.08695 85.4124 8.272C84.9766 8.60869 85.412 8.38826 85.4747 8.24972ZM86.1632 7.65909C85.805 7.88923 85.9256 7.9886 86.2179 7.67355C86.314 7.66797 86.3165 7.57632 86.1632 7.65909ZM32.2682 19.4865C32.2623 19.4952 32.2526 19.5044 32.3177 19.5191C32.3417 19.5147 32.307 19.5001 32.2682 19.4865ZM63.4101 18.6877C63.4091 18.6982 63.4048 18.7109 63.469 18.6929C63.4876 18.6778 63.4504 18.6813 63.4101 18.6877ZM73.967 14.9794C73.9168 15.0032 73.8745 15.0271 73.8502 15.0454C73.8776 15.0524 73.9493 14.995 73.967 14.9794ZM71.703 15.9286C71.65 15.9159 71.5734 15.954 71.5914 15.9792C71.6025 15.9763 71.6737 15.9449 71.703 15.9286ZM79.2834 12.2712C79.1919 12.2919 78.9661 12.4684 79.0837 12.4314C79.1104 12.424 79.3419 12.281 79.3059 12.2698C79.2864 12.2861 79.2564 12.3068 79.2135 12.3308C79.2038 12.3362 79.1902 12.343 79.1902 12.343C79.2 12.3269 79.2389 12.3003 79.2834 12.2712ZM77.3046 13.3848C77.6635 13.1682 77.2012 13.3625 77.0402 13.4626C76.9414 13.5379 77.1879 13.4253 77.3046 13.3848ZM68.0376 17.2588C67.9751 17.2822 67.9467 17.302 67.943 17.3144C68.0466 17.2853 68.0418 17.2714 68.0376 17.2588ZM86.3229 7.4837C86.309 7.48417 86.2709 7.63816 86.3709 7.54294C86.3158 7.56335 86.4703 7.36403 86.3229 7.4837ZM71.5882 15.9216C71.4731 15.9926 71.9241 15.8331 71.7549 15.8594C71.7009 15.8744 71.5882 15.9217 71.5882 15.9216ZM70.7091 16.2362C70.4892 16.3143 70.5507 16.3515 70.7206 16.2873C70.9042 16.2175 70.8956 16.1646 70.7091 16.2362ZM71.613 15.8831C71.4663 15.8754 71.3998 15.8784 71.4436 15.9589C71.1866 16.0846 71.5751 15.9882 71.613 15.8831ZM71.2129 16.0708C71.2967 16.0409 71.2789 15.9954 71.2125 16.0492C71.1939 16.0625 71.2074 16.067 71.2129 16.0708ZM72.1243 15.6759C72.103 15.7005 72.232 15.6644 72.3059 15.6302C72.0297 15.7375 72.3443 15.5193 72.1243 15.6759ZM11.8776 10.6465C11.8702 10.6575 11.8512 10.6727 11.8717 10.6956C11.9591 10.7921 12.0942 10.7692 11.8776 10.6465ZM83.823 9.37174C83.8064 9.34176 83.5477 9.52285 83.567 9.55086C83.5839 9.58107 83.8427 9.40005 83.823 9.37174ZM72.3251 15.5694C72.3428 15.5747 72.2863 15.5996 72.2859 15.6013C72.3164 15.6463 72.5261 15.5037 72.3251 15.5694ZM13.8172 11.8874C13.8835 11.9138 14.0129 11.9494 13.8663 11.8844C13.7172 11.8308 13.8819 11.9946 13.8172 11.8874ZM10.4372 9.65281C10.2058 9.49801 10.622 9.84721 10.6184 9.78827C10.5548 9.74332 10.4961 9.69143 10.4372 9.65281ZM41.616 20.8791C41.6223 20.8871 41.5771 20.8889 41.5744 20.889C41.695 20.9211 41.7338 20.8989 41.616 20.8791ZM19.4627 14.8141C19.3246 14.8038 19.514 14.9315 19.7272 15.0529C19.5973 14.937 19.4827 14.8846 19.4627 14.8141ZM31.6123 19.2195C31.6057 19.2308 31.5933 19.2357 31.6823 19.26C31.685 19.2491 31.7078 19.2339 31.6123 19.2195ZM62.7836 18.7684C62.7806 18.7569 62.7935 18.7334 62.7026 18.7663C62.7022 18.7794 62.6934 18.7896 62.7836 18.7684ZM11.9764 10.665C12.0001 10.6559 11.9656 10.5943 11.9366 10.5979C11.937 10.5986 11.9375 10.5994 11.938 10.6001C11.937 10.5994 11.9361 10.5987 11.9351 10.598C11.9283 10.5993 11.9217 10.6042 11.9165 10.6145C11.8515 10.5859 12.1175 10.8619 12.2567 10.9073C12.3507 10.8854 11.9904 10.684 11.9764 10.665ZM50.034 20.889C49.9662 20.8835 49.8851 20.8962 49.9125 20.9139C49.9567 20.9065 49.9935 20.8976 50.034 20.889ZM19.3915 14.8702C19.3634 14.8863 19.4188 14.8987 19.4973 14.9232C19.4756 14.9083 19.4434 14.8901 19.3915 14.8702ZM12.7842 11.1627C12.5815 10.965 12.5734 11.0458 12.6377 11.1305C12.8807 11.3209 12.6933 11.1262 12.7842 11.1627ZM20.3554 15.2469C20.1264 15.0801 20.1299 15.1613 20.2058 15.2359C20.4735 15.3896 20.2602 15.2238 20.3554 15.2469ZM50.9351 20.7503C50.8579 20.7164 50.7173 20.8028 50.8071 20.8134C51.0932 20.8202 50.8484 20.7761 50.9351 20.7503ZM49.9899 20.8508C49.9617 20.7708 49.8741 20.8466 49.9433 20.8753C50.2211 20.8921 50.1806 20.8522 49.9899 20.8508ZM54.0663 20.4445C54.0236 20.4319 53.9485 20.4539 53.9217 20.4772C53.9698 20.475 54.0285 20.4686 54.0663 20.4445ZM32.6044 19.4521C32.6647 19.4547 32.5857 19.4018 32.5878 19.4253C32.4359 19.3912 32.5228 19.4267 32.6044 19.4521ZM63.688 18.4981C63.7421 18.4717 63.6477 18.4627 63.6607 18.4823C63.5117 18.5243 63.6044 18.5144 63.688 18.4981ZM48.8417 20.9105C48.6779 20.9395 48.8029 20.9455 48.8802 20.9455C49.1199 20.9503 48.9701 20.9077 48.8417 20.9105ZM41.4054 20.8484C41.5702 20.8447 41.266 20.7778 41.3082 20.8044C41.4305 20.8162 41.1763 20.8185 41.4054 20.8484ZM32.0463 19.3118C32.0496 19.2811 31.7305 19.2086 31.7718 19.2215C31.8526 19.2638 31.9895 19.2937 32.0463 19.3118ZM63.1366 18.6383C63.1252 18.6097 62.8079 18.6985 62.8511 18.6901C62.9426 18.6886 63.0781 18.6495 63.1366 18.6383ZM46.3145 20.9899C46.1381 21.0265 46.3815 21.0481 46.5145 21.0063C46.3518 21.0133 46.3772 20.9795 46.3145 20.9899ZM59.2319 19.5451C59.2071 19.5166 59.3798 19.4742 59.1232 19.5484C58.9946 19.5843 59.1924 19.5919 59.2319 19.5451ZM59.4202 19.4854C59.3407 19.5037 59.2485 19.5338 59.2671 19.5506C59.3014 19.5334 59.4102 19.5097 59.4202 19.4854ZM35.3475 20.0074C35.3428 20.0122 35.3578 20.0136 35.3761 20.017C35.3729 20.0136 35.3584 20.0094 35.3475 20.0074ZM37.9331 20.3915C37.8425 20.3996 37.7525 20.4026 37.6523 20.3729C37.4497 20.3784 38.102 20.4375 37.9331 20.3915ZM68.8348 16.8233C68.7293 16.8909 68.6756 16.9172 68.5705 16.9412C68.3856 17.04 69.0066 16.7877 68.8348 16.8233ZM54.3608 20.385C54.4391 20.3833 54.3971 20.3765 54.3452 20.3795C54.3528 20.3806 54.3608 20.385 54.3608 20.385ZM29.2372 18.5297C29.2194 18.5246 29.2036 18.5251 29.195 18.5284C29.2415 18.5405 29.2495 18.5398 29.2372 18.5297ZM60.2916 19.2972C60.2737 19.3012 60.2605 19.3092 60.2546 19.3162C60.3009 19.3045 60.3074 19.3001 60.2916 19.2972ZM31.6717 19.15C31.6339 19.1492 31.5992 19.1658 31.6759 19.1936C31.7287 19.211 31.7007 19.1557 31.6717 19.15ZM62.7252 18.6759C62.6914 18.6933 62.6687 18.7245 62.7497 18.7122C62.8043 18.7023 62.7535 18.6673 62.7252 18.6759ZM17.0734 13.6341C17.108 13.6554 17.1191 13.6659 17.1221 13.6762C17.1038 13.6634 17.0904 13.6493 17.0734 13.6341ZM45.5537 20.9865C45.7336 20.9822 45.543 20.9524 45.4985 20.9744C45.5058 20.9807 45.5537 20.9865 45.5537 20.9865ZM37.0385 20.2462C37.0085 20.2457 36.9461 20.2343 36.9461 20.2343C36.8772 20.2431 37.0491 20.2742 37.0385 20.2462ZM35.966 20.0676C35.9299 20.0598 35.8904 20.0485 35.8589 20.0563C35.8281 20.06 35.9364 20.0652 35.966 20.0676ZM66.9405 17.4554C66.9049 17.4654 66.8648 17.4739 66.8407 17.4956C66.8153 17.5133 66.9167 17.4661 66.9405 17.4554ZM37.9815 20.3913C38.0214 20.3985 38.0926 20.4234 38.0938 20.4151C38.0551 20.399 38.0257 20.3948 37.9815 20.3913ZM68.8817 16.8001C68.9205 16.7879 68.995 16.777 68.9922 16.7691C68.9504 16.7728 68.9225 16.7828 68.8817 16.8001ZM58.0283 19.7256C58.0377 19.7332 58.1263 19.7444 58.1211 19.7169C58.112 19.7094 58.0898 19.7117 58.0283 19.7256ZM50.8709 20.7383C50.8372 20.7357 50.7534 20.7484 50.7098 20.7563C50.7551 20.7679 50.8015 20.7492 50.8709 20.7383ZM41.3484 20.7742C41.3147 20.7741 41.3215 20.7824 41.37 20.7837C41.3839 20.7848 41.351 20.775 41.3484 20.7742ZM62.6094 18.6877C62.5688 18.7227 62.7576 18.6696 62.6097 18.689C62.6096 18.6885 62.6095 18.6881 62.6094 18.6877ZM33.4021 19.5402C33.3973 19.5392 33.3926 19.5381 33.3878 19.5371C33.3879 19.5366 33.388 19.5361 33.3881 19.5356C33.3893 19.5359 33.3905 19.5361 33.3916 19.5364C33.395 19.5379 33.3985 19.5394 33.4021 19.5402ZM78.5248 10.903C78.8385 10.8106 78.9892 10.5367 79.2257 10.4782C79.1498 10.584 79.4076 10.4182 79.3854 10.4796C79.3826 10.4821 79.3831 10.4827 79.3831 10.4827C79.3841 10.4821 79.3851 10.4815 79.3861 10.4809C79.3859 10.4805 79.3856 10.4801 79.3854 10.4796C79.3984 10.4663 79.4079 10.4535 79.4088 10.4409C79.6474 10.2705 79.444 10.4536 80.0184 10.1037C80.4962 9.82434 79.7755 10.338 80.2193 10.044C80.3266 9.90745 80.6336 9.7925 80.8562 9.58499C80.779 9.63793 80.5955 9.71149 80.4761 9.77875C80.4876 9.76998 80.4982 9.76003 80.4845 9.76522C80.4627 9.77792 80.4216 9.80748 80.4422 9.79968C80.4382 9.80219 80.4341 9.80469 80.4301 9.80719C80.4614 9.75501 80.6132 9.70585 80.5623 9.69218C80.4578 9.76948 80.4923 9.72334 80.4436 9.7469C80.3753 9.78016 80.3078 9.82902 80.2447 9.87097C80.2271 9.89729 80.3074 9.85711 80.311 9.86149C80.3139 9.86626 80.2826 9.89133 80.2862 9.89729C80.2884 9.90086 80.3183 9.89475 80.3131 9.89966C80.2837 9.92764 80.1475 9.98219 80.1264 10.0031C80.1214 10.0081 80.142 10.0157 80.0898 10.0473C80.0522 10.0685 80.0793 10.0301 80.0501 10.0372C80.0506 10.0379 80.0511 10.0387 80.0515 10.0395C80.029 10.0441 79.9707 10.081 79.9686 10.0774C80.0152 10.0427 80.0795 10.0022 80.1156 9.97123C80.1543 9.94445 80.1954 9.91509 80.1863 9.91407C80.1852 9.9132 80.1669 9.92435 80.1486 9.93547C80.1519 9.92694 80.158 9.9092 80.158 9.9092C80.1899 9.88974 80.2217 9.87025 80.2536 9.85073C80.2972 9.8322 80.3264 9.81097 80.3579 9.78661C80.3926 9.76521 80.4273 9.74377 80.462 9.72229C80.478 9.71401 80.4918 9.70875 80.5101 9.69739C80.544 9.67803 80.6156 9.627 80.6179 9.62533C80.6292 9.61831 80.6404 9.6113 80.6516 9.60428C80.6706 9.59402 80.6875 9.58683 80.7073 9.57773C80.6875 9.58682 80.6669 9.60142 80.6432 9.61783C80.6401 9.62639 80.6411 9.63496 80.6807 9.61014C80.6891 9.60323 80.7013 9.5955 80.7074 9.59168C80.6966 9.60832 80.7114 9.60491 80.7478 9.58864C80.7775 9.57499 80.8262 9.54431 80.8597 9.52319C80.8901 9.50399 80.8925 9.4942 80.9417 9.47128C80.955 9.46536 80.8989 9.51081 80.9355 9.50172C80.8793 9.53399 80.8344 9.56405 80.8392 9.57175C80.8349 9.57703 80.8723 9.56336 80.8752 9.56806C81.0683 9.47579 80.7095 9.75074 81.0629 9.52769C81.3936 9.27684 80.803 9.56108 81.1762 9.34419C81.471 9.42088 81.4126 9.09737 81.7123 9.02911C81.9441 8.92201 81.7968 8.99906 82.0366 8.80698C82.0951 8.84223 82.3536 8.59462 82.5179 8.49823C82.4165 8.50225 82.2751 8.62823 82.6357 8.33284C82.7165 8.23417 82.6053 8.3139 82.7499 8.24395C82.786 8.2453 82.5951 8.37553 82.6202 8.40564C82.6336 8.39974 82.6408 8.39723 82.6509 8.39282C82.651 8.39302 82.6512 8.39323 82.6513 8.39343C82.6525 8.39516 82.6657 8.38855 82.6783 8.38147C82.9331 8.27331 82.8434 8.1954 83.0883 8.04957C83.3533 7.9253 83.6045 7.7326 83.5723 7.67638C83.9138 7.43129 84.3401 7.31233 84.73 6.93001C84.9443 6.68572 84.3782 7.08967 84.8761 6.66301C85.0237 6.57914 85.188 6.35864 85.182 6.41991C85.4342 6.2692 85.0326 6.53255 85.1598 6.50209C85.3449 6.40403 85.871 5.96272 85.4205 6.30918C85.4184 6.30644 85.6433 6.08192 85.3367 6.32572C85.3806 6.28457 85.4243 6.24337 85.4679 6.20209C85.6341 6.10445 85.9851 5.80371 85.9768 5.9107C86.136 5.79354 86.236 5.64077 86.2535 5.60088C86.6744 5.34605 87.2785 4.64675 86.7255 5.32737C86.7623 5.36172 87.4852 4.57806 87.5341 4.47542C87.6725 4.61789 87.9432 4.1274 88.1175 3.91861C88.372 3.6682 88.2904 3.74814 88.1823 3.89833C88.4558 3.61573 88.4201 3.64586 88.3072 3.81107C88.5999 3.50902 88.9266 3.26498 88.9346 3.09388C88.8301 3.16708 88.7029 3.27759 88.9272 3.04208C88.9839 2.96286 89.0537 2.87222 89.0999 2.85697C88.6991 3.45464 90.0268 1.9713 89.7748 2.1185C90.0563 1.78563 89.5463 2.56602 90.0739 1.91096C90.1393 1.81163 89.9908 1.98042 89.9788 1.94614C90.1964 1.71482 90.295 1.65419 90.3934 1.57873C90.4011 1.5618 90.4086 1.54489 90.4162 1.52796C90.4162 1.52945 90.4162 1.53094 90.4162 1.53243C90.8369 1.03578 91.2473 0.520614 91.6353 3.02382e-05C91.8971 0.195197 92.1589 0.390364 92.4207 0.585531C91.4194 1.92867 90.3109 3.19148 89.122 4.37576C89.1181 4.38747 89.1054 4.41105 89.0742 4.45767C89.0746 4.4425 89.0561 4.45012 89.0308 4.46629C88.9621 4.5342 88.8931 4.60191 88.8239 4.6694C88.8237 4.67446 88.8267 4.67731 88.8384 4.67364C88.3861 5.00997 88.8199 4.79221 88.5312 5.04523C88.4916 5.03566 88.4362 5.06805 88.377 5.11807C88.2877 5.09276 88.2462 5.29261 88.1655 5.32354C87.7237 5.59586 88.142 5.42749 87.8238 5.70042C88.2377 5.18954 87.2539 6.09386 87.5399 5.92968C87.2645 6.17462 87.0931 6.31447 87.4279 5.96456C86.9523 6.17487 87.1958 6.31216 86.8346 6.54456C87.0077 6.2099 86.4647 6.93731 86.5565 6.71576C86.3884 6.81809 86.2627 6.93134 86.208 7.00411C86.2076 6.9746 86.1835 6.96283 86.1263 7.00322C86.0541 7.05411 86.0872 7.12977 86.1535 7.10021C86.1673 7.08806 86.1741 7.07879 86.1833 7.06678C86.1849 7.07452 86.1954 7.07589 86.2088 7.07487C86.1253 7.12385 85.813 7.3792 85.7359 7.47012C85.6465 7.49915 85.4865 7.58629 85.3141 7.65736C85.199 7.82073 85.4668 7.7091 84.8196 8.18018C84.2774 8.60046 82.797 9.60608 82.4408 9.86026C82.356 9.75837 82.1194 10.1568 81.9336 10.1697C81.9291 10.2102 81.7705 10.2992 81.6267 10.3666C81.6444 10.3056 81.6604 10.2963 81.5507 10.3768C81.328 10.54 81.3974 10.4436 81.1308 10.6059C81.2535 10.5517 81.2932 10.5389 81.294 10.5467C81.2961 10.546 81.299 10.5452 81.3011 10.5447C81.299 10.5454 81.2974 10.5458 81.2939 10.548C81.2938 10.5483 81.2943 10.5483 81.2942 10.5485C81.276 10.5541 81.2608 10.5578 81.2433 10.5646C81.2537 10.5672 81.269 10.5635 81.2923 10.5522C81.2675 10.5819 81.0904 10.6938 81.1076 10.7151C80.7142 10.954 81.1967 10.6363 81.0999 10.6607C80.7216 10.9659 80.9706 10.711 80.8616 10.8077C80.3446 11.0566 80.8428 10.9185 80.4269 11.0937C80.0838 11.3595 80.7355 10.8205 80.2525 11.1034C80.2756 11.1839 79.6882 11.6444 79.7435 11.4835C79.6523 11.5091 79.5858 11.5997 79.5626 11.6189C79.6777 11.4283 78.8032 12.0128 79.2827 11.7977C79.6837 11.5779 78.8071 12.0669 78.8311 12.033C78.7219 12.0785 78.6583 12.1537 78.5648 12.2051C78.6776 12.0746 78.3244 12.3168 78.3738 12.2395C78.0432 12.4776 77.7722 12.6535 77.3242 12.8463C77.7381 12.7 74.9588 14.0367 74.9907 14.0171C75.0107 13.9207 74.7362 14.1171 74.7464 14.1306C74.1071 14.4268 74.1192 14.3893 73.8116 14.4221C73.3 14.6467 74.0202 14.4842 73.5435 14.6162C73.3342 14.7257 74.0541 14.46 73.4663 14.7065C73.4711 14.6991 73.4684 14.6925 73.4684 14.6925C73.4121 14.7171 73.3558 14.7416 73.2994 14.7661C73.2918 14.767 73.2873 14.766 73.2862 14.7634C73.2431 14.7843 73.2293 14.7889 73.2963 14.7401C72.9212 14.7161 73.031 14.9354 72.6446 14.9387C72.5668 15.0381 72.4189 15.1619 72.0248 15.3175C72.1967 15.203 72.0066 15.2255 71.7846 15.3239C71.7847 15.3243 71.7849 15.3247 71.7851 15.3251C71.7797 15.3262 71.7783 15.3265 71.778 15.3266C71.7242 15.3506 71.6711 15.3766 71.6202 15.4076C71.8034 15.4291 71.3157 15.5087 71.3665 15.5468C72.1263 15.3142 71.214 15.6611 71.1551 15.5831C71.011 15.6489 71.0783 15.7005 70.9685 15.6624C70.6711 15.7399 70.9006 15.7211 70.8094 15.7813C70.6545 15.779 70.6064 15.8072 70.552 15.8506C70.55 15.8454 70.5342 15.8453 70.5042 15.8493C70.4956 15.863 70.4987 15.8741 70.511 15.8793C70.525 15.8683 70.5364 15.8585 70.5477 15.8492C70.5534 15.8543 70.5424 15.8643 70.5155 15.8811C70.5158 15.8812 70.5161 15.8813 70.5165 15.8814C70.4709 15.9168 70.4116 15.9583 70.2927 15.998C70.1855 15.9749 70.2517 16.0144 70.0136 16.0506C70.0131 16.0493 70.0126 16.048 70.0121 16.0467C70.0498 16.0213 70.1522 15.9487 70.0031 16.0225C70.0061 16.0305 70.0091 16.0386 70.0121 16.0467C70.009 16.0486 70.0029 16.0523 70.0025 16.0525C70.0062 16.0519 70.0099 16.0512 70.0136 16.0506C70.0182 16.0944 69.981 16.1429 69.8078 16.131C69.8485 16.0502 69.6764 16.2316 69.4071 16.3221C69.3606 16.3019 69.644 16.1871 69.4834 16.219C69.1325 16.4184 68.9664 16.3593 69.0227 16.462C68.7652 16.5188 68.7048 16.5574 68.3938 16.6833C68.2901 16.6649 68.8552 16.4642 68.6692 16.4671C68.4442 16.5481 68.5191 16.6066 68.2618 16.7303C68.1936 16.7463 68.2648 16.6037 68.0752 16.7307C68.2022 16.7835 67.8882 16.8664 67.758 16.8495C67.8525 16.9583 66.5523 17.2413 66.311 17.3413C65.9624 17.544 62.529 18.4464 62.2026 18.5314C62.3493 18.4654 62.0937 18.5813 62.0371 18.5672C61.7738 18.6213 62.2358 18.437 61.8576 18.5772C61.6881 18.7652 61.7567 18.5217 61.4533 18.6401C61.7802 18.6334 61.377 18.6979 61.2158 18.7741C60.7449 18.8998 61.0214 18.7865 60.7087 18.8083C60.7867 18.9165 60.8005 18.8794 60.4683 18.8964C60.7824 18.936 59.5551 19.1342 59.3892 19.1651C59.1799 19.21 59.165 19.229 59.4371 19.1772C59.0588 19.2622 59.0422 19.2365 58.8484 19.2999C58.6421 19.319 58.7654 19.1869 58.6523 19.2947C58.6285 19.2917 58.2564 19.3563 58.2803 19.3617C57.9963 19.4613 57.9295 19.4093 58.2522 19.3329C57.5434 19.4742 58.242 19.4165 57.6513 19.5321C57.6469 19.5281 57.6284 19.5259 57.6276 19.5259C57.5793 19.5349 57.531 19.5439 57.4827 19.5528C57.4896 19.5501 57.4889 19.5473 57.4884 19.5446C57.4996 19.5439 57.518 19.5406 57.5252 19.5393C57.5466 19.5339 57.5606 19.5284 57.5711 19.5243C57.4573 19.5378 57.2882 19.6155 57.2979 19.5867C56.9799 19.5869 56.8638 19.4974 56.8752 19.6262C56.7571 19.7284 54.5371 20.0714 53.8627 20.1134C53.8647 20.1134 53.8667 20.1135 53.8687 20.1136C53.8662 20.114 53.8637 20.1143 53.8613 20.1146C53.8612 20.1143 53.8612 20.1139 53.8611 20.1136C53.8456 20.1148 53.8309 20.116 53.8171 20.117C53.4013 20.1972 53.5601 20.194 53.1242 20.1781C53.2031 20.244 52.7398 20.2694 52.4228 20.3105C52.5429 20.2302 51.8272 20.2974 52.1451 20.3408C51.509 20.4427 51.4409 20.3123 51.1474 20.4039C51.3861 20.423 50.7126 20.4644 50.5724 20.4497C50.5138 20.5057 50.3814 20.5106 50.1143 20.5286C50.3974 20.3859 49.843 20.5784 49.9613 20.4692C49.8004 20.4678 49.6957 20.489 49.6586 20.5107C49.6611 20.5134 49.6626 20.5166 49.6573 20.5207C49.6585 20.5206 49.6597 20.5206 49.6609 20.5205C49.6574 20.5235 49.6504 20.5268 49.6432 20.5287C49.6395 20.5234 49.6453 20.517 49.6538 20.5107C49.6284 20.5021 49.557 20.503 49.4757 20.5096C49.4622 20.528 49.5891 20.5505 49.6435 20.5328C49.6555 20.5474 49.7078 20.5573 49.8185 20.5509C49.4127 20.5764 49.2584 20.5726 49.0326 20.6027C49.03 20.5594 48.9231 20.6125 48.8244 20.6143C48.9067 20.5825 48.811 20.5689 48.7251 20.6035C48.1918 20.5492 48.5079 20.6584 47.4907 20.6714C47.0363 20.6783 46.3823 20.6958 45.7727 20.6984C44.7895 20.7048 43.8513 20.6675 43.8295 20.6094C43.6265 20.6334 43.6812 20.467 43.5918 20.582C44.0256 20.6789 43.2906 20.5691 43.4192 20.6408C43.1756 20.6397 43.1325 20.6084 43.0705 20.5925C42.7808 20.5998 42.8485 20.5769 43.0315 20.6228C42.8442 20.6149 41.7338 20.5407 41.451 20.5139C41.8021 20.534 41.6913 20.4371 41.351 20.4239C41.5506 20.4711 41.1772 20.5122 41.2574 20.4425C41.18 20.4042 41.187 20.4511 41.1924 20.4741C41.1272 20.4629 40.8322 20.3879 40.8868 20.4329C41.6424 20.5862 40.7767 20.4293 40.5437 20.3864C40.551 20.4244 40.4578 20.3581 40.4767 20.3544C40.2486 20.3037 40.2855 20.339 40.3681 20.3652C40.1298 20.4098 40.3281 20.3264 39.9845 20.3744C39.472 20.3093 39.928 20.3614 39.5935 20.2844C39.572 20.2797 39.6041 20.2724 39.5114 20.2563C39.4735 20.2658 39.4428 20.2609 39.4424 20.2608C39.4603 20.2651 39.4746 20.2683 39.489 20.2721C39.2569 20.3613 38.5598 20.141 38.4428 20.121C38.3327 20.1342 38.4059 20.1161 38.3643 20.1739C38.2497 20.1143 37.4767 20.0741 37.7795 20.0592C37.5503 20.0762 37.4613 20.0213 37.4323 19.9921C37.4381 20.0029 37.4432 20.0186 37.4471 20.0418C37.1134 20.005 37.2072 19.9762 37.0431 19.9281C37.2492 20.0951 35.7092 19.6992 35.5631 19.6931C35.6876 19.793 32.3564 19.0599 32.0662 18.9745C32.1746 18.9329 31.6427 18.8057 31.8052 18.9135C31.36 18.799 31.0232 18.7313 31.2271 18.7083C30.983 18.6817 30.738 18.6834 30.9292 18.5941C30.5823 18.5374 30.7582 18.6587 30.0239 18.4441C30.2257 18.4862 30.3037 18.4941 30.307 18.4835C30.3385 18.4935 30.3732 18.5065 30.4019 18.499C30.4012 18.4997 29.6151 18.2357 30.0038 18.3928C29.8171 18.4736 29.9103 18.3174 29.7528 18.2934C29.636 18.3277 29.8188 18.3995 29.3462 18.2552C29.444 18.1828 29.2148 18.2541 28.8116 18.0985C28.8961 18.0216 28.0796 17.8763 28.6357 18.0459C27.8412 17.8109 28.2093 17.8527 27.7415 17.6711C27.7068 17.7443 27.6506 17.6761 27.2863 17.5951C27.2832 17.5198 27.9597 17.7629 27.514 17.5478C27.4709 17.5612 27.3553 17.5727 27.2595 17.5106C27.0043 17.5119 27.1317 17.6172 26.8475 17.4105C27.1642 17.4131 26.5876 17.3413 26.573 17.3262C26.1731 17.1871 26.5058 17.2718 26.5144 17.2348C26.1545 17.0711 26.285 17.2351 26.0966 17.2163C26.0839 17.0382 25.1228 17.0212 25.4511 16.9103C25.9456 17.0034 24.753 16.5659 25.5154 16.7839C25.5043 16.7862 25.5065 16.8011 25.535 16.817C25.8144 16.9366 25.7387 16.8565 25.5264 16.7871C25.5322 16.7887 25.538 16.7902 25.5439 16.7919C24.9426 16.4376 25.0845 16.7013 25.4374 16.9054C24.7718 16.6039 25.4608 16.9709 24.8853 16.7965C24.5113 16.6994 23.3914 16.1348 23.8821 16.4178C23.606 16.3045 23.4342 16.1884 23.1118 16.0921C23.1689 16.0581 22.6661 15.9161 22.9211 15.9633C22.892 15.877 22.2322 15.7043 22.6154 15.9139C22.3365 15.7884 21.7256 15.5688 22.2263 15.7272C22.6151 15.8557 21.6914 15.434 21.7425 15.4624C21.6072 15.4236 21.5991 15.4702 21.6972 15.5313C21.5966 15.4948 21.2047 15.3149 21.3771 15.3713C21.2671 15.2458 21.2668 15.3286 21.264 15.3442C21.1418 15.2833 21.0042 15.1216 21.0699 15.1368C20.7207 15.0534 21.002 15.1893 20.6799 14.9549C20.5155 14.9171 20.5092 14.9126 20.615 15.0002C20.5925 15.0592 20.4069 14.8887 20.518 14.9919C20.2603 14.8379 20.0904 14.7845 19.9903 14.7375C20.0545 14.7113 19.6662 14.4579 19.8039 14.6053C19.5245 14.4901 19.5393 14.3045 19.4884 14.4377C19.4244 14.6498 19.2823 14.2631 19.5025 14.3306C19.5239 14.3454 19.543 14.3568 19.5587 14.3665C19.5663 14.3848 19.6014 14.4138 19.6811 14.4513C19.8605 14.5363 19.887 14.4792 19.7073 14.3956C19.7039 14.394 19.7006 14.3925 19.6973 14.3909C19.6978 14.3899 19.698 14.3887 19.6984 14.3876C19.6831 14.4101 19.6428 14.41 19.5608 14.362C19.5581 14.3422 19.6057 14.3442 19.6987 14.3871C19.7211 14.3282 19.5913 14.1513 19.4096 14.1244C19.2929 14.0972 19.3289 14.1403 19.4876 14.2676C19.5636 14.3728 19.3208 14.1567 19.2582 14.1093C19.096 14.0071 19.1204 13.9821 19.0408 14.0119C19.0811 13.9623 18.929 13.9562 18.8236 13.8632C18.6923 13.8065 18.7157 13.9996 18.8909 14.0091C18.8377 13.9425 18.8451 13.9191 18.9758 14.0279C18.6404 13.9875 19.2129 14.1959 19.1964 14.1199C19.3271 14.1951 19.197 14.2033 19.1871 14.249C19.1587 14.2735 18.8636 14.1665 19.0463 14.2789C18.6273 14.2399 19.09 14.1713 18.8507 14.0501C18.8008 14.0437 18.6107 13.9886 18.5308 13.9014C18.2515 13.7618 18.5349 13.9426 18.3782 13.8943C18.3118 13.739 18.3258 13.8101 17.9824 13.6818C17.9391 13.6779 17.8764 13.6633 17.811 13.6456C17.862 13.6748 17.9471 13.7096 17.9532 13.715C17.9585 13.7208 17.9168 13.7224 17.918 13.7363C17.9162 13.7401 17.9257 13.7535 17.9257 13.7535C17.9092 13.7452 17.8928 13.7368 17.8764 13.7285C17.8297 13.6985 17.7506 13.6509 17.7672 13.6343C17.4749 13.5504 17.1503 13.4089 17.7597 13.6004C17.6745 13.4366 17.9129 13.6569 17.9345 13.5822C17.7314 13.495 17.8228 13.5338 17.7734 13.477C17.5801 13.3233 17.6363 13.438 17.5385 13.3078C17.2504 13.1788 17.2113 13.5439 16.8541 13.1571C16.3637 12.9798 16.5755 12.9751 16.8285 13.1346C16.9398 13.1521 16.6799 12.9758 16.6468 12.9053C16.4097 12.8636 15.7163 12.3412 15.7383 12.4751C15.4854 12.3477 15.6836 12.4817 15.4165 12.305C15.2739 12.28 15.3589 12.3091 15.3722 12.3827C15.2051 12.3254 15.0553 12.1353 15.2447 12.2049C14.8389 11.8412 14.9729 12.1592 14.8618 11.9919C14.6195 11.787 15.1798 12.1475 15.1897 12.0715C15.0179 11.9791 14.6948 11.7253 14.9891 11.8684C15.0011 11.7749 14.5313 11.6634 14.4958 11.658C14.7645 11.8811 14.8331 11.8669 14.4987 11.7607C14.4852 11.7544 14.3066 11.6598 14.3018 11.6535C14.7706 11.6776 13.7101 11.2624 14.2152 11.6905C13.8197 11.4563 13.5478 11.3129 13.9575 11.4412C13.9208 11.3672 13.9067 11.3339 13.9202 11.3118C13.9828 11.3541 14.0589 11.4013 14.0623 11.4034C14.1385 11.4312 14.0372 11.3538 13.9443 11.2965C13.9368 11.3009 13.9324 11.3062 13.9291 11.3116C13.8682 11.2702 13.818 11.2327 13.8544 11.2436C13.8543 11.2438 13.8542 11.2439 13.8541 11.2441C13.8751 11.2507 13.909 11.2692 13.9453 11.2912C13.9547 11.2863 13.9634 11.2798 13.9779 11.2741C13.6431 11.0197 13.4443 10.9642 13.6164 11.1532C14.1984 11.6738 13.2766 10.9474 13.6396 11.3322C13.4493 11.2334 12.6733 10.8129 12.6056 10.6743C12.6291 10.6787 12.6634 10.6393 12.5672 10.6319C12.5443 10.5588 12.323 10.4605 12.3678 10.4456C12.2637 10.3293 12.1696 10.3517 12.2837 10.4463C11.9236 10.3087 12.0655 10.0573 11.6188 9.94439C11.9726 10.2347 11.8289 10.1459 11.5039 9.92424C11.7867 9.98532 11.0705 9.63395 11.0243 9.65284C10.9225 9.58558 10.5659 9.32421 10.8608 9.53287C11.537 9.93447 10.1167 8.83946 10.4675 9.25957C10.134 9.04206 10.2281 9.01861 9.96738 8.8338C9.95889 8.82056 9.97532 8.81687 9.98576 8.80892C9.92657 8.7652 9.86728 8.72121 9.80822 8.67719C9.73461 8.67727 9.75355 8.67049 9.70798 8.60229C9.61755 8.53453 9.52738 8.46651 9.43749 8.39822C9.37588 8.40035 9.40416 8.47836 9.15975 8.22281C8.91384 8.10188 9.05097 8.14667 9.10474 8.1432C6.59688 6.20425 4.26992 4.02311 2.23817 1.58866C2.44657 1.32882 2.65619 1.07017 2.86702 0.812727C5.57934 4.09594 8.85001 6.92309 12.4079 9.3185C12.7046 9.42033 12.8825 9.48416 12.8406 9.48323C12.7986 9.50748 12.7772 9.53295 12.7777 9.5651C13.0332 9.734 13.29 9.90056 13.5478 10.0647C13.4807 10.0444 13.4137 10.0239 13.3467 10.0034C13.6217 10.1435 13.921 10.2717 14.0441 10.3408C14.106 10.5223 14.3657 10.4051 14.6403 10.6754C14.4055 10.6173 14.7953 10.7747 14.9307 10.886C15.5906 11.2541 14.8902 10.769 15.6723 11.3006C15.8278 11.248 15.9637 11.4832 16.2823 11.6842C16.4847 11.8854 16.42 11.6676 16.6019 11.7341C17.3037 12.0833 17.6656 12.4108 17.9542 12.6098C17.9005 12.4773 18.2824 12.7947 18.5408 12.8783C18.4096 12.7126 18.5267 12.7461 19.0019 12.9908C18.6936 12.8815 19.0677 13.0859 19.0028 13.0957C18.7503 12.9698 18.985 13.1144 18.9961 13.1907C19.6309 13.6096 19.4701 13.3088 19.0729 13.1007C19.3915 13.2146 19.5133 13.4282 19.8266 13.5634C19.8284 13.5596 19.8363 13.5596 19.8443 13.5595C19.8513 13.5675 19.8661 13.5783 19.8851 13.5885C19.8562 13.5827 19.8601 13.6141 19.8798 13.6453C20.1431 13.7929 20.3497 13.8305 19.9841 13.6536C19.9575 13.6304 19.9361 13.6144 19.9191 13.6039C19.9633 13.6199 19.9517 13.6017 19.9188 13.58C20.2332 13.7028 21.2561 14.2713 20.7739 13.9139C21.2241 14.0519 20.8288 14.0037 21.121 14.1581C21.4568 14.3132 21.4771 14.2308 21.7047 14.3792C21.7603 14.3241 21.8947 14.4607 22.135 14.5534C22.3649 14.605 22.3284 14.6448 22.5295 14.6899C22.8547 14.8418 22.2116 14.6328 22.665 14.8359C23.3423 15.2576 23.5753 15.1417 24.0709 15.2235C24.1136 15.2531 23.9283 15.4309 24.2245 15.4188C24.219 15.4033 24.3189 15.4553 24.3919 15.4877C24.3836 15.489 24.3872 15.5002 24.4011 15.5145C24.4797 15.5528 24.6355 15.5911 24.4406 15.5124C24.4317 15.5053 24.425 15.5027 24.4188 15.4988C24.4557 15.5136 24.4768 15.5194 24.4611 15.5C24.7767 15.6578 25.1555 15.7341 24.741 15.5993C24.626 15.4826 25.2152 15.8122 25.1435 15.7448C25.3138 15.7124 25.6654 15.9223 25.9579 15.9529C26.3859 16.1102 26.0155 16.0273 26.4063 16.1847C26.8273 16.3551 26.5715 16.0847 27.4294 16.4266C27.6305 16.5318 27.9458 16.6653 28.1438 16.7377C27.9252 16.5072 29.5228 17.0995 29.4582 17.1337C29.6464 17.2927 29.9464 17.3267 29.4811 17.133C29.7219 17.1751 30.0715 17.391 30.3636 17.4222C29.9543 17.2198 30.3706 17.3013 30.9829 17.4893C30.8428 17.536 31.3154 17.5667 31.6086 17.6454C31.3732 17.6317 30.8355 17.5079 31.4334 17.7159C31.1538 17.5533 31.6742 17.7109 31.5363 17.7684C31.8651 17.7685 31.6971 17.7675 31.6019 17.7015C31.5205 17.6691 31.6738 17.6831 31.8488 17.7134C31.8336 17.7146 31.8391 17.7232 31.8797 17.7399C31.8827 17.7428 31.9654 17.7398 31.9804 17.7392C31.9914 17.7417 32.0022 17.7444 32.0128 17.7468C31.9612 17.7568 32.1737 17.8426 32.1772 17.8009C32.0666 17.7832 32.0913 17.7734 32.0663 17.7595C32.086 17.7644 32.1043 17.7691 32.1205 17.774C32.4981 17.855 32.2876 17.8651 32.6491 17.9445C32.587 17.9549 32.4856 17.9407 32.4778 17.9734C33.0397 18.1222 32.5667 17.9303 32.9343 18.0303C33.0524 18.0663 32.981 18.0708 33.1442 18.1047C33.1573 18.1091 33.1707 18.1121 33.1719 18.1124C33.1757 18.1119 33.1723 18.1103 33.1725 18.1096C33.1938 18.1138 33.2153 18.1181 33.2438 18.1231C33.246 18.13 33.2519 18.1356 33.2514 18.139C33.251 18.1246 33.2623 18.108 33.3323 18.1417C33.3398 18.1412 33.3508 18.143 33.3581 18.1432C33.3614 18.1446 33.3615 18.1448 33.3718 18.1478C33.3679 18.1498 33.3964 18.1547 33.4104 18.1579C33.404 18.1536 33.3829 18.1473 33.3654 18.1427C33.4205 18.1451 33.478 18.1537 33.5349 18.1642C33.5238 18.1639 33.516 18.165 33.5044 18.1674C33.55 18.1783 33.5558 18.1861 33.5172 18.1775C33.5544 18.1945 33.5792 18.2009 33.594 18.2015C33.5891 18.208 33.6209 18.2246 33.6477 18.2401C33.713 18.2445 33.6565 18.217 33.6771 18.2072C33.6431 18.2013 33.6211 18.1987 33.6081 18.1985C33.6142 18.1937 33.6093 18.1843 33.5952 18.1762C33.754 18.2107 33.9178 18.255 34.0883 18.2585C34.0888 18.36 34.3109 18.3651 34.6547 18.3995C34.8052 18.5125 34.6589 18.3635 35.2381 18.5228C35.2063 18.5166 35.1773 18.5137 35.1865 18.5227C35.1392 18.5419 35.4096 18.5665 35.2873 18.535C35.4498 18.5443 35.6613 18.5688 35.8942 18.6015C35.8867 18.6023 35.879 18.6037 35.8855 18.6084C35.917 18.6171 35.975 18.6219 35.9481 18.6092C36.6671 18.7139 37.5843 18.8864 38.0021 19.0241C38.1559 19.0194 38.0771 18.9568 38.5209 19.037C38.3653 18.9728 38.9392 19.0602 39.0681 19.0745C38.9058 19.0613 38.9212 19.1092 39.053 19.1346C38.9839 19.0273 39.6395 19.1472 40.1053 19.2043C40.1041 19.2041 40.103 19.204 40.1018 19.2039C40.0712 19.2507 40.4208 19.2918 40.4642 19.2573C40.3887 19.2495 40.3498 19.2369 40.3037 19.2257C40.3686 19.2312 40.4265 19.2351 40.4665 19.2343C40.7835 19.2566 40.5946 19.2992 40.9507 19.3236C40.8466 19.3627 40.7753 19.3544 40.5835 19.3203C40.5242 19.3099 40.4649 19.2994 40.4055 19.2888C40.527 19.3138 40.5262 19.3374 40.5599 19.3501C40.626 19.3801 40.8282 19.3928 40.6661 19.3431C40.8985 19.3821 41.3228 19.4421 41.0596 19.357C41.158 19.3486 41.3612 19.3742 41.2506 19.3223C41.2222 19.3192 41.0147 19.3368 40.9423 19.2982C40.9984 19.2817 41.5661 19.3376 41.8241 19.3555C41.6249 19.3495 41.6955 19.4184 41.8877 19.4222C41.8642 19.4442 41.8953 19.4642 41.7953 19.4445C41.6151 19.4703 41.9891 19.473 41.9528 19.4714C42.1563 19.5146 42.1784 19.4595 41.9486 19.4339C42.1359 19.4034 42.4886 19.5726 42.5757 19.4922C42.5712 19.4935 42.5666 19.4944 42.5659 19.4946C42.5662 19.4932 42.5716 19.4918 42.577 19.4908C42.5814 19.4865 42.5859 19.4815 42.5888 19.4758C41.8872 19.393 42.403 19.4107 42.9397 19.4382C42.8028 19.4352 42.9592 19.4673 42.8829 19.4832C42.9317 19.5085 42.6348 19.4902 42.8602 19.5021C43.1028 19.5031 43.3525 19.5941 43.1109 19.4953C43.1365 19.4911 43.1256 19.4904 43.1112 19.4896C43.2676 19.4811 43.1848 19.4671 43.0623 19.4514C43.0389 19.4794 42.9199 19.4714 43.0266 19.4431C43.1931 19.4523 43.352 19.4609 43.4779 19.4696C43.2613 19.4663 43.6166 19.5197 43.7247 19.5155C43.5377 19.5896 43.9168 19.576 43.8896 19.5298C44.09 19.5521 44.1155 19.538 44.1138 19.5877C44.5693 19.558 44.4625 19.5299 44.901 19.5936C44.9969 19.4708 45.2904 19.5938 45.7017 19.6036C45.6946 19.6022 45.6875 19.6022 45.6875 19.6001C45.6876 19.5952 45.734 19.5975 45.7411 19.603C45.7375 19.6044 45.7301 19.6044 45.7266 19.6044C45.7424 19.6044 45.7576 19.6044 45.7727 19.6043C45.7916 19.6042 45.8104 19.6038 45.8302 19.603C45.9443 19.5742 45.6912 19.5164 45.9122 19.5146C46.1035 19.5094 47.4022 19.5253 47.3563 19.5857C47.5748 19.5762 47.3044 19.5242 47.4898 19.4932C48.3721 19.4569 48.7023 19.4459 49.2148 19.4471C49.5603 19.4231 49.7239 19.3609 50.2138 19.3385C50.3208 19.3723 50.5329 19.3645 50.7569 19.3942C50.9226 19.3826 50.5318 19.3896 50.6846 19.3532C50.8764 19.3521 50.9111 19.3299 50.9155 19.3787C51.3737 19.3369 51.1737 19.3726 51.0394 19.4208C51.0792 19.4186 51.101 19.4167 51.1516 19.412C51.4135 19.3599 51.3584 19.3238 51.6524 19.3283C51.6412 19.283 51.9809 19.2633 51.5406 19.2761C51.4346 19.2733 51.6504 19.2736 51.6541 19.2366C51.5018 19.2526 51.4871 19.2183 51.2865 19.258C51.2763 19.3047 51.5179 19.3066 51.3704 19.3329C50.701 19.3556 51.1222 19.245 51.8382 19.1974C51.5117 19.2534 52.4356 19.161 51.8688 19.2828C51.7415 19.344 52.1947 19.2096 52.0685 19.282C52.3612 19.201 52.2189 19.2628 52.2411 19.2013C52.4757 19.1862 52.8345 19.1879 52.4551 19.2576C52.7009 19.2661 52.5591 19.1763 52.8319 19.1617C52.6495 19.1687 53.1302 19.1125 52.9878 19.1479C53.2841 19.1707 53.103 19.1137 53.4209 19.1016C53.3532 19.1422 53.7942 19.0631 53.8407 19.0247C53.7568 19.0232 53.9697 18.9503 54.1157 18.9208C54.1162 18.9242 54.1131 18.9282 54.1171 18.9304C54.1385 18.9274 54.1522 18.9199 54.1585 18.9127C54.2123 18.9045 54.2489 18.9057 54.2442 18.9247C53.989 19.0117 54.2234 19.0382 54.4628 18.9367C54.4812 18.9369 54.5692 18.91 54.5075 18.9161C54.5177 18.9104 54.5319 18.9048 54.542 18.8984C54.7547 18.8921 54.7887 18.8968 55.126 18.8588C54.7147 18.7946 55.2281 18.7412 55.4585 18.7815C55.5314 18.7566 56.4456 18.5617 56.3413 18.616C56.3079 18.6154 56.2534 18.6211 56.244 18.6312C56.2968 18.6372 56.287 18.6439 56.3615 18.6248C56.3682 18.6215 56.3609 18.6206 56.3604 18.6185C56.8048 18.6456 56.3824 18.599 56.9911 18.4484C57.7312 18.2672 58.3778 18.3514 58.4548 18.1682C59.2519 18.0002 59.701 17.9013 59.8633 17.9868C60.1002 17.9999 60.1019 17.8915 59.7933 17.9543C60.0243 17.8768 60.3049 17.9012 60.4984 17.8342C60.828 17.8071 60.6959 17.7049 60.526 17.8084C60.4076 17.7948 60.5313 17.7343 60.7507 17.6683C61.5106 17.4687 61.062 17.6247 61.5009 17.5286C61.5441 17.492 61.626 17.4608 61.9102 17.387C61.7359 17.4671 61.5964 17.5076 61.4334 17.5727C62.1178 17.5166 61.3508 17.5557 61.89 17.455C61.7847 17.6157 62.2717 17.3816 61.8401 17.4508C62.2635 17.2627 62.5714 17.2294 62.9673 17.154C62.9454 17.1701 62.7261 17.3023 62.8888 17.2389C63.339 17.1406 62.9182 17.1661 63.3008 17.0813C63.3761 17.0818 63.4118 17.0894 63.3396 17.0729C63.3253 17.0753 63.3147 17.0775 63.3008 17.0813C63.2331 17.0809 63.1333 17.087 63.0519 17.119C63.1362 17.1261 62.8595 17.1424 62.9672 17.1251C63.1568 17.05 63.5278 16.991 63.6244 16.932C63.6218 16.9769 63.5508 17.0464 63.8172 16.9472C63.8514 16.9347 63.8823 16.9239 63.9131 16.913C63.8995 16.9183 63.8863 16.9249 63.8843 16.9313C63.9337 16.9189 63.9887 16.9127 63.9887 16.9127C64.0308 16.8885 63.9608 16.8952 63.9163 16.9114C64.6221 16.6567 64.3506 16.881 64.5696 16.7508C64.812 16.7013 65.0064 16.5409 65.003 16.631C65.189 16.506 65.3033 16.5081 65.558 16.4345C65.5411 16.4411 65.5281 16.448 65.5367 16.4512C65.5036 16.4922 65.7757 16.3762 65.6211 16.4172C65.61 16.4185 65.5927 16.4238 65.5788 16.4281C65.5955 16.4207 65.6123 16.4133 65.629 16.406C65.6361 16.4045 65.6433 16.403 65.6502 16.4009C65.6606 16.3977 65.6464 16.3999 65.6325 16.4041C66.2794 16.1236 67.6381 15.6899 68.2077 15.5938C68.3427 15.5181 68.2438 15.499 68.6768 15.364C68.5056 15.3802 69.0574 15.1918 69.1796 15.1448C69.0292 15.208 69.0653 15.2432 69.1942 15.205C68.8035 15.2228 71.5206 14.2702 70.8543 14.5825C71.0306 14.5769 70.4262 14.7188 70.4365 14.7288C70.652 14.663 70.5825 14.7539 70.7544 14.6661C70.708 14.6456 71.0439 14.5583 71.2381 14.458C70.8499 14.552 71.4023 14.3619 71.2323 14.3668C71.2812 14.333 70.9364 14.5336 71.0115 14.4681C70.7724 14.533 71.5696 14.216 71.7598 14.1357C71.4447 14.311 72.0627 14.1007 71.7899 14.2269C71.549 14.3274 72.1864 14.1142 72.0529 14.1049C71.8171 14.1599 72.1395 14.0588 72.3833 13.9932C72.6495 13.8034 72.625 13.7466 73.2978 13.488C73.1031 13.5755 73.4091 13.4888 73.5468 13.4155C73.4435 13.5212 73.4115 13.5394 73.0395 13.6559C73.0543 13.6448 73.0505 13.645 73.0372 13.6508C73.1803 13.5713 73.1127 13.5979 72.9747 13.6345C72.898 13.7305 72.9977 13.6057 72.7965 13.715C72.919 13.7244 72.8236 13.7685 72.6137 13.8677C72.6953 13.8555 72.7647 13.8325 72.8348 13.7664C73.0353 13.6907 74.2414 13.3013 73.6538 13.3983C73.6996 13.3501 73.7881 13.3264 73.9128 13.2682C73.8823 13.4374 74.2254 13.1663 74.2857 13.0986C74.4733 13.0387 74.426 13.066 74.3129 13.1408C74.3777 13.134 74.525 13.0555 74.4132 13.0812C74.7019 12.9975 74.5303 13.0151 74.6795 12.9497C74.5928 12.9692 75.0457 12.7338 74.9302 12.8195C74.8013 12.8684 74.7747 12.8801 74.801 12.9017C74.7293 12.9521 75.1016 12.7759 75.0691 12.7578C75.1924 12.6972 75.3014 12.6484 75.3924 12.6041C75.3904 12.6056 75.3897 12.606 75.3895 12.6062C75.3913 12.61 75.4287 12.5965 75.4477 12.5857C75.4498 12.5816 75.4386 12.5832 75.4217 12.5899C75.4928 12.5537 75.5494 12.5206 75.5855 12.4873C75.6742 12.3885 75.8967 12.3323 76.0657 12.2576C75.8786 12.3122 76.2573 12.1071 76.4522 12.0125C76.3487 12.088 76.4446 12.0852 76.6419 12.0026C76.5276 12.0173 76.6126 11.9769 76.7516 11.8845C76.9187 11.7994 76.6424 11.9797 76.8487 11.8759C77.0327 11.7753 76.7683 11.8469 76.9234 11.7376C77.3356 11.5181 78.0046 11.1846 78.2248 11.0548C78.1472 11.159 78.1314 11.1641 78.5809 10.9583C78.8453 10.7863 78.5502 10.9557 78.4592 11.0008C78.7633 10.781 78.2203 11.0998 78.5248 10.903ZM86.2074 7.07324C86.2235 7.06376 86.2344 7.05947 86.2289 7.07021C86.2182 7.0745 86.2154 7.07128 86.2074 7.07324ZM72.5168 15.0722C72.6612 15.0261 72.7564 14.9493 72.8512 14.9554C72.7788 14.9862 72.7066 15.0167 72.6342 15.0472C72.5877 15.0599 72.5475 15.0692 72.5168 15.0722ZM26.7018 17.4049C26.7551 17.4197 26.7602 17.4052 26.8129 17.4448C26.8126 17.4457 26.8123 17.4466 26.812 17.4475C26.7607 17.4304 26.7094 17.4133 26.6581 17.3961C26.6656 17.3971 26.6666 17.3945 26.6675 17.3918C26.6775 17.3966 26.6947 17.4025 26.7018 17.4049ZM34.6607 19.5314C34.7163 19.5147 34.5247 19.4806 34.6609 19.5301C34.6608 19.5305 34.6608 19.5309 34.6607 19.5314ZM65.5369 17.595C65.578 17.5542 65.3928 17.6144 65.5365 17.5937C65.5366 17.5941 65.5368 17.5946 65.5369 17.595ZM79.6314 11.5833C79.6319 11.5845 79.6268 11.589 79.6262 11.5894C79.6311 11.5834 79.6299 11.5809 79.6299 11.5809C79.6304 11.5817 79.6309 11.5825 79.6314 11.5833ZM73.3546 14.7268C73.3822 14.7164 73.4095 14.7045 73.4292 14.6944C73.4081 14.7013 73.3811 14.7138 73.3546 14.7268ZM39.2826 20.2677C39.2769 20.2536 39.1965 20.2128 39.1925 20.2447C39.198 20.2608 39.2243 20.2606 39.2826 20.2677ZM89.0135 4.49015C89.0238 4.50061 89.0452 4.50134 89.0396 4.51664C89.0331 4.53095 89.0146 4.54917 88.9936 4.5698C89.0102 4.53505 88.9815 4.53532 88.9807 4.53534C88.9824 4.53368 88.984 4.53203 88.9857 4.53037C88.9885 4.52273 88.9998 4.50762 89.0135 4.49015ZM76.5002 13.2225C76.9775 13.1068 76.4931 13.0526 76.4625 13.1966C76.5759 13.1602 76.5254 13.1824 76.5002 13.2225ZM83.839 8.83356C84.292 8.64509 83.8055 8.66697 83.7978 8.81388C83.904 8.76031 83.8577 8.79011 83.839 8.83356ZM34.5229 19.433C34.5245 19.4434 34.5131 19.4818 34.5528 19.4898C34.6047 19.4931 34.6304 19.4576 34.5229 19.433ZM65.3689 17.5733C65.3752 17.5816 65.383 17.6208 65.4217 17.6093C65.469 17.5878 65.4753 17.5443 65.3689 17.5733ZM77.0313 12.8401C77.2051 12.8169 77.3206 12.7599 77.3884 12.7948C77.4774 12.6867 77.2682 12.7475 77.0313 12.8401ZM79.0659 11.8865C79.1087 11.8575 79.0629 11.8817 79.0501 11.889C79.0572 11.8866 79.0659 11.8864 79.0659 11.8865ZM46.5821 20.6423C46.5489 20.6414 46.505 20.6538 46.4572 20.6572C46.5014 20.6631 46.6781 20.6513 46.5821 20.6423ZM51.742 20.3269C51.5662 20.3579 51.7571 20.3649 51.7988 20.3359C51.7906 20.3277 51.742 20.3269 51.742 20.3269ZM60.2547 18.9519C60.2242 18.9337 60.1406 18.9632 60.1456 18.9857C60.2132 18.9685 60.2457 18.9625 60.2547 18.9519ZM64.7031 17.8116C64.6756 17.8203 64.6326 17.8398 64.6308 17.8406C64.659 17.8317 64.6831 17.8217 64.7031 17.8116ZM61.3021 18.706C61.3316 18.6867 61.2286 18.7308 61.2003 18.7397C61.2365 18.7325 61.2771 18.7285 61.3021 18.706ZM39.9973 20.3264C40.0366 20.3061 39.9801 20.3125 39.9142 20.3024C39.9091 20.3145 39.9281 20.3463 39.9973 20.3264ZM39.8631 20.2925C39.8543 20.3042 39.8265 20.3208 39.9039 20.3267C39.9235 20.3183 39.9023 20.3081 39.8631 20.2925ZM28.3427 17.9088C28.3009 17.8946 28.2321 17.8551 28.2356 17.8678C28.2685 17.886 28.299 17.9006 28.3427 17.9088ZM59.2082 19.1841C59.1646 19.1918 59.0856 19.1903 59.0949 19.1997C59.1325 19.1998 59.1659 19.1979 59.2082 19.1841ZM50.7655 20.4251C50.7923 20.4368 50.8474 20.4376 50.8722 20.4264C50.8424 20.4227 50.8021 20.4233 50.7655 20.4251ZM59.362 19.1437C59.3446 19.1502 59.3162 19.1585 59.3098 19.1641C59.3146 19.1642 59.362 19.1437 59.362 19.1437ZM84.6505 8.21887C84.6915 8.18143 84.3547 8.29727 84.2565 8.42783C84.2506 8.53133 84.5588 8.26342 84.5821 8.25677C84.5859 8.29242 84.6994 8.27212 84.6505 8.21887ZM86.2067 7.00248C86.2066 7.01976 86.1969 7.04304 86.1789 7.06765C86.1738 7.05556 86.184 7.03282 86.2067 7.00248ZM79.0057 11.8697C79.0125 11.8819 79.0255 11.8899 79.0428 11.8906C79.033 11.8881 79.0308 11.8692 79.0057 11.8697ZM47.3852 20.5628C47.1001 20.526 47.1598 20.5788 47.3387 20.5907C47.3669 20.6829 47.4518 20.6007 47.3852 20.5628ZM59.5299 19.0815C59.7159 19.0005 59.083 19.1785 59.2611 19.1671C59.3209 19.1288 59.4252 19.0861 59.5299 19.0815ZM81.3072 10.5419C81.3062 10.5426 81.3052 10.5432 81.3042 10.5438C81.304 10.5439 81.3027 10.5444 81.3011 10.5447C81.3026 10.5442 81.3045 10.5433 81.3072 10.5419ZM46.5259 20.5745C46.2428 20.5425 46.4822 20.6157 46.3943 20.6364C46.4683 20.6783 46.6108 20.5943 46.5259 20.5745ZM28.6763 17.9734C28.8821 17.991 28.2364 17.8424 28.3937 17.9171C28.4934 17.9182 28.5758 17.925 28.6763 17.9734ZM43.1675 20.5731C43.1709 20.5789 43.2114 20.5845 43.2298 20.5868C43.2083 20.5738 43.227 20.5671 43.1675 20.5731ZM61.1722 18.7175C61.1586 18.7229 61.1597 18.7297 61.1597 18.7299C61.1626 18.7422 61.1765 18.7194 61.1722 18.7175ZM38.1926 20.0757C38.3213 20.0783 38.1398 20.0034 38.0904 20.0387C38.1034 20.0772 37.924 20.0645 38.1926 20.0757ZM68.9157 16.4251C69.0318 16.3674 68.8351 16.3855 68.8075 16.4397C68.837 16.4679 68.6713 16.5399 68.9157 16.4251ZM50.98 20.3929C51.1596 20.3368 50.8933 20.3314 50.7807 20.3915C50.9839 20.3542 50.8939 20.4209 50.98 20.3929ZM70.6408 15.7737C70.5381 15.7937 70.5383 15.8153 70.5478 15.8297C70.5586 15.8271 70.6337 15.7765 70.6408 15.7737ZM55.9024 19.7272C55.594 19.7565 55.9684 19.7923 55.9299 19.7589C55.7952 19.7794 56.0153 19.7336 55.9024 19.7272ZM48.4387 20.5205C48.2122 20.5058 48.3515 20.561 48.4776 20.5613C48.6468 20.5362 48.4938 20.5088 48.4387 20.5205ZM78.2954 12.2256C78.0571 12.3103 78.2503 12.2971 78.3466 12.243C78.5175 12.1418 78.27 12.2021 78.2954 12.2256ZM38.06 20.0181C38.0223 20.0233 37.9131 20.0089 37.8949 20.0317C37.9704 20.0484 38.0827 20.0404 38.06 20.0181ZM37.053 19.8893C37.0127 19.8842 36.9974 19.8854 37.0108 19.8947C37.0249 19.9005 37.0447 19.8943 37.053 19.8893ZM67.8262 16.7873C67.7848 16.8028 67.7757 16.8097 67.7919 16.8116C67.8069 16.8101 67.8212 16.7956 67.8262 16.7873ZM51.0928 20.3745C51.1439 20.3677 51.1439 20.3641 51.114 20.3591C51.107 20.364 51.0928 20.3745 51.0928 20.3745ZM80.6121 10.9362C80.6551 10.9076 80.6532 10.9046 80.6241 10.9133C80.6199 10.9207 80.6121 10.9362 80.6121 10.9362ZM20.0202 14.6898C20.1141 14.7324 20.1379 14.6809 19.9905 14.6405C20.0004 14.6569 20.0103 14.6734 20.0202 14.6898ZM20.59 14.9482C20.5877 14.9472 20.5854 14.9462 20.5831 14.9452C20.5812 14.9438 20.5792 14.9424 20.5772 14.941C20.5845 14.9428 20.5917 14.9444 20.5917 14.9444C20.5911 14.9457 20.5905 14.947 20.59 14.9482ZM34.1687 19.3288C34.1977 19.3706 34.3827 19.4017 34.4729 19.42C34.3684 19.3802 34.2516 19.3461 34.1687 19.3288ZM65.0074 17.6485C65.049 17.6728 65.2305 17.6117 65.3186 17.5853C65.2077 17.5995 65.0885 17.6246 65.0074 17.6485ZM33.6353 19.2316C33.8321 19.2785 33.6263 19.1854 33.585 19.2042C33.639 19.2317 33.6027 19.2439 33.6353 19.2316ZM64.4926 17.8147C64.6887 17.7628 64.463 17.7781 64.4351 17.8144C64.4995 17.812 64.473 17.8399 64.4926 17.8147ZM25.8376 16.9522C26.1149 17.0261 25.7632 16.8329 25.6612 16.9012C25.767 17.0201 25.8115 17.0489 25.8376 16.9522ZM43.4249 20.5207C43.3773 20.5143 43.3186 20.51 43.277 20.5297C43.3202 20.5507 43.387 20.542 43.4249 20.5207ZM82.7486 9.53313C82.8585 9.41481 82.6387 9.48841 82.767 9.48186C82.715 9.5357 82.6306 9.64052 82.7486 9.53313ZM85.9986 7.10241C86.2066 6.92123 85.7576 7.22015 85.8192 7.23817C85.8804 7.19087 85.946 7.14861 85.9986 7.10241ZM47.4242 20.5216C47.395 20.5211 47.3444 20.5365 47.3046 20.5426C47.3777 20.5552 47.4502 20.5411 47.4242 20.5216ZM34.5448 19.3626C34.5496 19.375 34.5088 19.3931 34.6151 19.4039C34.6175 19.3922 34.6377 19.3842 34.5448 19.3626ZM65.3512 17.5019C65.3613 17.5106 65.3339 17.5458 65.4328 17.5052C65.4294 17.4938 65.4435 17.4772 65.3512 17.5019ZM84.5743 8.14126C84.4515 8.18574 84.4372 8.3334 84.623 8.16953C84.6142 8.15777 84.6032 8.13102 84.5743 8.14126ZM13.5569 11.1237C13.5807 11.0918 13.3166 10.9265 13.2953 10.9599C13.2708 10.9918 13.5357 11.1577 13.5569 11.1237ZM25.1463 16.7151C25.1675 16.6775 24.8483 16.5671 25.1411 16.7073C24.9281 16.6588 25.0706 16.7405 25.1463 16.7151ZM24.9774 16.6633C24.9857 16.5978 24.7362 16.5738 24.9266 16.6632C24.9175 16.6458 24.9761 16.6658 24.9774 16.6633ZM55.6493 19.7295C55.5146 19.724 55.5016 19.7578 55.6121 19.7517C55.6036 19.7427 55.6469 19.7302 55.6493 19.7295ZM55.7091 19.7299C55.7123 19.73 55.7127 19.7301 55.7127 19.7301C55.7139 19.7299 55.7151 19.7297 55.7162 19.7295C55.7161 19.7288 55.716 19.7281 55.7159 19.7274C55.7137 19.7282 55.7114 19.7291 55.7091 19.7299ZM64.9987 17.619C64.9999 17.623 64.9986 17.6306 65.0143 17.6188C65.001 17.6234 64.9989 17.6193 64.9987 17.619ZM34.1741 19.3028C34.1512 19.3044 34.1919 19.3065 34.175 19.2987C34.1747 19.3 34.1744 19.3014 34.1741 19.3028ZM55.7754 19.703C55.8051 19.7485 55.8632 19.6464 55.7803 19.6859C55.8497 19.679 55.7933 19.698 55.7754 19.703ZM26.5984 17.1583C26.4144 17.0953 26.384 17.1507 26.572 17.2143C26.7947 17.2899 26.7717 17.2188 26.5984 17.1583ZM26.0779 17.0106C25.9965 16.9766 25.9732 17.0327 26.0638 17.0294C26.0894 17.0338 26.0758 17.0166 26.0779 17.0106ZM15.7717 12.3035C16.1207 12.5351 16.3115 12.4481 15.7362 12.2545C15.7094 12.3019 15.7235 12.2768 15.4939 12.1542C14.9867 12.0718 15.8808 12.4844 15.7717 12.3035ZM10.7715 9.15637C10.8066 9.20817 10.5666 9.12171 10.7186 9.23042C10.723 9.23702 10.8924 9.2331 10.7715 9.15637ZM77.254 12.6958C77.2365 12.7097 77.2275 12.7239 77.231 12.7308C77.2408 12.7178 77.254 12.6958 77.254 12.6958ZM55.915 19.667C55.92 19.652 55.8411 19.6492 55.8069 19.6681C55.8083 19.6764 55.8892 19.6691 55.915 19.667ZM19.9914 14.4898C19.6137 14.3452 20.005 14.5832 20.2103 14.6556C20.3261 14.6757 20.0956 14.5615 19.9914 14.4898ZM11.7341 9.8603C12.1765 10.1612 11.8639 9.81867 11.6951 9.80668C11.616 9.77979 11.5245 9.8165 11.7341 9.8603ZM26.6097 17.0793C26.4218 16.9719 25.9838 17.0139 26.2907 17.0825C26.5367 17.1466 26.4996 17.0842 26.6097 17.0793ZM10.9283 9.2653C10.9061 9.16983 10.8108 9.20256 10.9275 9.32981C11.2244 9.60381 11.3348 9.45855 10.9283 9.2653ZM18.1985 13.621C18.1748 13.6008 17.8803 13.4707 17.9504 13.551C18.0102 13.6201 18.2902 13.7001 18.1985 13.621ZM88.9535 4.32029C88.972 4.30789 88.991 4.29573 89.0104 4.28429C89.0204 4.26677 89.0304 4.24927 89.0404 4.23176C89.0099 4.26314 88.9794 4.2946 88.9535 4.32029ZM12.1971 10.1044C11.9776 9.93841 11.8251 9.94798 12.1583 10.1491C12.192 10.1648 12.2424 10.1488 12.1971 10.1044ZM25.5154 16.7839C25.5157 16.7839 25.5157 16.7835 25.516 16.7835C25.5195 16.7846 25.523 16.7859 25.5264 16.7871C25.5227 16.786 25.5191 16.785 25.5154 16.7839ZM16.6212 12.7593C16.6382 12.674 16.4243 12.6769 16.3412 12.66C16.6055 12.865 16.5192 12.7245 16.6212 12.7593ZM25.8938 16.914C25.886 16.9142 25.9141 16.9225 25.9383 16.9309C25.9285 16.9261 25.8955 16.9145 25.8938 16.914ZM11.5374 9.65448C11.4566 9.59811 11.4205 9.65034 11.5025 9.7052C11.5836 9.76179 11.6196 9.70925 11.5374 9.65448ZM14.0818 11.2654C13.968 11.2058 13.9803 11.3051 14.0684 11.3653C14.1347 11.3834 14.1637 11.3071 14.0818 11.2654ZM72.6615 14.7432C72.656 14.7774 72.737 14.7523 72.7105 14.7832C72.8451 14.7526 72.7355 14.7111 72.6615 14.7432ZM29.4072 18.0041C29.306 17.9704 29.3013 17.9858 29.2968 18.0013C29.362 18.0144 29.3968 18.0134 29.4072 18.0041ZM71.7797 15.1454C71.7914 15.1451 71.8063 15.1428 71.8282 15.1384C71.8223 15.1341 71.7797 15.1454 71.7797 15.1454ZM41.3216 20.2535C41.3429 20.2575 41.3322 20.2579 41.3218 20.2522C41.3217 20.2527 41.3217 20.2531 41.3216 20.2535ZM12.8371 10.4859C12.6572 10.3868 12.4949 10.3531 12.8389 10.5569C12.8527 10.5691 12.849 10.4948 12.8371 10.4859ZM84.0546 8.43656C84.0929 8.37759 83.9565 8.46372 83.9389 8.4893C83.9129 8.52801 84.0085 8.4788 84.0546 8.43656ZM23.3401 15.896C23.1937 15.8377 23.2058 15.8765 23.3357 15.9274C23.3237 15.9181 23.342 15.9111 23.3401 15.896ZM23.464 15.9527C23.4144 15.9384 23.3731 15.9325 23.3492 15.9328C23.4145 15.9572 23.5101 15.9852 23.464 15.9527ZM71.8185 15.0949C71.8247 15.1097 71.8636 15.1081 71.901 15.0928C71.9765 15.0642 71.8836 15.0601 71.8185 15.0949ZM24.1803 16.2151C24.1228 16.2014 24.0822 16.2151 24.1465 16.2419C24.1487 16.2465 24.2042 16.2347 24.1803 16.2151ZM28.3144 17.6373C28.3416 17.661 28.3017 17.6657 28.2439 17.6537C28.3559 17.689 28.3589 17.667 28.3144 17.6373ZM33.9104 19.1084C33.887 19.1127 33.9211 19.1293 33.9598 19.1418C33.9619 19.1316 33.982 19.1251 33.9104 19.1084ZM64.6733 17.577C64.6548 17.5918 64.6924 17.5904 64.7323 17.5832C64.7293 17.5731 64.744 17.5579 64.6733 17.577ZM28.4113 17.6846C28.5702 17.7286 28.4756 17.6488 28.3538 17.6334C28.3146 17.6491 28.4204 17.7174 28.4113 17.6846ZM87.2201 5.80643C86.9777 5.94653 87.1215 6.0215 87.3309 5.74946C87.3019 5.68925 87.2804 5.75875 87.2201 5.80643ZM79.0926 11.5523C79.0706 11.5729 79.0838 11.5966 79.1389 11.5597C79.1637 11.544 79.164 11.5223 79.0926 11.5523ZM86.1203 6.76384C86.008 6.85777 86.1047 6.82013 86.168 6.76443C86.2311 6.70875 86.1597 6.7369 86.1203 6.76384ZM27.621 17.4073C27.5635 17.3823 27.478 17.3717 27.4823 17.3826C27.5173 17.3932 27.6065 17.4166 27.621 17.4073ZM59.2072 18.9104C59.1413 18.9179 59.2122 18.935 59.2334 18.9278C59.2418 18.9155 59.2087 18.9107 59.2072 18.9104ZM80.2077 10.9068C80.2133 10.9161 80.2363 10.9142 80.2378 10.914C80.2632 10.8923 80.266 10.8826 80.2077 10.9068ZM49.4666 20.2606C49.4447 20.2613 49.445 20.2662 49.445 20.2662C49.3671 20.3084 49.6516 20.2793 49.4666 20.2606ZM27.4882 17.3398C27.4788 17.3455 27.484 17.3538 27.5298 17.367C27.5205 17.3596 27.4882 17.3398 27.4882 17.3398ZM15.7198 12.2237C15.9235 12.3618 15.8916 12.2169 15.7644 12.1894C15.7345 12.183 15.727 12.2109 15.7198 12.2237ZM14.4151 11.4571C14.4733 11.4307 13.9906 11.1981 14.2204 11.348C14.2857 11.3884 14.3555 11.4214 14.4151 11.4571ZM25.9926 16.8195C25.9445 16.802 25.9264 16.809 25.9103 16.8219C26.0278 16.863 26.0888 16.8671 25.9926 16.8195ZM80.3932 10.7807C80.5051 10.7318 80.4314 10.7233 80.3704 10.7855C80.3716 10.7871 80.3917 10.7811 80.3932 10.7807ZM74.7657 13.7175C74.7536 13.7262 74.7669 13.7378 74.767 13.7378C74.8261 13.7087 74.8789 13.6747 74.7657 13.7175ZM16.4378 12.4529C16.4207 12.4308 16.2817 12.3654 16.3169 12.4152C16.3679 12.4513 16.4654 12.4864 16.4378 12.4529ZM12.9744 10.347C12.9794 10.2854 12.8339 10.242 12.8338 10.2418C12.517 9.9853 12.9181 10.4346 12.9744 10.347ZM14.0607 11.0336C14.0087 11.0066 13.9432 10.9942 14.0132 11.0406C14.0897 11.0908 14.1845 11.111 14.0607 11.0336ZM25.6206 16.5229C25.5641 16.5072 25.4975 16.5086 25.5756 16.5395C25.6607 16.5729 25.7576 16.5731 25.6206 16.5229ZM15.0168 11.6253C15.0806 11.502 14.2444 11.1606 14.7936 11.5076C14.8651 11.5516 14.9443 11.5829 15.0168 11.6253ZM16.5574 12.4099C16.3557 12.2542 15.9867 12.1819 16.3632 12.3839C16.5502 12.4837 16.663 12.4906 16.5574 12.4099ZM26.2435 16.7229C26.221 16.721 26.2193 16.7257 26.2175 16.731C26.253 16.7403 26.2551 16.7343 26.2435 16.7229ZM21.1754 14.6167C21.2784 14.5998 20.5426 14.2459 20.9025 14.5126C20.091 14.1897 20.7982 14.6111 21.1754 14.6167ZM12.9217 10.1604C13.0127 10.2741 13.3072 10.4833 13.3636 10.4351C13.2158 10.3442 13.0687 10.2527 12.9217 10.1604ZM16.6474 12.4048C16.7679 12.4039 16.344 12.1174 16.2772 12.1405C16.2279 12.1541 16.5077 12.3409 16.6474 12.4048ZM18.1541 13.1028C17.9672 12.9964 17.853 12.9868 17.9251 13.0618C18.0496 13.187 18.6013 13.3563 18.1541 13.1028ZM13.3994 10.331C13.0784 10.1525 13.423 10.504 13.7123 10.5913C13.7147 10.5459 13.552 10.4158 13.3994 10.331ZM24.9973 16.0995C24.8389 16.0544 25.0487 16.15 25.1411 16.1524C25.0931 16.1348 25.0452 16.1172 24.9973 16.0995ZM85.2606 6.68584C85.2099 6.72096 85.1375 6.7909 85.174 6.7735C85.1982 6.76332 85.3129 6.66465 85.2606 6.68584ZM88.7078 3.51922C88.4955 3.7313 88.5676 3.75328 88.7598 3.54025C88.8564 3.43302 88.8465 3.37829 88.7078 3.51922ZM89.1798 3.04104C89.0203 3.20113 89.0745 3.21341 89.2042 3.06421C89.2629 2.99622 89.2756 2.94412 89.1798 3.04104ZM87.4695 4.76365C87.7131 4.51015 87.4486 4.70938 87.3483 4.83327C87.2956 4.89755 87.3501 4.88793 87.4695 4.76365ZM17.9781 12.7056C17.8675 12.5799 17.3861 12.2895 17.6955 12.5571C17.6711 12.5516 17.9436 12.6857 17.9781 12.7056ZM80.6489 9.86586C80.6662 9.85924 80.7083 9.83125 80.6919 9.83236C80.6774 9.8431 80.6489 9.86586 80.6489 9.86586ZM13.7301 10.2357C13.6452 10.1805 13.5686 10.1667 13.6596 10.2326C13.833 10.3576 13.8341 10.3011 13.7301 10.2357ZM21.3991 14.3361C21.4709 14.3433 21.3208 14.271 21.249 14.2451C21.1398 14.205 21.3356 14.3273 21.3991 14.3361ZM21.2086 14.2556C21.1853 14.2276 21.0574 14.1581 21.016 14.1617C20.9868 14.1647 21.1468 14.2251 21.2086 14.2556ZM74.2479 13.2942C74.2978 13.2635 74.1256 13.3241 74.0969 13.3487C74.0872 13.3709 74.215 13.3094 74.2479 13.2942ZM16.1061 11.6213C16.1899 11.5827 15.8754 11.4495 15.6672 11.3607C15.6829 11.4882 16.7459 12.0703 16.1061 11.6213ZM29.744 17.3344C29.6662 17.2892 29.2418 17.123 29.3693 17.2047C29.4697 17.2626 29.6294 17.3125 29.744 17.3344ZM85.5639 6.31423C85.5538 6.33601 85.5511 6.36636 85.6357 6.29351C85.8537 6.10514 85.7451 6.14338 85.5639 6.31423ZM14.9409 10.9604C14.908 10.9596 15.0322 11.0618 15.0606 11.0566C15.0879 11.0525 14.9882 10.987 14.9409 10.9604ZM25.1277 15.809C25.0216 15.7714 25.1712 15.8481 25.1899 15.8393C25.1712 15.8281 25.1293 15.8098 25.1277 15.809ZM26.464 16.2742C26.4674 16.2865 26.5184 16.3166 26.5631 16.3318C26.5531 16.3159 26.5072 16.2935 26.464 16.2742ZM88.5882 3.54663C88.3914 3.73802 88.1743 4.03788 88.4859 3.68675C88.528 3.6831 88.8154 3.36484 88.5882 3.54663ZM21.6657 14.3958C21.6582 14.3918 21.5283 14.3319 21.5434 14.3498C21.577 14.3906 21.7047 14.4243 21.6657 14.3958ZM82.0037 8.94603C82.1047 8.8635 81.9086 8.97923 81.9122 8.99771C81.9276 9.0076 81.9842 8.95571 82.0037 8.94603ZM89.5693 2.52418C89.5048 2.59554 89.5203 2.60982 89.5854 2.53888C89.6498 2.46734 89.6343 2.45317 89.5693 2.52418ZM16.5647 11.8533C16.4695 11.8086 16.5691 11.9127 16.6632 11.9445C16.7573 11.9762 16.6535 11.8945 16.5647 11.8533ZM19.8851 13.5885C19.8936 13.5902 19.9045 13.5949 19.9191 13.6039C19.9181 13.6036 19.9172 13.6033 19.9162 13.6029C19.905 13.5986 19.8945 13.5935 19.8851 13.5885ZM84.8689 6.85096C84.9851 6.77226 84.8695 6.82836 84.8519 6.86423C84.8576 6.85981 84.8633 6.85538 84.8689 6.85096ZM76.4602 12.1561C76.3947 12.1637 76.1479 12.2675 76.324 12.2237C76.3253 12.2263 76.4373 12.1678 76.4602 12.1561ZM21.4382 14.2745C21.3918 14.2541 21.3637 14.2546 21.4056 14.2762C21.4923 14.3221 21.4878 14.2964 21.4382 14.2745ZM84.9302 6.78951C84.8892 6.82438 84.9772 6.77395 84.9951 6.75009C85.0176 6.72073 84.9567 6.76515 84.9302 6.78951ZM80.3279 9.96525C80.261 10.0153 80.3689 9.96981 80.404 9.94407C80.4295 9.92344 80.3907 9.9226 80.3279 9.96525ZM75.4454 12.6468C75.4704 12.6401 75.4899 12.6384 75.5186 12.6228C75.5433 12.599 75.4834 12.6252 75.4454 12.6468ZM79.5819 10.4363C79.6895 10.3775 79.6866 10.3306 79.5417 10.4398C79.5106 10.4647 79.5415 10.4601 79.5819 10.4363ZM79.8703 10.2647C79.8723 10.2635 79.8743 10.2623 79.8763 10.2611C79.8713 10.2635 79.8702 10.264 79.8699 10.2641C79.87 10.2643 79.8702 10.2645 79.8703 10.2647ZM86.4047 5.58439C86.5001 5.50746 86.4889 5.46198 86.3659 5.59483C86.34 5.62452 86.3692 5.61498 86.4047 5.58439ZM74.4014 13.1415C74.4252 13.1328 74.4442 13.13 74.4734 13.1157C74.4636 13.1118 74.4233 13.1283 74.4014 13.1415ZM85.3956 6.40957C85.5381 6.24192 85.022 6.67567 85.1641 6.60531C85.1824 6.59804 85.3707 6.44163 85.3956 6.40957ZM86.7936 5.22521C86.847 5.14539 86.6251 5.32742 86.5893 5.37966C86.5694 5.44445 86.7143 5.31988 86.7936 5.22521ZM19.9247 13.5758C19.8908 13.5629 19.866 13.5558 19.8502 13.5553C19.8396 13.5441 19.8459 13.5393 19.8764 13.5507C19.8966 13.5587 19.9125 13.5678 19.9247 13.5758ZM17.059 12.005C16.669 11.7769 16.7216 11.9128 16.9042 12.0547C17.4455 12.3248 16.6547 11.8247 17.059 12.005ZM27.4024 16.5437C27.3366 16.5236 27.2702 16.5054 27.2589 16.5164C27.3247 16.5367 27.3849 16.5505 27.4024 16.5437ZM31.2304 17.69C31.4351 17.7093 30.7493 17.4639 30.8035 17.5145C30.4133 17.4055 31.049 17.6348 31.2304 17.69ZM39.4457 19.2268C39.4833 19.2461 39.4811 19.2656 39.5701 19.2804C39.6352 19.2832 39.4921 19.2346 39.4457 19.2268ZM69.6359 15.0931C69.6784 15.0928 69.6855 15.1111 69.7718 15.0832C69.8312 15.0556 69.6808 15.0786 69.6359 15.0931ZM22.0356 14.5269C22.0203 14.5272 22.0793 14.5638 22.0956 14.5624C22.105 14.5581 22.0356 14.5269 22.0356 14.5269ZM77.234 11.6517C77.2962 11.6456 77.3387 11.7092 77.611 11.5353C77.7101 11.4376 77.3556 11.5799 77.234 11.6517ZM82.3178 8.68324C82.3094 8.69654 82.3717 8.66679 82.3793 8.65232C82.3807 8.64239 82.3213 8.68096 82.3178 8.68324ZM32.6685 18.0362C32.6644 18.0388 32.7013 18.0548 32.7013 18.0547C32.7554 18.0625 32.7039 18.0446 32.6685 18.0362ZM52.0484 19.2982C52.0347 19.306 52.1039 19.3092 52.1175 19.3C52.1239 19.2916 52.0772 19.2952 52.0484 19.2982ZM50.4689 19.4592C50.4933 19.448 50.4671 19.4384 50.371 19.4553C50.4001 19.4578 50.4328 19.4594 50.4689 19.4592ZM35.625 18.6591C35.4917 18.6207 35.3015 18.6293 35.5776 18.6559C35.486 18.6344 35.6096 18.6577 35.625 18.6591ZM65.9766 16.372C65.8407 16.4007 65.6765 16.4978 65.9328 16.3915C65.8415 16.4157 65.9631 16.3777 65.9766 16.372ZM75.5652 12.5774C75.5688 12.5842 75.6165 12.5592 75.621 12.5516C75.6034 12.5571 75.5696 12.5699 75.5652 12.5774ZM85.0819 6.65187C85.0754 6.65528 85.0359 6.69203 85.0359 6.69202C85.0593 6.68689 85.1014 6.64179 85.0819 6.65187ZM84.1415 7.36303C84.0231 7.43352 83.9715 7.51546 84.0961 7.41717C84.1336 7.38907 84.1945 7.3319 84.1415 7.36303ZM90.2475 1.71179C90.148 1.80484 90.1157 1.89513 90.2153 1.77382C90.2456 1.73873 90.2922 1.67051 90.2475 1.71179ZM85.7207 6.12488C85.6929 6.13631 85.4814 6.30945 85.5491 6.27298C85.5751 6.2584 85.7739 6.10548 85.7207 6.12488ZM50.6536 19.4177C50.6321 19.4202 50.6401 19.4288 50.6407 19.435C50.6619 19.4283 50.6972 19.4189 50.6536 19.4177ZM69.8336 14.9388C69.272 15.1539 69.75 15.0253 69.9546 15.0015C69.9779 14.9301 69.507 15.1096 69.8336 14.9388ZM57.7256 18.4448C57.6828 18.4537 57.6401 18.4633 57.7049 18.453C57.7017 18.4558 57.7259 18.4462 57.7256 18.4448ZM78.4107 11.077C78.4624 11.0289 78.3175 11.1178 78.2558 11.1552C78.2992 11.1439 78.369 11.114 78.4107 11.077ZM24.3954 15.4688C24.3959 15.469 24.4531 15.4992 24.4193 15.4877C24.3849 15.4761 24.361 15.4571 24.3954 15.4688ZM36.1644 18.7569C36.1982 18.7523 36.1149 18.7453 36.1646 18.7556C36.1645 18.756 36.1644 18.7564 36.1644 18.7569ZM66.5019 16.2044C66.5298 16.1845 66.4528 16.2173 66.5015 16.2032C66.5016 16.2036 66.5017 16.204 66.5019 16.2044ZM48.8708 19.5424C48.9147 19.5546 49.0367 19.5504 49.0609 19.5314C49.0174 19.5277 48.9494 19.5345 48.8708 19.5424ZM76.865 11.9148C76.8935 11.8834 76.8435 11.9047 76.8457 11.9248C76.8522 11.9215 76.8586 11.9181 76.865 11.9148ZM33.1588 18.1381C33.2405 18.1525 33.0588 18.1052 33.0416 18.1141C33.0807 18.1221 33.1198 18.1301 33.1588 18.1381ZM61.3927 17.6036C60.934 17.7242 61.4186 17.6338 61.6307 17.5846C61.6732 17.562 61.333 17.6183 61.3927 17.6036ZM72.923 13.7784C72.883 13.7957 72.826 13.8197 72.8224 13.8296C72.8551 13.814 72.8914 13.7967 72.923 13.7784ZM73.5449 13.5091C73.4985 13.5206 73.6553 13.4276 73.708 13.4299C73.7287 13.4328 73.5469 13.5083 73.5449 13.5091ZM39.7819 19.2679C39.3032 19.1772 39.8864 19.1805 39.515 19.1653C39.0599 19.1146 39.9192 19.3362 39.7819 19.2679ZM47.2997 19.6047C47.2898 19.607 47.2921 19.6101 47.2925 19.6105C47.3069 19.6108 47.2997 19.6061 47.2997 19.6047ZM32.3728 17.9134C32.1071 17.7835 31.857 17.8159 32.1128 17.865C32.319 17.9654 32.1572 17.8365 32.3728 17.9134ZM76.8095 11.9104C76.7486 11.9413 76.822 11.926 76.8575 11.9004C76.8449 11.8999 76.8095 11.9104 76.8095 11.9104ZM52.9231 19.1586C52.9154 19.1611 52.8241 19.1859 52.835 19.1881C52.9332 19.1813 53.0612 19.1475 52.9231 19.1586ZM81.7408 9.01968C81.7028 9.04057 81.6641 9.08679 81.6509 9.09969C81.6835 9.0834 81.8255 8.98471 81.7408 9.01968ZM47.2599 19.5947C47.2601 19.5996 47.271 19.6062 47.2958 19.6041C47.2885 19.5995 47.2742 19.5971 47.2599 19.5947ZM83.9086 7.51589C83.9036 7.52048 83.9465 7.49844 83.9488 7.49728C83.9602 7.48264 83.9434 7.49009 83.9086 7.51589ZM84.9408 6.72157C84.9261 6.72606 84.8532 6.79041 84.8532 6.7904C84.8331 6.81604 84.9854 6.71489 84.9408 6.72157ZM83.7391 7.60706C83.6089 7.67776 83.5108 7.80507 83.6417 7.71664C83.7973 7.60712 83.8056 7.60064 83.7391 7.60706ZM83.166 8.02177C82.9913 8.13641 83.0431 8.15976 83.1839 8.04684C83.1192 8.07398 83.1096 8.07908 83.166 8.02177ZM54.6975 18.9033C54.5342 18.9209 54.5044 18.9704 54.6729 18.938C54.6692 18.9372 54.6801 18.9356 54.6801 18.9356C54.7226 18.9265 54.5508 18.9333 54.6975 18.9033ZM48.1091 19.559C47.9239 19.5543 47.8212 19.5125 47.7578 19.554C47.8015 19.5657 47.9291 19.5912 48.1091 19.559ZM55.2943 18.8341C55.5063 18.7607 55.08 18.8449 55.2203 18.8528C55.2417 18.8495 55.3713 18.8342 55.2943 18.8341ZM63.5148 17.0386C63.6252 17.0031 63.5171 17.0606 63.6276 17.038C63.6755 17.021 63.6019 17.0001 63.5148 17.0386ZM50.2089 19.4141C50.2208 19.4257 50.1186 19.4176 50.058 19.4418C50.1219 19.4594 50.228 19.4259 50.2089 19.4141ZM62.7675 17.2485C62.4284 17.2751 62.4246 17.3456 62.4246 17.3457C62.7368 17.304 62.5298 17.3025 62.7675 17.2485ZM64.0388 16.9167C64.0441 16.9086 64.0482 16.8828 64.0202 16.9038C63.9258 16.9306 64.0023 16.9212 64.0388 16.9167C64.0389 16.9169 64.0389 16.9171 64.039 16.9174C64.0642 16.9131 64.0571 16.9144 64.0388 16.9167ZM32.9554 18.0682C33.0042 18.0817 33.0114 18.0669 32.9652 18.0583C32.9645 18.0616 32.956 18.0677 32.9554 18.0682ZM35.8707 18.6697C35.8847 18.6737 35.8913 18.6777 35.9055 18.6803C35.8992 18.6751 35.8724 18.67 35.8707 18.6697ZM66.2013 16.2651C66.2156 16.2621 66.2236 16.2625 66.2374 16.2581C66.2292 16.2563 66.2013 16.2651 66.2013 16.2651ZM59.114 18.1305C58.6846 18.2079 59.3181 17.9906 58.8998 18.1183C58.5322 18.2043 58.8874 18.2028 59.114 18.1305ZM42.7445 19.5192C42.7846 19.5062 42.682 19.4818 42.5952 19.4896C42.6453 19.4963 42.7486 19.511 42.7445 19.5192ZM28.7483 16.8665C28.4476 16.7615 28.4264 16.8055 28.4517 16.8464C29.0693 17.0433 28.3732 16.8073 28.7483 16.8665ZM52.3095 19.2269C52.2962 19.2367 52.325 19.2357 52.3171 19.2289C52.3351 19.2269 52.3095 19.2269 52.3095 19.2269ZM68.3767 15.5374C68.4027 15.5141 68.2827 15.5652 68.3492 15.547C68.333 15.5557 68.3767 15.5374 68.3767 15.5374ZM24.3027 15.407C24.3016 15.4066 24.3005 15.4061 24.2994 15.4057C24.3007 15.4057 24.3019 15.4057 24.3032 15.4057C24.303 15.4061 24.3028 15.4066 24.3027 15.407ZM36.7186 18.7969C36.623 18.7786 36.7127 18.8094 36.6619 18.8079C36.8491 18.8452 36.7498 18.8079 36.7186 18.7969ZM54.7243 18.9113C54.6966 18.9232 54.8313 18.9104 54.7995 18.896C54.7924 18.897 54.7253 18.9111 54.7243 18.9113ZM67.0095 15.9809C66.9158 16.0096 67.0101 15.9947 66.9641 16.0172C67.1484 15.9623 67.0423 15.976 67.0095 15.9809ZM83.1961 8.01487C83.1774 8.03772 83.2896 7.96615 83.2552 7.96752C83.2487 7.97228 83.1962 8.01487 83.1961 8.01487ZM24.3925 15.395C24.413 15.4021 24.3973 15.4029 24.4102 15.4094C24.448 15.432 24.4677 15.4314 24.5015 15.4442C24.5184 15.4507 24.5307 15.4598 24.5442 15.465C24.5713 15.4753 24.6163 15.4893 24.6163 15.4893C24.5979 15.4868 24.5758 15.4837 24.5598 15.4851C24.5601 15.4842 24.5604 15.4834 24.5608 15.4825C24.5015 15.4652 24.5317 15.4669 24.5057 15.454C24.4733 15.4372 24.4413 15.4294 24.4075 15.4165C24.3956 15.4172 24.4316 15.4347 24.4309 15.4367C24.4301 15.4387 24.4091 15.4336 24.4079 15.4361C24.4074 15.4374 24.4122 15.4453 24.4122 15.4453C24.3977 15.4428 24.3372 15.4092 24.3224 15.4064C24.3192 15.4051 24.3013 15.4045 24.2999 15.4045C24.2986 15.4042 24.2973 15.404 24.296 15.4038C24.2934 15.4005 24.2985 15.3972 24.2897 15.3901C24.2812 15.3824 24.2546 15.3734 24.2542 15.3719C24.2887 15.383 24.3265 15.3959 24.3488 15.3985C24.3675 15.3997 24.3646 15.3873 24.3925 15.395ZM38.0963 19.0265C38.0819 19.0258 38.0709 19.0264 38.081 19.0321C38.1307 19.0414 38.1645 19.0335 38.0963 19.0265ZM76.7848 11.9099C76.7618 11.9202 76.7284 11.9335 76.7318 11.9404C76.7577 11.9356 76.7895 11.9192 76.7848 11.9099ZM74.2919 13.1297C74.2683 13.1391 74.2338 13.1512 74.2371 13.1582C74.2666 13.153 74.2963 13.1392 74.2919 13.1297ZM63.3432 17.0994C63.3384 17.1095 63.3651 17.0965 63.3717 17.0932C63.3745 17.0896 63.3437 17.0993 63.3432 17.0994ZM21.3342 14.1336C21.3512 14.1397 21.3607 14.1539 21.3734 14.161C21.4006 14.18 21.4458 14.2029 21.4822 14.219C21.4785 14.2273 21.4244 14.1974 21.4095 14.1954C21.4022 14.1953 21.4337 14.2206 21.379 14.1934C21.3798 14.1917 21.3805 14.1899 21.3813 14.1882C21.3803 14.1872 21.3793 14.1863 21.3783 14.1854C21.3681 14.1725 21.3118 14.1476 21.2623 14.1255C21.2579 14.1235 21.2535 14.1216 21.2492 14.1196C21.2851 14.128 21.3046 14.1289 21.3342 14.1336ZM34.6287 18.4184C34.5727 18.4034 34.5846 18.4174 34.6275 18.424C34.6279 18.4221 34.6283 18.4203 34.6287 18.4184ZM64.9836 16.6287C64.927 16.6419 64.9441 16.6486 64.9852 16.6341C64.9847 16.6323 64.9842 16.6305 64.9836 16.6287ZM22.4526 14.6484C22.4554 14.6429 22.5226 14.6779 22.5068 14.6788C22.5068 14.6789 22.451 14.6523 22.4526 14.6484ZM52.5294 19.202C52.5428 19.1935 52.4668 19.1951 52.4672 19.202C52.4676 19.2062 52.5293 19.202 52.5294 19.202ZM71.3241 14.3908C71.3054 14.4021 71.3474 14.3995 71.3472 14.4086C71.3361 14.4101 71.4032 14.3641 71.3241 14.3908ZM48.9231 19.4525C48.4827 19.5147 49.9503 19.4753 49.1447 19.4837C49.43 19.4212 49.0924 19.4599 48.9231 19.4525ZM63.5432 17.0467C63.5551 17.0362 63.4799 17.0497 63.4818 17.0565C63.4831 17.0604 63.5227 17.0538 63.5432 17.0467ZM33.1073 18.0868C33.1086 18.0814 33.1606 18.0976 33.1665 18.1047C33.1557 18.103 33.145 18.1006 33.1379 18.0989C33.1245 18.0945 33.1081 18.0872 33.1073 18.0868ZM38.4748 19.0519C38.4805 19.0633 38.5153 19.0794 38.561 19.0935C38.5852 19.0777 38.5026 19.0628 38.4748 19.0519ZM68.6927 15.3866C68.7031 15.394 68.741 15.3924 68.7879 15.3837C68.802 15.3586 68.7225 15.3834 68.6927 15.3866ZM82.6468 8.39307C82.6508 8.38535 82.7065 8.35343 82.6986 8.36651C82.6906 8.37189 82.6822 8.37698 82.674 8.38195C82.6643 8.38692 82.6539 8.3907 82.6468 8.39307ZM33.6081 18.1985C33.6055 18.2005 33.6012 18.2017 33.594 18.2015C33.5954 18.1996 33.5991 18.1983 33.6081 18.1985ZM24.5549 15.487C24.554 15.4894 24.5531 15.4918 24.5522 15.4942C24.5339 15.4836 24.5009 15.4705 24.4898 15.4661C24.513 15.4689 24.5531 15.4863 24.5549 15.487ZM74.9191 12.8294C74.9201 12.8317 74.9212 12.834 74.9223 12.8363C74.9019 12.8422 74.8692 12.8572 74.8586 12.8621C74.877 12.847 74.9191 12.8294 74.9191 12.8294ZM19.9134 13.4141C19.9528 13.4406 19.9866 13.4535 20.0243 13.4667C20.0614 13.4842 20.0986 13.5017 20.1357 13.5192C20.1514 13.5281 20.1634 13.5369 20.183 13.5461C20.2185 13.5642 20.3027 13.5974 20.3027 13.5974C20.3146 13.6029 20.3266 13.6085 20.3385 13.6141C20.3641 13.6275 20.3916 13.6457 20.4226 13.6647C20.416 13.6617 20.4025 13.657 20.3948 13.6565C20.3615 13.651 20.3652 13.6597 20.4114 13.6888C20.4391 13.7063 20.4917 13.7306 20.5278 13.7473C20.5607 13.7624 20.5703 13.7592 20.6166 13.7881C20.6288 13.7961 20.5597 13.7736 20.5875 13.7994C20.5329 13.7712 20.4833 13.7498 20.4794 13.758C20.4716 13.7575 20.5402 13.807 20.4766 13.7807C20.3859 13.7435 20.1802 13.5945 20.053 13.5421C20.1172 13.5415 20.2385 13.6407 20.2221 13.5905C20.0998 13.5448 20.1576 13.5488 20.1111 13.5207C20.0456 13.4814 19.9677 13.4515 19.8979 13.4214C19.8662 13.421 19.9439 13.4665 19.9422 13.4718C19.9398 13.4769 19.9016 13.4643 19.8986 13.4706C19.8968 13.4744 19.9184 13.4962 19.9113 13.4944C19.8717 13.485 19.7514 13.4006 19.7223 13.3944C19.7155 13.393 19.7202 13.4142 19.6652 13.3879C19.627 13.3679 19.674 13.3697 19.652 13.3491C19.6502 13.3489 19.6485 13.3488 19.6467 13.3487C19.6295 13.3323 19.5694 13.3045 19.5708 13.3007C19.6286 13.3223 19.7173 13.3633 19.7654 13.3716C19.791 13.3768 19.8019 13.3711 19.8123 13.366C19.846 13.3821 19.8797 13.3981 19.9134 13.4141ZM24.4789 15.4632C24.479 15.4628 24.4792 15.4624 24.4794 15.462C24.4805 15.4624 24.4815 15.4628 24.4826 15.4632C24.4797 15.4627 24.479 15.4631 24.4789 15.4632ZM27.2667 16.4002C27.1829 16.3536 26.9079 16.3102 27.0685 16.389C27.3076 16.4612 26.9695 16.32 27.2667 16.4002ZM74.3244 13.1138C74.354 13.0917 74.1617 13.1759 74.2669 13.1358C74.2866 13.1267 74.2985 13.1266 74.3244 13.1138ZM74.8525 12.8664C74.8523 12.866 74.8521 12.8655 74.8519 12.8651C74.8529 12.8646 74.854 12.8641 74.855 12.8636C74.8526 12.8654 74.8525 12.8662 74.8525 12.8664ZM82.9772 8.13498C82.9123 8.18669 82.9864 8.16102 83.0247 8.13399C83.0658 8.10487 83.0777 8.05295 82.9772 8.13498ZM24.4898 15.4661C24.4886 15.466 24.4871 15.4654 24.486 15.4653C24.4861 15.4651 24.4862 15.4648 24.4863 15.4646C24.4867 15.4648 24.4879 15.4654 24.4898 15.4661ZM74.8586 12.8621C74.8577 12.8629 74.8561 12.8636 74.8554 12.8643C74.8553 12.8641 74.8551 12.8639 74.855 12.8636C74.855 12.8636 74.8564 12.8631 74.8586 12.8621ZM63.7007 16.9899C63.7228 16.9881 63.7579 16.9783 63.7824 16.9714C63.7791 16.9731 63.7318 16.9798 63.7007 16.9899ZM75.9507 12.3275C75.9659 12.3176 75.9535 12.3169 75.9282 12.3311C75.9354 12.3304 75.9489 12.3279 75.9507 12.3275ZM46.2741 19.5859C46.285 19.5914 46.3103 19.5953 46.303 19.587C46.2958 19.5857 46.2741 19.5859 46.2741 19.5859ZM33.3592 18.1385C33.356 18.1378 33.3494 18.1375 33.3483 18.1374C33.3275 18.1313 33.3382 18.133 33.3592 18.1385ZM61.1737 17.6373C61.1596 17.6558 61.2184 17.6373 61.2712 17.6245C61.2361 17.6302 61.1764 17.637 61.1737 17.6373ZM57.4294 18.4061C57.2493 18.4503 57.2378 18.4889 57.4514 18.4455C57.3303 18.4304 57.5312 18.397 57.4294 18.4061ZM17.102 12.0623C17.0446 12.0545 17.2865 12.1998 17.2592 12.1367C17.2335 12.1245 17.1072 12.0648 17.102 12.0623ZM39.8571 19.2448C39.8116 19.2311 39.8679 19.2137 39.7521 19.2137C39.715 19.2213 39.7961 19.2407 39.8571 19.2448ZM70.0191 14.9163C69.9687 14.9264 70.011 14.885 69.9074 14.9385C69.8811 14.9611 69.9625 14.9408 70.0191 14.9163ZM77.5719 11.4626C77.5649 11.4703 77.5674 11.4714 77.575 11.4684C77.5739 11.4689 77.5726 11.4694 77.5715 11.47C77.5885 11.4711 77.6518 11.4435 77.6975 11.414C77.6619 11.4293 77.623 11.446 77.5758 11.4682C77.5998 11.4584 77.6682 11.4132 77.6552 11.4114C77.6187 11.4326 77.5743 11.4611 77.5719 11.4626ZM28.8052 16.9166C28.7889 16.9204 28.835 16.9424 28.88 16.956C28.8684 16.9438 28.8247 16.9269 28.8052 16.9166ZM59.1353 18.0917C59.1228 18.1029 59.1743 18.0998 59.2206 18.09C59.2046 18.0848 59.1575 18.0913 59.1353 18.0917ZM39.9163 19.2319C39.9129 19.233 39.9222 19.2424 39.9003 19.2462C39.9149 19.2458 39.9483 19.2362 39.9163 19.2319ZM30.6245 17.4291C30.4894 17.4024 30.7035 17.4956 30.7026 17.4576C30.6765 17.4463 30.6271 17.43 30.6245 17.4291ZM60.989 17.6635C60.8567 17.7051 61.091 17.6839 61.0719 17.651C61.0431 17.6537 60.9911 17.6632 60.989 17.6635ZM70.0478 14.9C70.0527 14.9027 70.0933 14.8671 70.0561 14.8813C70.0533 14.8875 70.0506 14.8938 70.0478 14.9ZM36.234 18.6755C36.18 18.6694 36.2035 18.7019 36.2632 18.7168C36.3065 18.7209 36.2532 18.6917 36.234 18.6755ZM66.5254 16.0999C66.4714 16.121 66.5075 16.1386 66.5674 16.1237C66.6112 16.1059 66.5499 16.1052 66.5254 16.0999ZM18.8533 12.9654C18.8057 12.9394 18.7545 12.9043 18.7337 12.9134C18.7747 12.9527 18.849 12.9898 18.8533 12.9654ZM38.9575 19.1111C38.9039 19.102 38.844 19.0856 38.8273 19.101C38.8789 19.1248 38.9615 19.1356 38.9575 19.1111ZM69.1445 15.2173C69.0927 15.234 69.0318 15.2471 69.0241 15.2685C69.081 15.2657 69.1593 15.2371 69.1445 15.2173ZM79.2864 10.4963C79.2386 10.5218 79.1813 10.5453 79.1776 10.5676C79.2328 10.555 79.3045 10.5133 79.2864 10.4963ZM54.5555 18.915C54.5338 18.9181 54.5563 18.9205 54.5563 18.9205C54.556 18.9186 54.5557 18.9168 54.5555 18.915ZM50.0885 19.4099C50.041 19.4101 49.9711 19.4013 49.9647 19.415C50.0129 19.4248 50.0675 19.4221 50.0885 19.4099ZM41.7114 19.402C41.654 19.3932 41.5127 19.3843 41.6195 19.4106C41.6456 19.4036 41.6934 19.4005 41.7114 19.402ZM71.7372 14.2131C71.7178 14.2147 71.6429 14.2403 71.6231 14.2582C71.624 14.2553 71.6122 14.2577 71.584 14.2692C71.5437 14.2857 71.5584 14.2835 71.5605 14.2887C71.5925 14.277 71.613 14.2666 71.6205 14.2611C71.619 14.263 71.6179 14.2649 71.6181 14.2666C71.671 14.2714 71.6827 14.2235 71.7372 14.2131ZM84.993 6.62061C84.9763 6.63391 84.9698 6.64874 84.9698 6.64874C84.9969 6.6541 85.0653 6.56781 84.993 6.62061ZM36.0185 18.6668C36.1046 18.6788 36.0023 18.6354 35.9843 18.6527C35.9837 18.6561 36.0185 18.6668 36.0185 18.6668ZM66.3309 16.1932C66.4158 16.1623 66.3053 16.172 66.2975 16.1957C66.2985 16.199 66.3309 16.1932 66.3309 16.1932ZM37.089 18.8383C37.0817 18.8379 37.1921 18.86 37.1768 18.8632C37.2005 18.8528 37.1688 18.8456 37.089 18.8383ZM67.3616 15.8429C67.355 15.8459 67.4624 15.8142 67.4509 15.824C67.4669 15.8038 67.4353 15.8123 67.3616 15.8429ZM27.4283 16.4771C27.4317 16.4915 27.5827 16.5392 27.5295 16.5042C27.502 16.4967 27.4307 16.4778 27.4283 16.4771ZM38.4206 19.0486C38.4515 19.0353 38.311 19.0008 38.2945 19.0147C38.2863 19.0241 38.381 19.0459 38.4206 19.0486ZM68.6462 15.4077C68.6676 15.3814 68.5261 15.4163 68.5178 15.4363C68.5148 15.4485 68.6062 15.4249 68.6462 15.4077ZM76.3887 12.0874C76.4065 12.0587 76.271 12.1111 76.2654 12.132C76.264 12.1444 76.3545 12.1079 76.3887 12.0874ZM24.9837 15.5616C25.0503 15.6006 25.1429 15.6424 25.2346 15.6761C25.2339 15.699 25.1092 15.6404 25.0719 15.6362C25.0498 15.6332 25.1252 15.6897 25.0057 15.6371C25.0059 15.6366 25.006 15.6362 25.0062 15.6357C25.0051 15.6353 25.004 15.6349 25.0029 15.6345C24.9932 15.6294 24.9953 15.6234 24.9691 15.6107C24.8807 15.568 24.7803 15.5259 24.6994 15.4842C24.7608 15.4954 24.8058 15.4995 24.8477 15.501C24.8827 15.5141 24.9177 15.5272 24.9527 15.5403C24.965 15.5486 24.9774 15.5578 24.9837 15.5616ZM26.1053 16.0361C26.145 16.0315 26.0199 15.9734 25.9949 15.9785C26.0275 16.0056 26.0468 16.017 26.1053 16.0361ZM45.2108 19.5745C45.19 19.5191 44.9376 19.5793 45.2039 19.5702C45.1931 19.5736 45.1858 19.5742 45.2108 19.5745ZM33.3046 18.0356C33.2973 18.0354 33.2687 18.0297 33.2671 18.0365C33.2577 18.0451 33.3117 18.0531 33.3248 18.0604C33.3315 18.0634 33.3156 18.0677 33.3156 18.0677C33.311 18.0666 33.3063 18.0656 33.3017 18.0645C33.2969 18.0842 33.1731 18.0439 33.1357 18.0445C33.1134 18.0444 33.1954 18.0906 33.0702 18.054C33.06 18.0501 33.0613 18.044 33.0337 18.0347C32.9405 18.0038 32.8357 17.9749 32.7499 17.9439C32.7611 17.9437 32.7765 17.9422 32.7912 17.9428C32.7415 17.9326 32.6953 17.9232 32.6947 17.9259C32.6945 17.9274 32.6986 17.9366 32.6991 17.9376C32.6864 17.9337 32.6738 17.9297 32.6611 17.9258C32.6762 17.9251 32.6908 17.9249 32.6779 17.9176C32.671 17.916 32.6156 17.8951 32.6128 17.8941C32.5998 17.891 32.5868 17.8879 32.5738 17.8848C32.5742 17.8834 32.5745 17.882 32.5748 17.8807C32.5901 17.8843 32.6053 17.888 32.6205 17.8916C32.6116 17.8895 32.6031 17.8861 32.598 17.8841C32.6022 17.8846 32.6065 17.8852 32.6108 17.8857C32.6108 17.8857 32.6175 17.8888 32.6313 17.8935C32.6986 17.9081 32.7664 17.9212 32.7879 17.9248C32.7949 17.925 32.7966 17.9201 32.7967 17.9198C32.8707 17.9372 32.9448 17.9545 33.0188 17.9716C33.0324 17.9769 33.053 17.9831 33.0519 17.9885C33.0888 18.0057 33.1442 18.0236 33.2035 18.04C33.2263 18.0374 33.243 18.0289 33.23 18.0216C33.2549 18.0263 33.2798 18.031 33.3046 18.0356ZM33.5322 18.1601C33.5584 18.1588 33.5792 18.1641 33.5922 18.172C33.5711 18.1673 33.5533 18.1647 33.5322 18.1601ZM65.9463 16.2884C65.8645 16.3067 65.8612 16.3325 65.9315 16.3142C65.9506 16.3024 65.9555 16.2936 65.9463 16.2884ZM46.7141 19.5547C46.6598 19.557 46.6454 19.5614 46.7143 19.5665C46.7214 19.5636 46.7141 19.5547 46.7141 19.5547ZM48.0309 19.5098C48.0438 19.4715 47.8537 19.517 47.7674 19.5215C47.6896 19.5608 47.9729 19.511 48.0309 19.5098ZM41.5452 19.3841C41.5019 19.3805 41.5162 19.3853 41.5158 19.3909C41.5914 19.4 41.6139 19.3898 41.5452 19.3841ZM49.9239 19.4075C49.8804 19.4107 49.8953 19.4132 49.8957 19.4188C49.9721 19.416 49.9928 19.4024 49.9239 19.4075ZM79.1382 10.5783C79.1008 10.6 79.1177 10.6008 79.1177 10.6008C79.1847 10.5653 79.1974 10.544 79.1382 10.5783ZM36.6485 18.7573C36.6198 18.7546 36.6222 18.7606 36.632 18.7666C36.6259 18.7647 36.6654 18.7637 36.6485 18.7573ZM46.4719 19.5403C46.3743 19.5299 46.1055 19.5734 46.267 19.5663C46.3785 19.5771 46.2993 19.5627 46.4719 19.5403ZM66.9319 15.9777C66.9051 15.9888 66.9103 15.9929 66.9219 15.9935C66.9146 15.9944 66.9502 15.9754 66.9319 15.9777ZM77.5041 11.4665C77.3976 11.5125 77.2957 11.5906 77.2206 11.6422C77.3079 11.6136 77.4858 11.501 77.5041 11.4665ZM84.9146 6.67721C84.8484 6.72583 84.8574 6.73729 84.9202 6.68428C84.9183 6.68192 84.9165 6.67957 84.9146 6.67721ZM71.6231 14.2582C71.6229 14.2589 71.6223 14.2597 71.6205 14.2611C71.6212 14.2601 71.622 14.2592 71.6231 14.2582ZM56.3455 18.6196C56.3443 18.6196 56.3431 18.6196 56.3419 18.6196C56.3419 18.6196 56.3411 18.6196 56.3403 18.6194C56.342 18.6195 56.3438 18.6194 56.3455 18.6196ZM56.3403 18.6194C56.3346 18.6191 56.329 18.6192 56.3231 18.6185C56.323 18.618 56.323 18.6175 56.3229 18.617C56.3314 18.6167 56.3378 18.6186 56.3403 18.6194ZM38.4775 19.0324C38.3563 19.0149 38.4623 19.0367 38.4687 19.0447C38.4692 19.0412 38.4768 19.0373 38.4775 19.0324ZM72.9732 13.6856C72.9653 13.6852 73.0045 13.6659 73.0244 13.6572C73.0086 13.6664 72.9923 13.675 72.9732 13.6856ZM68.6852 15.3655C68.6406 15.3807 68.596 15.407 68.6813 15.3765C68.6819 15.3783 68.6826 15.38 68.6832 15.3818C68.6818 15.3779 68.6871 15.3708 68.6852 15.3655ZM19.6476 13.3493C19.6465 13.349 19.6454 13.3486 19.6442 13.3483C19.645 13.3484 19.6459 13.3485 19.6467 13.3487C19.647 13.3489 19.6473 13.3491 19.6476 13.3493ZM55.3038 18.7767C55.2985 18.7663 55.2214 18.7874 55.244 18.793C55.2759 18.7867 55.3038 18.7767 55.3038 18.7767ZM63.5514 16.9944C63.5451 16.9853 63.4707 17.0144 63.4936 17.0175C63.5241 17.0077 63.5503 16.995 63.5514 16.9944ZM70.5568 14.6483C70.3415 14.7144 70.1736 14.7523 70.2544 14.791C70.367 14.7508 70.5867 14.6659 70.5568 14.6483ZM36.9498 18.7901C36.8912 18.7699 36.6896 18.7523 36.8123 18.7821C36.8417 18.7814 37.0063 18.8221 36.9498 18.7901ZM67.2124 15.8664C67.1506 15.8761 66.9628 15.955 67.086 15.9238C67.1118 15.9094 67.2777 15.8682 67.2124 15.8664ZM19.2315 13.1224C19.2937 13.1351 19.4071 13.1904 19.4412 13.2278C19.3346 13.1746 19.2938 13.1841 19.2315 13.1224ZM72.1104 14.0262C72.161 13.9876 72.2778 13.9384 72.3284 13.9374C72.2212 13.9812 72.198 14.0198 72.1104 14.0262ZM79.6237 10.2667C79.6681 10.2217 79.7761 10.1573 79.8263 10.1491C79.7262 10.2075 79.7092 10.2484 79.6237 10.2667ZM62.3677 17.2722C62.3141 17.3107 62.617 17.2342 62.4153 17.296C62.6493 17.2423 62.444 17.2626 62.3677 17.2722ZM30.733 17.4282C30.694 17.4205 30.673 17.4147 30.6591 17.411C30.6442 17.4243 30.75 17.4617 30.733 17.4282ZM61.0003 17.6335C60.9936 17.6524 61.1052 17.6344 61.074 17.6131C61.0358 17.6251 61.0003 17.6335 61.0003 17.6335ZM24.5604 15.4323C24.553 15.4317 24.5588 15.4368 24.5641 15.4433C24.5573 15.4407 24.5445 15.4328 24.531 15.4277C24.5383 15.429 24.5606 15.4316 24.5606 15.4316C24.5606 15.4318 24.5605 15.432 24.5604 15.4323ZM21.0072 13.9167C21.0156 13.9243 21.0413 13.9375 21.0392 13.9426C21.0206 13.9312 20.8929 13.8811 20.8924 13.8809C20.8852 13.8792 20.8901 13.886 20.8895 13.8873C20.8703 13.8856 20.7066 13.8094 20.7042 13.8145C20.7037 13.8158 20.7062 13.8269 20.7062 13.8269C20.6946 13.8206 20.683 13.8142 20.6715 13.8079C20.6863 13.8101 20.7008 13.8129 20.6894 13.8031C20.683 13.8001 20.633 13.7692 20.6303 13.7675C20.6291 13.767 20.6279 13.7664 20.6268 13.7659C20.6292 13.7665 20.6316 13.767 20.6341 13.7676C20.622 13.7621 20.6099 13.7565 20.5978 13.7509C20.5984 13.7497 20.599 13.7484 20.5996 13.7471C20.6756 13.7806 20.7622 13.8171 20.7898 13.8266C20.8066 13.8335 20.8361 13.8391 20.8361 13.8391C20.8931 13.8651 20.9501 13.8909 21.0072 13.9167ZM48.5338 19.4628C48.5117 19.4584 48.4504 19.4698 48.4723 19.4764C48.5052 19.4776 48.5633 19.4691 48.5338 19.4628ZM66.2301 16.176C66.2076 16.1773 66.1518 16.2038 66.1748 16.2046C66.2068 16.1973 66.26 16.1745 66.2301 16.176ZM77.9116 11.2337C77.8899 11.2393 77.8404 11.2758 77.8631 11.2722C77.8929 11.2591 77.9406 11.2266 77.9116 11.2337ZM84.9087 6.64614C84.894 6.65061 84.8458 6.69925 84.8673 6.69211C84.8943 6.67441 84.9359 6.63449 84.9087 6.64614ZM32.0271 17.7457C32.0477 17.7509 32.059 17.7554 32.0663 17.7595C32.0494 17.7553 32.0315 17.7511 32.0128 17.7468C32.0164 17.7462 32.0209 17.7456 32.0271 17.7457ZM32.5976 17.8838C32.5955 17.8829 32.5937 17.8825 32.5932 17.8823C32.5955 17.8828 32.5977 17.8834 32.6 17.8839C32.5992 17.8839 32.5984 17.8839 32.5976 17.8838Z\"\n        fill=\"#737373\"\n      />\n    </svg>\n  );\n};\n\ninterface CircularTextProps {\n  text: string;\n  radius: number;\n  position: \"top\" | \"bottom\";\n  angleSpan?: number;\n  className?: string;\n}\n\nconst CircularText = ({\n  text,\n  radius,\n  position,\n  angleSpan = 120,\n  className,\n}: CircularTextProps) => {\n  const isBottom = position === \"bottom\";\n  const characters = isBottom ? text.split(\"\").reverse() : text.split(\"\");\n  const totalChars = characters.length;\n  const anglePerChar = angleSpan / (totalChars - 1 || 1);\n  const centerAngle = position === \"top\" ? 0 : 180;\n  const startAngle = centerAngle - angleSpan / 2;\n\n  return (\n    <div className={cn(\"absolute inset-0 text-sm\", className)}>\n      {characters.map((char, i) => {\n        const charAngle = startAngle + i * anglePerChar;\n\n        return (\n          <span\n            className=\"absolute top-1/2 left-1/2\"\n            key={i}\n            style={{\n              transform: `\n                translate(-50%, -50%)\n                rotate(${charAngle}deg)\n                translateY(-${radius}px)\n                ${isBottom ? \"rotate(180deg)\" : \"\"}\n              `,\n            }}\n          >\n            {char}\n          </span>\n        );\n      })}\n    </div>\n  );\n};\n\ntype StampProps = {\n  className?: string;\n};\n\nconst Stamp = ({ className }: StampProps) => {\n  const dateText = new Date().toLocaleDateString(\"en-US\", {\n    month: \"long\",\n    year: \"numeric\",\n  });\n\n  return (\n    <div className={cn(\"relative grid place-items-center\", className)}>\n      <Circles />\n      <DuckSvg />\n\n      <div className=\"absolute inset-0 grid place-items-center [grid-area:1/1]\">\n        <div className=\"relative size-[calc(100%-30px)]\">\n          <CircularText\n            angleSpan={85}\n            className=\"font-mono text-[#737373] dark:text-[#fdc700]\"\n            position=\"top\"\n            radius={80}\n            text={dateText}\n          />\n\n          <div className=\"absolute top-[74%] left-1/2 -translate-x-1/2\">\n            <Vector />\n          </div>\n\n          <CircularText\n            angleSpan={110}\n            className=\"font-mono text-[#737373] dark:text-[#fdc700]\"\n            position=\"bottom\"\n            radius={84}\n            text=\"Chill Guy Supporter\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { Stamp };\n"
  },
  {
    "path": "components/ui/avatar.tsx",
    "content": "\"use client\";\n\nimport { Avatar as AvatarBase } from \"@base-ui/react/avatar\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst avatarVariants = cva(\n  \"relative flex shrink-0 overflow-hidden rounded-full\",\n  {\n    variants: {\n      size: {\n        sm: \"size-7 text-sm\",\n        md: \"size-10\",\n        lg: \"size-12 text-lg\",\n      },\n    },\n    defaultVariants: {\n      size: \"md\",\n    },\n  }\n);\n\nfunction Avatar({\n  className,\n  size,\n  ...props\n}: React.ComponentProps<typeof AvatarBase.Root> &\n  VariantProps<typeof avatarVariants>) {\n  return (\n    <AvatarBase.Root\n      className={cn(avatarVariants({ size }), className)}\n      data-slot=\"avatar\"\n      {...props}\n    />\n  );\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarBase.Image>) {\n  return (\n    <AvatarBase.Image\n      className={cn(\"size-full object-cover\", className)}\n      data-slot=\"avatar-image\"\n      {...props}\n    />\n  );\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarBase.Fallback>) {\n  return (\n    <AvatarBase.Fallback\n      className={cn(\n        \"flex size-full select-none items-center justify-center rounded-full bg-muted\",\n        className\n      )}\n      data-slot=\"avatar-fallback\"\n      {...props}\n    />\n  );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\n"
  },
  {
    "path": "components/ui/icon-state.tsx",
    "content": "\"use client\";\n\nimport { CheckIcon, LoaderIcon, XIcon } from \"lucide-react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { useEffect, useState } from \"react\";\n\nconst DEFAULT_LOADING_DELAY = 150;\n\ntype IconStatus = \"idle\" | \"loading\" | \"done\" | \"error\";\n\ntype IconStateProps = {\n  children: React.ReactNode;\n  status?: IconStatus;\n  loadingDelay?: number;\n};\n\nconst IconState = ({ children, status = \"idle\" }: IconStateProps) => {\n  const [showLoading, setShowLoading] = useState(false);\n\n  useEffect(() => {\n    if (status === \"loading\") {\n      const timeout = setTimeout(\n        () => setShowLoading(true),\n        DEFAULT_LOADING_DELAY\n      );\n      return () => clearTimeout(timeout);\n    }\n\n    const timeout = setTimeout(() => setShowLoading(false), 0);\n\n    return () => clearTimeout(timeout);\n  }, [status]);\n\n  const renderIcon = () => {\n    if (status === \"loading\" && showLoading) {\n      return <LoaderIcon aria-hidden=\"true\" className=\"animate-spin\" />;\n    }\n\n    if (status === \"done\") {\n      return <CheckIcon aria-hidden=\"true\" className=\"text-green-600\" />;\n    }\n\n    if (status === \"error\") {\n      return <XIcon aria-hidden=\"true\" className=\"text-red-500\" />;\n    }\n\n    return children;\n  };\n\n  const key = status === \"loading\" && !showLoading ? \"idle\" : status;\n\n  return (\n    <AnimatePresence initial={false} mode=\"popLayout\">\n      <motion.span\n        animate=\"animate\"\n        className=\"flex items-center justify-center [&>svg]:size-4 [&>svg]:shrink-0\"\n        exit=\"exit\"\n        initial=\"initial\"\n        key={key}\n        transition={{\n          duration: 0.1,\n          ease: \"easeOut\",\n        }}\n        variants={{\n          initial: { opacity: 0, scale: 0.6, filter: \"blur(3px)\" },\n          animate: { opacity: 1, scale: 1, filter: \"blur(0px)\" },\n          exit: { opacity: 0, scale: 0.6, filter: \"blur(3px)\" },\n        }}\n      >\n        {renderIcon()}\n      </motion.span>\n    </AnimatePresence>\n  );\n};\n\nexport { IconState };\nexport type { IconStatus, IconStateProps };\n"
  },
  {
    "path": "components/ui/input.tsx",
    "content": "import { Input as BaseInput } from \"@base-ui/react/input\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\ninterface InputProps extends React.ComponentProps<typeof BaseInput> {\n  inputContainerClassName?: string;\n  leadingIcon?: React.ReactNode;\n  trailingIcon?: React.ReactNode;\n}\n\nconst Input = ({\n  inputContainerClassName,\n  className,\n  type,\n  leadingIcon,\n  trailingIcon,\n  disabled,\n  ...props\n}: InputProps) => {\n  return (\n    <div\n      className={cn(\n        \"group relative w-full data-disabled:pointer-events-none\",\n        inputContainerClassName\n      )}\n      data-disabled={disabled ? \"\" : undefined}\n      data-slot=\"input-container\"\n    >\n      {leadingIcon && (\n        <span\n          className=\"pointer-events-none absolute top-1/2 left-3 shrink-0 -translate-y-1/2 [&_svg]:shrink-0\"\n          data-slot=\"input-leading-icon\"\n        >\n          {leadingIcon}\n        </span>\n      )}\n      <BaseInput\n        className={cn(\n          \"flex h-9 w-full min-w-0 px-3 py-1 text-sm outline-none ring-1\",\n          \"bg-neutral-100 text-neutral-800 ring-neutral-300 selection:bg-primary selection:text-white placeholder:text-neutral-400/70 dark:bg-neutral-900 dark:text-neutral-100 dark:ring-neutral-800\",\n          \"transition-[color,box-shadow,ring-color]\",\n          \"focus-visible:ring-neutral-500 dark:focus-visible:ring-neutral-700\",\n          \"supports-[corner-shape:squircle]:corner-squircle rounded-[14px] supports-[corner-shape:squircle]:rounded-[24px]\",\n          leadingIcon && \"pl-10\",\n          trailingIcon && \"pr-12\",\n          className\n        )}\n        data-slot=\"input\"\n        disabled={disabled}\n        type={type}\n        {...props}\n      />\n      {trailingIcon && (\n        <span\n          className=\"pointer-events-none absolute top-1/2 right-3 shrink-0 -translate-y-1/2 [&_svg]:shrink-0\"\n          data-slot=\"input-trailing-icon\"\n        >\n          {trailingIcon}\n        </span>\n      )}\n    </div>\n  );\n};\n\nexport { Input };\n"
  },
  {
    "path": "components/ui/portal.tsx",
    "content": "import { createPortal } from \"react-dom\";\n\ntype PortalProps = {\n  children: React.ReactNode;\n  container?: Element | null;\n};\n\nconst Portal = ({ children, container }: PortalProps) => {\n  if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n    return null;\n  }\n\n  return createPortal(children, container ?? document.body);\n};\n\nexport { Portal };\n"
  },
  {
    "path": "components/ui/radio.tsx",
    "content": "import { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst RadioGroup = ({\n  className,\n  ...props\n}: React.ComponentProps<typeof BaseRadioGroup>) => {\n  return <BaseRadioGroup className={cn(\"grid\", className)} {...props} />;\n};\n\nconst Radio = {\n  Root: React.forwardRef<\n    React.ElementRef<typeof BaseRadio.Root>,\n    React.ComponentPropsWithoutRef<typeof BaseRadio.Root>\n  >(({ className, ...props }, ref) => (\n    <BaseRadio.Root className={className} ref={ref} {...props} />\n  )),\n  Indicator: React.forwardRef<\n    React.ElementRef<typeof BaseRadio.Indicator>,\n    React.ComponentPropsWithoutRef<typeof BaseRadio.Indicator>\n  >(({ className, ...props }, ref) => (\n    <BaseRadio.Indicator\n      className={cn(\"flex items-center justify-center\", className)}\n      ref={ref}\n      {...props}\n    />\n  )),\n};\n\nRadio.Root.displayName = \"Radio.Root\";\nRadio.Indicator.displayName = \"Radio.Indicator\";\n\nexport { RadioGroup, Radio };\n"
  },
  {
    "path": "components/ui/scroll-area.tsx",
    "content": "import { ScrollArea as BaseScrollArea } from \"@base-ui/react/scroll-area\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n  React.ElementRef<typeof BaseScrollArea.Root>,\n  React.ComponentPropsWithoutRef<typeof BaseScrollArea.Root>\n>(({ className, children, ...props }, ref) => (\n  <BaseScrollArea.Root\n    className={cn(\"relative overflow-hidden\", className)}\n    ref={ref}\n    {...props}\n  >\n    {children}\n  </BaseScrollArea.Root>\n));\nScrollArea.displayName = \"ScrollArea\";\n\nconst ScrollAreaViewport = React.forwardRef<\n  React.ElementRef<typeof BaseScrollArea.Viewport>,\n  React.ComponentPropsWithoutRef<typeof BaseScrollArea.Viewport>\n>(({ className, children, ...props }, ref) => (\n  <BaseScrollArea.Viewport\n    className={cn(\"overscroll-contain rounded-[inherit]\", className)}\n    ref={ref}\n    {...props}\n  >\n    {children}\n  </BaseScrollArea.Viewport>\n));\nScrollAreaViewport.displayName = \"ScrollAreaViewport\";\n\nconst ScrollAreaContent = React.forwardRef<\n  React.ElementRef<typeof BaseScrollArea.Content>,\n  React.ComponentPropsWithoutRef<typeof BaseScrollArea.Content>\n>(({ className, ...props }, ref) => (\n  <BaseScrollArea.Content className={className} ref={ref} {...props} />\n));\nScrollAreaContent.displayName = \"ScrollAreaContent\";\n\nconst ScrollAreaScrollbar = React.forwardRef<\n  React.ElementRef<typeof BaseScrollArea.Scrollbar>,\n  React.ComponentPropsWithoutRef<typeof BaseScrollArea.Scrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n  <BaseScrollArea.Scrollbar\n    className={cn(\n      \"pointer-events-none relative flex touch-none opacity-0 transition-opacity duration-100\",\n      \"before:absolute before:content-['']\",\n      \"data-scrolling:pointer-events-auto data-scrolling:opacity-100 data-scrolling:duration-0\",\n      \"data-hovering:pointer-events-auto data-hovering:opacity-100 data-hovering:delay-0\",\n      orientation === \"vertical\" &&\n        \"m-2 w-1 before:left-1/2 before:h-full before:w-5 before:-translate-x-1/2\",\n      orientation === \"horizontal\" &&\n        \"m-2 h-1 before:right-0 before:-bottom-2 before:left-0 before:h-5 before:w-full\",\n      className\n    )}\n    orientation={orientation}\n    ref={ref}\n    {...props}\n  >\n    <BaseScrollArea.Thumb className=\"relative w-full flex-1\" />\n  </BaseScrollArea.Scrollbar>\n));\nScrollAreaScrollbar.displayName = \"ScrollAreaScrollbar\";\n\nconst ScrollAreaCorner = React.forwardRef<\n  React.ElementRef<typeof BaseScrollArea.Corner>,\n  React.ComponentPropsWithoutRef<typeof BaseScrollArea.Corner>\n>(({ className, ...props }, ref) => (\n  <BaseScrollArea.Corner className={className} ref={ref} {...props} />\n));\nScrollAreaCorner.displayName = \"ScrollAreaCorner\";\n\nexport {\n  ScrollArea,\n  ScrollAreaViewport,\n  ScrollAreaContent,\n  ScrollAreaScrollbar,\n  ScrollAreaCorner,\n};\n"
  },
  {
    "path": "components/ui/tabs.tsx",
    "content": "\"use client\";\n\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype TabsProps = React.ComponentProps<typeof BaseTabs.Root>;\n\nconst Tabs = ({ className, ...props }: TabsProps) => {\n  return (\n    <BaseTabs.Root\n      className={cn(\"flex flex-col\", className)}\n      data-slot=\"tabs\"\n      {...props}\n    />\n  );\n};\n\ntype TabsListProps = React.ComponentProps<typeof BaseTabs.List>;\n\nconst TabsList = ({ className, children, ...props }: TabsListProps) => {\n  return (\n    <BaseTabs.List\n      className={cn(\"inline-flex items-center justify-start gap-px\", className)}\n      data-slot=\"tabs-list\"\n      {...props}\n    >\n      {children}\n    </BaseTabs.List>\n  );\n};\n\ntype TabsTriggerProps = React.ComponentProps<typeof BaseTabs.Tab>;\n\nconst TabsTrigger = ({ className, ...props }: TabsTriggerProps) => {\n  return (\n    <BaseTabs.Tab\n      className={cn(\n        \"z-50 inline-flex cursor-pointer items-center justify-center whitespace-nowrap bg-white px-4 py-1 font-mono text-black text-sm tracking-[-0.39px] hover:bg-neutral-50 aria-selected:bg-primary aria-selected:text-white dark:bg-white/10 dark:text-white dark:aria-selected:bg-primary dark:hover:bg-white/5\",\n        \"first:rounded-tl-[8px] last:rounded-tr-[8px]\",\n        \"supports-[corner-shape:squircle]:first:corner-tl-squircle supports-[corner-shape:squircle]:first:rounded-tl-[14px]\",\n        \"supports-[corner-shape:squircle]:last:corner-tr-squircle supports-[corner-shape:squircle]:last:rounded-tr-[14px]\",\n        \"transition-[background-color] duration-50\",\n        \"focus-within:outline-offset-0 focus-visible:outline-1 focus-visible:outline-primary\",\n        className\n      )}\n      data-slot=\"tabs-trigger\"\n      {...props}\n    />\n  );\n};\n\nconst TabsContent = (props: React.ComponentProps<typeof BaseTabs.Panel>) => {\n  return <BaseTabs.Panel data-slot=\"tabs-content\" {...props} />;\n};\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"
  },
  {
    "path": "components/ui/text-loop.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { Children, useEffect, useState } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype TextLoopProps = {\n  children: React.ReactNode[];\n  className?: string;\n  interval?: number;\n  transition?: Transition;\n  variants?: Variants;\n  onIndexChange?: (index: number) => void;\n};\n\nexport function TextLoop({\n  children,\n  className,\n  interval = 2,\n  transition = { duration: 0.3 },\n  variants,\n  onIndexChange,\n}: TextLoopProps) {\n  const [currentIndex, setCurrentIndex] = useState(0);\n  const items = Children.toArray(children);\n\n  useEffect(() => {\n    const intervalMs = interval * 1000;\n\n    const timer = setInterval(() => {\n      setCurrentIndex((current) => {\n        const next = (current + 1) % items.length;\n        onIndexChange?.(next);\n        return next;\n      });\n    }, intervalMs);\n    return () => clearInterval(timer);\n  }, [items.length, interval, onIndexChange]);\n\n  const motionVariants: Variants = {\n    initial: { y: 20, opacity: 0 },\n    animate: { y: 0, opacity: 1 },\n    exit: { y: -20, opacity: 0 },\n  };\n\n  return (\n    <div\n      aria-hidden=\"true\"\n      className={cn(\"relative inline-block whitespace-nowrap\", className)}\n    >\n      <AnimatePresence initial={false} mode=\"popLayout\">\n        <motion.div\n          animate=\"animate\"\n          exit=\"exit\"\n          initial=\"initial\"\n          key={currentIndex}\n          transition={transition}\n          variants={variants || motionVariants}\n        >\n          {items[currentIndex]}\n        </motion.div>\n      </AnimatePresence>\n    </div>\n  );\n}\n"
  },
  {
    "path": "components/ui/theme-toggle.tsx",
    "content": "\"use client\";\n\nimport { useHotkey } from \"@tanstack/react-hotkeys\";\nimport { MoonIcon, SunIcon } from \"lucide-react\";\nimport { useTheme } from \"next-themes\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\nconst ThemeToggle = () => {\n  const { setTheme, theme: currentTheme, resolvedTheme } = useTheme();\n\n  const isDark = resolvedTheme === \"dark\";\n  const nextTheme = isDark ? \"light\" : \"dark\";\n\n  const handleChangeTheme = (theme: Theme) => {\n    if (theme === currentTheme) return;\n\n    setTheme(theme);\n  };\n\n  useHotkey(\"Mod+U\", () => {\n    handleChangeTheme(nextTheme);\n  });\n\n  return (\n    <button\n      aria-label={isDark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n      aria-pressed={isDark}\n      className=\"flex size-9 cursor-pointer items-center justify-center bg-white focus-within:outline-offset-2 focus-visible:outline-1 focus-visible:outline-primary dark:bg-white/10\"\n      onClick={() => handleChangeTheme(nextTheme)}\n      suppressHydrationWarning\n      tabIndex={0}\n      type=\"button\"\n    >\n      <SunIcon\n        aria-hidden=\"true\"\n        className=\"size-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\"\n      />\n      <MoonIcon\n        aria-hidden=\"true\"\n        className=\"absolute size-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\"\n      />\n    </button>\n  );\n};\n\nexport { ThemeToggle };\n"
  },
  {
    "path": "components/ui/tooltip.tsx",
    "content": "import { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipProvider = ({\n  delay = 150,\n  closeDelay = 200,\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Provider>) => {\n  return (\n    <BaseTooltip.Provider\n      closeDelay={closeDelay}\n      data-slot=\"tooltip-provider\"\n      delay={delay}\n      {...props}\n    />\n  );\n};\n\nconst Tooltip = ({\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Root>) => {\n  return <BaseTooltip.Root data-slot=\"tooltip\" {...props} />;\n};\n\nconst TooltipTrigger = ({\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Trigger>) => {\n  return <BaseTooltip.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n};\n\nconst TooltipPortal = ({\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Portal>) => {\n  return <BaseTooltip.Portal data-slot=\"tooltip-portal\" {...props} />;\n};\n\nconst TooltipPositioner = ({\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Positioner>) => {\n  return <BaseTooltip.Positioner data-slot=\"tooltip-positioner\" {...props} />;\n};\n\nconst TooltipArrow = ({\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Arrow>) => {\n  return <BaseTooltip.Arrow data-slot=\"tooltip-arrow\" {...props} />;\n};\n\nconst TooltipContent = ({\n  className,\n  align = \"center\",\n  sideOffset = 6,\n  side = \"bottom\",\n  children,\n  ...props\n}: React.ComponentProps<typeof BaseTooltip.Popup> & {\n  align?: BaseTooltip.Positioner.Props[\"align\"];\n  side?: BaseTooltip.Positioner.Props[\"side\"];\n  sideOffset?: BaseTooltip.Positioner.Props[\"sideOffset\"];\n}) => {\n  return (\n    <TooltipPortal>\n      <TooltipPositioner align={align} side={side} sideOffset={sideOffset}>\n        <BaseTooltip.Popup\n          className={cn(\n            \"z-50 w-fit origin-(--transform-origin) text-balance rounded-[14px] bg-primary px-3 py-1.5 text-white text-xs shadow-sm transition-[transform,scale,opacity] duration-50 data-ending-style:scale-95 data-starting-style:scale-95 data-ending-style:opacity-0 data-starting-style:opacity-0 data-instant:duration-0\",\n            \"supports-[corner-shape:squircle]:corner-squircle supports-[corner-shape:squircle]:rounded-[20px]\",\n            className\n          )}\n          data-slot=\"tooltip-content\"\n          {...props}\n        >\n          {children}\n          <TooltipArrow className=\"data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=top]:bottom-[-8px] data-[side=right]:left-[-13px] data-[side=left]:rotate-90 data-[side=right]:-rotate-90 data-[side=top]:rotate-180\">\n            <svg fill=\"none\" height=\"10\" viewBox=\"0 0 20 10\" width=\"20\">\n              <path\n                className=\"fill-primary\"\n                d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V9H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n              />\n              <path\n                className=\"fill-primary\"\n                d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n              />\n            </svg>\n          </TooltipArrow>\n        </BaseTooltip.Popup>\n      </TooltipPositioner>\n    </TooltipPortal>\n  );\n};\n\nexport {\n  Tooltip,\n  TooltipTrigger,\n  TooltipContent,\n  TooltipPortal,\n  TooltipPositioner,\n  TooltipArrow,\n  TooltipProvider,\n};\n"
  },
  {
    "path": "constants.ts",
    "content": "const SITE = {\n  NAME: \"lucide-animated\",\n  URL: \"https://lucide-animated.com\",\n  OG_IMAGE: \"/og.png\",\n  AUTHOR: {\n    NAME: \"pqoqubbw\",\n    TWITTER: \"@pqoqubbw\",\n  },\n  DESCRIPTION: {\n    LONG: \"Free open-source library of 350+ beautifully crafted animated React icons. Built with Motion and Lucide. Copy-paste ready, MIT licensed, fully customizable SVG icons with smooth animations.\",\n    SHORT:\n      \"Free animated React icons library with 350+ smooth Motion-powered icons based on Lucide. MIT licensed, copy-paste ready.\",\n  },\n  KEYWORDS: [\n    \"animated icons\",\n    \"react icons\",\n    \"motion icons\",\n    \"lucide icons\",\n    \"svg icons\",\n    \"animated svg\",\n    \"react components\",\n    \"icon library\",\n    \"open source icons\",\n    \"framer motion icons\",\n    \"animated react components\",\n    \"free icons\",\n    \"MIT license icons\",\n    \"copy paste icons\",\n    \"tailwind icons\",\n    \"nextjs icons\",\n  ],\n} as const;\n\nconst LINK = {\n  TWITTER: \"https://x.com/pqoqubbw\",\n  GITHUB: \"https://github.com/pqoqubbw/icons\",\n  LUCIDE: \"https://lucide.dev\",\n  MOTION: \"https://motion.dev\",\n  LICENSE: \"https://github.com/pqoqubbw/icons/blob/main/LICENSE\",\n} as const;\n\nconst PACKAGE_MANAGER = {\n  PNPM: \"pnpm\",\n  NPM: \"npm\",\n  YARN: \"yarn\",\n  BUN: \"bun\",\n} as const;\n\nexport { LINK, PACKAGE_MANAGER, SITE };\n"
  },
  {
    "path": "fonts/README.md",
    "content": "# Fonts Directory\n\n⚠️ **Proprietary font files (.woff) are NOT included in this repository due to licensing restrictions.**\n\n## How It Works\n\n- **Development**: Uses Google Fonts (Geist) automatically — no setup needed\n- **Production**: Downloads proprietary fonts from Vercel Blob Storage during build\n\nContributors can run `pnpm install && pnpm dev` without any additional configuration.\n\n## Required Files (Production Only)\n\n- `GT-Cinetype-Regular.woff` - Downloaded from `FONT_DOWNLOAD_URL_GT_CINETYPE`\n- `ANDALEMO.woff` - Downloaded from `FONT_DOWNLOAD_URL_ANDALE_MONO`\n\n## For Production (Vercel)\n\nSet these environment variables in Vercel:\n\n```bash\nFONT_DOWNLOAD_URL_GT_CINETYPE=https://your-blob-url.vercel-storage.com/GT-Cinetype-Regular-xxx.woff\nFONT_DOWNLOAD_URL_ANDALE_MONO=https://your-blob-url.vercel-storage.com/ANDALEMO-xxx.woff\n```\n\nThe `prebuild` script will automatically download fonts before the build starts.\n\n## License Compliance\n\nThese fonts are proprietary and licensed. Per the license terms:\n\n- ✅ Can use on websites via `@font-face`\n- ❌ Cannot distribute in public repositories\n- ❌ Cannot share font files publicly\n\nThat's why font files are in `.gitignore` and downloaded from secure storage during builds.\n"
  },
  {
    "path": "helpers/get-icon-for-v0.ts",
    "content": "/** biome-ignore-all lint/suspicious/noTemplateCurlyInString: ignore */\nimport { SITE } from \"@/constants\";\n\nconst getIconForV0 = async (name: string) => {\n  try {\n    const iconData = await (await fetch(`${SITE.URL}/r/${name}.json`)).json();\n\n    const componentName = name\n      .split(\"-\")\n      .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n      .join(\"\");\n\n    const iconName = `${componentName}Icon`;\n\n    const template = {\n      name,\n      type: \"registry:component\",\n      title: name,\n      source: {\n        title: SITE.NAME,\n        url: SITE.URL,\n        file: `${name}.tsx`,\n      },\n      registryDependencies: iconData.registryDependencies || [],\n      files: [\n        {\n          path: \"page.tsx\",\n          content:\n            `import { ${iconName} } from \"@/components/${name}\"\\n\\n` +\n            \"export default function Page() {\\n\" +\n            \"  return (\\n\" +\n            '    <div className=\"flex min-h-svh items-center justify-center\">\\n' +\n            `      <${iconName} />\\n` +\n            \"    </div>\\n\" +\n            \"  )\\n\" +\n            \"}\\n\",\n          type: \"registry:page\",\n          target: \"app/page.tsx\",\n        },\n        {\n          path: \"layout.tsx\",\n          content:\n            `import type { Metadata } from 'next'\\n` +\n            `import { Geist } from 'next/font/google'\\n\\n` +\n            \"const geist = Geist({\\n\" +\n            `  subsets: ['latin'],\\n` +\n            `  variable: '--font-sans',\\n` +\n            \"})\\n\\n\" +\n            \"export const metadata: Metadata = {\\n\" +\n            `  title: '${name} Icon',\\n` +\n            `  description: 'Animated ${name} icon component from lucide-animated',\\n` +\n            \"}\\n\\n\" +\n            \"export default function RootLayout({\\n\" +\n            \"  children,\\n\" +\n            \"}: Readonly<{\\n\" +\n            \"  children: React.ReactNode\\n\" +\n            \"}>) {\\n\" +\n            \"  return (\\n\" +\n            '    <html lang=\"en\">\\n' +\n            \"      <body className={`${geist.variable} font-sans antialiased`}>\\n\" +\n            \"        {children}\\n\" +\n            \"      </body>\\n\" +\n            \"    </html>\\n\" +\n            \"  )\\n\" +\n            \"}\\n\",\n          type: \"registry:page\",\n          target: \"app/layout.tsx\",\n        },\n        {\n          path: `components/${name}.tsx`,\n          content: iconData.files[0].content,\n          type: \"registry:component\",\n          target: `components/${name}.tsx`,\n        },\n      ],\n    };\n\n    return template;\n  } catch (error) {\n    console.error(`Error reading registry file ${name}:`, error);\n    return null;\n  }\n};\n\nexport { getIconForV0 };\n"
  },
  {
    "path": "hooks/use-touch-device.ts",
    "content": "\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nconst useTouchDevice = (): boolean => {\n  const [isTouchDevice, setIsTouchDevice] = useState(false);\n\n  useEffect(() => {\n    if (typeof window === \"undefined\") return;\n\n    const hasTouchScreen =\n      \"ontouchstart\" in window ||\n      navigator.maxTouchPoints > 0 ||\n      // @ts-expect-error - legacy property\n      navigator.msMaxTouchPoints > 0;\n\n    setIsTouchDevice(hasTouchScreen);\n  }, []);\n\n  return isTouchDevice;\n};\n\nexport { useTouchDevice };\n"
  },
  {
    "path": "icons/a-arrow-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AArrowDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LETTER_VARIANTS: Variants = {\n  normal: { opacity: 1, scale: 1 },\n  animate: {\n    opacity: [0, 1],\n    scale: [0.8, 1],\n    transition: { duration: 0.3 },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { opacity: 1, y: 0 },\n  animate: {\n    opacity: [0, 1],\n    y: [-10, 0],\n    transition: { duration: 0.3, delay: 0.2 },\n  },\n};\n\nconst AArrowDownIcon = forwardRef<AArrowDownIconHandle, AArrowDownIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3.5 13h6\"\n            variants={LETTER_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m2 16 4.5-9 4.5 9\"\n            variants={LETTER_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 7v9\"\n            variants={ARROW_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14 12 4 4 4-4\"\n            variants={ARROW_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAArrowDownIcon.displayName = \"AArrowDownIcon\";\n\nexport { AArrowDownIcon };\n"
  },
  {
    "path": "icons/a-arrow-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AArrowUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LETTER_VARIANTS: Variants = {\n  normal: { opacity: 1, scale: 1 },\n  animate: {\n    opacity: [0, 1],\n    scale: [0.8, 1],\n    transition: { duration: 0.3 },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { opacity: 1, y: 0 },\n  animate: {\n    opacity: [0, 1],\n    y: [10, 0],\n    transition: { duration: 0.3, delay: 0.2 },\n  },\n};\n\nconst AArrowUpIcon = forwardRef<AArrowUpIconHandle, AArrowUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3.5 13h6\"\n            variants={LETTER_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m2 16 4.5-9 4.5 9\"\n            variants={LETTER_VARIANTS}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M18 16V7\"\n            variants={ARROW_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14 11 4-4 4 4\"\n            variants={ARROW_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAArrowUpIcon.displayName = \"AArrowUpIcon\";\n\nexport { AArrowUpIcon };\n"
  },
  {
    "path": "icons/accessibility.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AccessibilityIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AccessibilityIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_VARIANTS: Variants = {\n  initial: {\n    y: 0,\n    x: 0,\n  },\n  animate: {\n    y: [0, 1, -1, 0],\n    x: [0, 1, -1, 0],\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst PRIMARY_GROUP_VARIANTS: Variants = {\n  initial: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, 5, -5, 0],\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SECONDARY_GROUP_VARIANTS: Variants = {\n  initial: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: -360,\n    transition: {\n      duration: 1,\n      delay: 0.4,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  initial: {\n    rotate: 0,\n    d: \"M8 5 L5 8\",\n  },\n  animate: {\n    rotate: [0, -60, 0],\n    d: [\"M8 5 L5 8\", \"M8 5 L4 9\", \"M8 5 L5 8\"],\n    transition: {\n      duration: 0.4,\n      delay: 0.2,\n      ease: \"easeInOut\",\n    },\n    transformOrigin: \"top right\",\n  },\n};\n\nconst AccessibilityIcon = forwardRef<\n  AccessibilityIconHandle,\n  AccessibilityIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"initial\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          cx=\"16\"\n          cy=\"4\"\n          initial=\"initial\"\n          r=\"1\"\n          variants={CIRCLE_VARIANTS}\n        />\n        <motion.g\n          animate={controls}\n          initial=\"initial\"\n          variants={PRIMARY_GROUP_VARIANTS}\n        >\n          <path d=\"m18 19 1-7-6 1\" />\n          <path d=\"M8,5l5.5,3-2.4,3.5\" />\n          <motion.path\n            animate={controls}\n            d=\"M8 5 L5 8\"\n            initial=\"initial\"\n            variants={PATH_VARIANTS}\n          />\n        </motion.g>\n        <motion.g\n          animate={controls}\n          initial=\"initial\"\n          variants={SECONDARY_GROUP_VARIANTS}\n        >\n          <path d=\"M4.2,14.5c-.8,2.6.7,5.4,3.3,6.2,1.2.4,2.4.3,3.6-.2\" />\n          <path d=\"M13.8,17.5c.8-2.6-.7-5.4-3.3-6.2-1.2-.4-2.4-.3-3.6.2\" />\n          <path d=\"M13,13.1c-.5-.7-1.1-1.2-1.9-1.6\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nAccessibilityIcon.displayName = \"AccessibilityIcon\";\n\nexport { AccessibilityIcon };\n"
  },
  {
    "path": "icons/activity.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ActivityIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nActivityIcon.displayName = \"ActivityIcon\";\n\nexport { ActivityIcon };\n"
  },
  {
    "path": "icons/air-vent.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AirVentIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AirVentIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WIND_VARIANTS: Variants = {\n  normal: (custom: number) => ({\n    pathLength: 1,\n    opacity: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n};\n\nconst AirVentIcon = forwardRef<AirVentIconHandle, AirVentIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n          <path d=\"M6 8h12\" />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12\"\n            initial=\"normal\"\n            variants={WIND_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.2}\n            d=\"M6.6 15.6A2 2 0 1 0 10 17v-5\"\n            initial=\"normal\"\n            variants={WIND_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAirVentIcon.displayName = \"AirVentIcon\";\n\nexport { AirVentIcon };\n"
  },
  {
    "path": "icons/airplane.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AirplaneIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AirplaneIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SPEED_LINES = [\n  { x1: 5, y1: 15, x2: 1, y2: 19, delay: 0.1 },\n  { x1: 7, y1: 17, x2: 3, y2: 21, delay: 0.2 },\n  { x1: 9, y1: 19, x2: 5, y2: 23, delay: 0.3 },\n];\n\nconst AirplaneIcon = forwardRef<AirplaneIconHandle, AirplaneIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          className=\"overflow-visible\"\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M17.8 19.2L16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z\"\n            transition={{\n              duration: 0.5,\n            }}\n            variants={{\n              normal: { x: 0, y: 0, scale: 1 },\n              animate: {\n                x: 3,\n                y: -3,\n                scale: 0.8,\n              },\n            }}\n          />\n          {SPEED_LINES.map((line, index) => (\n            <motion.line\n              animate={controls}\n              initial={{ opacity: 0, pathLength: 1, pathSpacing: 1 }}\n              key={index}\n              stroke=\"currentColor\"\n              strokeWidth=\"1\"\n              transition={{ duration: 0.15, delay: line.delay }}\n              variants={{\n                normal: {\n                  pathOffset: [0, 1],\n                  translateX: -3,\n                  translateY: 3,\n                  opacity: 0,\n                  transition: {\n                    duration: 0.3,\n                    times: [0, 0.6, 1],\n                  },\n                },\n                animate: {\n                  pathOffset: [1, 2],\n                  translateX: [0, 0],\n                  translateY: [0, 0],\n                  opacity: 1,\n                },\n              }}\n              x1={line.x1}\n              x2={line.x2}\n              y1={line.y1}\n              y2={line.y2}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nAirplaneIcon.displayName = \"AirplaneIcon\";\n\nexport { AirplaneIcon };\n"
  },
  {
    "path": "icons/airplay.tsx",
    "content": "\"use client\";\n\nimport { easeInOut, easeOut, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AirplayIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AirplayIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst SCREEN_VARIANTS = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: { duration: DURATION },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: DURATION * 2,\n      ease: easeInOut,\n    },\n  },\n};\n\nconst TRIANGLE_VARIANTS = {\n  normal: {\n    scale: 1,\n    opacity: 1,\n    transition: { duration: DURATION },\n  },\n  animate: {\n    scale: [0.6, 1.1, 1],\n    opacity: [0, 1],\n    transition: {\n      duration: DURATION * 2,\n      ease: easeOut,\n    },\n  },\n};\n\nconst AirplayIcon = forwardRef<AirplayIconHandle, AirplayIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"animate\");\n          controls.start(\"normal\");\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"animate\");\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\"\n            variants={SCREEN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 15l5 6H7z\"\n            variants={TRIANGLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAirplayIcon.displayName = \"AirplayIcon\";\n\nexport { AirplayIcon };\n"
  },
  {
    "path": "icons/alarm-clock.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlarmClockIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlarmClockIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    x: 0,\n    transition: {\n      duration: 0.2,\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n  animate: {\n    y: -1.5,\n    x: [-1, 1, -1, 1, -1, 0],\n    transition: {\n      y: {\n        duration: 0.2,\n        type: \"spring\",\n        stiffness: 200,\n        damping: 25,\n      },\n      x: {\n        duration: 0.3,\n        repeat: Number.POSITIVE_INFINITY,\n        ease: \"linear\",\n      },\n    },\n  },\n};\n\nconst SECONDARY_PATH_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    x: 0,\n    transition: {\n      duration: 0.2,\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n  animate: {\n    y: -2.5,\n    x: [-2, 2, -2, 2, -2, 0],\n    transition: {\n      y: {\n        duration: 0.2,\n        type: \"spring\",\n        stiffness: 200,\n        damping: 25,\n      },\n      x: {\n        duration: 0.3,\n        repeat: Number.POSITIVE_INFINITY,\n        ease: \"linear\",\n      },\n    },\n  },\n};\n\nconst AlarmClockIcon = forwardRef<AlarmClockIconHandle, AlarmClockIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M18 20.5L19.5 22\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M6 20.5L4.5 22\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 13C21 17.968 16.968 22 12 22C7.032 22 3 17.968 3 13C3 8.032 7.032 4 12 4C16.968 4 21 8.032 21 13Z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15.339 15.862L12.549 14.197C12.063 13.909 11.667 13.216 11.667 12.649V8.95898\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 2L21.747 5.31064\"\n            initial=\"normal\"\n            variants={SECONDARY_PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M6 2L2.25304 5.31064\"\n            initial=\"normal\"\n            variants={SECONDARY_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAlarmClockIcon.displayName = \"AlarmClockIcon\";\n\nexport { AlarmClockIcon };\n"
  },
  {
    "path": "icons/align-center.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlignCenterIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlignCenterIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst AlignCenterIcon = forwardRef<AlignCenterIconHandle, AlignCenterIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M17 12H7\"\n            variants={{\n              normal: { translateX: 0 },\n              animate: {\n                translateX: [0, 3, -3, 2, -2, 0],\n                transition: {\n                  ease: \"linear\",\n                  translateX: {\n                    duration: 1,\n                  },\n                },\n              },\n            }}\n          />\n          <path d=\"M19 18H5\" />\n          <path d=\"M21 6H3\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAlignCenterIcon.displayName = \"AlignCenterIcon\";\n\nexport { AlignCenterIcon };\n"
  },
  {
    "path": "icons/align-horizontal.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlignHorizontalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlignHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 160,\n  damping: 17,\n  mass: 1,\n};\n\nconst AlignHorizontalIcon = forwardRef<\n  AlignHorizontalIconHandle,\n  AlignHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"10\"\n          rx=\"2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { scaleX: 1 },\n            animate: { scaleX: 0.85 },\n          }}\n          width=\"6\"\n          x=\"9\"\n          y=\"7\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"M4 22V2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: 0, scaleY: 1 },\n            animate: {\n              translateX: 2,\n              scaleY: 0.9,\n            },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M20 22V2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: 0, scaleY: 1 },\n            animate: {\n              translateX: -2,\n              scaleY: 0.9,\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nAlignHorizontalIcon.displayName = \"AlignHorizontalIcon\";\n\nexport { AlignHorizontalIcon };\n"
  },
  {
    "path": "icons/align-left.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlignLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlignLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 150,\n  damping: 15,\n  mass: 0.3,\n};\n\nconst AlignLeftIcon = forwardRef<AlignLeftIconHandle, AlignLeftIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x2: 21 },\n              animate: { x2: 21 },\n            }}\n            x1=\"3\"\n            x2=\"21\"\n            y1=\"6\"\n            y2=\"6\"\n          />\n\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x2: 15 },\n              animate: { x2: 19 },\n            }}\n            x1=\"3\"\n            x2=\"15\"\n            y1=\"12\"\n            y2=\"12\"\n          />\n\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x2: 17 },\n              animate: { x2: 12 },\n            }}\n            x1=\"3\"\n            x2=\"17\"\n            y1=\"18\"\n            y2=\"18\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAlignLeftIcon.displayName = \"AlignLeftIcon\";\n\nexport { AlignLeftIcon };\n"
  },
  {
    "path": "icons/align-right.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlignRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlignRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 150,\n  damping: 15,\n  mass: 0.3,\n};\n\nconst AlignRightIcon = forwardRef<AlignRightIconHandle, AlignRightIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x1: 3 },\n              animate: { x1: 3 },\n            }}\n            x1=\"3\"\n            x2=\"21\"\n            y1=\"6\"\n            y2=\"6\"\n          />\n\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x1: 9 },\n              animate: { x1: 5 },\n            }}\n            x1=\"9\"\n            x2=\"21\"\n            y1=\"12\"\n            y2=\"12\"\n          />\n\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x1: 7 },\n              animate: { x1: 12 },\n            }}\n            x1=\"7\"\n            x2=\"21\"\n            y1=\"18\"\n            y2=\"18\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAlignRightIcon.displayName = \"AlignRightIcon\";\n\nexport { AlignRightIcon };\n"
  },
  {
    "path": "icons/align-vertical.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AlignVerticalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AlignVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 160,\n  damping: 17,\n  mass: 1,\n};\n\nconst AlignVerticalIcon = forwardRef<\n  AlignVerticalIconHandle,\n  AlignVerticalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"6\"\n          rx=\"2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { scaleY: 1 },\n            animate: { scaleY: 0.8 },\n          }}\n          width=\"10\"\n          x=\"7\"\n          y=\"9\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"M22 20H2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: 0, scaleX: 1 },\n            animate: {\n              translateY: -2,\n              scaleX: 0.9,\n            },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M22 4H2\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: 0, scaleX: 1 },\n            animate: {\n              translateY: 2,\n              scaleX: 0.9,\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nAlignVerticalIcon.displayName = \"AlignVerticalIcon\";\n\nexport { AlignVerticalIcon };\n"
  },
  {
    "path": "icons/ambulance.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nexport interface AmbulanceIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AmbulanceIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BODY_VARIANTS: Variants = {\n  normal: { x: 0, y: 0 },\n  animate: {\n    y: [0, -1, 0, -0.5, 0],\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"loop\",\n    },\n  },\n};\n\nconst WHEEL_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: 360,\n    transition: {\n      duration: 0.5,\n      ease: \"linear\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst SPEED_LINE_VARIANTS: Variants = {\n  normal: {\n    opacity: 0,\n    x: 0,\n    scaleX: 0,\n  },\n  animate: (custom: number) => ({\n    opacity: [0, 0.7, 0.5, 0],\n    x: [0, -4, -10, -16],\n    scaleX: [0.2, 1, 0.8, 0.3],\n    transition: {\n      duration: 0.5,\n      ease: \"easeOut\",\n      repeat: Number.POSITIVE_INFINITY,\n      delay: custom * 0.08,\n      times: [0, 0.2, 0.6, 1],\n    },\n  }),\n};\n\nconst CROSS_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0.3, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst AmbulanceIcon = forwardRef<AmbulanceIconHandle, AmbulanceIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"animate\");\n        }\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"normal\");\n        }\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={className}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          className=\"overflow-visible\"\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {[\n            { y: 8, width: 5, x: 0 },\n            { y: 11, width: 7, x: -1 },\n            { y: 14, width: 4, x: 0 },\n          ].map((line, i) => (\n            <motion.line\n              animate={controls}\n              custom={i}\n              initial=\"normal\"\n              key={`speed-${i}`}\n              strokeLinecap=\"round\"\n              strokeWidth=\"2\"\n              variants={SPEED_LINE_VARIANTS}\n              x1={line.x}\n              x2={line.x + line.width}\n              y1={line.y}\n              y2={line.y}\n            />\n          ))}\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={BODY_VARIANTS}\n          >\n            <path d=\"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2\" />\n            <path d=\"M19 18h2a1 1 0 0 0 1-1v-3.28a1 1 0 0 0-.684-.948l-1.923-.641a1 1 0 0 1-.578-.502l-1.539-3.076A1 1 0 0 0 16.382 8H14\" />\n            <path d=\"M9 18h6\" />\n\n            <motion.g\n              animate={controls}\n              initial=\"normal\"\n              variants={CROSS_VARIANTS}\n            >\n              <path d=\"M10 10H6\" />\n              <path d=\"M8 8v4\" />\n            </motion.g>\n          </motion.g>\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={BODY_VARIANTS}\n          >\n            <motion.circle\n              animate={controls}\n              cx=\"7\"\n              cy=\"18\"\n              initial=\"normal\"\n              r=\"2\"\n              style={{ transformOrigin: \"7px 18px\" }}\n              variants={WHEEL_VARIANTS}\n            />\n          </motion.g>\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={BODY_VARIANTS}\n          >\n            <motion.circle\n              animate={controls}\n              cx=\"17\"\n              cy=\"18\"\n              initial=\"normal\"\n              r=\"2\"\n              style={{ transformOrigin: \"17px 18px\" }}\n              variants={WHEEL_VARIANTS}\n            />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nAmbulanceIcon.displayName = \"AmbulanceIcon\";\n\nexport { AmbulanceIcon };\n"
  },
  {
    "path": "icons/angry.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AngryIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AngryIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst EYEBROW_ROTATION = 20;\nconst DURATION = 0.6;\n\nconst PATH_VARIANTS_FACE: Variants = {\n  normal: { scale: 1, rotate: 0 },\n  animate: {\n    scale: [1, 1.2, 1.2, 1.2, 1],\n    rotate: [0, -3, 3, -1, 1, 0],\n    transition: {\n      duration: DURATION,\n      times: [0, 0.2, 0.4, 0.6, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst PATH_VARIANTS_LEFT_EYEBROW: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, EYEBROW_ROTATION, 0],\n    transition: {\n      duration: DURATION + 0.2,\n    },\n  },\n};\n\nconst PATH_VARIANTS_RIGHT_EYEBROW: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, -EYEBROW_ROTATION, 0],\n    transition: {\n      duration: DURATION + 0.2,\n    },\n  },\n};\n\nconst PATH_VARIANTS_EYE: Variants = {\n  normal: { scale: 1 },\n  animate: {\n    scale: [1, 1.2, 1],\n    transition: {\n      duration: DURATION,\n    },\n  },\n};\n\nconst PATH_VARIANTS_MOUTH: Variants = {\n  normal: { translateY: 0 },\n  animate: {\n    translateY: [0, -0.5, 0],\n    transition: {\n      duration: DURATION,\n    },\n  },\n};\n\nconst AngryIcon = forwardRef<AngryIconHandle, AngryIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={PATH_VARIANTS_FACE}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M16 16s-1.5-2-4-2-4 2-4 2\"\n            variants={PATH_VARIANTS_MOUTH}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M7.5 8 10 9\"\n            variants={PATH_VARIANTS_LEFT_EYEBROW}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14 9 2.5-1\"\n            variants={PATH_VARIANTS_RIGHT_EYEBROW}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 10h.01\"\n            variants={PATH_VARIANTS_EYE}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 10h.01\"\n            variants={PATH_VARIANTS_EYE}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nAngryIcon.displayName = \"AngryIcon\";\n\nexport { AngryIcon };\n"
  },
  {
    "path": "icons/annoyed.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AnnoyedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AnnoyedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst AnnoyedIcon = forwardRef<AnnoyedIconHandle, AnnoyedIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: {\n        scale: 1,\n        transition: { duration: 0.2, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: 1.05,\n        transition: {\n          duration: 0.3,\n          ease: \"easeOut\",\n        },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      normal: {\n        scaleX: 1,\n        y: 0,\n        transition: { duration: 0.2, ease: \"easeOut\" },\n      },\n      animate: {\n        scaleX: 0.8,\n        y: 1,\n        transition: {\n          duration: 0.3,\n          ease: \"easeOut\",\n        },\n      },\n    };\n\n    const leftEyebrowVariants: Variants = {\n      normal: {\n        rotate: 0,\n        y: 0,\n        x: 0,\n        transition: { duration: 0.2, ease: \"easeOut\" },\n      },\n      animate: {\n        rotate: 15,\n        y: -1,\n        x: -0.5,\n        transition: {\n          duration: 0.25,\n          ease: \"easeOut\",\n        },\n      },\n    };\n\n    const rightEyebrowVariants: Variants = {\n      normal: {\n        rotate: 0,\n        y: 0,\n        x: 0,\n        transition: { duration: 0.2, ease: \"easeOut\" },\n      },\n      animate: {\n        rotate: 15,\n        y: -1,\n        x: 0.5,\n        transition: {\n          duration: 0.25,\n          ease: \"easeOut\",\n          delay: 0.05,\n        },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M8 15h8\"\n            initial=\"normal\"\n            variants={mouthVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M8 9h2\"\n            initial=\"normal\"\n            variants={leftEyebrowVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14 9h2\"\n            initial=\"normal\"\n            variants={rightEyebrowVariants}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nAnnoyedIcon.displayName = \"AnnoyedIcon\";\n\nexport { AnnoyedIcon };\n"
  },
  {
    "path": "icons/archive.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArchiveIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArchiveIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RECT_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n    transition: {\n      duration: 0.2,\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n  animate: {\n    translateY: -1.5,\n    transition: {\n      duration: 0.2,\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\" },\n  animate: { d: \"M4 11v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V11\" },\n};\n\nconst SECONDARY_PATH_VARIANTS: Variants = {\n  normal: { d: \"M10 12h4\" },\n  animate: { d: \"M10 15h4\" },\n};\n\nconst ArchiveIcon = forwardRef<ArchiveIconHandle, ArchiveIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={controls}\n            height=\"5\"\n            initial=\"normal\"\n            rx=\"1\"\n            variants={RECT_VARIANTS}\n            width=\"20\"\n            x=\"2\"\n            y=\"3\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M10 12h4\"\n            variants={SECONDARY_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArchiveIcon.displayName = \"ArchiveIcon\";\n\nexport { ArchiveIcon };\n"
  },
  {
    "path": "icons/arrow-big-down-dash.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigDownDashIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigDownDashIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DASH_VARIANTS: Variants = {\n  normal: { translateY: 0 },\n  animate: {\n    translateY: [0, 1, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { translateY: 0 },\n  animate: {\n    translateY: [0, 3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigDownDashIcon = forwardRef<\n  ArrowBigDownDashIconHandle,\n  ArrowBigDownDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path animate={controls} d=\"M15 5H9\" variants={DASH_VARIANTS} />\n        <motion.path\n          animate={controls}\n          d=\"M15 9v3h4l-7 7-7-7h4V9z\"\n          variants={ARROW_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigDownDashIcon.displayName = \"ArrowBigDownDashIcon\";\n\nexport { ArrowBigDownDashIcon };\n"
  },
  {
    "path": "icons/arrow-big-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M15 6v6h4l-7 7-7-7h4V6h6z\", translateY: 0 },\n  animate: {\n    d: \"M15 6v6h4l-7 7-7-7h4V6h6z\",\n    translateY: [0, +3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigDownIcon = forwardRef<\n  ArrowBigDownIconHandle,\n  ArrowBigDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M15 6v6h4l-7 7-7-7h4V6h6z\"\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigDownIcon.displayName = \"ArrowBigDownIcon\";\n\nexport { ArrowBigDownIcon };\n"
  },
  {
    "path": "icons/arrow-big-left-dash.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigLeftDashIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigLeftDashIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DASH_VARIANTS: Variants = {\n  normal: { translateX: 0 },\n  animate: {\n    translateX: [0, -1, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { translateX: 0 },\n  animate: {\n    translateX: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigLeftDashIcon = forwardRef<\n  ArrowBigLeftDashIconHandle,\n  ArrowBigLeftDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path animate={controls} d=\"M19 15V9\" variants={DASH_VARIANTS} />\n        <motion.path\n          animate={controls}\n          d=\"M15 15h-3v4l-7-7 7-7v4h3v6z\"\n          variants={ARROW_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigLeftDashIcon.displayName = \"ArrowBigLeftDashIcon\";\n\nexport { ArrowBigLeftDashIcon };\n"
  },
  {
    "path": "icons/arrow-big-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M18 15h-6v4l-7-7 7-7v4h6v6z\", translateX: 0 },\n  animate: {\n    d: \"M18 15h-6v4l-7-7 7-7v4h6v6z\",\n    translateX: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigLeftIcon = forwardRef<\n  ArrowBigLeftIconHandle,\n  ArrowBigLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M18 15h-6v4l-7-7 7-7v4h6v6z\"\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigLeftIcon.displayName = \"ArrowBigLeftIcon\";\n\nexport { ArrowBigLeftIcon };\n"
  },
  {
    "path": "icons/arrow-big-right-dash.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigRightDashIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigRightDashIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DASH_VARIANTS: Variants = {\n  normal: { translateX: 0 },\n  animate: {\n    translateX: [0, 1, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { translateX: 0 },\n  animate: {\n    translateX: [0, 3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigRightDashIcon = forwardRef<\n  ArrowBigRightDashIconHandle,\n  ArrowBigRightDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path animate={controls} d=\"M5 9v6\" variants={DASH_VARIANTS} />\n        <motion.path\n          animate={controls}\n          d=\"M9 9h3V5l7 7-7 7v-4H9V9z\"\n          variants={ARROW_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigRightDashIcon.displayName = \"ArrowBigRightDashIcon\";\n\nexport { ArrowBigRightDashIcon };\n"
  },
  {
    "path": "icons/arrow-big-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M6 9h6V5l7 7-7 7v-4H6V9z\", translateX: 0 },\n  animate: {\n    d: \"M6 9h6V5l7 7-7 7v-4H6V9z\",\n    translateX: [0, 3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigRightIcon = forwardRef<\n  ArrowBigRightIconHandle,\n  ArrowBigRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M6 9h6V5l7 7-7 7v-4H6V9z\"\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigRightIcon.displayName = \"ArrowBigRightIcon\";\n\nexport { ArrowBigRightIcon };\n"
  },
  {
    "path": "icons/arrow-big-up-dash.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigUpDashIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigUpDashIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DASH_VARIANTS: Variants = {\n  normal: { translateY: 0 },\n  animate: {\n    translateY: [0, -1, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { translateY: 0 },\n  animate: {\n    translateY: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigUpDashIcon = forwardRef<\n  ArrowBigUpDashIconHandle,\n  ArrowBigUpDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path animate={controls} d=\"M9 19h6\" variants={DASH_VARIANTS} />\n        <motion.path\n          animate={controls}\n          d=\"M9 15v-3H5l7-7 7 7h-4v3H9z\"\n          variants={ARROW_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowBigUpDashIcon.displayName = \"ArrowBigUpDashIcon\";\n\nexport { ArrowBigUpDashIcon };\n"
  },
  {
    "path": "icons/arrow-big-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowBigUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowBigUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M9 18v-6H5l7-7 7 7h-4v6H9z\", translateY: 0 },\n  animate: {\n    d: \"M9 18v-6H5l7-7 7 7h-4v6H9z\",\n    translateY: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowBigUpIcon = forwardRef<ArrowBigUpIconHandle, ArrowBigUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M9 18v-6H5l7-7 7 7h-4v6H9z\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowBigUpIcon.displayName = \"ArrowBigUpIcon\";\n\nexport { ArrowBigUpIcon };\n"
  },
  {
    "path": "icons/arrow-down-0-1.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDown01IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDown01IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SWAP_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 240,\n  damping: 24,\n};\n\nconst SWAP_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n  },\n  animate: (custom: number) => ({\n    translateY: custom * 10,\n  }),\n};\n\nconst ArrowDown01Icon = forwardRef<ArrowDown01IconHandle, ArrowDown01IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m3 16 4 4 4-4\" />\n          <path d=\"M7 20V4\" />\n          <motion.rect\n            animate={controls}\n            custom={1}\n            height=\"6\"\n            initial=\"normal\"\n            ry=\"2\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n            width=\"4\"\n            x=\"15\"\n            y=\"4\"\n          />\n          <motion.g\n            animate={controls}\n            custom={-1}\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          >\n            <path d=\"M17 20v-6h-2\" />\n            <path d=\"M15 20h4\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowDown01Icon.displayName = \"ArrowDown01con\";\n\nexport { ArrowDown01Icon };\n"
  },
  {
    "path": "icons/arrow-down-1-0.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDown10IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDown10IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SWAP_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 240,\n  damping: 24,\n};\n\nconst SWAP_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n  },\n  animate: (custom: number) => ({\n    translateY: custom * 10,\n  }),\n};\n\nconst ArrowDown10Icon = forwardRef<ArrowDown10IconHandle, ArrowDown10IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m3 16 4 4 4-4\" />\n          <path d=\"M7 20V4\" />\n          <motion.g\n            animate={controls}\n            custom={1}\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          >\n            <path d=\"M17 10V4h-2\" />\n            <path d=\"M15 10h4\" />\n          </motion.g>\n          <motion.rect\n            animate={controls}\n            custom={-1}\n            height=\"6\"\n            initial=\"normal\"\n            ry=\"2\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n            width=\"4\"\n            x=\"15\"\n            y=\"14\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowDown10Icon.displayName = \"ArrowDown10Icon\";\n\nexport { ArrowDown10Icon };\n"
  },
  {
    "path": "icons/arrow-down-a-z.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDownAZIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDownAZIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SWAP_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 240,\n  damping: 24,\n};\n\nconst SWAP_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n  },\n  animate: (custom: number) => ({\n    translateY: custom * 10,\n  }),\n};\n\nconst ArrowDownAZIcon = forwardRef<ArrowDownAZIconHandle, ArrowDownAZIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m3 16 4 4 4-4\" />\n          <path d=\"M7 20V4\" />\n          <motion.g\n            animate={controls}\n            custom={1}\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          >\n            <path d=\"M20 8h-5\" />\n            <path d=\"M15 10V6.5a2.5 2.5 0 0 1 5 0V10\" />\n          </motion.g>\n          <motion.path\n            animate={controls}\n            custom={-1}\n            d=\"M15 14h5l-5 6h5\"\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowDownAZIcon.displayName = \"ArrowDownAZIcon\";\n\nexport { ArrowDownAZIcon };\n"
  },
  {
    "path": "icons/arrow-down-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDownLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDownLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HEAD_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0 },\n  animate: {\n    translateX: [0, 3, 0],\n    translateY: [0, -3, 0],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SHAFT_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0, scale: 1 },\n  animate: {\n    translateX: [0, 3, 0],\n    translateY: [0, -3, 0],\n    scale: [1, 0.85, 1],\n    originX: 1,\n    originY: 1,\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ArrowDownLeftIcon = forwardRef<\n  ArrowDownLeftIconHandle,\n  ArrowDownLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"animate\");\n      onMouseEnter?.(e);\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"normal\");\n      onMouseLeave?.(e);\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M17 17H7V7\"\n          variants={HEAD_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M7 17 L12 12\"\n          variants={SHAFT_VARIANTS}\n        />\n        <path d=\"M17 7 L12 12\" />\n      </svg>\n    </div>\n  );\n});\n\nArrowDownLeftIcon.displayName = \"ArrowDownLeftIcon\";\n\nexport { ArrowDownLeftIcon };\n"
  },
  {
    "path": "icons/arrow-down-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDownRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDownRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HEAD_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0 },\n  animate: {\n    translateX: [0, -3, 0],\n    translateY: [0, -3, 0],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SHAFT_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0, scale: 1 },\n  animate: {\n    translateX: [0, -3, 0],\n    translateY: [0, -3, 0],\n    scale: [1, 0.85, 1],\n    originX: 1,\n    originY: 1,\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ArrowDownRightIcon = forwardRef<\n  ArrowDownRightIconHandle,\n  ArrowDownRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"animate\");\n      onMouseEnter?.(e);\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"normal\");\n      onMouseLeave?.(e);\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M7 7 L17 17\"\n          variants={SHAFT_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M17 7v10H7\"\n          variants={HEAD_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M17 17 L10 17\"\n          variants={HEAD_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nArrowDownRightIcon.displayName = \"ArrowDownRightIcon\";\n\nexport { ArrowDownRightIcon };\n"
  },
  {
    "path": "icons/arrow-down-z-a.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDownZAIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDownZAIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SWAP_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 240,\n  damping: 24,\n};\n\nconst SWAP_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n  },\n  animate: (custom: number) => ({\n    translateY: custom * 10,\n  }),\n};\n\nconst ArrowDownZAIcon = forwardRef<ArrowDownZAIconHandle, ArrowDownZAIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m3 16 4 4 4-4\" />\n          <path d=\"M7 20V4\" />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M15 4h5l-5 6h5\"\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          />\n          <motion.g\n            animate={controls}\n            custom={-1}\n            initial=\"normal\"\n            transition={SWAP_TRANSITION}\n            variants={SWAP_VARIANTS}\n          >\n            <path d=\"M20 18h-5\" />\n            <path d=\"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowDownZAIcon.displayName = \"ArrowDownZAIcon\";\n\nexport { ArrowDownZAIcon };\n"
  },
  {
    "path": "icons/arrow-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m19 12-7 7-7-7\", translateY: 0 },\n  animate: {\n    d: \"m19 12-7 7-7-7\",\n    translateY: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M12 5v14\" },\n  animate: {\n    d: [\"M12 5v14\", \"M12 5v9\", \"M12 5v14\"],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowDownIcon = forwardRef<ArrowDownIconHandle, ArrowDownIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m19 12-7 7-7-7\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 5v14\"\n            variants={SECOND_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowDownIcon.displayName = \"ArrowDownIcon\";\n\nexport { ArrowDownIcon };\n"
  },
  {
    "path": "icons/arrow-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m12 19-7-7 7-7\", translateX: 0 },\n  animate: {\n    d: \"m12 19-7-7 7-7\",\n    translateX: [0, 3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M19 12H5\" },\n  animate: {\n    d: [\"M19 12H5\", \"M19 12H10\", \"M19 12H5\"],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowLeftIcon = forwardRef<ArrowLeftIconHandle, ArrowLeftIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m12 19-7-7 7-7\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M19 12H5\"\n            variants={SECOND_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowLeftIcon.displayName = \"ArrowLeftIcon\";\n\nexport { ArrowLeftIcon };\n"
  },
  {
    "path": "icons/arrow-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M5 12h14\" },\n  animate: {\n    d: [\"M5 12h14\", \"M5 12h9\", \"M5 12h14\"],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst SECONDARY_PATH_VARIANTS: Variants = {\n  normal: { d: \"m12 5 7 7-7 7\", translateX: 0 },\n  animate: {\n    d: \"m12 5 7 7-7 7\",\n    translateX: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowRightIcon = forwardRef<ArrowRightIconHandle, ArrowRightIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M5 12h14\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m12 5 7 7-7 7\"\n            variants={SECONDARY_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowRightIcon.displayName = \"ArrowRightIcon\";\n\nexport { ArrowRightIcon };\n"
  },
  {
    "path": "icons/arrow-up-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowUpLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowUpLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    translateX: 0,\n    translateY: 0,\n  },\n  animate: {\n    scale: [1, 0.85, 1],\n    translateX: [0, 4, 0],\n    translateY: [0, 4, 0],\n    originX: 0,\n    originY: 0,\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ArrowUpLeftIcon = forwardRef<ArrowUpLeftIconHandle, ArrowUpLeftIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\n            <path d=\"M7 7H17\" />\n            <path d=\"M7 7V17\" />\n            <path d=\"M17 17L7 7\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowUpLeftIcon.displayName = \"ArrowUpLeftIcon\";\n\nexport { ArrowUpLeftIcon };\n"
  },
  {
    "path": "icons/arrow-up-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowUpRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowUpRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    translateX: 0,\n    translateY: 0,\n  },\n  animate: {\n    scale: [1, 0.85, 1],\n    translateX: [0, -4, 0],\n    translateY: [0, 4, 0],\n    originX: 1,\n    originY: 0,\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ArrowUpRightIcon = forwardRef<\n  ArrowUpRightIconHandle,\n  ArrowUpRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"animate\");\n      onMouseEnter?.(e);\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) controls.start(\"normal\");\n      onMouseLeave?.(e);\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\n          <path d=\"M7 7H17\" />\n          <path d=\"M17 7V17\" />\n          <path d=\"M7 17L17 7\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nArrowUpRightIcon.displayName = \"ArrowUpRightIcon\";\n\nexport { ArrowUpRightIcon };\n"
  },
  {
    "path": "icons/arrow-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ArrowUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m5 12 7-7 7 7\", translateY: 0 },\n  animate: {\n    d: \"m5 12 7-7 7 7\",\n    translateY: [0, 3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M12 19V5\" },\n  animate: {\n    d: [\"M12 19V5\", \"M12 19V10\", \"M12 19V5\"],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst ArrowUpIcon = forwardRef<ArrowUpIconHandle, ArrowUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m5 12 7-7 7 7\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 19V5\"\n            variants={SECOND_PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nArrowUpIcon.displayName = \"ArrowUpIcon\";\n\nexport { ArrowUpIcon };\n"
  },
  {
    "path": "icons/at-sign.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AtSignIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AtSignIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst AtSignIcon = forwardRef<AtSignIconHandle, AtSignIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"12\"\n            r=\"4\"\n            variants={CIRCLE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAtSignIcon.displayName = \"AtSignIcon\";\n\nexport { AtSignIcon };\n"
  },
  {
    "path": "icons/atom.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AtomIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AtomIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: (custom: number) => ({\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n  animate: (custom: number) => ({\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n};\n\nconst AtomIcon = forwardRef<AtomIconHandle, AtomIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"12\"\n            cy=\"12\"\n            r=\"1\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.3}\n            d=\"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.6}\n            d=\"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAtomIcon.displayName = \"AtomIcon\";\n\nexport { AtomIcon };\n"
  },
  {
    "path": "icons/attach-file.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AttachFileIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AttachFileIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.1,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.1 },\n    },\n  },\n};\n\nconst AttachFileIcon = forwardRef<AttachFileIconHandle, AttachFileIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M6 7.90909V16C6 19.3137 8.68629 22 12 22V22C15.3137 22 18 19.3137 18 16V6C18 3.79086 16.2091 2 14 2V2C11.7909 2 10 3.79086 10 6V15.1818C10 16.2864 10.8954 17.1818 12 17.1818V17.1818C13.1046 17.1818 14 16.2864 14 15.1818V8\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAttachFileIcon.displayName = \"AttachFileIcon\";\n\nexport { AttachFileIcon };\n"
  },
  {
    "path": "icons/audio-lines.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AudioLinesIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AudioLinesIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst AudioLinesIcon = forwardRef<AudioLinesIconHandle, AudioLinesIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2 10v3\" />\n          <motion.path\n            animate={controls}\n            d=\"M6 6v11\"\n            variants={{\n              normal: { d: \"M6 6v11\" },\n              animate: {\n                d: [\"M6 6v11\", \"M6 10v3\", \"M6 6v11\"],\n                transition: {\n                  duration: 1.5,\n                  repeat: Number.POSITIVE_INFINITY,\n                },\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M10 3v18\"\n            variants={{\n              normal: { d: \"M10 3v18\" },\n              animate: {\n                d: [\"M10 3v18\", \"M10 9v5\", \"M10 3v18\"],\n                transition: {\n                  duration: 1,\n                  repeat: Number.POSITIVE_INFINITY,\n                },\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14 8v7\"\n            variants={{\n              normal: { d: \"M14 8v7\" },\n              animate: {\n                d: [\"M14 8v7\", \"M14 6v11\", \"M14 8v7\"],\n                transition: {\n                  duration: 0.8,\n                  repeat: Number.POSITIVE_INFINITY,\n                },\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 5v13\"\n            variants={{\n              normal: { d: \"M18 5v13\" },\n              animate: {\n                d: [\"M18 5v13\", \"M18 7v9\", \"M18 5v13\"],\n                transition: {\n                  duration: 1.5,\n                  repeat: Number.POSITIVE_INFINITY,\n                },\n              },\n            }}\n          />\n          <path d=\"M22 10v3\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nAudioLinesIcon.displayName = \"AudioLinesIcon\";\n\nexport { AudioLinesIcon };\n"
  },
  {
    "path": "icons/axe.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface AxeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface AxeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst AXE_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    rotate: [0, -20, 25, 0],\n    transition: {\n      duration: 0.8,\n      times: [0, 0.6, 0.8, 1],\n      ease: [\"easeInOut\", \"easeOut\", \"easeOut\"],\n    },\n  },\n};\n\nconst AxeIcon = forwardRef<AxeIconHandle, AxeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"0% 100%\", transformBox: \"fill-box\" }}\n          variants={AXE_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m14 12-8.381 8.38a1 1 0 0 1-3.001-3L11 9\" />\n          <path d=\"M15 15.5a.5.5 0 0 0 .5.5A6.5 6.5 0 0 0 22 9.5a.5.5 0 0 0-.5-.5h-1.672a2 2 0 0 1-1.414-.586l-5.062-5.062a1.205 1.205 0 0 0-1.704 0L9.352 5.648a1.205 1.205 0 0 0 0 1.704l5.062 5.062A2 2 0 0 1 15 13.828z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nAxeIcon.displayName = \"AxeIcon\";\n\nexport { AxeIcon };\n"
  },
  {
    "path": "icons/badge-alert.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BadgeAlertIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BadgeAlertIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ICON_VARIANTS: Variants = {\n  normal: { scale: 1, rotate: 0 },\n  animate: {\n    scale: [1, 1.1, 1.1, 1.1, 1],\n    rotate: [0, -3, 3, -2, 2, 0],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.2, 0.4, 0.6, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\nconst BadgeAlertIcon = forwardRef<BadgeAlertIconHandle, BadgeAlertIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={ICON_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\" />\n          <line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" />\n          <line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBadgeAlertIcon.displayName = \"BadgeAlertIcon\";\n\nexport { BadgeAlertIcon };\n"
  },
  {
    "path": "icons/badge-percent.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BadgePercentIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BadgePercentIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 60,\n      damping: 10,\n      duration: 0.5,\n    },\n  },\n  animate: {\n    rotate: 180,\n    transition: {\n      delay: 0.1,\n      type: \"spring\",\n      stiffness: 80,\n      damping: 13,\n    },\n  },\n};\n\nconst BadgePercentIcon = forwardRef<\n  BadgePercentIconHandle,\n  BadgePercentIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"\n          variants={PATH_VARIANTS}\n        />\n        <path d=\"m15 9-6 6\" />\n        <path d=\"M9 9h.01\" />\n        <path d=\"M15 15h.01\" />\n      </svg>\n    </div>\n  );\n});\n\nBadgePercentIcon.displayName = \"BadgePercentIcon\";\n\nexport { BadgePercentIcon };\n"
  },
  {
    "path": "icons/ban.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BanIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BanIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LINE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  slash: () => ({\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  }),\n};\n\nconst BanIcon = forwardRef<BanIconHandle, BanIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          controls.start(\"animate\");\n          controls.start(\"slash\", { delay: 0.5 });\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n          controls.start(\"slash\", { delay: 0.5 });\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"12\"\n            initial=\"normal\"\n            r=\"10\"\n            variants={CIRCLE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m4.9 4.9 14.2 14.2\"\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBanIcon.displayName = \"BanIcon\";\n\nexport { BanIcon };\n"
  },
  {
    "path": "icons/banana.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BananaIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BananaIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.3,\n  delay: 0.1,\n  opacity: { delay: 0.15 },\n};\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: custom * 0.1,\n    },\n  }),\n};\n\nconst BananaIcon = forwardRef<BananaIconHandle, BananaIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5\"\n            transition={TRANSITION}\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z\"\n            transition={TRANSITION}\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBananaIcon.displayName = \"BananaIcon\";\n\nexport { BananaIcon };\n"
  },
  {
    "path": "icons/battery-charging.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryChargingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryChargingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BatteryChargingIcon = forwardRef<\n  BatteryChargingIconHandle,\n  BatteryChargingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935\" />\n        <path d=\"M22 14v-4\" />\n        <path d=\"M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936\" />\n        <motion.path\n          animate={controls}\n          d=\"m11 7-3 5h4l-3 5\"\n          initial=\"normal\"\n          style={{ originX: \"50%\", originY: \"50%\" }}\n          variants={{\n            normal: { scale: 1, opacity: 1 },\n            animate: {\n              scale: [1, 1.2, 1],\n              opacity: [1, 0.8, 1],\n              transition: {\n                duration: 0.8,\n                repeat: Number.POSITIVE_INFINITY,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nBatteryChargingIcon.displayName = \"BatteryChargingIcon\";\n\nexport { BatteryChargingIcon };\n"
  },
  {
    "path": "icons/battery-full.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryFullIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryFullIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  initial: { opacity: 1 },\n  fadeOut: {\n    opacity: 0,\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n    },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      duration: 0.6,\n      delay: i * 0.4,\n      ease: \"easeInOut\",\n    },\n  }),\n};\n\nconst BatteryFullIcon = forwardRef<BatteryFullIconHandle, BatteryFullIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"initial\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"initial\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"10\" rx=\"2\" ry=\"2\" width=\"16\" x=\"2\" y=\"7\" />\n          <line x1=\"22\" x2=\"22\" y1=\"11\" y2=\"13\" />\n          <motion.line\n            animate={controls}\n            custom={0}\n            initial=\"initial\"\n            variants={LINE_VARIANTS}\n            x1=\"6\"\n            x2=\"6\"\n            y1=\"11\"\n            y2=\"13\"\n          />\n          <motion.line\n            animate={controls}\n            custom={1}\n            initial=\"initial\"\n            variants={LINE_VARIANTS}\n            x1=\"10\"\n            x2=\"10\"\n            y1=\"11\"\n            y2=\"13\"\n          />\n          <motion.line\n            animate={controls}\n            custom={2}\n            initial=\"initial\"\n            variants={LINE_VARIANTS}\n            x1=\"14\"\n            x2=\"14\"\n            y1=\"11\"\n            y2=\"13\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBatteryFullIcon.displayName = \"BatteryFullIcon\";\n\nexport { BatteryFullIcon };\n"
  },
  {
    "path": "icons/battery-low.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryLowIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryLowIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  initial: { opacity: 1 },\n  fadeOut: {\n    opacity: 0,\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n    },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      duration: 0.6,\n      delay: i * 0.4,\n      ease: \"easeInOut\",\n    },\n  }),\n};\n\nconst BatteryLowIcon = forwardRef<BatteryLowIconHandle, BatteryLowIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"initial\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"initial\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"10\" rx=\"2\" ry=\"2\" width=\"16\" x=\"2\" y=\"7\" />\n          <line x1=\"22\" x2=\"22\" y1=\"11\" y2=\"13\" />\n          <motion.line\n            animate={controls}\n            custom={0}\n            initial=\"initial\"\n            variants={LINE_VARIANTS}\n            x1=\"6\"\n            x2=\"6\"\n            y1=\"11\"\n            y2=\"13\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBatteryLowIcon.displayName = \"BatteryLowIcon\";\n\nexport { BatteryLowIcon };\n"
  },
  {
    "path": "icons/battery-medium.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryMediumIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryMediumIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  initial: { opacity: 1 },\n  fadeOut: {\n    opacity: 0,\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n    },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      duration: 0.6,\n      delay: i * 0.4,\n      ease: \"easeInOut\",\n    },\n  }),\n};\n\nconst BatteryMediumIcon = forwardRef<\n  BatteryMediumIconHandle,\n  BatteryMediumIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start(\"fadeOut\");\n        controls.start(\"fadeIn\");\n      },\n      stopAnimation: () => controls.start(\"initial\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start(\"fadeOut\");\n        controls.start(\"fadeIn\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"initial\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"10\" rx=\"2\" ry=\"2\" width=\"16\" x=\"2\" y=\"7\" />\n        <line x1=\"22\" x2=\"22\" y1=\"11\" y2=\"13\" />\n        <motion.line\n          animate={controls}\n          custom={0}\n          initial=\"initial\"\n          variants={LINE_VARIANTS}\n          x1=\"6\"\n          x2=\"6\"\n          y1=\"11\"\n          y2=\"13\"\n        />\n        <motion.line\n          animate={controls}\n          custom={1}\n          initial=\"initial\"\n          variants={LINE_VARIANTS}\n          x1=\"10\"\n          x2=\"10\"\n          y1=\"11\"\n          y2=\"13\"\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nBatteryMediumIcon.displayName = \"BatteryMediumIcon\";\n\nexport { BatteryMediumIcon };\n"
  },
  {
    "path": "icons/battery-plus.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryPlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BatteryPlusIcon = forwardRef<BatteryPlusIconHandle, BatteryPlusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.543 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.605\" />\n          <path d=\"M22 14v-4\" />\n          <path d=\"M7.606 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.606\" />\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ originX: \"50%\", originY: \"50%\" }}\n            variants={{\n              normal: { opacity: 1, scale: 1 },\n              animate: {\n                opacity: [1, 0.5, 1],\n                scale: [1, 0.8, 1.2, 1],\n                transition: {\n                  duration: 0.5,\n                  ease: \"easeInOut\",\n                },\n              },\n            }}\n          >\n            <path d=\"M10 9v6\" />\n            <path d=\"M7 12h6\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nBatteryPlusIcon.displayName = \"BatteryPlusIcon\";\n\nexport { BatteryPlusIcon };\n"
  },
  {
    "path": "icons/battery-warning.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryWarningIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryWarningIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BatteryWarningIcon = forwardRef<\n  BatteryWarningIconHandle,\n  BatteryWarningIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M14 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2\" />\n        <path d=\"M22 14v-4\" />\n        <path d=\"M6 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2\" />\n\n        <motion.g\n          animate={controls}\n          initial=\"normal\"\n          style={{ originX: \"50%\", originY: \"50%\" }}\n          variants={{\n            normal: { opacity: 1, scale: 1 },\n            animate: {\n              opacity: [1, 0.4, 1],\n              scale: [1, 1.1, 1],\n              transition: {\n                duration: 0.8,\n                repeat: Number.POSITIVE_INFINITY,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n        >\n          <path d=\"M10 17h.01\" />\n          <path d=\"M10 7v6\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nBatteryWarningIcon.displayName = \"BatteryWarningIcon\";\n\nexport { BatteryWarningIcon };\n"
  },
  {
    "path": "icons/battery.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BatteryIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BatteryIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BatteryIcon = forwardRef<BatteryIconHandle, BatteryIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"12\" rx=\"2\" width=\"16\" x=\"2\" y=\"6\" />\n          <path d=\"M22 14v-4\" />\n\n          <motion.rect\n            animate={controls}\n            fill=\"currentColor\"\n            height=\"8\"\n            initial=\"normal\"\n            rx=\"1\"\n            stroke=\"none\"\n            variants={{\n              normal: { width: 0, opacity: 0 },\n              animate: {\n                width: 12,\n                opacity: 1,\n                transition: { duration: 0.4, ease: \"easeOut\" },\n              },\n            }}\n            x=\"4\"\n            y=\"8\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBatteryIcon.displayName = \"BatteryIcon\";\n\nexport { BatteryIcon };\n"
  },
  {
    "path": "icons/bell-electric.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BellElectricIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BellElectricIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BellElectricIcon = forwardRef<\n  BellElectricIconHandle,\n  BellElectricIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        style={{ transformBox: \"fill-box\", transformOrigin: \"50% 50%\" }}\n        transition={{ duration: 0.9 }}\n        variants={{\n          normal: { rotate: 0, translateX: 0, translateY: 0 },\n          animate: {\n            rotate: [0, -12, 12, -8, 8, 0],\n            translateX: [0, -1.5, 1.5, -1, 1, 0],\n            translateY: [0, -1, 1, -0.5, 0.5, 0],\n          },\n        }}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M18.518 17.347A7 7 0 0 1 14 19\" />\n        <motion.path\n          animate={controls}\n          d=\"M18.8 4A11 11 0 0 1 20 9\"\n          style={{ transformBox: \"fill-box\", originX: \"50%\", originY: \"50%\" }}\n          transition={{ duration: 0.9 }}\n          variants={{\n            normal: { translateX: 0, translateY: 0, rotate: 0 },\n            animate: {\n              translateX: [0, -0.8, 0.8, -0.6, 0.6, 0],\n              translateY: [0, -0.5, 0.5, -0.3, 0.3, 0],\n              rotate: [0, -6, 6, -4, 4, 0],\n            },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M9 9h.01\"\n          style={{ transformBox: \"fill-box\", originX: \"50%\", originY: \"50%\" }}\n          transition={{ duration: 0.75 }}\n          variants={{\n            normal: { translateX: 0, translateY: 0, rotate: 0, scale: 1 },\n            animate: {\n              translateX: [0, -1.6, 1.6, -1.2, 1.2, 0],\n              translateY: [0, -1.2, 1.2, -0.8, 0.8, 0],\n              rotate: [0, -10, 10, -7, 7, 0],\n              scale: [1, 1.08, 0.95, 1.06, 0.98, 1],\n            },\n          }}\n        />\n        <circle cx=\"9\" cy=\"9\" r=\"7\" />\n        <rect height=\"6\" rx=\"2\" width=\"10\" x=\"4\" y=\"16\" />\n        <circle cx=\"20\" cy=\"16\" r=\"2\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nBellElectricIcon.displayName = \"BellElectricIcon\";\n\nexport { BellElectricIcon };\n"
  },
  {
    "path": "icons/bell.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BellIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BellIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: [0, -10, 10, -10, 0] },\n};\n\nconst BellIcon = forwardRef<BellIconHandle, BellIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 0.5,\n            ease: \"easeInOut\",\n          }}\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\n          <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBellIcon.displayName = \"BellIcon\";\n\nexport { BellIcon };\n"
  },
  {
    "path": "icons/blocks.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BlocksIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BlocksIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0 },\n  animate: { translateX: -4, translateY: 4 },\n};\n\nconst BlocksIcon = forwardRef<BlocksIconHandle, BlocksIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3\" />\n          <motion.path\n            animate={controls}\n            d=\"M14 3h7v7h-7z\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBlocksIcon.displayName = \"BlocksIcon\";\n\nexport { BlocksIcon };\n"
  },
  {
    "path": "icons/bluetooth-connected.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BluetoothConnectedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BluetoothConnectedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1, 0.5, 1],\n    transition: {\n      duration: 0.3,\n      delay: 0.2,\n    },\n  },\n};\n\nconst BluetoothConnectedIcon = forwardRef<\n  BluetoothConnectedIconHandle,\n  BluetoothConnectedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m7 7 10 10-5 5V2l5 5L7 17\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.line\n          animate={controls}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n              transition: {\n                duration: 0.4,\n              },\n            },\n          }}\n          x1=\"18\"\n          x2=\"21\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n        <motion.line\n          animate={controls}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [-1, 0],\n              transition: {\n                duration: 0.2,\n              },\n            },\n          }}\n          x1=\"3\"\n          x2=\"6\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nBluetoothConnectedIcon.displayName = \"BluetoothConnectedIcon\";\n\nexport { BluetoothConnectedIcon };\n"
  },
  {
    "path": "icons/bluetooth-off.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BluetoothOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BluetoothOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst OFFLINE_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n  },\n};\n\nconst BluetoothOffIcon = forwardRef<\n  BluetoothOffIconHandle,\n  BluetoothOffIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m17 17-5 5V12l-5 5\"\n          transition={{\n            duration: 0.3,\n          }}\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m2 2 20 20\"\n          transition={{\n            duration: 0.2,\n            delay: 0.3,\n          }}\n          variants={OFFLINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M14.5 9.5 17 7l-5-5v4.5\"\n          transition={{\n            duration: 0.3,\n          }}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nBluetoothOffIcon.displayName = \"BluetoothOffIcon\";\n\nexport { BluetoothOffIcon };\n"
  },
  {
    "path": "icons/bluetooth-searching.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BluetoothSearchingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BluetoothSearchingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    transition: {\n      repeat: 0,\n    },\n  },\n  animate: {\n    scale: [0, 1, 0.8],\n  },\n};\n\nconst SECOND_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0.8, 1],\n    transition: { repeat: Number.POSITIVE_INFINITY },\n  },\n};\n\nconst BluetoothSearchingIcon = forwardRef<\n  BluetoothSearchingIconHandle,\n  BluetoothSearchingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m7 7 10 10-5 5V2l5 5L7 17\"\n          variants={SECOND_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M20.83 14.83a4 4 0 0 0 0-5.66\"\n          transition={{\n            duration: 0.6,\n            delay: 0.2,\n            repeat: Number.POSITIVE_INFINITY,\n          }}\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M18 12h.01\"\n          transition={{\n            duration: 0.6,\n            repeat: Number.POSITIVE_INFINITY,\n          }}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nBluetoothSearchingIcon.displayName = \"BluetoothSearchingIcon\";\n\nexport { BluetoothSearchingIcon };\n"
  },
  {
    "path": "icons/bluetooth.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BluetoothIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BluetoothIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst BluetoothIcon = forwardRef<BluetoothIconHandle, BluetoothIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m7 7 10 10-5 5V2l5 5L7 17\"\n            transition={{ duration: 0.3, ease: \"easeInOut\" }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14.5 9.5 17 7l-5-5v4.5\"\n            transition={{ duration: 0.3, ease: \"easeInOut\" }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBluetoothIcon.displayName = \"BluetoothIcon\";\n\nexport { BluetoothIcon };\n"
  },
  {
    "path": "icons/bold.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BoldIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BoldIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    strokeWidth: 2,\n  },\n  animate: {\n    strokeWidth: 3.5,\n  },\n};\n\nconst BoldIcon = forwardRef<BoldIconHandle, BoldIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\"\n            transition={{ duration: 0.6 }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBoldIcon.displayName = \"BoldIcon\";\n\nexport { BoldIcon };\n"
  },
  {
    "path": "icons/bone.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BoneIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BoneIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, -8, 8, -6, 0],\n    transition: {\n      ease: \"circIn\",\n      rotate: {\n        duration: 0.5,\n      },\n    },\n  },\n};\n\nconst BoneIcon = forwardRef<BoneIconHandle, BoneIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBoneIcon.displayName = \"BoneIcon\";\n\nexport { BoneIcon };\n"
  },
  {
    "path": "icons/book-text.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookTextIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookTextIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BookTextIcon = forwardRef<BookTextIconHandle, BookTextIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            animate: {\n              scale: [1, 1.04, 1],\n              rotate: [0, -8, 8, -8, 0],\n              y: [0, -2, 0],\n              transition: {\n                duration: 0.6,\n                ease: \"easeInOut\",\n                times: [0, 0.2, 0.5, 0.8, 1],\n              },\n            },\n            normal: {\n              scale: 1,\n              rotate: 0,\n              y: 0,\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\" />\n          <path d=\"M8 11h8\" />\n          <path d=\"M8 7h6\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBookTextIcon.displayName = \"BookTextIcon\";\n\nexport { BookTextIcon };\n"
  },
  {
    "path": "icons/bookmark-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookmarkCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookmarkCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BOOKMARK_VARIANTS: Variants = {\n  normal: { scaleY: 1, scaleX: 1 },\n  animate: {\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst CHECK_VARIANTS: Variants = {\n  normal: { opacity: 1, strokeDashoffset: 0 },\n  animate: {\n    strokeDashoffset: [1, 0],\n    opacity: [0, 1],\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst BookmarkCheckIcon = forwardRef<\n  BookmarkCheckIconHandle,\n  BookmarkCheckIconProps\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z\"\n          style={{ originX: 0.5, originY: 0.5 }}\n          variants={BOOKMARK_VARIANTS}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"m9 10 2 2 4-4\"\n          initial=\"normal\"\n          pathLength=\"1\"\n          strokeDasharray=\"1 1\"\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nBookmarkCheckIcon.displayName = \"BookmarkCheckIcon\";\n\nexport { BookmarkCheckIcon };\n"
  },
  {
    "path": "icons/bookmark-minus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookmarkMinusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookmarkMinusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BOOKMARK_VARIANTS: Variants = {\n  normal: { scaleY: 1, scaleX: 1 },\n  animate: {\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst MINUS_VARIANTS: Variants = {\n  normal: { strokeDashoffset: 0, opacity: 1 },\n  animate: {\n    strokeDashoffset: [1, 0],\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst BookmarkMinusIcon = forwardRef<\n  BookmarkMinusIconHandle,\n  BookmarkMinusIconProps\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\"\n          style={{ originX: 0.5, originY: 0.5 }}\n          variants={BOOKMARK_VARIANTS}\n        />\n\n        <motion.line\n          animate={controls}\n          initial=\"normal\"\n          pathLength=\"1\"\n          strokeDasharray=\"1 1\"\n          variants={MINUS_VARIANTS}\n          x1=\"15\"\n          x2=\"9\"\n          y1=\"10\"\n          y2=\"10\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nBookmarkMinusIcon.displayName = \"BookmarkMinusIcon\";\n\nexport { BookmarkMinusIcon };\n"
  },
  {
    "path": "icons/bookmark-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookmarkPlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookmarkPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BOOKMARK_VARIANTS: Variants = {\n  normal: { scaleY: 1, scaleX: 1 },\n  animate: {\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst PLUS_LINE_VARIANTS: Variants = {\n  normal: { strokeDashoffset: 0, opacity: 1 },\n  animate: (i: number) => ({\n    strokeDashoffset: [1, 0],\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst BookmarkPlusIcon = forwardRef<\n  BookmarkPlusIconHandle,\n  BookmarkPlusIconProps\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\"\n          style={{ originX: 0.5, originY: 0.5 }}\n          variants={BOOKMARK_VARIANTS}\n        />\n\n        <motion.line\n          animate={controls}\n          custom={0}\n          initial=\"normal\"\n          pathLength=\"1\"\n          strokeDasharray=\"1 1\"\n          variants={PLUS_LINE_VARIANTS}\n          x1=\"12\"\n          x2=\"12\"\n          y1=\"7\"\n          y2=\"13\"\n        />\n        <motion.line\n          animate={controls}\n          custom={1}\n          initial=\"normal\"\n          pathLength=\"1\"\n          strokeDasharray=\"1 1\"\n          variants={PLUS_LINE_VARIANTS}\n          x1=\"15\"\n          x2=\"9\"\n          y1=\"10\"\n          y2=\"10\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nBookmarkPlusIcon.displayName = \"BookmarkPlusIcon\";\n\nexport { BookmarkPlusIcon };\n"
  },
  {
    "path": "icons/bookmark-x.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookmarkXIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookmarkXIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BOOKMARK_VARIANTS: Variants = {\n  normal: { scaleY: 1, scaleX: 1 },\n  animate: {\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst X_LINE_VARIANTS: Variants = {\n  normal: { strokeDashoffset: 0, opacity: 1 },\n  animate: (i: number) => ({\n    strokeDashoffset: [1, 0],\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst BookmarkXIcon = forwardRef<BookmarkXIconHandle, BookmarkXIconProps>(\n  ({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z\"\n            style={{ originX: 0.5, originY: 0.5 }}\n            variants={BOOKMARK_VARIANTS}\n          />\n\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"m14.5 7.5-5 5\"\n            initial=\"normal\"\n            pathLength=\"1\"\n            strokeDasharray=\"1 1\"\n            variants={X_LINE_VARIANTS}\n          />\n\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"m9.5 7.5 5 5\"\n            initial=\"normal\"\n            pathLength=\"1\"\n            strokeDasharray=\"1 1\"\n            variants={X_LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBookmarkXIcon.displayName = \"BookmarkXIcon\";\n\nexport { BookmarkXIcon };\n"
  },
  {
    "path": "icons/bookmark.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BookmarkIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BookmarkIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BOOKMARK_VARIANTS: Variants = {\n  normal: { scaleY: 1, scaleX: 1 },\n  animate: {\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\n    transition: {\n      duration: 0.6,\n      ease: \"easeOut\",\n    },\n  },\n};\n\nconst BookmarkIcon = forwardRef<BookmarkIconHandle, BookmarkIconProps>(\n  ({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\"\n            style={{ originY: 0.5, originX: 0.5 }}\n            variants={BOOKMARK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBookmarkIcon.displayName = \"BookmarkIcon\";\n\nexport { BookmarkIcon };\n"
  },
  {
    "path": "icons/bot-message-square.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BotMessageSquareHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BotMessageSquareProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nexport const BotMessageSquareIcon = forwardRef<\n  BotMessageSquareHandle,\n  BotMessageSquareProps\n>(({ className, onMouseEnter, onMouseLeave, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(\"inline-flex items-center justify-center\", className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={{\n          normal: { rotate: 0, y: 0, scale: 1 },\n          animate: {\n            rotate: [0, -3, 3, 0, 0],\n            y: [0, 1.5, -1.5, 0],\n            scale: [1, 1.03, 1],\n            transition: {\n              duration: 1,\n              ease: \"easeInOut\",\n              repeat: 0,\n            },\n          },\n        }}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M12 6V2H8\" />\n        <path d=\"M2 12h2\" />\n        <path d=\"M20 12h2\" />\n        <motion.path\n          d=\"M20 16a2 2 0 0 1-2 2H8.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 4 20.286V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z\"\n          variants={{\n            normal: { scale: 1, originX: 0.5, originY: 0.5 },\n            animate: {\n              scale: [1, 1.04, 1],\n              transition: {\n                duration: 0.6,\n                ease: \"easeInOut\",\n                repeat: 1,\n              },\n            },\n          }}\n        />\n        <motion.path\n          d=\"M9 11v2\"\n          variants={{\n            normal: { scaleY: 1, originY: 0.5 },\n            animate: {\n              scaleY: [1, 0.1, 1],\n              transition: { duration: 0.4, ease: \"easeInOut\", delay: 0.1 },\n            },\n          }}\n        />\n        <motion.path\n          d=\"M15 11v2\"\n          variants={{\n            normal: { scaleY: 1, originY: 0.5 },\n            animate: {\n              scaleY: [1, 0.1, 1],\n              transition: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n            },\n          }}\n        />\n        <motion.circle\n          cx=\"10\"\n          cy=\"18\"\n          r=\"0.5\"\n          variants={{\n            normal: { opacity: 0 },\n            animate: {\n              opacity: [0.3, 1, 0.3],\n              transition: {\n                repeat: Number.POSITIVE_INFINITY,\n                duration: 1.2,\n                delay: 0,\n              },\n            },\n          }}\n        />\n        <motion.circle\n          cx=\"12\"\n          cy=\"18\"\n          r=\"0.5\"\n          variants={{\n            normal: { opacity: 0 },\n            animate: {\n              opacity: [0.3, 1, 0.3],\n              transition: {\n                repeat: Number.POSITIVE_INFINITY,\n                duration: 1.2,\n                delay: 0.3,\n              },\n            },\n          }}\n        />\n        <motion.circle\n          cx=\"14\"\n          cy=\"18\"\n          r=\"0.5\"\n          variants={{\n            normal: { opacity: 0 },\n            animate: {\n              opacity: [0.3, 1, 0.3],\n              transition: {\n                repeat: Number.POSITIVE_INFINITY,\n                duration: 1.2,\n                delay: 0.6,\n              },\n            },\n          }}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nBotMessageSquareIcon.displayName = \"BotMessageSquareIcon\";\n"
  },
  {
    "path": "icons/bot.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BotIcon = forwardRef<BotIconHandle, BotIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 8V4H8\" />\n          <rect height=\"12\" rx=\"2\" width=\"16\" x=\"4\" y=\"8\" />\n          <path d=\"M2 14h2\" />\n          <path d=\"M20 14h2\" />\n\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={{\n              normal: { y1: 13, y2: 15 },\n              animate: {\n                y1: [13, 14, 13],\n                y2: [15, 14, 15],\n                transition: {\n                  duration: 0.5,\n                  ease: \"easeInOut\",\n                  delay: 0.2,\n                },\n              },\n            }}\n            x1={15}\n            x2={15}\n          />\n\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={{\n              normal: { y1: 13, y2: 15 },\n              animate: {\n                y1: [13, 14, 13],\n                y2: [15, 14, 15],\n                transition: {\n                  duration: 0.5,\n                  ease: \"easeInOut\",\n                  delay: 0.2,\n                },\n              },\n            }}\n            x1={9}\n            x2={9}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBotIcon.displayName = \"Bot\";\n\nexport { BotIcon };\n"
  },
  {
    "path": "icons/box.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BoxIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BoxIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst BoxIcon = forwardRef<BoxIconHandle, BoxIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m3.3 7 8.7 5 8.7-5\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 22V12\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBoxIcon.displayName = \"BoxIcon\";\n\nexport { BoxIcon };\n"
  },
  {
    "path": "icons/boxes.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BoxesIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BoxesIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BoxesIcon = forwardRef<BoxesIconHandle, BoxesIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z m4.03 3.58 -4.74 -2.85 m4.74 2.85 5-3 m-5 3v5.17\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: -1.5, translateY: 1.5 },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z m5 3-5-3 m5 3 4.74-2.85 M17 16.5v5.17\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: 1.5, translateY: 1.5 },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z M12 8 7.26 5.15 m4.74 2.85 4.74-2.85 M12 13.5V8\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: 0, translateY: -1.5 },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nBoxesIcon.displayName = \"BoxesIcon\";\n\nexport { BoxesIcon };\n"
  },
  {
    "path": "icons/brain.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface BrainIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface BrainIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BRAIN_STEM_VARIANTS: Variants = {\n  normal: { pathLength: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [1, 0.4, 1],\n    pathOffset: [0, 0.25, 0],\n    transition: {\n      duration: 1.4,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\",\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BRAIN_SIDE_VARIANTS: Variants = {\n  normal: { pathLength: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [1, 0.5, 1],\n    pathOffset: [0, 0.25, 0],\n    transition: {\n      duration: 1.4,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\",\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BRAIN_TOP_ARC_VARIANTS: Variants = {\n  normal: { pathLength: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [1, 0.8, 1],\n    pathOffset: [0, 0.07, 0],\n    transition: {\n      duration: 1.4,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\",\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BRAIN_LOWER_ARC_VARIANTS: Variants = {\n  normal: { pathLength: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [1, 0.8, 1],\n    pathOffset: [0, 0.14, 0],\n    transition: {\n      duration: 1.4,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\",\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BrainIcon = forwardRef<BrainIconHandle, BrainIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth={2}\n          variants={{\n            normal: {\n              scale: 1,\n              strokeWidth: 2,\n            },\n            animate: {\n              scale: [1, 1.08, 1],\n              strokeWidth: [2, 2.25, 2],\n              transition: {\n                duration: 1.4,\n                repeat: Number.POSITIVE_INFINITY,\n                repeatType: \"mirror\",\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M12 18V5\"\n            variants={BRAIN_STEM_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\"\n            variants={BRAIN_SIDE_VARIANTS}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M12 5A3 3 0 1 1 17.598 6.5\"\n            variants={BRAIN_TOP_ARC_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 5A3 3 0 1 0 6.402 6.5\"\n            variants={BRAIN_TOP_ARC_VARIANTS}\n          />\n\n          <path d=\"M17.997 5.125a4 4 0 0 1 2.526 5.77\" />\n\n          <motion.path\n            animate={controls}\n            d=\"M18 18a4 4 0 0 0 2-7.464\"\n            variants={BRAIN_LOWER_ARC_VARIANTS}\n          />\n\n          <path d=\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\" />\n\n          <motion.path\n            animate={controls}\n            d=\"M6 18a4 4 0 0 1-2-7.464\"\n            variants={BRAIN_LOWER_ARC_VARIANTS}\n          />\n          <path d=\"M6.003 5.125a4 4 0 0 0-2.526 5.77\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nBrainIcon.displayName = \"BrainIcon\";\n\nexport { BrainIcon };\n"
  },
  {
    "path": "icons/calendar-check-2.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CalendarCheck2IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CalendarCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst CalendarCheck2Icon = forwardRef<\n  CalendarCheck2IconHandle,\n  CalendarCheck2IconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M8 2v4\" />\n        <path d=\"M16 2v4\" />\n        <path d=\"M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8\" />\n        <path d=\"M3 10h18\" />\n        <motion.path\n          animate={controls}\n          d=\"m16 20 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCalendarCheck2Icon.displayName = \"CalendarCheck2Icon\";\n\nexport { CalendarCheck2Icon };\n"
  },
  {
    "path": "icons/calendar-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CalendarCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CalendarCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst CalendarCheckIcon = forwardRef<\n  CalendarCheckIconHandle,\n  CalendarCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M8 2v4\" />\n        <path d=\"M16 2v4\" />\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"4\" />\n        <path d=\"M3 10h18\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 16 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCalendarCheckIcon.displayName = \"CalendarCheckIcon\";\n\nexport { CalendarCheckIcon };\n"
  },
  {
    "path": "icons/calendar-cog.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CalendarCogIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CalendarCogIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: 180 },\n};\n\nconst CalendarCogIcon = forwardRef<CalendarCogIconHandle, CalendarCogIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M21 10.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\" />\n          <path d=\"M16 2v4\" />\n          <path d=\"M3 10h18\" />\n          <path d=\"M8 2v4\" />\n          <motion.g\n            animate={controls}\n            transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n            variants={G_VARIANTS}\n          >\n            <path d=\"m15.2 16.9-.9-.4\" />\n            <path d=\"m15.2 19.1-.9.4\" />\n            <path d=\"m16.9 15.2-.4-.9\" />\n            <path d=\"m16.9 20.8-.4.9\" />\n            <path d=\"m19.5 14.3-.4.9\" />\n            <path d=\"m19.5 21.7-.4-.9\" />\n            <path d=\"m21.7 16.5-.9.4\" />\n            <path d=\"m21.7 19.5-.9-.4\" />\n            <circle cx=\"18\" cy=\"18\" r=\"3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCalendarCogIcon.displayName = \"CalendarCogIcon\";\n\nexport { CalendarCogIcon };\n"
  },
  {
    "path": "icons/calendar-days.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { AnimatePresence, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CalendarDaysIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CalendarDaysIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOTS = [\n  { cx: 8, cy: 14 },\n  { cx: 12, cy: 14 },\n  { cx: 16, cy: 14 },\n  { cx: 8, cy: 18 },\n  { cx: 12, cy: 18 },\n  { cx: 16, cy: 18 },\n];\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: {\n      duration: 0.2,\n    },\n  },\n  animate: (i: number) => ({\n    opacity: [1, 0.3, 1],\n    transition: {\n      delay: i * 0.1,\n      duration: 0.4,\n      times: [0, 0.5, 1],\n    },\n  }),\n};\n\nconst CalendarDaysIcon = forwardRef<\n  CalendarDaysIconHandle,\n  CalendarDaysIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M8 2v4\" />\n        <path d=\"M16 2v4\" />\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"4\" />\n        <path d=\"M3 10h18\" />\n        <AnimatePresence>\n          {DOTS.map((dot, index) => (\n            <motion.circle\n              animate={controls}\n              custom={index}\n              cx={dot.cx}\n              cy={dot.cy}\n              fill=\"currentColor\"\n              initial=\"normal\"\n              key={`${dot.cx}-${dot.cy}`}\n              r=\"1\"\n              stroke=\"none\"\n              variants={VARIANTS}\n            />\n          ))}\n        </AnimatePresence>\n      </svg>\n    </div>\n  );\n});\n\nCalendarDaysIcon.displayName = \"CalendarDaysIcon\";\n\nexport { CalendarDaysIcon };\n"
  },
  {
    "path": "icons/cart.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CartIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CartIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CART_VARIANTS: Variants = {\n  normal: { scale: 1 },\n  animate: {\n    scale: 1.1,\n    y: [0, -5, 0],\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n      y: { repeat: 1, delay: 0.1, duration: 0.4 },\n    },\n  },\n};\n\nconst CartIcon = forwardRef<CartIconHandle, CartIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ duration: 0.2 }}\n          variants={CART_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M6.29977 5H21L19 12H7.37671M20 16H8L6 3H3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nCartIcon.displayName = \"CartIcon\";\n\nexport { CartIcon };\n"
  },
  {
    "path": "icons/cast.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CastIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CastIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (custom: number) => ({\n    opacity: [0, 1],\n    transition: {\n      delay: custom,\n      duration: 0.5,\n    },\n  }),\n};\n\nconst CastIcon = forwardRef<CastIconHandle, CastIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\" />\n          <motion.path\n            animate={controls}\n            custom={0.2}\n            d=\"M2 12a9 9 0 0 1 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.1}\n            d=\"M2 16a5 5 0 0 1 4 4\"\n            variants={VARIANTS}\n          />\n          <motion.line\n            animate={controls}\n            custom={0}\n            variants={VARIANTS}\n            x1=\"2\"\n            x2=\"2.01\"\n            y1=\"20\"\n            y2=\"20\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCastIcon.displayName = \"CastIcon\";\n\nexport { CastIcon };\n"
  },
  {
    "path": "icons/cctv.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CctvIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CctvIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CCTV_GROUP_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    y: 0,\n    x: 0,\n  },\n  animate: {\n    rotate: [0, -20, -20, 15, 15, 0],\n    y: [0, -0.5, -0.5, 0, 0, 0],\n    x: [0, 0, 0, 0.5, 0.5, 0],\n    transition: {\n      duration: 1.8,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CCTV_PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0, 1, 0, 1, 0, 1],\n    transition: {\n      duration: 1.8,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CctvIcon = forwardRef<CctvIconHandle, CctvIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            initial=\"initial\"\n            variants={CCTV_GROUP_VARIANTS}\n          >\n            <path d=\"M16.75 12h3.632a1 1 0 0 1 .894 1.447l-2.034 4.069a1 1 0 0 1-1.708.134l-2.124-2.97\" />\n            <path d=\"M17.106 9.053a1 1 0 0 1 .447 1.341l-3.106 6.211a1 1 0 0 1-1.342.447L3.61 12.3a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3z\" />\n            <motion.path\n              animate={controls}\n              d=\"M7 9h.01\"\n              variants={CCTV_PATH_VARIANTS}\n            />\n          </motion.g>\n          <path d=\"M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15\" />\n          <path d=\"M2 21v-4\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCctvIcon.displayName = \"CctvIcon\";\n\nexport { CctvIcon };\n"
  },
  {
    "path": "icons/chart-bar-decreasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartBarDecreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartBarDecreasingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartBarDecreasingIcon = forwardRef<\n  ChartBarDecreasingIconHandle,\n  ChartBarDecreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M7 11h8\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M7 16h3\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M7 6h12\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartBarDecreasingIcon.displayName = \"ChartBarDecreasingIcon\";\n\nexport { ChartBarDecreasingIcon };\n"
  },
  {
    "path": "icons/chart-bar-increasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartBarIncreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartBarIncreasingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartBarIncreasingIcon = forwardRef<\n  ChartBarIncreasingIconHandle,\n  ChartBarIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M7 11h8\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M7 16h12\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M7 6h3\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartBarIncreasingIcon.displayName = \"ChartBarIncreasingIcon\";\n\nexport { ChartBarIncreasingIcon };\n"
  },
  {
    "path": "icons/chart-column-decreasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartColumnDecreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartColumnDecreasingIconProps\n  extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartColumnDecreasingIcon = forwardRef<\n  ChartColumnDecreasingIconHandle,\n  ChartColumnDecreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M13 17V9\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M18 17v-3\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M8 17V5\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartColumnDecreasingIcon.displayName = \"ChartColumnDecreasingIcon\";\n\nexport { ChartColumnDecreasingIcon };\n"
  },
  {
    "path": "icons/chart-column-increasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartColumnIncreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartColumnIncreasingIconProps\n  extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartColumnIncreasingIcon = forwardRef<\n  ChartColumnIncreasingIconHandle,\n  ChartColumnIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M13 17V9\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M18 17V5\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M8 17v-3\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartColumnIncreasingIcon.displayName = \"ChartColumnIncreasingIcon\";\n\nexport { ChartColumnIncreasingIcon };\n"
  },
  {
    "path": "icons/chart-line.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartLineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15,\n      duration: 0.3,\n      opacity: { delay: 0.1 },\n    },\n  },\n};\n\nconst ChartLineIcon = forwardRef<ChartLineIconHandle, ChartLineIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n          <motion.path\n            animate={controls}\n            d=\"m7 13 3-3 4 4 5-5\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChartLineIcon.displayName = \"ChartLineIcon\";\n\nexport { ChartLineIcon };\n"
  },
  {
    "path": "icons/chart-no-axes-column-decreasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartNoAxesColumnDecreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartNoAxesColumnDecreasingIconProps\n  extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartNoAxesColumnDecreasingIcon = forwardRef<\n  ChartNoAxesColumnDecreasingIconHandle,\n  ChartNoAxesColumnDecreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M6 20V4\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M12 20V10\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M18 20v-4\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartNoAxesColumnDecreasingIcon.displayName = \"ChartNoAxesColumnDecreasingIcon\";\n\nexport { ChartNoAxesColumnDecreasingIcon };\n"
  },
  {
    "path": "icons/chart-no-axes-column-increasing.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartNoAxesColumnIncreasingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartNoAxesColumnIncreasingIconProps\n  extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartNoAxesColumnIncreasingIcon = forwardRef<\n  ChartNoAxesColumnIncreasingIconHandle,\n  ChartNoAxesColumnIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      },\n      stopAnimation: () => controls.start(\"visible\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start((i) => ({\n          pathLength: 0,\n          opacity: 0,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n        await controls.start((i) => ({\n          pathLength: 1,\n          opacity: 1,\n          transition: { delay: i * 0.1, duration: 0.3 },\n        }));\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M6 20v-4\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M12 20v-10\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M18 20v-16\"\n          initial=\"visible\"\n          variants={LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChartNoAxesColumnIncreasingIcon.displayName = \"ChartNoAxesColumnIncreasingIcon\";\n\nexport { ChartNoAxesColumnIncreasingIcon };\n"
  },
  {
    "path": "icons/chart-pie.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartPieIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartPieIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0 },\n  animate: { translateX: 1.1, translateY: -1.1 },\n};\n\nconst ChartPieIcon = forwardRef<ChartPieIconHandle, ChartPieIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z\"\n            transition={{\n              type: \"spring\",\n              stiffness: 250,\n              damping: 15,\n              bounce: 0.6,\n            }}\n            variants={PATH_VARIANTS}\n          />\n          <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChartPieIcon.displayName = \"ChartPieIcon\";\n\nexport { ChartPieIcon };\n"
  },
  {
    "path": "icons/chart-scatter.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartScatterIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartScatterIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOT_VARIANTS: Variants = {\n  visible: (i: number) => ({\n    opacity: 1,\n    transition: {\n      delay: i * 0.15,\n      duration: 0.3,\n    },\n  }),\n  hidden: {\n    opacity: 0,\n    transition: {\n      duration: 0.2,\n    },\n  },\n  default: { opacity: 1 },\n};\n\nconst ChartScatterIcon = forwardRef<\n  ChartScatterIconHandle,\n  ChartScatterIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: async () => {\n        await controls.start(\"hidden\");\n        await controls.start(\"visible\");\n      },\n      stopAnimation: async () => controls.start(\"default\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start(\"hidden\");\n        await controls.start(\"visible\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        await controls.start(\"default\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"default\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          custom={0}\n          cx=\"7.5\"\n          cy=\"7.5\"\n          fill=\"currentColor\"\n          r=\".5\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.circle\n          custom={1}\n          cx=\"18.5\"\n          cy=\"5.5\"\n          fill=\"currentColor\"\n          r=\".5\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.circle\n          custom={2}\n          cx=\"11.5\"\n          cy=\"11.5\"\n          fill=\"currentColor\"\n          r=\".5\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.circle\n          custom={3}\n          cx=\"7.5\"\n          cy=\"16.5\"\n          fill=\"currentColor\"\n          r=\".5\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.circle\n          custom={4}\n          cx=\"17.5\"\n          cy=\"14.5\"\n          fill=\"currentColor\"\n          r=\".5\"\n          variants={DOT_VARIANTS}\n        />\n        <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" strokeWidth=\"2\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nChartScatterIcon.displayName = \"ChartScatterIcon\";\n\nexport { ChartScatterIcon };\n"
  },
  {
    "path": "icons/chart-spline.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChartSplineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChartSplineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15,\n      duration: 0.3,\n      opacity: { delay: 0.1 },\n    },\n  },\n};\n\nconst ChartSplineIcon = forwardRef<ChartSplineIconHandle, ChartSplineIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n          <motion.path\n            animate={controls}\n            d=\"M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChartSplineIcon.displayName = \"ChartSplineIcon\";\n\nexport { ChartSplineIcon };\n"
  },
  {
    "path": "icons/check-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CheckCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CheckCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    scale: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: (custom: number) => ({\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    scale: [0.5, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n      delay: 0.1 * custom,\n    },\n  }),\n};\n\nconst CheckCheckIcon = forwardRef<CheckCheckIconHandle, CheckCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M2 12 7 17L18 6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M13 16L14.5 17.5L22 10\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCheckCheckIcon.displayName = \"CheckCheckIcon\";\n\nexport { CheckCheckIcon };\n"
  },
  {
    "path": "icons/check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    scale: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    scale: [0.5, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst CheckIcon = forwardRef<CheckIconHandle, CheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M4 12 9 17L20 6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCheckIcon.displayName = \"CheckIcon\";\n\nexport { CheckIcon };\n"
  },
  {
    "path": "icons/chess-bishop.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation, type Variants } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChessBishopIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChessBishopIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BISHOP_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n    rotate: 0,\n    opacity: 1,\n    transition: { type: \"spring\", stiffness: 220, damping: 18 },\n  },\n  animate: {\n    x: [0, -6, -6, -6, 6, 6, 6, 0],\n    y: [0, -6, -6, -6, 6, 6, 6, 0],\n    rotate: [0, -16, -16, -16, 16, 16, 4, 0],\n    opacity: [1, 1, 0, 0, 0, 0, 1, 1],\n    transition: {\n      duration: 1.4,\n      times: [0, 0.28, 0.38, 0.45, 0.5, 0.58, 0.72, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ChessBishopIcon = forwardRef<ChessBishopIconHandle, ChessBishopIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformBox: \"view-box\", transformOrigin: \"12px 12px\" }}\n            variants={BISHOP_VARIANTS}\n          >\n            <path d=\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\" />\n            <path d=\"M15 18c1.5-.615 3-2.461 3-4.923C18 8.769 14.5 4.462 12 2 9.5 4.462 6 8.77 6 13.077 6 15.539 7.5 17.385 9 18\" />\n            <path d=\"m16 7-2.5 2.5\" />\n            <path d=\"M9 2h6\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nChessBishopIcon.displayName = \"ChessBishopIcon\";\n\nexport { ChessBishopIcon };\n"
  },
  {
    "path": "icons/chess-king.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation, type Variants } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChessKingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChessKingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KING_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    y: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 160,\n      damping: 14,\n    },\n  },\n  animate: {\n    rotate: [0, -10, 10, -6, 6, -2, 0],\n    y: [0, -3, -3, -2, -2, -1, 0],\n    transition: {\n      duration: 1.1,\n      times: [0, 0.18, 0.38, 0.55, 0.7, 0.85, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ChessKingIcon = forwardRef<ChessKingIconHandle, ChessKingIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformBox: \"view-box\", transformOrigin: \"12px 22px\" }}\n            variants={KING_VARIANTS}\n          >\n            <path d=\"M4 20a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1z\" />\n            <path d=\"m6.7 18-1-1C4.35 15.682 3 14.09 3 12a5 5 0 0 1 4.95-5c1.584 0 2.7.455 4.05 1.818C13.35 7.455 14.466 7 16.05 7A5 5 0 0 1 21 12c0 2.082-1.359 3.673-2.7 5l-1 1\" />\n            <path d=\"M10 4h4\" />\n            <path d=\"M12 2v6.818\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nChessKingIcon.displayName = \"ChessKingIcon\";\n\nexport { ChessKingIcon };\n"
  },
  {
    "path": "icons/chess-knight.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation, type Variants } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChessKnightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChessKnightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KNIGHT_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    y: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 220,\n      damping: 12,\n    },\n  },\n  animate: {\n    rotate: [0, 12, 38, 42, 38, 10, -5, 0],\n    y: [0, -2, -9, -12, -9, -2, 1, 0],\n    transition: {\n      duration: 0.9,\n      times: [0, 0.1, 0.3, 0.45, 0.6, 0.78, 0.9, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ChessKnightIcon = forwardRef<ChessKnightIconHandle, ChessKnightIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlled = !!ref;\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      }),\n      [controls]\n    );\n\n    const handleMouseEnter = useCallback(\n      (e: MouseEvent<HTMLDivElement>) => {\n        if (isControlled) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, isControlled, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: MouseEvent<HTMLDivElement>) => {\n        if (isControlled) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, isControlled, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformBox: \"view-box\", transformOrigin: \"12px 22px\" }}\n            variants={KNIGHT_VARIANTS}\n          >\n            <path d=\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\" />\n            <path d=\"M16.5 18c1-2 2.5-5 2.5-9a7 7 0 0 0-7-7H6.635a1 1 0 0 0-.768 1.64L7 5l-2.32 5.802a2 2 0 0 0 .95 2.526l2.87 1.456\" />\n            <path d=\"m15 5 1.425-1.425\" />\n            <path d=\"m17 8 1.53-1.53\" />\n            <path d=\"M9.713 12.185 7 18\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nChessKnightIcon.displayName = \"ChessKnightIcon\";\n\nexport { ChessKnightIcon };\n"
  },
  {
    "path": "icons/chess-pawn.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation, type Variants } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChessPawnIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChessPawnIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HEAD_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n    scale: 1,\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 180,\n      damping: 16,\n    },\n  },\n  animate: {\n    x: [0, -5, 5, 0],\n    rotate: [0, -15, 15, 0],\n    transition: {\n      duration: 2.4,\n      times: [0, 0.33, 0.66, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BODY_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 260,\n      damping: 16,\n    },\n  },\n  animate: {\n    rotate: [0, 5, 5, 5, 3, 0],\n    transition: {\n      duration: 1.8,\n      times: [0, 0.08, 0.3, 0.52, 0.72, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ChessPawnIcon = forwardRef<ChessPawnIconHandle, ChessPawnIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const headControls = useAnimation();\n    const bodyControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => {\n          headControls.start(\"animate\");\n          bodyControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          headControls.start(\"normal\");\n          bodyControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          headControls.start(\"animate\");\n          bodyControls.start(\"animate\");\n        }\n      },\n      [headControls, bodyControls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          headControls.start(\"normal\");\n          bodyControls.start(\"normal\");\n        }\n      },\n      [headControls, bodyControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={bodyControls}\n            initial=\"normal\"\n            style={{ transformBox: \"view-box\", transformOrigin: \"12px 21px\" }}\n            variants={BODY_VARIANTS}\n          >\n            <path d=\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\" />\n            <path d=\"m14.5 10 1.5 8\" />\n            <path d=\"M7 10h10\" />\n            <path d=\"m8 18 1.5-8\" />\n          </motion.g>\n          <motion.circle\n            animate={headControls}\n            cx=\"12\"\n            cy=\"6\"\n            initial=\"normal\"\n            r=\"4\"\n            style={{ transformBox: \"fill-box\", transformOrigin: \"center\" }}\n            variants={HEAD_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChessPawnIcon.displayName = \"ChessPawnIcon\";\n\nexport { ChessPawnIcon };\n"
  },
  {
    "path": "icons/chevron-down.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst ChevronDownIcon = forwardRef<ChevronDownIconHandle, ChevronDownIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m6 9 6 6 6-6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { y: 0 },\n              animate: { y: [0, 2, 0] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChevronDownIcon.displayName = \"ChevronDownIcon\";\n\nexport { ChevronDownIcon };\n"
  },
  {
    "path": "icons/chevron-first.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronFirstIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronFirstIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ChevronFirstIcon = forwardRef<\n  ChevronFirstIconHandle,\n  ChevronFirstIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m17 18-6-6 6-6\"\n          initial=\"normal\"\n          variants={{\n            normal: {\n              translateX: 0,\n              transition: { duration: 0.3, ease: \"easeOut\" },\n            },\n            animate: {\n              translateX: [-2, 1, -1, 0],\n              transition: {\n                duration: 0.6,\n                ease: \"easeInOut\",\n                times: [0, 0.3, 0.7, 1],\n              },\n            },\n          }}\n        />\n\n        <path d=\"M7 6v12\" />\n      </svg>\n    </div>\n  );\n});\n\nChevronFirstIcon.displayName = \"ChevronsDownUpIcon\";\n\nexport { ChevronFirstIcon };\n"
  },
  {
    "path": "icons/chevron-left.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst ChevronLeftIcon = forwardRef<ChevronLeftIconHandle, ChevronLeftIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m15 18-6-6 6-6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x: 0 },\n              animate: { x: [0, -2, 0] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChevronLeftIcon.displayName = \"ChevronLeftIcon\";\n\nexport { ChevronLeftIcon };\n"
  },
  {
    "path": "icons/chevron-right.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst ChevronRightIcon = forwardRef<\n  ChevronRightIconHandle,\n  ChevronRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m9 18 6-6-6-6\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { x: 0 },\n            animate: { x: [0, 2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChevronRightIcon.displayName = \"ChevronRightIcon\";\n\nexport { ChevronRightIcon };\n"
  },
  {
    "path": "icons/chevron-up.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst ChevronUpIcon = forwardRef<ChevronUpIconHandle, ChevronUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m18 15-6-6-6 6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { y: 0 },\n              animate: { y: [0, -2, 0] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChevronUpIcon.displayName = \"ChevronUpIcon\";\n\nexport { ChevronUpIcon };\n"
  },
  {
    "path": "icons/chevrons-down-up.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronsDownUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronsDownUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ChevronsDownUpIcon = forwardRef<\n  ChevronsDownUpIconHandle,\n  ChevronsDownUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m7 20 5-5 5 5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: \"0%\" },\n            animate: { translateY: \"-2px\" },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m7 4 5 5 5-5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: \"0%\" },\n            animate: { translateY: \"2px\" },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChevronsDownUpIcon.displayName = \"ChevronsDownUpIcon\";\n\nexport { ChevronsDownUpIcon };\n"
  },
  {
    "path": "icons/chevrons-left-right.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronsLeftRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronsLeftRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ChevronsLeftRightIcon = forwardRef<\n  ChevronsLeftRightIconHandle,\n  ChevronsLeftRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m9 7-5 5 5 5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: \"0%\" },\n            animate: { translateX: \"-2px\" },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m15 7 5 5-5 5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: \"0%\" },\n            animate: { translateX: \"2px\" },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChevronsLeftRightIcon.displayName = \"ChevronsLeftRightIcon\";\n\nexport { ChevronsLeftRightIcon };\n"
  },
  {
    "path": "icons/chevrons-right-left.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronsRightLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronsRightLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ChevronsRightLeftIcon = forwardRef<\n  ChevronsRightLeftIconHandle,\n  ChevronsRightLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m20 17-5-5 5-5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: \"0%\" },\n            animate: { translateX: \"-2px\" },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m4 17 5-5-5-5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateX: \"0%\" },\n            animate: { translateX: \"2px\" },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChevronsRightLeftIcon.displayName = \"ChevronsRightLeftIcon\";\n\nexport { ChevronsRightLeftIcon };\n"
  },
  {
    "path": "icons/chevrons-up-down.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChevronsUpDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChevronsUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ChevronsUpDownIcon = forwardRef<\n  ChevronsUpDownIconHandle,\n  ChevronsUpDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"m7 15 5 5 5-5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: \"0%\" },\n            animate: { translateY: \"2px\" },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m7 9 5-5 5 5\"\n          initial=\"normal\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { translateY: \"0%\" },\n            animate: { translateY: \"-2px\" },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nChevronsUpDownIcon.displayName = \"ChevronsUpDownIcon\";\n\nexport { ChevronsUpDownIcon };\n"
  },
  {
    "path": "icons/chrome.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChromeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ChromeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.3,\n  opacity: { delay: 0.15 },\n};\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      ...TRANSITION,\n      delay: 0.1 * custom,\n    },\n  }),\n};\n\nconst ChromeIcon = forwardRef<ChromeIconHandle, ChromeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"12\"\n            cy=\"12\"\n            r=\"4\"\n            variants={VARIANTS}\n          />\n          <motion.line\n            animate={controls}\n            custom={3}\n            variants={VARIANTS}\n            x1=\"21.17\"\n            x2=\"12\"\n            y1=\"8\"\n            y2=\"8\"\n          />\n          <motion.line\n            animate={controls}\n            custom={3}\n            variants={VARIANTS}\n            x1=\"3.95\"\n            x2=\"8.54\"\n            y1=\"6.06\"\n            y2=\"14\"\n          />\n          <motion.line\n            animate={controls}\n            custom={3}\n            variants={VARIANTS}\n            x1=\"10.88\"\n            x2=\"15.46\"\n            y1=\"21.94\"\n            y2=\"14\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nChromeIcon.displayName = \"ChromeIcon\";\n\nexport { ChromeIcon };\n"
  },
  {
    "path": "icons/circle-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst CircleCheckIcon = forwardRef<CircleCheckIconHandle, CircleCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"m9 12 2 2 4-4\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCircleCheckIcon.displayName = \"CircleCheckIcon\";\n\nexport { CircleCheckIcon };\n"
  },
  {
    "path": "icons/circle-chevron-down.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleChevronDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst CircleChevronDownIcon = forwardRef<\n  CircleChevronDownIconHandle,\n  CircleChevronDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"m16 10-4 4-4-4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { y: 0 },\n            animate: {\n              y: [0, 2, 0],\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCircleChevronDownIcon.displayName = \"CircleChevronDownIcon\";\n\nexport { CircleChevronDownIcon };\n"
  },
  {
    "path": "icons/circle-chevron-left.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleChevronLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst CircleChevronLeftIcon = forwardRef<\n  CircleChevronLeftIconHandle,\n  CircleChevronLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"m14 16-4-4 4-4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { x: 0 },\n            animate: { x: [0, -2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCircleChevronLeftIcon.displayName = \"CircleChevronLeftIcon\";\n\nexport { CircleChevronLeftIcon };\n"
  },
  {
    "path": "icons/circle-chevron-right.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleChevronRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst CircleChevronRightIcon = forwardRef<\n  CircleChevronRightIconHandle,\n  CircleChevronRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"m10 8 4 4-4 4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { x: 0 },\n            animate: { x: [0, 2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCircleChevronRightIcon.displayName = \"CircleChevronRightIcon\";\n\nexport { CircleChevronRightIcon };\n"
  },
  {
    "path": "icons/circle-chevron-up.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleChevronUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst CircleChevronUpIcon = forwardRef<\n  CircleChevronUpIconHandle,\n  CircleChevronUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"m8 14 4-4 4 4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { y: 0 },\n            animate: {\n              y: [0, -2, 0],\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCircleChevronUpIcon.displayName = \"CircleChevronUpIcon\";\n\nexport { CircleChevronUpIcon };\n"
  },
  {
    "path": "icons/circle-dashed.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleDashedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst CircleDashedIcon = forwardRef<\n  CircleDashedIconHandle,\n  CircleDashedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        {[\n          \"M10.1 2.182a10 10 0 0 1 3.8 0\",\n          \"M13.9 21.818a10 10 0 0 1-3.8 0\",\n          \"M17.609 3.721a10 10 0 0 1 2.69 2.7\",\n          \"M2.182 13.9a10 10 0 0 1 0-3.8\",\n          \"M20.279 17.609a10 10 0 0 1-2.7 2.69\",\n          \"M21.818 10.1a10 10 0 0 1 0 3.8\",\n          \"M3.721 6.391a10 10 0 0 1 2.7-2.69\",\n          \"M6.391 20.279a10 10 0 0 1-2.69-2.7\",\n        ].map((d, index) => (\n          <motion.path\n            animate={controls}\n            custom={index + 1}\n            d={d}\n            key={d}\n            variants={PATH_VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nCircleDashedIcon.displayName = \"CircleDashedIcon\";\n\nexport { CircleDashedIcon };\n"
  },
  {
    "path": "icons/circle-dollar-sign.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleDollarSignIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleDollarSignIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOLLAR_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst DOLLAR_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst CircleDollarSignIcon = forwardRef<\n  CircleDollarSignIconHandle,\n  CircleDollarSignIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8\"\n          initial=\"normal\"\n          variants={DOLLAR_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M12 18V6\"\n          initial=\"normal\"\n          variants={DOLLAR_SECONDARY_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCircleDollarSignIcon.displayName = \"CircleDollarSignIcon\";\n\nexport { CircleDollarSignIcon };\n"
  },
  {
    "path": "icons/circle-help.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CircleHelpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CircleHelpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: [0, -10, 10, -10, 0] },\n};\n\nconst CircleHelpIcon = forwardRef<CircleHelpIconHandle, CircleHelpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.g\n            animate={controls}\n            transition={{\n              duration: 0.5,\n              ease: \"easeInOut\",\n            }}\n            variants={VARIANTS}\n          >\n            <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n            <path d=\"M12 17h.01\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCircleHelpIcon.displayName = \"CircleHelpIcon\";\n\nexport { CircleHelpIcon };\n"
  },
  {
    "path": "icons/clap.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ClapIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ClapIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"4px\",\n    originY: \"20px\",\n  },\n  animate: {\n    rotate: [-10, -10, 0],\n    transition: {\n      duration: 0.8,\n      times: [0, 0.5, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CLAP_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"3px\",\n    originY: \"11px\",\n  },\n  animate: {\n    rotate: [0, -10, 16, 0],\n    transition: {\n      duration: 0.4,\n      times: [0, 0.3, 0.6, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ClapIcon = forwardRef<ClapIconHandle, ClapIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g animate={controls} variants={VARIANTS}>\n            <motion.g animate={controls} variants={CLAP_VARIANTS}>\n              <path d=\"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z\" />\n              <path d=\"m6.2 5.3 3.1 3.9\" />\n              <path d=\"m12.4 3.4 3.1 4\" />\n            </motion.g>\n            <path d=\"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nClapIcon.displayName = \"ClapIcon\";\n\nexport { ClapIcon };\n"
  },
  {
    "path": "icons/clipboard-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ClipboardCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ClipboardCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 0,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.3, ease: \"easeInOut\" },\n      opacity: { duration: 0.3, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst ClipboardCheckIcon = forwardRef<\n  ClipboardCheckIconHandle,\n  ClipboardCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"4\" rx=\"1\" ry=\"1\" width=\"8\" x=\"8\" y=\"2\" />\n        <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 14 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nClipboardCheckIcon.displayName = \"ClipboardCheckIcon\";\n\nexport { ClipboardCheckIcon };\n"
  },
  {
    "path": "icons/clock.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ClockIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ClockIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HAND_TRANSITION: Transition = {\n  duration: 0.6,\n  ease: [0.4, 0, 0.2, 1],\n};\n\nconst HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n  animate: {\n    rotate: 360,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n};\n\nconst MINUTE_HAND_TRANSITION: Transition = {\n  duration: 0.5,\n  ease: \"easeInOut\",\n};\n\nconst MINUTE_HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n  animate: {\n    rotate: 45,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n};\n\nconst ClockIcon = forwardRef<ClockIconHandle, ClockIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={HAND_TRANSITION}\n            variants={HAND_VARIANTS}\n            x1=\"12\"\n            x2=\"12\"\n            y1=\"12\"\n            y2=\"6\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={MINUTE_HAND_TRANSITION}\n            variants={MINUTE_HAND_VARIANTS}\n            x1=\"12\"\n            x2=\"16\"\n            y1=\"12\"\n            y2=\"12\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nClockIcon.displayName = \"ClockIcon\";\n\nexport { ClockIcon };\n"
  },
  {
    "path": "icons/cloud-cog.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudCogIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudCogIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: 180 },\n};\n\nconst CloudCogIcon = forwardRef<CloudCogIconHandle, CloudCogIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\" />\n          <motion.g\n            animate={controls}\n            transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n            variants={G_VARIANTS}\n          >\n            <path d=\"m9.2 15.9-.9-.4\" />\n            <path d=\"m9.2 18.1-.9.4\" />\n            <path d=\"m10.9 14.2-.4-.9\" />\n            <path d=\"m10.9 19.8-.4.9\" />\n            <path d=\"m13.5 13.3-.4.9\" />\n            <path d=\"m13.5 20.7-.4-.9\" />\n            <path d=\"m15.7 15.5-.9.4\" />\n            <path d=\"m15.7 18.5-.9-.4\" />\n            <circle cx=\"12\" cy=\"17\" r=\"3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCloudCogIcon.displayName = \"CloudCogIcon\";\n\nexport { CloudCogIcon };\n"
  },
  {
    "path": "icons/cloud-download.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudDownloadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudDownloadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CLOUD_VARIANTS: Variants = {\n  initial: { y: 2 },\n  active: { y: 0 },\n};\n\nconst CloudDownloadIcon = forwardRef<\n  CloudDownloadIconHandle,\n  CloudDownloadIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"initial\"),\n      stopAnimation: () => controls.start(\"active\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"initial\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"active\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\" />\n        <motion.g\n          animate={controls}\n          transition={{\n            duration: 0.3,\n            ease: [0.68, -0.6, 0.32, 1.6],\n          }}\n          variants={CLOUD_VARIANTS}\n        >\n          <path d=\"M12 13v8l-4-4\" />\n          <path d=\"m12 21 4-4\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nCloudDownloadIcon.displayName = \"CloudDownloadIcon\";\n\nexport { CloudDownloadIcon };\n"
  },
  {
    "path": "icons/cloud-lightning.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudLightningIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudLightningIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CloudLightningIcon = forwardRef<\n  CloudLightningIconHandle,\n  CloudLightningIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973\" />\n        <motion.path\n          animate={controls}\n          d=\"m13 12-3 5h4l-3 5\"\n          initial=\"normal\"\n          variants={{\n            normal: { opacity: 1 },\n            animate: {\n              opacity: [1, 0.4, 1],\n              transition: {\n                duration: 1,\n                repeat: Number.POSITIVE_INFINITY,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nCloudLightningIcon.displayName = \"CloudLightningIcon\";\n\nexport { CloudLightningIcon };\n"
  },
  {
    "path": "icons/cloud-rain-wind.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudRainWindIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudRainWindIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WIND_VARIANTS: Variants = {\n  animate: {\n    transition: {\n      staggerChildren: 0.2,\n    },\n  },\n};\n\nconst WIND_CHILD_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0.2, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CloudRainWindIcon = forwardRef<\n  CloudRainWindIconHandle,\n  CloudRainWindIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n        <motion.g animate={controls} initial=\"normal\" variants={WIND_VARIANTS}>\n          <motion.path d=\"m9.2 22 3-7\" variants={WIND_CHILD_VARIANTS} />\n          <motion.path d=\"m9 13-3 7\" variants={WIND_CHILD_VARIANTS} />\n          <motion.path d=\"m17 13-3 7\" variants={WIND_CHILD_VARIANTS} />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nCloudRainWindIcon.displayName = \"CloudRainWindIcon\";\n\nexport { CloudRainWindIcon };\n"
  },
  {
    "path": "icons/cloud-rain.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudRainIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudRainIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RAIN_VARIANTS: Variants = {\n  animate: {\n    transition: {\n      staggerChildren: 0.2,\n    },\n  },\n};\n\nconst RAIN_CHILD_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0.2, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CloudRainIcon = forwardRef<CloudRainIconHandle, CloudRainIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={RAIN_VARIANTS}\n          >\n            <motion.path d=\"M16 14v6\" variants={RAIN_CHILD_VARIANTS} />\n            <motion.path d=\"M8 14v6\" variants={RAIN_CHILD_VARIANTS} />\n            <motion.path d=\"M12 16v6\" variants={RAIN_CHILD_VARIANTS} />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCloudRainIcon.displayName = \"CloudRainIcon\";\n\nexport { CloudRainIcon };\n"
  },
  {
    "path": "icons/cloud-snow.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudSnowIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudSnowIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SNOWFLAKE_VARIANTS: Variants = {\n  animate: {\n    transition: {\n      staggerChildren: 0.3,\n    },\n  },\n};\n\nconst SNOWFLAKE_CHILD_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0.3, 1],\n    transition: {\n      duration: 1.5,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SNOWFLAKE_PATH = [\n  { id: \"snowflake1\", d: \"M8 15h.01\" },\n  { id: \"snowflake2\", d: \"M8 19h.01\" },\n  { id: \"snowflake3\", d: \"M12 17h.01\" },\n  { id: \"snowflake4\", d: \"M12 21h.01\" },\n  { id: \"snowflake5\", d: \"M16 15h.01\" },\n  { id: \"snowflake6\", d: \"M16 19h.01\" },\n];\n\nconst CloudSnowIcon = forwardRef<CloudSnowIconHandle, CloudSnowIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={SNOWFLAKE_VARIANTS}\n          >\n            {SNOWFLAKE_PATH.map((path) => (\n              <motion.path\n                d={path.d}\n                key={path.id}\n                variants={SNOWFLAKE_CHILD_VARIANTS}\n              />\n            ))}\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCloudSnowIcon.displayName = \"CloudSnowIcon\";\n\nexport { CloudSnowIcon };\n"
  },
  {
    "path": "icons/cloud-sun.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudSunIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudSunIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CLOUD_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    x: [-1, 1, -1, 1, 0],\n    y: [-1, 1, -1, 1, 0],\n    transition: {\n      duration: 1,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SUN_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst CloudSunIcon = forwardRef<CloudSunIconHandle, CloudSunIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const cloudControls = useAnimation();\n    const sunControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          cloudControls.start(\"animate\");\n          sunControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          cloudControls.start(\"normal\");\n          sunControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          cloudControls.start(\"animate\");\n          sunControls.start(\"animate\");\n        }\n      },\n      [cloudControls, sunControls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          cloudControls.start(\"normal\");\n          sunControls.start(\"normal\");\n        }\n      },\n      [cloudControls, sunControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={cloudControls}\n            initial=\"normal\"\n            variants={CLOUD_VARIANTS}\n          >\n            <path d=\"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z\" />\n          </motion.g>\n          {[\n            \"M12 2v2\",\n            \"m4.93 4.93 1.41 1.41\",\n            \"M20 12h2\",\n            \"m19.07 4.93-1.41 1.41\",\n            \"M15.947 12.65a4 4 0 0 0-5.925-4.128\",\n          ].map((d, index) => (\n            <motion.path\n              animate={sunControls}\n              custom={index + 1}\n              d={d}\n              initial=\"normal\"\n              key={d}\n              variants={SUN_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nCloudSunIcon.displayName = \"CloudSunIcon\";\n\nexport { CloudSunIcon };\n"
  },
  {
    "path": "icons/cloud-upload.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CloudUploadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CloudUploadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CLOUD_VARIANTS: Variants = {\n  initial: { y: -2 },\n  active: { y: 0 },\n};\n\nconst CloudUploadIcon = forwardRef<CloudUploadIconHandle, CloudUploadIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"initial\"),\n        stopAnimation: () => controls.start(\"active\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"initial\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"active\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\" />\n          <motion.g\n            animate={controls}\n            transition={{\n              duration: 0.3,\n              ease: [0.68, -0.6, 0.32, 1.6],\n            }}\n            variants={CLOUD_VARIANTS}\n          >\n            <path d=\"M12 13v8\" />\n            <path d=\"m8 17 4-4 4 4\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCloudUploadIcon.displayName = \"CloudUploadIcon\";\n\nexport { CloudUploadIcon };\n"
  },
  {
    "path": "icons/coffee.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CoffeeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CoffeeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    y: -3,\n    opacity: [0, 1, 0],\n    transition: {\n      repeat: Number.POSITIVE_INFINITY,\n      duration: 1.5,\n      ease: \"easeInOut\",\n      delay: 0.2 * custom,\n    },\n  }),\n};\n\nconst CoffeeIcon = forwardRef<CoffeeIconHandle, CoffeeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={0.2}\n            d=\"M10 2v2\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.4}\n            d=\"M14 2v2\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M6 2v2\"\n            variants={PATH_VARIANTS}\n          />\n          <path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCoffeeIcon.displayName = \"CoffeeIcon\";\n\nexport { CoffeeIcon };\n"
  },
  {
    "path": "icons/cog.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CogIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CogIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CogIcon = forwardRef<CogIconHandle, CogIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n          variants={{\n            normal: {\n              rotate: 0,\n            },\n            animate: {\n              rotate: 180,\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z\" />\n          <path d=\"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\" />\n          <path d=\"M12 2v2\" />\n          <path d=\"M12 22v-2\" />\n          <path d=\"m17 20.66-1-1.73\" />\n          <path d=\"M11 10.27 7 3.34\" />\n          <path d=\"m20.66 17-1.73-1\" />\n          <path d=\"m3.34 7 1.73 1\" />\n          <path d=\"M14 12h8\" />\n          <path d=\"M2 12h2\" />\n          <path d=\"m20.66 7-1.73 1\" />\n          <path d=\"m3.34 17 1.73-1\" />\n          <path d=\"m17 3.34-1 1.73\" />\n          <path d=\"m11 13.73-4 6.93\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nCogIcon.displayName = \"CogIcon\";\n\nexport { CogIcon };\n"
  },
  {
    "path": "icons/compass.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CompassIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CompassIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CompassIcon = forwardRef<CompassIconHandle, CompassIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.polygon\n            animate={controls}\n            points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"\n            transition={{\n              type: \"spring\",\n              stiffness: 120,\n              damping: 15,\n            }}\n            variants={{\n              normal: {\n                rotate: 0,\n              },\n              animate: {\n                rotate: 360,\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCompassIcon.displayName = \"CompassIcon\";\n\nexport { CompassIcon };\n"
  },
  {
    "path": "icons/connect.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ConnectIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ConnectIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PLUG_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    x: -3,\n    y: 3,\n  },\n};\n\nconst SOCKET_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    x: 3,\n    y: -3,\n  },\n};\n\nconst PATH_VARIANTS = {\n  normal: (custom: { x: number; y: number }) => ({\n    d: `M${custom.x} ${custom.y} l2.5 -2.5`,\n  }),\n  animate: (custom: { x: number; y: number }) => ({\n    d: `M${custom.x + 2.93} ${custom.y - 2.93} l0.10 -0.10`,\n  }),\n};\n\nconst ConnectIcon = forwardRef<ConnectIconHandle, ConnectIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M19 5l3 -3\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={{\n              normal: {\n                d: \"M19 5l3 -3\",\n              },\n              animate: {\n                d: \"M17 7l5 -5\",\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m2 22 3-3\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={{\n              normal: {\n                d: \"m2 22 3-3\",\n              },\n              animate: {\n                d: \"m2 22 6-6\",\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={SOCKET_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={{ x: 7.5, y: 13.5 }}\n            initial=\"normal\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={{ x: 10.5, y: 16.5 }}\n            initial=\"normal\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z\"\n            transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n            variants={PLUG_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nConnectIcon.displayName = \"ConnectIcon\";\n\nexport { ConnectIcon };\n"
  },
  {
    "path": "icons/construction.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ConstructionIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ConstructionIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ConstructionIcon = forwardRef<\n  ConstructionIconHandle,\n  ConstructionIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <defs>\n          <motion.pattern\n            animate={controls}\n            height=\"14\"\n            id=\"stripes\"\n            initial=\"normal\"\n            patternUnits=\"userSpaceOnUse\"\n            variants={{\n              normal: {\n                x: 0,\n              },\n              animate: {\n                x: [0, 6],\n                transition: {\n                  duration: 1,\n                  ease: \"linear\",\n                  repeat: Number.POSITIVE_INFINITY,\n                  repeatType: \"loop\",\n                },\n              },\n            }}\n            width=\"6\"\n          >\n            <path d=\"M-4 -2 L14 30\" stroke=\"currentColor\" strokeWidth=\"2\" />\n          </motion.pattern>\n        </defs>\n        <rect fill=\"url(#stripes)\" height=\"8\" rx=\"1\" width=\"20\" x=\"2\" y=\"6\" />\n        <path d=\"M17 14v7\" />\n        <path d=\"M7 14v7\" />\n        <path d=\"M17 3v3\" />\n        <path d=\"M7 3v3\" />\n      </svg>\n    </div>\n  );\n});\n\nConstructionIcon.displayName = \"ConstructionIcon\";\n\nexport { ConstructionIcon };\n"
  },
  {
    "path": "icons/contrast.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ContrastIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ContrastIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANT: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: 180,\n    transformOrigin: \"left center\",\n    transition: {\n      type: \"spring\",\n      stiffness: 80,\n      damping: 12,\n    },\n  },\n};\n\nconst ContrastIcon = forwardRef<ContrastIconHandle, ContrastIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M12 18a6 6 0 0 0 0-12v12z\"\n            initial=\"normal\"\n            variants={PATH_VARIANT}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nContrastIcon.displayName = \"ContrastIcon\";\n\nexport { ContrastIcon };\n"
  },
  {
    "path": "icons/cooking-pot.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CookingPotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CookingPotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LID_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, -14, 14, -10, 10, -6, 6, 0],\n    transition: {\n      duration: 0.9,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst POT_VARIANTS: Variants = {\n  normal: { scale: 1 },\n  animate: {\n    scale: [1, 1.08, 1],\n    transition: {\n      duration: 0.95,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst CookingPotIcon = forwardRef<CookingPotIconHandle, CookingPotIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformOrigin: \"12px 16px\" }}\n            variants={POT_VARIANTS}\n          >\n            <path d=\"M2 12h20\" />\n            <path d=\"M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8\" />\n          </motion.g>\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformOrigin: \"18px 6px\" }}\n            variants={LID_VARIANTS}\n          >\n            <path d=\"m4 8 16-4\" />\n            <path d=\"m8.86 6.78-.45-1.81a2 2 0 0 1 1.45-2.43l1.94-.48a2 2 0 0 1 2.43 1.46l.45 1.8\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nCookingPotIcon.displayName = \"CookingPotIcon\";\n\nexport { CookingPotIcon };\n"
  },
  {
    "path": "icons/copy.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CopyIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CopyIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 160,\n  damping: 17,\n  mass: 1,\n};\n\nconst CopyIcon = forwardRef<CopyIconHandle, CopyIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={controls}\n            height=\"14\"\n            rx=\"2\"\n            ry=\"2\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateY: 0, translateX: 0 },\n              animate: { translateY: -3, translateX: -3 },\n            }}\n            width=\"14\"\n            x=\"8\"\n            y=\"8\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { x: 0, y: 0 },\n              animate: { x: 3, y: 3 },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCopyIcon.displayName = \"CopyIcon\";\n\nexport { CopyIcon };\n"
  },
  {
    "path": "icons/corner-down-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleX: 1, x: 0, opacity: 1 },\n  animate: {\n    scaleX: [1, 1.15, 1],\n    x: [0, -2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerDownLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerDownLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerDownLeftIcon = forwardRef<\n  CornerDownLeftIconHandle,\n  CornerDownLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M4 15h12a4 4 0 0 0 4-4V4\" />\n        <path d=\"m9 20-5-5 5-5\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerDownLeftIcon.displayName = \"CornerDownLeftIcon\";\n\nexport { CornerDownLeftIcon };\n"
  },
  {
    "path": "icons/corner-down-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleX: 1, x: 0, opacity: 1 },\n  animate: {\n    scaleX: [1, 1.15, 1],\n    x: [0, 2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerDownRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerDownRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerDownRightIcon = forwardRef<\n  CornerDownRightIconHandle,\n  CornerDownRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"m15 10 5 5-5 5\" />\n        <path d=\"M4 4v7a4 4 0 0 0 4 4h12\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerDownRightIcon.displayName = \"CornerDownRightIcon\";\n\nexport { CornerDownRightIcon };\n"
  },
  {
    "path": "icons/corner-left-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleY: 1, y: 0, opacity: 1 },\n  animate: {\n    scaleY: [1, 1.15, 1],\n    y: [0, 2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerLeftDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerLeftDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerLeftDownIcon = forwardRef<\n  CornerLeftDownIconHandle,\n  CornerLeftDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"m14 15-5 5-5-5\" />\n        <path d=\"M20 4h-7a4 4 0 0 0-4 4v12\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerLeftDownIcon.displayName = \"CornerLeftDownIcon\";\n\nexport { CornerLeftDownIcon };\n"
  },
  {
    "path": "icons/corner-left-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleY: 1, y: 0, opacity: 1 },\n  animate: {\n    scaleY: [1, 1.15, 1],\n    y: [0, -2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerLeftUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerLeftUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerLeftUpIcon = forwardRef<\n  CornerLeftUpIconHandle,\n  CornerLeftUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M14 9 9 4 4 9\" />\n        <path d=\"M20 20h-7a4 4 0 0 1-4-4V4\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerLeftUpIcon.displayName = \"CornerLeftUpIcon\";\n\nexport { CornerLeftUpIcon };\n"
  },
  {
    "path": "icons/corner-right-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleY: 1, y: 0, opacity: 1 },\n  animate: {\n    scaleY: [1, 1.15, 1],\n    y: [0, 2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerRightDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerRightDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerRightDownIcon = forwardRef<\n  CornerRightDownIconHandle,\n  CornerRightDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"m10 15 5 5 5-5\" />\n        <path d=\"M4 4h7a4 4 0 0 1 4 4v12\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerRightDownIcon.displayName = \"CornerRightDownIcon\";\n\nexport { CornerRightDownIcon };\n"
  },
  {
    "path": "icons/corner-right-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleY: 1, y: 0, opacity: 1 },\n  animate: {\n    scaleY: [1, 1.15, 1],\n    y: [0, -2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerRightUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerRightUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerRightUpIcon = forwardRef<\n  CornerRightUpIconHandle,\n  CornerRightUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"m10 9 5-5 5 5\" />\n        <path d=\"M4 20h7a4 4 0 0 0 4-4V4\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerRightUpIcon.displayName = \"CornerRightUpIcon\";\n\nexport { CornerRightUpIcon };\n"
  },
  {
    "path": "icons/corner-up-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleX: 1, x: 0, opacity: 1 },\n  animate: {\n    scaleX: [1, 1.15, 1],\n    x: [0, -2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerUpLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerUpLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerUpLeftIcon = forwardRef<\n  CornerUpLeftIconHandle,\n  CornerUpLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20 20v-7a4 4 0 0 0-4-4H4\" />\n        <path d=\"M9 14 4 9l5-5\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerUpLeftIcon.displayName = \"CornerUpLeftIcon\";\n\nexport { CornerUpLeftIcon };\n"
  },
  {
    "path": "icons/corner-up-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst STRETCH_VARIANTS: Variants = {\n  normal: { scaleX: 1, x: 0, opacity: 1 },\n  animate: {\n    scaleX: [1, 1.15, 1],\n    x: [0, 2, 0],\n    transition: {\n      duration: 0.45,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nexport interface CornerUpRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CornerUpRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CornerUpRightIcon = forwardRef<\n  CornerUpRightIconHandle,\n  CornerUpRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={STRETCH_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"m15 14 5-5-5-5\" />\n        <path d=\"M4 20v-7a4 4 0 0 1 4-4h12\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nCornerUpRightIcon.displayName = \"CornerUpRightIcon\";\n\nexport { CornerUpRightIcon };\n"
  },
  {
    "path": "icons/cpu.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CpuIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CpuIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.5,\n  ease: \"easeInOut\",\n  repeat: 1,\n};\n\nconst Y_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    rotate: 0,\n    opacity: 1,\n  },\n  animate: {\n    scaleY: [1, 1.5, 1],\n    opacity: [1, 0.8, 1],\n  },\n};\nconst X_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    rotate: 0,\n    opacity: 1,\n  },\n  animate: {\n    scaleX: [1, 1.5, 1],\n    opacity: [1, 0.8, 1],\n  },\n};\n\nconst CpuIcon = forwardRef<CpuIconHandle, CpuIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"16\" rx=\"2\" width=\"16\" x=\"4\" y=\"4\" />\n          <rect height=\"6\" rx=\"1\" width=\"6\" x=\"9\" y=\"9\" />\n          <motion.path\n            animate={controls}\n            d=\"M15 2v2\"\n            transition={TRANSITION}\n            variants={Y_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 20v2\"\n            transition={TRANSITION}\n            variants={Y_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 15h2\"\n            transition={TRANSITION}\n            variants={X_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 9h2\"\n            transition={TRANSITION}\n            variants={X_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M20 15h2\"\n            transition={TRANSITION}\n            variants={X_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M20 9h2\"\n            transition={TRANSITION}\n            variants={X_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 2v2\"\n            transition={TRANSITION}\n            variants={Y_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 20v2\"\n            transition={TRANSITION}\n            variants={Y_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCpuIcon.displayName = \"CpuIcon\";\n\nexport { CpuIcon };\n"
  },
  {
    "path": "icons/cup-soda.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CupSodaIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CupSodaIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst STRAW_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    scaleY: 1,\n    transition: {\n      duration: 0.25,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    y: [0, -0.85, 0.15, 0],\n    scaleY: [1, 1.06, 0.99, 1],\n    transition: {\n      duration: 0.5,\n      ease: [0.34, 1.56, 0.64, 1],\n      times: [0, 0.35, 0.65, 1],\n    },\n  },\n};\n\nconst WAVE_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    transition: {\n      duration: 0.25,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    y: [0, -1, 0],\n    transition: {\n      duration: 1.8,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst BUBBLE_VARIANTS: Variants = {\n  normal: { opacity: 0, y: 0, scale: 1 },\n  animate: (delay: number) => ({\n    opacity: [0, 0.9, 0.4, 0],\n    y: [0, -3, -10, -14],\n    scale: [1, 1, 0.85, 0.6],\n    transition: {\n      duration: 1.5,\n      ease: \"easeIn\",\n      delay,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatDelay: 0,\n      times: [0, 0.08, 0.7, 1],\n    },\n  }),\n};\n\nconst BUBBLES = [\n  { delay: 0, cx: 8.25, cy: 20.5, r: 0.75 },\n  { delay: 0.35, cx: 11.25, cy: 19.5, r: 0.6 },\n  { delay: 0.7, cx: 14, cy: 20.75, r: 0.6 },\n  { delay: 1.05, cx: 9.75, cy: 19, r: 0.75 },\n  { delay: 0.55, cx: 12.5, cy: 20, r: 0.45 },\n] as const;\n\nconst CupSodaIcon = forwardRef<CupSodaIconHandle, CupSodaIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(\"relative\", className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8\" />\n          <path d=\"M5 8h14\" />\n          <motion.path\n            animate={controls}\n            d=\"M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0\"\n            variants={WAVE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m12 8 1-6h2\"\n            style={{\n              transformBox: \"fill-box\",\n              originX: \"50%\",\n              originY: \"100%\",\n            }}\n            variants={STRAW_VARIANTS}\n          />\n          {BUBBLES.map((b, i) => (\n            <motion.circle\n              animate={controls}\n              custom={b.delay}\n              cx={b.cx}\n              cy={b.cy}\n              fill=\"currentColor\"\n              initial=\"normal\"\n              key={i}\n              r={b.r}\n              stroke=\"none\"\n              style={{\n                transformBox: \"fill-box\",\n                originX: \"50%\",\n                originY: \"50%\",\n              }}\n              variants={BUBBLE_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nCupSodaIcon.displayName = \"CupSodaIcon\";\n\nexport { CupSodaIcon };\n"
  },
  {
    "path": "icons/cursor-click.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface CursorClickIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface CursorClickIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CURSOR_VARIANTS: Variants = {\n  initial: { x: 0, y: 0 },\n  hover: {\n    x: [0, 0, -3, 0],\n    y: [0, -4, 0, 0],\n    transition: {\n      duration: 1,\n      bounce: 0.3,\n    },\n  },\n};\n\nconst LINE_VARIANTS: Variants = {\n  initial: { opacity: 1, x: 0, y: 0 },\n  spread: (custom: { x: number; y: number }) => ({\n    opacity: [0, 1, 0, 0, 0, 0, 1],\n    x: [0, custom.x, 0, 0],\n    y: [0, custom.y, 0, 0],\n    transition: {\n      type: \"spring\",\n      stiffness: 70,\n      damping: 10,\n      mass: 0.4,\n    },\n  }),\n};\n\nconst CursorClickIcon = forwardRef<CursorClickIconHandle, CursorClickIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const clickControls = useAnimation();\n    const cursorControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          cursorControls.start(\"hover\");\n          clickControls.start(\"spread\", { delay: 1.3 });\n        },\n        stopAnimation: () => {\n          cursorControls.start(\"initial\");\n          clickControls.start(\"initial\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          cursorControls.start(\"hover\");\n          clickControls.start(\"spread\", { delay: 1.3 });\n        }\n      },\n      [clickControls, cursorControls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          cursorControls.start(\"initial\");\n          clickControls.start(\"initial\");\n        }\n      },\n      [cursorControls, clickControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={cursorControls}\n            d=\"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\"\n            variants={CURSOR_VARIANTS}\n          />\n          <motion.path\n            animate={clickControls}\n            custom={{ x: 1, y: -1 }}\n            d=\"M14 4.1 12 6\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={clickControls}\n            custom={{ x: -1, y: 0 }}\n            d=\"m5.1 8-2.9-.8\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={clickControls}\n            custom={{ x: -1, y: 1 }}\n            d=\"m6 12-1.9 2\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={clickControls}\n            custom={{ x: 0, y: -1 }}\n            d=\"M7.2 2.2 8 5.1\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nCursorClickIcon.displayName = \"CursorClickIcon\";\n\nexport { CursorClickIcon };\n"
  },
  {
    "path": "icons/database-backup.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface DatabaseBackupIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DatabaseBackupIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DatabaseBackupIcon = forwardRef<\n  DatabaseBackupIconHandle,\n  DatabaseBackupIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n        <path d=\"M3 12a9 3 0 0 0 5 2.69\" />\n        <path d=\"M21 9.3V5\" />\n        <path d=\"M3 5v14a9 3 0 0 0 6.47 2.88\" />\n\n        <motion.g\n          animate={controls}\n          style={{ transformOrigin: \"17.5px 17px\" }}\n          transition={{ duration: 0.6, ease: \"easeInOut\" }}\n          variants={{\n            normal: { rotate: 0 },\n            animate: { rotate: 360 },\n          }}\n        >\n          <path d=\"M12 12v4h4\" />\n          <path d=\"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nDatabaseBackupIcon.displayName = \"DatabaseBackupIcon\";\n\nexport { DatabaseBackupIcon };\n"
  },
  {
    "path": "icons/delete.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DeleteIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DeleteIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LID_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: { y: -1.1 },\n};\n\nconst SPRING_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 500,\n  damping: 30,\n};\n\nconst DeleteIcon = forwardRef<DeleteIconHandle, DeleteIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            transition={SPRING_TRANSITION}\n            variants={LID_VARIANTS}\n          >\n            <path d=\"M3 6h18\" />\n            <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n          </motion.g>\n          <motion.path\n            animate={controls}\n            d=\"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\"\n            transition={SPRING_TRANSITION}\n            variants={{\n              normal: { d: \"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\" },\n              animate: { d: \"M19 9v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V9\" },\n            }}\n          />\n          <motion.line\n            animate={controls}\n            transition={SPRING_TRANSITION}\n            variants={{\n              normal: { y1: 11, y2: 17 },\n              animate: { y1: 11.5, y2: 17.5 },\n            }}\n            x1=\"10\"\n            x2=\"10\"\n            y1=\"11\"\n            y2=\"17\"\n          />\n          <motion.line\n            animate={controls}\n            transition={SPRING_TRANSITION}\n            variants={{\n              normal: { y1: 11, y2: 17 },\n              animate: { y1: 11.5, y2: 17.5 },\n            }}\n            x1=\"14\"\n            x2=\"14\"\n            y1=\"11\"\n            y2=\"17\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDeleteIcon.displayName = \"DeleteIcon\";\n\nexport { DeleteIcon };\n"
  },
  {
    "path": "icons/disc-3.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface Disc3IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface Disc3IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst Disc3Icon = forwardRef<Disc3IconHandle, Disc3IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <circle cx=\"12\" cy=\"12\" r=\"2\" />\n\n          <motion.g\n            animate={controls}\n            style={{ transformOrigin: \"12px 12px\" }}\n            transition={{ duration: 0.4, ease: \"easeInOut\" }}\n            variants={{\n              normal: { rotate: 0 },\n              animate: { rotate: 90 },\n            }}\n          >\n            <path d=\"M6 12c0-1.7.7-3.2 1.8-4.2\" />\n            <path d=\"M18 12c0 1.7-.7 3.2-1.8 4.2\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nDisc3Icon.displayName = \"Disc3Icon\";\n\nexport { Disc3Icon };\n"
  },
  {
    "path": "icons/discord.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DiscordIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DiscordIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    translateX: 0,\n    opacity: 1,\n    transition: {\n      duration: 0.2,\n    },\n  },\n  animate: {\n    translateX: [0, -2, 2, -2, 2, 0],\n    opacity: 1,\n    transition: {\n      duration: 0.4,\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst DiscordIcon = forwardRef<DiscordIconHandle, DiscordIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"3\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 44 44\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M17.54,34.22A47.42,47.42,0,0,1,14.68,38C7.3,37.79,4.5,33,4.5,33A44.83,44.83,0,0,1,9.31,13.48,16.47,16.47,0,0,1,18.69,10l1,2.31\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M17.85,22.67a3.48,3.48,0,0,0-3.37,3.9,3.38,3.38,0,0,0,3.31,3.22,3.53,3.53,0,0,0,3.43-3.9A3.45,3.45,0,0,0,17.85,22.67Z\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12.2,14.37a28.19,28.19,0,0,1,8.16-2.18A23.26,23.26,0,0,1,24,12a23.26,23.26,0,0,1,3.64.21,28.19,28.19,0,0,1,8.16,2.18m-7.47-2.09l1-2.31a16.47,16.47,0,0,1,9.38,3.51A44.83,44.83,0,0,1,43.5,33S40.7,37.79,33.32,38a47.42,47.42,0,0,1-2.86-3.81\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M36.92,31.29a29.63,29.63,0,0,1-8.64,3.49,21.25,21.25,0,0,1-4.28.4h0a21.25,21.25,0,0,1-4.28-.4,29.63,29.63,0,0,1-8.64-3.49\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M30.15,22.67a3.48,3.48,0,0,1,3.37,3.9,3.38,3.38,0,0,1-3.31,3.22,3.53,3.53,0,0,1-3.43-3.9A3.45,3.45,0,0,1,30.15,22.67Z\"\n            initial=\"normal\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDiscordIcon.displayName = \"DiscordIcon\";\n\nexport { DiscordIcon };\n"
  },
  {
    "path": "icons/dollar-sign.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DollarSignIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DollarSignIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOLLAR_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst DOLLAR_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst DollarSignIcon = forwardRef<DollarSignIconHandle, DollarSignIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\n            initial=\"normal\"\n            variants={DOLLAR_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 22 L12 2\"\n            initial=\"normal\"\n            variants={DOLLAR_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDollarSignIcon.displayName = \"DollarSignIcon\";\n\nexport { DollarSignIcon };\n"
  },
  {
    "path": "icons/download.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DownloadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DownloadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: {\n    y: 2,\n    transition: {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 10,\n      mass: 1,\n    },\n  },\n};\n\nconst DownloadIcon = forwardRef<DownloadIconHandle, DownloadIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\n            <polyline points=\"7 10 12 15 17 10\" />\n            <line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nDownloadIcon.displayName = \"DownloadIcon\";\n\nexport { DownloadIcon };\n"
  },
  {
    "path": "icons/downvote.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DownvoteIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DownvoteIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DownvoteIcon = forwardRef<DownvoteIconHandle, DownvoteIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: {\n              translateX: \"0px\",\n              translateY: \"0px\",\n              rotate: \"0deg\",\n            },\n            animate: {\n              translateX: \"-1px\",\n              translateY: \"2px\",\n              rotate: \"-12deg\",\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M17 14V2\" />\n          <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nDownvoteIcon.displayName = \"DownvoteIcon\";\n\nexport { DownvoteIcon };\n"
  },
  {
    "path": "icons/dribbble.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DribbbleIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DribbbleIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst DribbbleIcon = forwardRef<DribbbleIconHandle, DribbbleIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const circleControls = useAnimation();\n    const path1Controls = useAnimation();\n    const path2Controls = useAnimation();\n    const path3Controls = useAnimation();\n\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          circleControls.start(\"animate\");\n          path1Controls.start(\"animate\");\n          path2Controls.start(\"animate\");\n          path3Controls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          circleControls.start(\"normal\");\n          path1Controls.start(\"normal\");\n          path2Controls.start(\"normal\");\n          path3Controls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          circleControls.start(\"animate\");\n          path1Controls.start(\"animate\");\n          path2Controls.start(\"animate\");\n          path3Controls.start(\"animate\");\n        }\n      },\n      [\n        circleControls,\n        onMouseEnter,\n        path1Controls,\n        path2Controls,\n        path3Controls,\n      ]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          circleControls.start(\"normal\");\n          path1Controls.start(\"normal\");\n          path2Controls.start(\"normal\");\n          path3Controls.start(\"normal\");\n        }\n      },\n      [\n        circleControls,\n        path1Controls,\n        path2Controls,\n        path3Controls,\n        onMouseLeave,\n      ]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={circleControls}\n            cx=\"12\"\n            cy=\"12\"\n            initial=\"normal\"\n            r=\"10\"\n            variants={CIRCLE_VARIANTS}\n          />\n          <motion.path\n            animate={path1Controls}\n            d=\"M19.13 5.09C15.22 9.14 10 10.44 2.25 10.94\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={path2Controls}\n            d=\"M21.75 12.84c-6.62-1.41-12.14 1-16.38 6.32\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={path3Controls}\n            d=\"M8.56 2.75c4.37 6 6 9.42 8 17.72\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDribbbleIcon.displayName = \"DribbbleIcon\";\n\nexport { DribbbleIcon };\n"
  },
  {
    "path": "icons/droplet.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DropletIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DropletIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DropletIcon = forwardRef<DropletIconHandle, DropletIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\"\n            transition={{ duration: 0.6, delay: 0.2 }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                opacity: 1,\n                pathOffset: 0,\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDropletIcon.displayName = \"DropletIcon\";\n\nexport { DropletIcon };\n"
  },
  {
    "path": "icons/drum.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface DrumIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface DrumIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: (custom: number) => ({\n    rotate: custom === 1 ? [-10, 10, 0] : [10, -10, 0],\n    transition: {\n      delay: 0.1 * custom,\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"reverse\",\n      duration: 0.5,\n    },\n  }),\n};\n\nconst DrumIcon = forwardRef<DrumIconHandle, DrumIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"m2 2 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"m22 2-8 8\"\n            variants={VARIANTS}\n          />\n          <ellipse cx=\"12\" cy=\"9\" rx=\"10\" ry=\"5\" />\n          <path d=\"M7 13.4v7.9\" />\n          <path d=\"M12 14v8\" />\n          <path d=\"M17 13.4v7.9\" />\n          <path d=\"M2 9v8a10 5 0 0 0 20 0V9\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nDrumIcon.displayName = \"DrumIcon\";\n\nexport { DrumIcon };\n"
  },
  {
    "path": "icons/earth.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface EarthIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface EarthIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_TRANSITION: Transition = {\n  duration: 0.3,\n  delay: 0.1,\n  opacity: { delay: 0.15 },\n};\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n  },\n};\n\nconst EarthIcon = forwardRef<EarthIconHandle, EarthIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21.54 15H17a2 2 0 0 0-2 2v4.54\"\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                opacity: 1,\n                pathOffset: 0,\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17\"\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                opacity: 1,\n                pathOffset: 0,\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05\"\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                opacity: 1,\n                pathOffset: 0,\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"12\"\n            r=\"10\"\n            transition={CIRCLE_TRANSITION}\n            variants={CIRCLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nEarthIcon.displayName = \"EarthIcon\";\n\nexport { EarthIcon };\n"
  },
  {
    "path": "icons/euro.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface EuroIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface EuroIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst EURO_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst EURO_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst EuroIcon = forwardRef<EuroIconHandle, EuroIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2\"\n            initial=\"normal\"\n            variants={EURO_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M16 10h-12\"\n            initial=\"normal\"\n            variants={EURO_SECONDARY_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M13 14h-9\"\n            initial=\"normal\"\n            variants={EURO_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nEuroIcon.displayName = \"EuroIcon\";\n\nexport { EuroIcon };\n"
  },
  {
    "path": "icons/ev-charger.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface EvChargerIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface EvChargerIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst EV_CHARGER_VARIANT: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0.4, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst EvChargerIcon = forwardRef<EvChargerIconHandle, EvChargerIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5\" />\n          <path d=\"M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16\" />\n          <path d=\"M2 21h13\" />\n          <path d=\"M3 7h11\" />\n          <motion.path\n            animate={controls}\n            d=\"m9 11-2 3h3l-2 3\"\n            initial=\"normal\"\n            variants={EV_CHARGER_VARIANT}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nEvChargerIcon.displayName = \"EvChargerIcon\";\n\nexport { EvChargerIcon };\n"
  },
  {
    "path": "icons/expand.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ExpandIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ExpandIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ExpandIcon = forwardRef<ExpandIconHandle, ExpandIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m21 21-6-6m6 6v-4.8m0 4.8h-4.8\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 16.2V21m0 0h4.8M3 21l6-6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 7.8V3m0 0h-4.8M21 3l-6 6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"-2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 7.8V3m0 0h4.8M3 3l6 6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"-2px\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nExpandIcon.displayName = \"ExpandIcon\";\n\nexport { ExpandIcon };\n"
  },
  {
    "path": "icons/eye-off.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface EyeOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface EyeOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 2],\n    opacity: [0, 1],\n    pathOffset: [0, 2],\n    transition: { duration: 0.6 },\n  },\n};\n\nconst EyeOffIcon = forwardRef<EyeOffIconHandle, EyeOffIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n          <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n          <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n          <motion.path\n            animate={controls}\n            d=\"m2 2 20 20\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nEyeOffIcon.displayName = \"EyeOffIcon\";\n\nexport { EyeOffIcon };\n"
  },
  {
    "path": "icons/eye.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface EyeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface EyeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst EyeIcon = forwardRef<EyeIconHandle, EyeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"\n            style={{ originY: \"50%\" }}\n            transition={{ duration: 0.4, ease: \"easeInOut\" }}\n            variants={{\n              normal: { scaleY: 1, opacity: 1 },\n              animate: { scaleY: [1, 0.1, 1], opacity: [1, 0.3, 1] },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"12\"\n            r=\"3\"\n            transition={{ duration: 0.4, ease: \"easeInOut\" }}\n            variants={{\n              normal: { scale: 1, opacity: 1 },\n              animate: { scale: [1, 0.3, 1], opacity: [1, 0.3, 1] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nEyeIcon.displayName = \"EyeIcon\";\n\nexport { EyeIcon };\n"
  },
  {
    "path": "icons/facebook.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FacebookIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FacebookIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FACEBOOK_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst FacebookIcon = forwardRef<FacebookIconHandle, FacebookIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"\n            initial=\"normal\"\n            variants={FACEBOOK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFacebookIcon.displayName = \"FacebookIcon\";\n\nexport { FacebookIcon };\n"
  },
  {
    "path": "icons/feather.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FeatherIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FeatherIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FEATHER_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    y: 0,\n    x: 0,\n  },\n  animate: {\n    rotate: [0, -8, 4, -3, 0],\n    y: [0, -4, -2, -1, 0],\n    x: [0, 2, -2, 1, 0],\n    transition: {\n      duration: 1.6,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst FeatherIcon = forwardRef<FeatherIconHandle, FeatherIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={FEATHER_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z\" />\n          <path d=\"M16 8 2 22\" />\n          <path d=\"M17.5 15H9\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nFeatherIcon.displayName = \"FeatherIcon\";\n\nexport { FeatherIcon };\n"
  },
  {
    "path": "icons/figma.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FigmaIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FigmaIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.5,\n      opacity: { delay: 0.25 },\n    },\n  },\n};\n\nconst FigmaIcon = forwardRef<FigmaIconHandle, FigmaIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFigmaIcon.displayName = \"FigmaIcon\";\n\nexport { FigmaIcon };\n"
  },
  {
    "path": "icons/file-chart-line.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileChartLineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FileChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15,\n      duration: 0.3,\n      opacity: { delay: 0.1 },\n    },\n  },\n};\n\nconst FileChartLineIcon = forwardRef<\n  FileChartLineIconHandle,\n  FileChartLineIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n        <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n        <motion.path\n          animate={controls}\n          d=\"m8 17 2.5-2.5 2 2L16 13\"\n          variants={VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nFileChartLineIcon.displayName = \"FileChartLineIcon\";\n\nexport { FileChartLineIcon };\n"
  },
  {
    "path": "icons/file-check-2.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileCheck2IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FileCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst FileCheck2Icon = forwardRef<FileCheck2IconHandle, FileCheck2IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n          <path d=\"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4\" />\n          <motion.path\n            animate={controls}\n            d=\"m3 15 2 2 4-4\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"center\" }}\n            variants={CHECK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFileCheck2Icon.displayName = \"FileCheck2Icon\";\n\nexport { FileCheck2Icon };\n"
  },
  {
    "path": "icons/file-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FileCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst FileCheckIcon = forwardRef<FileCheckIconHandle, FileCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n          <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n          <motion.path\n            animate={controls}\n            d=\"m9 15 2 2 4-4\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"center\" }}\n            variants={CHECK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFileCheckIcon.displayName = \"FileCheckIcon\";\n\nexport { FileCheckIcon };\n"
  },
  {
    "path": "icons/file-cog.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileCogIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: 180 },\n};\n\nconst FileCogIcon = forwardRef<\n  FileCogIconHandle,\n  HTMLAttributes<HTMLDivElement>\n>(({ onMouseEnter, onMouseLeave, className, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height=\"28\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n        <path d=\"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5\" />\n        <motion.g\n          animate={controls}\n          transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n          variants={G_VARIANTS}\n        >\n          <path d=\"m3.2 12.9-.9-.4\" />\n          <path d=\"m3.2 15.1-.9.4\" />\n          <path d=\"m4.9 11.2-.4-.9\" />\n          <path d=\"m4.9 16.8-.4.9\" />\n          <path d=\"m7.5 10.3-.4.9\" />\n          <path d=\"m7.5 17.7-.4-.9\" />\n          <path d=\"m9.7 12.5-.9.4\" />\n          <path d=\"m9.7 15.5-.9-.4\" />\n          <circle cx=\"6\" cy=\"14\" r=\"3\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nFileCogIcon.displayName = \"FileCogIcon\";\n\nexport { FileCogIcon };\n"
  },
  {
    "path": "icons/file-pen-line.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FilePenLineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FilePenLineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PEN_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    rotate: [-0.3, 0.2, -0.4],\n    x: [0, -0.5, 1, 0],\n    y: [0, 1, -0.5, 0],\n    transition: {\n      duration: 0.5,\n      repeat: 1,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst FilePenLineIcon = forwardRef<FilePenLineIconHandle, FilePenLineIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2\" />\n          <motion.path\n            animate={controls}\n            d=\"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"\n            initial=\"normal\"\n            variants={PEN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M8 18h1\"\n            transition={{ duration: 0.5 }}\n            variants={{\n              normal: { d: \"M8 18h1\" },\n              animate: { d: \"M8 18h5\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFilePenLineIcon.displayName = \"FilePenLineIcon\";\n\nexport { FilePenLineIcon };\n"
  },
  {
    "path": "icons/file-stack.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileStackIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FileStackIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FileStackIcon = forwardRef<FileStackIconHandle, FileStackIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21 7h-3a2 2 0 0 1-2-2V2\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: -4, translateY: 4 },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17Z\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: -4, translateY: 4 },\n            }}\n          />\n          <path d=\"M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15\" />\n          <motion.path\n            animate={controls}\n            d=\"M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11\"\n            variants={{\n              normal: { translateX: 0, translateY: 0 },\n              animate: { translateX: 4, translateY: -4 },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFileStackIcon.displayName = \"FileStackIcon\";\n\nexport { FileStackIcon };\n"
  },
  {
    "path": "icons/file-text.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type React from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FileTextIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FileTextIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FILE_TEXT = forwardRef<FileTextIconHandle, FileTextIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            normal: { scale: 1 },\n            animate: {\n              scale: 1.05,\n              transition: {\n                duration: 0.3,\n                ease: \"easeOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n          <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n\n          <motion.path\n            d=\"M10 9H8\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            variants={{\n              normal: {\n                pathLength: 1,\n                x1: 8,\n                x2: 10,\n              },\n              animate: {\n                pathLength: [1, 0, 1],\n                x1: [8, 10, 8],\n                x2: [10, 10, 10],\n                transition: {\n                  duration: 0.7,\n                  delay: 0.3,\n                },\n              },\n            }}\n          />\n          <motion.path\n            d=\"M16 13H8\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            variants={{\n              normal: {\n                pathLength: 1,\n                x1: 8,\n                x2: 16,\n              },\n              animate: {\n                pathLength: [1, 0, 1],\n                x1: [8, 16, 8],\n                x2: [16, 16, 16],\n                transition: {\n                  duration: 0.7,\n                  delay: 0.5,\n                },\n              },\n            }}\n          />\n          <motion.path\n            d=\"M16 17H8\"\n            stroke=\"currentColor\"\n            strokeWidth=\"2\"\n            variants={{\n              normal: {\n                pathLength: 1,\n                x1: 8,\n                x2: 16,\n              },\n              animate: {\n                pathLength: [1, 0, 1],\n                x1: [8, 16, 8],\n                x2: [16, 16, 16],\n                transition: {\n                  duration: 0.7,\n                  delay: 0.7,\n                },\n              },\n            }}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nFILE_TEXT.displayName = \"FileTextIcon\";\n\nexport { FILE_TEXT as FileTextIcon };\n"
  },
  {
    "path": "icons/fingerprint.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FingerprintIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FingerprintIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  animate: {\n    opacity: [0, 0, 1, 1, 1],\n    pathLength: [0.1, 0.3, 0.5, 0.7, 0.9, 1],\n    transition: {\n      opacity: { duration: 0.5 },\n      pathLength: {\n        duration: 2,\n      },\n    },\n  },\n};\n\nconst FingerprintIcon = forwardRef<FingerprintIconHandle, FingerprintIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M2 12a10 10 0 0 1 18-6\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 12a10 10 0 0 1 18-6\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path d=\"M2 16h.01\" fill=\"none\" strokeOpacity={0.4} strokeWidth=\"2\" />\n          <motion.path\n            animate={controls}\n            d=\"M2 16h.01\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M21.8 16c.2-2 .131-5.354 0-6\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21.8 16c.2-2 .131-5.354 0-6\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M8.65 22c.21-.66.45-1.32.57-2\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M8.65 22c.21-.66.45-1.32.57-2\"\n            variants={PATH_VARIANTS}\n          />\n\n          <path\n            d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"\n            fill=\"none\"\n            strokeOpacity={0.4}\n            strokeWidth=\"2\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFingerprintIcon.displayName = \"FingerprintIcon\";\n\nexport { FingerprintIcon };\n"
  },
  {
    "path": "icons/fish-symbol.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FishSymbolIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FishSymbolIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15,\n      opacity: { delay: 0.1 },\n    },\n  },\n};\n\nconst FishSymbolIcon = forwardRef<FishSymbolIconHandle, FishSymbolIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M2 16s9-15 20-4C11 23 2 8 2 8\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFishSymbolIcon.displayName = \"FishSymbolIcon\";\n\nexport { FishSymbolIcon };\n"
  },
  {
    "path": "icons/flame.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FlameIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FlameIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    pathOffset: 0,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.1,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.1 },\n    },\n  },\n};\n\nconst FlameIcon = forwardRef<FlameIconHandle, FlameIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M8.9 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\"\n            fill=\"none\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFlameIcon.displayName = \"FlameIcon\";\n\nexport { FlameIcon };\n"
  },
  {
    "path": "icons/flask.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FlaskIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FlaskIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FlaskIcon = forwardRef<FlaskIconHandle, FlaskIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"currentColor\"\n          height={size}\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"5.632\"\n          viewBox=\"0 0 512 512\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            variants={{\n              normal: { rotate: 0, translateY: 0 },\n              animate: {\n                translateY: -12,\n                rotate: [0, 5, -5, 3, -3, 0],\n                transition: {\n                  ease: \"linear\",\n                  rotate: { duration: 0.8 },\n                },\n              },\n            }}\n          >\n            <circle cx=\"151.273\" cy=\"407.273\" r=\"11.636\" />\n            <circle cx=\"244.364\" cy=\"372.364\" r=\"11.636\" />\n            <circle cx=\"290.909\" cy=\"418.909\" r=\"11.636\" />\n            <circle cx=\"221.091\" cy=\"453.818\" r=\"11.636\" />\n            <circle cx=\"372.364\" cy=\"430.545\" r=\"11.636\" />\n          </motion.g>\n          <motion.path\n            animate={controls}\n            d=\"M456.145,436.364l-79.127-124.509c0-2.327-2.327-4.655-3.491-5.818l-34.909-55.855c-8.146-13.964-12.8-29.091-12.8-44.218 V67.491c13.964-4.655,23.273-17.455,23.273-32.582C349.091,15.127,333.964,0,314.182,0H197.818 c-19.782,0-34.909,15.127-34.909,34.909c0,19.782,15.127,34.909,34.909,34.909h69.818c6.982,0,11.636-4.655,11.636-11.636 s-4.655-11.636-11.636-11.636h-69.818c-6.982,0-11.636-4.655-11.636-11.636c0-6.982,4.655-11.636,11.636-11.636h116.364 c6.982,0,11.636,4.655,11.636,11.636c0,6.982-4.655,11.636-11.636,11.636s-11.636,4.655-11.636,11.636v147.782 c0,19.782,5.818,39.564,16.291,55.855l19.782,31.418c-30.255-5.818-64-2.327-88.436,10.473 c-23.273,11.636-60.509,13.964-87.273,4.655l30.255-46.545c10.473-16.291,16.291-36.073,16.291-55.855V104.727 c0-6.982-4.655-11.636-11.636-11.636s-11.636,4.655-11.636,11.636v101.236c0,15.127-4.655,30.255-12.8,43.055l-34.909,55.855 c-1.164,1.164-2.327,2.327-3.491,3.491c0,1.164,0,1.164-1.164,2.327L55.855,436.364c-5.818,9.309-9.309,19.782-9.309,31.418v9.309 c0,19.782,15.127,34.909,34.909,34.909h349.091c19.782,0,34.909-15.127,34.909-34.909v-9.309 C465.455,456.145,461.964,445.673,456.145,436.364z M443.345,477.091h-1.164c0,6.982-4.655,11.636-11.636,11.636H81.455 c-6.982,0-11.636-4.655-11.636-11.636v-9.309c0-6.982,2.327-12.8,5.818-18.618l75.636-119.855 c15.127,5.818,32.582,8.145,50.036,8.145c22.109,0,43.055-4.655,60.509-12.8c25.6-12.8,68.655-13.964,96.582-1.164l79.127,125.673 c3.491,5.818,5.818,11.636,5.818,18.618V477.091z\"\n            variants={{\n              normal: { rotate: 0, scale: 1 },\n              animate: {\n                scale: 0.9,\n                rotate: [0, 6, -6, 3, -3, 0],\n                transition: {\n                  duration: 0.8,\n                  scale: {\n                    duration: 0.3,\n                    type: \"spring\",\n                    bounce: 0.4,\n                    stiffness: 150,\n                    damping: 10,\n                  },\n                },\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFlaskIcon.displayName = \"FlaskIcon\";\n\nexport { FlaskIcon };\n"
  },
  {
    "path": "icons/folder-archive.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderArchiveIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderArchiveIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BLINK_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0, 1],\n    transition: { duration: 0.6, ease: \"easeInOut\" },\n  },\n};\n\nconst FolderArchiveIcon = forwardRef<\n  FolderArchiveIconHandle,\n  FolderArchiveIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20.9 19.8A2 2 0 0 0 22 18V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h5.1\" />\n        <motion.g animate={controls} initial=\"normal\" variants={BLINK_VARIANTS}>\n          <circle cx=\"15\" cy=\"19\" r=\"2\" />\n          <path d=\"M15 11v-1\" />\n          <path d=\"M15 17v-2\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nFolderArchiveIcon.displayName = \"FolderArchiveIcon\";\n\nexport { FolderArchiveIcon };\n"
  },
  {
    "path": "icons/folder-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst FolderCheckIcon = forwardRef<FolderCheckIconHandle, FolderCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.path\n            animate={controls}\n            d=\"m9 13 2 2 4-4\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"center\" }}\n            variants={CHECK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderCheckIcon.displayName = \"FolderCheckIcon\";\n\nexport { FolderCheckIcon };\n"
  },
  {
    "path": "icons/folder-clock.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderClockIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderClockIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HAND_TRANSITION: Transition = {\n  duration: 0.6,\n  ease: [0.4, 0, 0.2, 1],\n};\n\nconst HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n  animate: {\n    rotate: 360,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n};\n\nconst MINUTE_HAND_TRANSITION: Transition = {\n  duration: 0.5,\n  ease: \"easeInOut\",\n};\n\nconst MINUTE_HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n  animate: {\n    rotate: 45,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n};\n\nconst FolderClockIcon = forwardRef<FolderClockIconHandle, FolderClockIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2\" />\n\n          <circle cx=\"16\" cy=\"16\" r=\"6\" />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={HAND_TRANSITION}\n            variants={HAND_VARIANTS}\n            x1=\"16\"\n            x2=\"16\"\n            y1=\"16\"\n            y2=\"13\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={MINUTE_HAND_TRANSITION}\n            variants={MINUTE_HAND_VARIANTS}\n            x1=\"16\"\n            x2=\"18.5\"\n            y1=\"16\"\n            y2=\"16\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderClockIcon.displayName = \"FolderClockIcon\";\n\nexport { FolderClockIcon };\n"
  },
  {
    "path": "icons/folder-code.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderCodeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderCodeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CODE_VARIANTS: Variants = {\n  normal: { x: 0, rotate: 0, opacity: 1 },\n  animate: (direction: number) => ({\n    x: [0, direction * 2, 0],\n    rotate: [0, direction * -8, 0],\n    opacity: 1,\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n    },\n  }),\n};\n\nconst FolderCodeIcon = forwardRef<FolderCodeIconHandle, FolderCodeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z\" />\n          <motion.path\n            animate={controls}\n            custom={-1}\n            d=\"M10 10.5 8 13l2 2.5\"\n            initial=\"normal\"\n            variants={CODE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"m14 10.5 2 2.5-2 2.5\"\n            initial=\"normal\"\n            variants={CODE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderCodeIcon.displayName = \"FolderCodeIcon\";\n\nexport { FolderCodeIcon };\n"
  },
  {
    "path": "icons/folder-cog.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderCogIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderCogIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: 180 },\n};\n\nconst FolderCogIcon = forwardRef<FolderCogIconHandle, FolderCogIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3\" />\n          <motion.g\n            animate={controls}\n            transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n            variants={G_VARIANTS}\n          >\n            <path d=\"m14.305 19.53.923-.382\" />\n            <path d=\"m15.228 16.852-.923-.383\" />\n            <path d=\"m16.852 15.228-.383-.923\" />\n            <path d=\"m16.852 20.772-.383.924\" />\n            <path d=\"m19.148 15.228.383-.923\" />\n            <path d=\"m19.53 21.696-.382-.924\" />\n            <path d=\"m20.772 16.852.924-.383\" />\n            <path d=\"m20.772 19.148.924.383\" />\n            <circle cx=\"18\" cy=\"18\" r=\"3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderCogIcon.displayName = \"FolderCogIcon\";\n\nexport { FolderCogIcon };\n"
  },
  {
    "path": "icons/folder-dot.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderDotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderDotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOT_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0, 1],\n    transition: { duration: 0.6, ease: \"easeInOut\" },\n  },\n};\n\nconst FolderDotIcon = forwardRef<FolderDotIconHandle, FolderDotIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\" />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"13\"\n            initial=\"normal\"\n            r=\"1\"\n            variants={DOT_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderDotIcon.displayName = \"FolderDotIcon\";\n\nexport { FolderDotIcon };\n"
  },
  {
    "path": "icons/folder-down.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: { y: [0, 2, 0] },\n};\n\nconst ARROW_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst FolderDownIcon = forwardRef<FolderDownIconHandle, FolderDownIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            transition={ARROW_TRANSITION}\n            variants={ARROW_VARIANTS}\n          >\n            <path d=\"M12 10v6\" />\n            <path d=\"m15 13-3 3-3-3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderDownIcon.displayName = \"FolderDownIcon\";\n\nexport { FolderDownIcon };\n"
  },
  {
    "path": "icons/folder-git-2.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderGit2IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderGit2IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst FolderGit2Icon = forwardRef<FolderGit2IconHandle, FolderGit2IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5\" />\n          <motion.circle\n            animate={controls}\n            cx=\"13\"\n            cy=\"12\"\n            r=\"2\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 19c-2.8 0-5-2.2-5-5v8\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"20\"\n            cy=\"19\"\n            r=\"2\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderGit2Icon.displayName = \"FolderGit2Icon\";\n\nexport { FolderGit2Icon };\n"
  },
  {
    "path": "icons/folder-git.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderGitIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderGitIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst COMMIT_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15 * custom,\n      opacity: { delay: 0.1 * custom },\n    },\n  }),\n};\n\nconst FolderGitIcon = forwardRef<FolderGitIconHandle, FolderGitIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.circle\n            animate={controls}\n            custom={1}\n            cx=\"12\"\n            cy=\"13\"\n            r=\"2\"\n            variants={COMMIT_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M14 13h3\"\n            variants={COMMIT_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M7 13h3\"\n            variants={COMMIT_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderGitIcon.displayName = \"FolderGitIcon\";\n\nexport { FolderGitIcon };\n"
  },
  {
    "path": "icons/folder-heart.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderHeartIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderHeartIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HEART_VARIANTS: Variants = {\n  normal: { scale: 1, opacity: 0.9 },\n  animate: {\n    scale: [1, 1.12, 1.04, 1.12, 1],\n    opacity: [0.9, 1, 0.85, 1, 0.9],\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst FolderHeartIcon = forwardRef<FolderHeartIconHandle, FolderHeartIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10.638 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.417\" />\n          <motion.path\n            animate={controls}\n            d=\"M14.62 18.8A2.25 2.25 0 1 1 18 15.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a.998.998 0 0 1-1.507 0z\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"18px 18px\" }}\n            variants={HEART_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderHeartIcon.displayName = \"FolderHeartIcon\";\n\nexport { FolderHeartIcon };\n"
  },
  {
    "path": "icons/folder-input.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderInputIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderInputIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { x: 0 },\n  animate: { x: [0, 2, 0] },\n};\n\nconst ARROW_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst FolderInputIcon = forwardRef<FolderInputIconHandle, FolderInputIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            transition={ARROW_TRANSITION}\n            variants={ARROW_VARIANTS}\n          >\n            <path d=\"M2 13h10\" />\n            <path d=\"m9 16 3-3-3-3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderInputIcon.displayName = \"FolderInputIcon\";\n\nexport { FolderInputIcon };\n"
  },
  {
    "path": "icons/folder-kanban.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderKanbanIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderKanbanIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst COLUMNS_VARIANTS: Variants = {\n  animate: {\n    transition: {\n      staggerChildren: 0.2,\n    },\n  },\n};\n\nconst COLUMN_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0.2, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst FolderKanbanIcon = forwardRef<\n  FolderKanbanIconHandle,\n  FolderKanbanIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\" />\n        <motion.g\n          animate={controls}\n          initial=\"normal\"\n          variants={COLUMNS_VARIANTS}\n        >\n          <motion.path d=\"M8 10v4\" variants={COLUMN_VARIANTS} />\n          <motion.path d=\"M12 10v2\" variants={COLUMN_VARIANTS} />\n          <motion.path d=\"M16 10v6\" variants={COLUMN_VARIANTS} />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nFolderKanbanIcon.displayName = \"FolderKanbanIcon\";\n\nexport { FolderKanbanIcon };\n"
  },
  {
    "path": "icons/folder-key.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderKeyIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderKeyIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KEY_VARIANTS: Variants = {\n  normal: { rotate: 0, x: 0 },\n  animate: {\n    rotate: [0, -15, 8, -5, 0],\n    x: [0, 0.5, 0],\n    transition: {\n      duration: 0.9,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst FolderKeyIcon = forwardRef<FolderKeyIconHandle, FolderKeyIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformOrigin: \"16px 18px\" }}\n            variants={KEY_VARIANTS}\n          >\n            <circle cx=\"16\" cy=\"20\" r=\"2\" />\n            <path d=\"m22 14-4.5 4.5\" />\n            <path d=\"m21 15 1 1\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderKeyIcon.displayName = \"FolderKeyIcon\";\n\nexport { FolderKeyIcon };\n"
  },
  {
    "path": "icons/folder-lock.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderLockIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderLockIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LOCK_VARIANTS: Variants = {\n  normal: { y: 0, rotate: 0 },\n  animate: {\n    y: [0, -1.6, 0],\n    rotate: [0, -3, 2, 0],\n    transition: {\n      duration: 0.7,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst FolderLockIcon = forwardRef<FolderLockIconHandle, FolderLockIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            style={{ transformOrigin: \"18px 19px\" }}\n            variants={LOCK_VARIANTS}\n          >\n            <rect height=\"5\" rx=\"1\" width=\"8\" x=\"14\" y=\"17\" />\n            <path d=\"M20 17v-2a2 2 0 1 0-4 0v2\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderLockIcon.displayName = \"FolderLockIcon\";\n\nexport { FolderLockIcon };\n"
  },
  {
    "path": "icons/folder-minus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderMinusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderMinusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: { duration: 0.4, ease: \"easeInOut\" },\n  },\n};\n\nconst FolderMinusIcon = forwardRef<FolderMinusIconHandle, FolderMinusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.path\n            animate={controls}\n            d=\"M9 13h6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderMinusIcon.displayName = \"FolderMinusIcon\";\n\nexport { FolderMinusIcon };\n"
  },
  {
    "path": "icons/folder-open.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderOpenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, -8, 6, -4, 0],\n    transition: {\n      ease: \"easeInOut\",\n      rotate: {\n        duration: 0.6,\n      },\n    },\n  },\n};\n\nconst FolderOpenIcon = forwardRef<FolderOpenIconHandle, FolderOpenIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"12px 12px\" }}\n            variants={VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nFolderOpenIcon.displayName = \"FolderOpenIcon\";\n\nexport { FolderOpenIcon };\n"
  },
  {
    "path": "icons/folder-output.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderOutputIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderOutputIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { x: 0 },\n  animate: { x: [0, -2, 0] },\n};\n\nconst ARROW_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst FolderOutputIcon = forwardRef<\n  FolderOutputIconHandle,\n  FolderOutputIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2 7.5V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-1.5\" />\n        <motion.g\n          animate={controls}\n          initial=\"normal\"\n          transition={ARROW_TRANSITION}\n          variants={ARROW_VARIANTS}\n        >\n          <path d=\"M2 13h10\" />\n          <path d=\"m5 10-3 3 3 3\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nFolderOutputIcon.displayName = \"FolderOutputIcon\";\n\nexport { FolderOutputIcon };\n"
  },
  {
    "path": "icons/folder-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderPlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n      delay: custom * 0.1,\n      opacity: { delay: custom * 0.1 },\n    },\n  }),\n};\n\nconst FolderPlusIcon = forwardRef<FolderPlusIconHandle, FolderPlusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M12 10v6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M9 13h6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderPlusIcon.displayName = \"FolderPlusIcon\";\n\nexport { FolderPlusIcon };\n"
  },
  {
    "path": "icons/folder-root.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderRootIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderRootIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ROOT_VARIANTS: Variants = {\n  normal: { opacity: 0.6 },\n  animate: {\n    opacity: [0.6, 1, 0.3, 0.6],\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst FolderRootIcon = forwardRef<FolderRootIconHandle, FolderRootIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\" />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"13\"\n            initial=\"normal\"\n            r=\"2\"\n            variants={ROOT_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M12 15v5\"\n            initial=\"normal\"\n            variants={ROOT_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderRootIcon.displayName = \"FolderRootIcon\";\n\nexport { FolderRootIcon };\n"
  },
  {
    "path": "icons/folder-sync.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderSyncIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderSyncIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SYNC_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: { rotate: -360 },\n};\n\nconst SYNC_TRANSITION: Transition = {\n  duration: 1.2,\n  ease: \"easeInOut\",\n};\n\nconst FolderSyncIcon = forwardRef<FolderSyncIconHandle, FolderSyncIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            transition={SYNC_TRANSITION}\n            variants={SYNC_VARIANTS}\n          >\n            <path d=\"M12 10v4h4\" />\n            <path d=\"m12 14 1.535-1.605a5 5 0 0 1 8 1.5\" />\n            <path d=\"M22 22v-4h-4\" />\n            <path d=\"m22 18-1.535 1.605a5 5 0 0 1-8-1.5\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderSyncIcon.displayName = \"FolderSyncIcon\";\n\nexport { FolderSyncIcon };\n"
  },
  {
    "path": "icons/folder-tree.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes, MouseEvent } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderTreeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderTreeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.35;\n\nconst BRANCH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst PANEL_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n  },\n};\n\nconst CALCULATE_DELAY = (index: number) => index * DURATION + 0.1;\n\nconst FolderTreeIcon = forwardRef<FolderTreeIconHandle, FolderTreeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(event);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (event: MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(event);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z\"\n            initial=\"normal\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={PANEL_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z\"\n            initial=\"normal\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={PANEL_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 5a2 2 0 0 0 2 2h3\"\n            initial=\"normal\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={BRANCH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 3v13a2 2 0 0 0 2 2h3\"\n            initial=\"normal\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(3),\n              opacity: { delay: CALCULATE_DELAY(3) },\n            }}\n            variants={BRANCH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderTreeIcon.displayName = \"FolderTreeIcon\";\n\nexport { FolderTreeIcon };\n"
  },
  {
    "path": "icons/folder-up.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: { y: [0, -2, 0] },\n};\n\nconst ARROW_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst FolderUpIcon = forwardRef<FolderUpIconHandle, FolderUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            transition={ARROW_TRANSITION}\n            variants={ARROW_VARIANTS}\n          >\n            <path d=\"M12 10v6\" />\n            <path d=\"m9 13 3-3 3 3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderUpIcon.displayName = \"FolderUpIcon\";\n\nexport { FolderUpIcon };\n"
  },
  {
    "path": "icons/folder-x.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FolderXIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FolderXIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n  },\n};\n\nconst FolderXIcon = forwardRef<FolderXIconHandle, FolderXIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />\n          <motion.path\n            animate={controls}\n            d=\"m9.5 10.5 5 5\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14.5 10.5-5 5\"\n            initial=\"normal\"\n            transition={{ delay: 0.2 }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFolderXIcon.displayName = \"FolderXIcon\";\n\nexport { FolderXIcon };\n"
  },
  {
    "path": "icons/folders.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FoldersIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FoldersIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FoldersIcon = forwardRef<FoldersIconHandle, FoldersIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M20 17a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3.9a2 2 0 0 1-1.69-.9l-.81-1.2a2 2 0 0 0-1.67-.9H8a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2Z\"\n            transition={{\n              type: \"spring\",\n              stiffness: 250,\n              damping: 25,\n            }}\n            variants={{\n              normal: {\n                translateX: 0,\n                translateY: 0,\n              },\n              animate: {\n                translateX: -2,\n                translateY: 2,\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 8v11a2 2 0 0 0 2 2h14\"\n            transition={{\n              type: \"spring\",\n              stiffness: 250,\n              damping: 25,\n            }}\n            variants={{\n              normal: {\n                translateX: 0,\n                translateY: 0,\n                opacity: 1,\n                scale: 1,\n              },\n              animate: {\n                translateX: 2,\n                translateY: -2,\n                opacity: 0,\n                scale: 0.9,\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFoldersIcon.displayName = \"FoldersIcon\";\n\nexport { FoldersIcon };\n"
  },
  {
    "path": "icons/frame.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FrameIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FrameIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 160,\n  damping: 17,\n  mass: 1,\n};\n\nconst FrameIcon = forwardRef<FrameIconHandle, FrameIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              animate: { translateY: -4 },\n              normal: {\n                translateX: 0,\n                rotate: 0,\n                translateY: 0,\n              },\n            }}\n            x1={22}\n            x2={2}\n            y1={6}\n            y2={6}\n          />\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              animate: { translateY: 4 },\n              normal: {\n                translateX: 0,\n                rotate: 0,\n                translateY: 0,\n              },\n            }}\n            x1={22}\n            x2={2}\n            y1={18}\n            y2={18}\n          />\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              animate: { translateX: -4 },\n              normal: {\n                translateX: 0,\n                rotate: 0,\n                translateY: 0,\n              },\n            }}\n            x1={6}\n            x2={6}\n            y1={2}\n            y2={22}\n          />\n          <motion.line\n            animate={controls}\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              animate: { translateX: 4 },\n              normal: {\n                translateX: 0,\n                rotate: 0,\n                translateY: 0,\n              },\n            }}\n            x1={18}\n            x2={18}\n            y1={2}\n            y2={22}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nFrameIcon.displayName = \"FrameIcon\";\n\nexport { FrameIcon };\n"
  },
  {
    "path": "icons/frown.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface FrownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface FrownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FrownIcon = forwardRef<FrownIconHandle, FrownIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: {\n        scale: 1,\n        rotate: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.15, 1.05, 1.08],\n        rotate: [0, -2, 2, 0],\n        transition: {\n          duration: 0.8,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      normal: {\n        d: \"M16 16s-1.5-2-4-2-4 2-4 2\",\n        pathLength: 1,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        d: \"M16 17s-1.5-2.5-4-2.5-4 2.5-4 2.5\",\n        pathLength: [0.3, 1, 1],\n        transition: {\n          d: { duration: 0.5, ease: \"easeOut\" },\n          pathLength: {\n            duration: 0.5,\n            times: [0, 0.5, 1],\n            ease: \"easeInOut\",\n          },\n          delay: 0.1,\n        },\n      },\n    };\n\n    const leftEyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        y: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.3, 0.9, 1.1],\n        y: [0, -0.5, 0.3, 0],\n        transition: {\n          duration: 0.6,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const rightEyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        y: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 0.9, 1.3, 1.1],\n        y: [0, -0.5, 0.3, 0],\n        transition: {\n          duration: 0.6,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M16 16s-1.5-2-4-2-4 2-4 2\"\n            initial=\"normal\"\n            variants={mouthVariants}\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={leftEyeVariants}\n            x1=\"9\"\n            x2=\"9.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={rightEyeVariants}\n            x1=\"15\"\n            x2=\"15.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nFrownIcon.displayName = \"FrownIcon\";\n\nexport { FrownIcon };\n"
  },
  {
    "path": "icons/gallery-horizontal-end.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GalleryHorizontalEndIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GalleryHorizontalEndIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    translateX: 0,\n    opacity: 1,\n    transition: {\n      type: \"tween\",\n      stiffness: 200,\n      damping: 13,\n    },\n  },\n  animate: (i: number) => ({\n    translateX: [2 * i, 0],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.25 * (2 - i),\n      type: \"tween\",\n      stiffness: 200,\n      damping: 13,\n    },\n  }),\n};\n\nconst GalleryHorizontalEndIcon = forwardRef<\n  GalleryHorizontalEndIconHandle,\n  GalleryHorizontalEndIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M6 5v14\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M2 7v10\"\n          variants={PATH_VARIANTS}\n        />\n        <rect height=\"18\" rx=\"2\" width=\"12\" x=\"10\" y=\"3\" />\n      </svg>\n    </div>\n  );\n});\n\nGalleryHorizontalEndIcon.displayName = \"GalleryHorizontalEndIcon\";\n\nexport { GalleryHorizontalEndIcon };\n"
  },
  {
    "path": "icons/gallery-thumbnails.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GalleryThumbnailsIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GalleryThumbnailsIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.15, duration: 0.2 },\n  }),\n};\n\nconst GalleryThumbnailsIcon = forwardRef<\n  GalleryThumbnailsIconHandle,\n  GalleryThumbnailsIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"14\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        {[\"M4 21h1\", \"M9 21h1\", \"M14 21h1\", \"M19 21h1\"].map((d, index) => (\n          <motion.path\n            animate={controls}\n            custom={index + 1}\n            d={d}\n            key={d}\n            variants={PATH_VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nGalleryThumbnailsIcon.displayName = \"GalleryThumbnailsIcon\";\n\nexport { GalleryThumbnailsIcon };\n"
  },
  {
    "path": "icons/gallery-vertical-end.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GalleryVerticalEndIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GalleryVerticalEndIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n    opacity: 1,\n    transition: {\n      type: \"tween\",\n      stiffness: 200,\n      damping: 13,\n    },\n  },\n  animate: (i: number) => ({\n    translateY: [2 * i, 0],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.25 * (2 - i),\n      type: \"tween\",\n      stiffness: 200,\n      damping: 13,\n    },\n  }),\n};\n\nconst GalleryVerticalEndIcon = forwardRef<\n  GalleryVerticalEndIconHandle,\n  GalleryVerticalEndIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M7 2h10\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M5 6h14\"\n          variants={PATH_VARIANTS}\n        />\n        <rect height=\"12\" rx=\"2\" width=\"18\" x=\"3\" y=\"10\" />\n      </svg>\n    </div>\n  );\n});\n\nGalleryVerticalEndIcon.displayName = \"GalleryVerticalEndIcon\";\n\nexport { GalleryVerticalEndIcon };\n"
  },
  {
    "path": "icons/gauge.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GaugeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GaugeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 160,\n  damping: 17,\n  mass: 1,\n};\n\nconst GaugeIcon = forwardRef<GaugeIconHandle, GaugeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m12 14 4-4\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              animate: { translateX: 0.5, translateY: 3, rotate: 72 },\n              normal: {\n                translateX: 0,\n                rotate: 0,\n                translateY: 0,\n              },\n            }}\n          />\n          <path d=\"M3.34 19a10 10 0 1 1 17.32 0\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGaugeIcon.displayName = \"GaugeIcon\";\n\nexport { GaugeIcon };\n"
  },
  {
    "path": "icons/gavel.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GavelIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GavelIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst GAVEL_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    rotate: [0, -20, 25, 0],\n    transition: {\n      duration: 0.8,\n      times: [0, 0.6, 0.8, 1],\n      ease: [\"easeInOut\", \"easeOut\", \"easeOut\"],\n    },\n  },\n};\n\nconst GavelIcon = forwardRef<GavelIconHandle, GavelIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"0% 100%\", transformBox: \"fill-box\" }}\n          variants={GAVEL_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m14 13-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381\" />\n          <path d=\"m16 16 6-6\" />\n          <path d=\"m21.5 10.5-8-8\" />\n          <path d=\"m8 8 6-6\" />\n          <path d=\"m8.5 7.5 8 8\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nGavelIcon.displayName = \"GavelIcon\";\n\nexport { GavelIcon };\n"
  },
  {
    "path": "icons/georgian-lari.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GeorgianLariIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GeorgianLariIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LARI_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LARI_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst GeorgianLariIcon = forwardRef<\n  GeorgianLariIconHandle,\n  GeorgianLariIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M11.5 21a7.5 7.5 0 1 1 7.35-9\"\n          initial=\"normal\"\n          variants={LARI_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M4 21h16\"\n          initial=\"normal\"\n          variants={LARI_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M9 12V3\"\n          initial=\"normal\"\n          variants={LARI_SECONDARY_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M13 12V3\"\n          initial=\"normal\"\n          variants={LARI_SECONDARY_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nGeorgianLariIcon.displayName = \"GeorgianLariIcon\";\n\nexport { GeorgianLariIcon };\n"
  },
  {
    "path": "icons/git-branch.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitBranchIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitBranchIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitBranchIcon = forwardRef<GitBranchIconHandle, GitBranchIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"18\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.line\n            animate={controls}\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n            x1=\"6\"\n            x2=\"6\"\n            y1=\"3\"\n            y2=\"15\"\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"18\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M18 9a9 9 0 0 1-9 9\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitBranchIcon.displayName = \"GitBranchIcon\";\n\nexport { GitBranchIcon };\n"
  },
  {
    "path": "icons/git-commit-horizontal.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitCommitHorizontalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitCommitHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15 * custom,\n      opacity: { delay: 0.1 * custom },\n    },\n  }),\n};\n\nconst GitCommitHorizontalIcon = forwardRef<\n  GitCommitHorizontalIconHandle,\n  GitCommitHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          custom={1}\n          cx=\"12\"\n          cy=\"12\"\n          r=\"3\"\n          variants={VARIANTS}\n        />\n        <motion.line\n          animate={controls}\n          custom={0}\n          variants={VARIANTS}\n          x1=\"3\"\n          x2=\"9\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n        <motion.line\n          animate={controls}\n          custom={2}\n          variants={VARIANTS}\n          x1=\"15\"\n          x2=\"21\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitCommitHorizontalIcon.displayName = \"GitCommitHorizontalIcon\";\n\nexport { GitCommitHorizontalIcon };\n"
  },
  {
    "path": "icons/git-commit-vertical.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitCommitVerticalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitCommitVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15 * custom,\n      opacity: { delay: 0.1 * custom },\n    },\n  }),\n};\n\nconst GitCommitVerticalIcon = forwardRef<\n  GitCommitVerticalIconHandle,\n  GitCommitVerticalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M12 3v6\"\n          variants={VARIANTS}\n        />\n        <motion.circle\n          animate={controls}\n          custom={1}\n          cx=\"12\"\n          cy=\"12\"\n          r=\"3\"\n          variants={VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M12 15v6\"\n          variants={VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitCommitVerticalIcon.displayName = \"GitCommitVerticalIcon\";\n\nexport { GitCommitVerticalIcon };\n"
  },
  {
    "path": "icons/git-compare-arrows.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitCompareArrowsIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitCompareArrowsIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitCompareArrowsIcon = forwardRef<\n  GitCompareArrowsIconHandle,\n  GitCompareArrowsIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          cx=\"5\"\n          cy=\"6\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(0),\n            opacity: { delay: CALCULATE_DELAY(0) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M12 6h5a2 2 0 0 1 2 2v7\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"m15 9-3-3 3-3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: { opacity: 1 },\n            animate: { opacity: [0, 1] },\n          }}\n        />\n\n        <motion.circle\n          animate={controls}\n          cx=\"19\"\n          cy=\"18\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M12 18H7a2 2 0 0 1-2-2V9\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"m9 15 3 3-3 3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: { opacity: 1 },\n            animate: { opacity: [0, 1] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitCompareArrowsIcon.displayName = \"GitCompareArrowsIcon\";\n\nexport { GitCompareArrowsIcon };\n"
  },
  {
    "path": "icons/git-compare.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitCompareIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitCompareIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitCompareIcon = forwardRef<GitCompareIconHandle, GitCompareIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"18\"\n            cy=\"18\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M13 6h3a2 2 0 0 1 2 2v7\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M11 18H8a2 2 0 0 1-2-2V9\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitCompareIcon.displayName = \"GitCompareIcon\";\n\nexport { GitCompareIcon };\n"
  },
  {
    "path": "icons/git-fork.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitForkIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitForkIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitForkIcon = forwardRef<GitForkIconHandle, GitForkIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"18\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"18\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M12 12v3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitForkIcon.displayName = \"GitForkIcon\";\n\nexport { GitForkIcon };\n"
  },
  {
    "path": "icons/git-graph.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitGraphIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitGraphIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitGraphIcon = forwardRef<GitGraphIconHandle, GitGraphIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"5\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M5 9v6\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"5\"\n            cy=\"18\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M12 3v18\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"19\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M16 15.7A9 9 0 0 0 19 9\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitGraphIcon.displayName = \"GitGraphIcon\";\n\nexport { GitGraphIcon };\n"
  },
  {
    "path": "icons/git-merge.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitMergeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitMergeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitMergeIcon = forwardRef<GitMergeIconHandle, GitMergeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"18\"\n            cy=\"18\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"6\"\n            r=\"3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M6 21V9a9 9 0 0 0 9 9\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitMergeIcon.displayName = \"GitMergeIcon\";\n\nexport { GitMergeIcon };\n"
  },
  {
    "path": "icons/git-pull-request-closed.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitPullRequestClosedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitPullRequestClosedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitPullRequestClosedIcon = forwardRef<\n  GitPullRequestClosedIconHandle,\n  GitPullRequestClosedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          cx=\"6\"\n          cy=\"6\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(0),\n            opacity: { delay: CALCULATE_DELAY(0) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M6 9v12\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"m21 3-6 6\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: { opacity: 1, transition: { delay: 0 } },\n            animate: { opacity: [0, 1] },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"m21 9-6-6\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: { opacity: 1, transition: { delay: 0 } },\n            animate: { opacity: [0, 1] },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M18 11.5V15\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(3),\n            opacity: { delay: CALCULATE_DELAY(3) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.circle\n          animate={controls}\n          cx=\"18\"\n          cy=\"18\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(4),\n            opacity: { delay: CALCULATE_DELAY(4) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitPullRequestClosedIcon.displayName = \"GitPullRequestClosedIcon\";\n\nexport { GitPullRequestClosedIcon };\n"
  },
  {
    "path": "icons/git-pull-request-create.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitPullRequestCreateIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitPullRequestCreateIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitPullRequestCreateIcon = forwardRef<\n  GitPullRequestCreateIconHandle,\n  GitPullRequestCreateIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          cx=\"6\"\n          cy=\"6\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(0),\n            opacity: { delay: CALCULATE_DELAY(0) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M6 9v12\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M13 6h3a2 2 0 0 1 2 2v3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M18 15v6\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n\n        <motion.path\n          animate={controls}\n          d=\"M21 18h-6\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(3),\n            opacity: { delay: CALCULATE_DELAY(3) },\n          }}\n          variants={{\n            normal: { opacity: 1, transition: { delay: 0 } },\n            animate: { opacity: [0, 1] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitPullRequestCreateIcon.displayName = \"GitPullRequestCreateIcon\";\n\nexport { GitPullRequestCreateIcon };\n"
  },
  {
    "path": "icons/git-pull-request.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitPullRequestIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitPullRequestIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.3;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitPullRequestIcon = forwardRef<\n  GitPullRequestIconHandle,\n  GitPullRequestIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.circle\n          animate={controls}\n          cx=\"18\"\n          cy=\"18\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(0),\n            opacity: { delay: CALCULATE_DELAY(0) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n        <motion.circle\n          animate={controls}\n          cx=\"6\"\n          cy=\"6\"\n          r=\"3\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(2),\n            opacity: { delay: CALCULATE_DELAY(2) },\n          }}\n          variants={{\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n            },\n          }}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M13 6h3a2 2 0 0 1 2 2v7\"\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(1),\n            opacity: { delay: CALCULATE_DELAY(1) },\n          }}\n          variants={{\n            normal: {\n              pathLength: 1,\n              pathOffset: 0,\n              opacity: 1,\n              transition: { delay: 0 },\n            },\n            animate: {\n              pathLength: [0, 1],\n              opacity: [0, 1],\n              pathOffset: [1, 0],\n            },\n          }}\n        />\n        <motion.line\n          animate={controls}\n          transition={{\n            duration: DURATION,\n            delay: CALCULATE_DELAY(3),\n            opacity: { delay: CALCULATE_DELAY(3) },\n          }}\n          variants={{\n            normal: { opacity: 1, pathLength: 1, transition: { delay: 0 } },\n            animate: {\n              opacity: [0, 1],\n              pathLength: [0, 1],\n            },\n          }}\n          x1=\"6\"\n          x2=\"6\"\n          y1=\"9\"\n          y2=\"21\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nGitPullRequestIcon.displayName = \"GitPullRequestIcon\";\n\nexport { GitPullRequestIcon };\n"
  },
  {
    "path": "icons/github.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GithubIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GithubIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BODY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    scale: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    scale: [0.9, 1],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst TAIL_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    rotate: 0,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  draw: {\n    pathLength: [0, 1],\n    rotate: 0,\n    transition: {\n      duration: 0.5,\n    },\n  },\n  wag: {\n    pathLength: 1,\n    rotate: [0, -15, 15, -10, 10, -5, 5],\n    transition: {\n      duration: 2.5,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst GithubIcon = forwardRef<GithubIconHandle, GithubIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const bodyControls = useAnimation();\n    const tailControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          bodyControls.start(\"animate\");\n          await tailControls.start(\"draw\");\n          tailControls.start(\"wag\");\n        },\n        stopAnimation: () => {\n          bodyControls.start(\"normal\");\n          tailControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          bodyControls.start(\"animate\");\n          await tailControls.start(\"draw\");\n          tailControls.start(\"wag\");\n        }\n      },\n      [bodyControls, onMouseEnter, tailControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          bodyControls.start(\"normal\");\n          tailControls.start(\"normal\");\n        }\n      },\n      [bodyControls, tailControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={bodyControls}\n            d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"\n            initial=\"normal\"\n            variants={BODY_VARIANTS}\n          />\n          <motion.path\n            animate={tailControls}\n            d=\"M9 18c-4.51 2-5-2-7-2\"\n            initial=\"normal\"\n            variants={TAIL_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGithubIcon.displayName = \"GithubIcon\";\n\nexport { GithubIcon };\n"
  },
  {
    "path": "icons/gitlab.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GitlabIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GitlabIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.7;\n\nconst CALCULATE_DELAY = (i: number) => {\n  if (i === 0) return 0.1;\n\n  return i * DURATION + 0.1;\n};\n\nconst GitlabIcon = forwardRef<GitlabIconHandle, GitlabIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m22 13.29-3.33-10a.42.42 0 0 0-.14-.18.38.38 0 0 0-.22-.11.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18l-2.26 6.67H8.32L6.1 3.26a.42.42 0 0 0-.1-.18.38.38 0 0 0-.26-.08.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18L2 13.29a.74.74 0 0 0 .27.83L12 21l9.69-6.88a.71.71 0 0 0 .31-.83Z\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nGitlabIcon.displayName = \"GitlabIcon\";\n\nexport { GitlabIcon };\n"
  },
  {
    "path": "icons/graduation-cap.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GraduationCapIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GraduationCapIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CAP_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    y: [0, -2, 0],\n    rotate: [0, -2, 2, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst TASSEL_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [0, 15, -10, 5, 0],\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n      delay: 0.1,\n    },\n  },\n};\n\nconst GraduationCapIcon = forwardRef<\n  GraduationCapIconHandle,\n  GraduationCapIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.g\n          animate={controls}\n          style={{ transformOrigin: \"12px 12px\" }}\n          variants={CAP_VARIANTS}\n        >\n          <path d=\"M2 10l10-5 10 5-10 5z\" />\n          <path d=\"M6 12v5c3 3 9 3 12 0v-5\" />\n\n          {/* Tassel now inherits cap movement */}\n          <motion.path\n            d=\"M22 10v6\"\n            style={{\n              transformBox: \"fill-box\",\n              transformOrigin: \"top center\",\n            }}\n            variants={TASSEL_VARIANTS}\n          />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nGraduationCapIcon.displayName = \"GraduationCapIcon\";\n\nexport { GraduationCapIcon };\n"
  },
  {
    "path": "icons/grip-horizontal.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GripHorizontalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GripHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLES = [\n  { cx: 5, cy: 9 },\n  { cx: 12, cy: 9 },\n  { cx: 19, cy: 9 },\n  { cx: 5, cy: 15 },\n  { cx: 12, cy: 15 },\n  { cx: 19, cy: 15 },\n];\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    scale: 1,\n    transition: { duration: 0.25, ease: \"easeOut\" },\n  },\n  animate: (index: number) => {\n    const row = Math.floor(index / 3);\n    const col = index % 3;\n\n    const delay = col * 0.15 + row * 0.25;\n\n    return {\n      opacity: [1, 0.4, 1],\n      scale: [1, 0.85, 1],\n      transition: {\n        delay,\n        duration: 1,\n        ease: \"easeInOut\",\n      },\n    };\n  },\n};\n\nconst GripHorizontalIcon = forwardRef<\n  GripHorizontalIconHandle,\n  GripHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n  const isAnimatingRef = useRef(false);\n\n  const startAnimation = useCallback(async () => {\n    if (isAnimatingRef.current) return;\n    isAnimatingRef.current = true;\n    await controls.start(\"animate\");\n    await controls.start(\"normal\");\n    isAnimatingRef.current = false;\n  }, [controls]);\n\n  const stopAnimation = useCallback(async () => {\n    if (!isAnimatingRef.current) return;\n    await controls.start(\"normal\");\n    isAnimatingRef.current = false;\n  }, [controls]);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return { startAnimation, stopAnimation };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) startAnimation();\n      onMouseEnter?.(e);\n    },\n    [startAnimation, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) stopAnimation();\n      onMouseLeave?.(e);\n    },\n    [stopAnimation, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(\"inline-flex items-center justify-center\", className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        {CIRCLES.map((circle, index) => (\n          <motion.circle\n            animate={controls}\n            custom={index}\n            cx={circle.cx}\n            cy={circle.cy}\n            initial=\"normal\"\n            key={`${circle.cx}-${circle.cy}`}\n            r=\"1\"\n            variants={VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nGripHorizontalIcon.displayName = \"GripHorizontalIcon\";\nexport { GripHorizontalIcon };\n"
  },
  {
    "path": "icons/grip-vertical.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GripVerticalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GripVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLES = [\n  { cx: 9, cy: 5 },\n  { cx: 9, cy: 12 },\n  { cx: 9, cy: 19 },\n  { cx: 15, cy: 5 },\n  { cx: 15, cy: 12 },\n  { cx: 15, cy: 19 },\n];\n\nconst ROWS = 3;\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    scale: 1,\n    transition: { duration: 0.25, ease: \"easeOut\" },\n  },\n  animate: (data: { index: number }) => {\n    const row = data.index % ROWS;\n    const col = Math.floor(data.index / ROWS);\n    const delay = row * 0.15 + col * (ROWS * 0.15 - 0.2);\n\n    return {\n      opacity: [1, 0.4, 1],\n      scale: [1, 0.85, 1],\n      transition: { delay, duration: 1, ease: \"easeInOut\" },\n    };\n  },\n};\n\nconst GripVerticalIcon = forwardRef<\n  GripVerticalIconHandle,\n  GripVerticalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n  const isAnimatingRef = useRef(false);\n\n  const startAnimation = useCallback(async () => {\n    if (isAnimatingRef.current) return;\n    isAnimatingRef.current = true;\n    await controls.start(\"animate\");\n    await controls.start(\"normal\");\n    isAnimatingRef.current = false;\n  }, [controls]);\n\n  const stopAnimation = useCallback(async () => {\n    if (!isAnimatingRef.current) return;\n    await controls.start(\"normal\");\n    isAnimatingRef.current = false;\n  }, [controls]);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return { startAnimation, stopAnimation };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) startAnimation();\n      onMouseEnter?.(e);\n    },\n    [startAnimation, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!isControlledRef.current) stopAnimation();\n      onMouseLeave?.(e);\n    },\n    [stopAnimation, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(\"inline-flex items-center justify-center\", className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        {CIRCLES.map((circle, index) => (\n          <motion.circle\n            animate={controls}\n            custom={{ index }}\n            cx={circle.cx}\n            cy={circle.cy}\n            initial=\"normal\"\n            key={`${circle.cx}-${circle.cy}`}\n            r=\"1\"\n            variants={VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nGripVerticalIcon.displayName = \"GripVerticalIcon\";\nexport { GripVerticalIcon };\n"
  },
  {
    "path": "icons/grip.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface GripIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface GripProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLES = [\n  { cx: 19, cy: 5 },\n  { cx: 19, cy: 12 },\n  { cx: 12, cy: 5 },\n  { cx: 19, cy: 19 },\n  { cx: 12, cy: 12 },\n  { cx: 5, cy: 5 },\n  { cx: 12, cy: 19 },\n  { cx: 5, cy: 12 },\n  { cx: 5, cy: 19 },\n];\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: { duration: 0.25 },\n  },\n  animate: (index: number) => ({\n    opacity: [1, 0.3, 0.3, 1],\n    transition: {\n      delay: index * 0.07,\n      duration: 1.1,\n      times: [0, 0.2, 0.8, 1],\n    },\n  }),\n};\n\nconst GripIcon = forwardRef<GripIconHandle, GripProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n    const isAnimatingRef = useRef(false);\n\n    const startAnimation = useCallback(async () => {\n      if (isAnimatingRef.current) return;\n      isAnimatingRef.current = true;\n      await controls.start(\"animate\");\n      await controls.start(\"normal\");\n      isAnimatingRef.current = false;\n    }, [controls]);\n\n    const stopAnimation = useCallback(async () => {\n      if (!isAnimatingRef.current) return;\n      await controls.start(\"normal\");\n      isAnimatingRef.current = false;\n    }, [controls]);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return { startAnimation, stopAnimation };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          startAnimation();\n        }\n      },\n      [startAnimation, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          stopAnimation();\n        }\n      },\n      [stopAnimation, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(\"inline-flex items-center justify-center\", className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {CIRCLES.map((circle, index) => (\n            <motion.circle\n              animate={controls}\n              custom={index}\n              cx={circle.cx}\n              cy={circle.cy}\n              initial=\"normal\"\n              key={`${circle.cx}-${circle.cy}`}\n              r=\"1\"\n              variants={VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nGripIcon.displayName = \"GripIcon\";\nexport { GripIcon };\n"
  },
  {
    "path": "icons/hammer.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HammerIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HammerIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HAMMER_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    rotate: [0, -20, 25, 0],\n    transition: {\n      duration: 0.8,\n      times: [0, 0.6, 0.8, 1],\n      ease: [\"easeInOut\", \"easeOut\", \"easeOut\"],\n    },\n  },\n};\n\nconst HammerIcon = forwardRef<HammerIconHandle, HammerIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"0% 100%\", transformBox: \"fill-box\" }}\n          variants={HAMMER_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\" />\n          <path d=\"m18 15 4-4\" />\n          <path d=\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHammerIcon.displayName = \"HammerIcon\";\n\nexport { HammerIcon };\n"
  },
  {
    "path": "icons/hand-coins.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandCoinsIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandCoinsIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n    opacity: 1,\n    transition: {\n      opacity: { duration: 0.2 },\n      type: \"spring\",\n      stiffness: 150,\n      damping: 15,\n      bounce: 0.8,\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    translateY: [-20, 0],\n    transition: {\n      opacity: { duration: 0.2 },\n      type: \"spring\",\n      stiffness: 150,\n      damping: 15,\n      bounce: 0.8,\n    },\n  },\n};\n\nconst SECOND_CIRCLE_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n    opacity: 1,\n    transition: {\n      opacity: { duration: 0.2 },\n      delay: 0.15,\n      type: \"spring\",\n      stiffness: 150,\n      damping: 15,\n      bounce: 0.8,\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    translateY: [-20, 0],\n    transition: {\n      opacity: { duration: 0.2 },\n      delay: 0.15,\n      type: \"spring\",\n      stiffness: 150,\n      damping: 15,\n      bounce: 0.8,\n    },\n  },\n};\n\nconst HandCoinsIcon = forwardRef<HandCoinsIconHandle, HandCoinsIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17\" />\n          <path d=\"m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" />\n          <path d=\"m2 16 6 6\" />\n          <motion.circle\n            animate={controls}\n            cx=\"16\"\n            cy=\"9\"\n            r=\"2.9\"\n            variants={CIRCLE_VARIANTS}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"5\"\n            r=\"3\"\n            variants={SECOND_CIRCLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nHandCoinsIcon.displayName = \"HandCoinsIcon\";\n\nexport { HandCoinsIcon };\n"
  },
  {
    "path": "icons/hand-fist.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandFistIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandFistIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HandFistIcon = forwardRef<HandFistIconHandle, HandFistIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            normal: { y: 0, scale: 1 },\n            animate: {\n              y: [0, -4, 0],\n              scale: [1, 1.1, 1],\n              transition: {\n                duration: 0.4,\n                ease: \"easeInOut\",\n                repeat: 1,\n                repeatType: \"reverse\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.035 17.012a3 3 0 0 0-3-3l-.311-.002a.72.72 0 0 1-.505-1.229l1.195-1.195A2 2 0 0 1 10.828 11H12a2 2 0 0 0 0-4H9.243a3 3 0 0 0-2.122.879l-2.707 2.707A4.83 4.83 0 0 0 3 14a8 8 0 0 0 8 8h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0\" />\n          <path d=\"M13.888 9.662A2 2 0 0 0 17 8V5A2 2 0 1 0 13 5\" />\n          <path d=\"M9 5A2 2 0 1 0 5 5V10\" />\n          <path d=\"M9 7V4A2 2 0 1 1 13 4V7.268\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHandFistIcon.displayName = \"HandFistIcon\";\n\nexport { HandFistIcon };\n"
  },
  {
    "path": "icons/hand-grab.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandGrabIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandGrabIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HandGrabIcon = forwardRef<HandGrabIconHandle, HandGrabIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            normal: { scale: 1 },\n            animate: {\n              scale: [1, 0.9, 1],\n              transition: {\n                duration: 0.4,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18 11.5V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4\" />\n          <path d=\"M14 10V8a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\" />\n          <path d=\"M10 9.9V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v5\" />\n          <path d=\"M6 14a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" />\n          <path d=\"M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-4a8 8 0 0 1-8-8 2 2 0 1 1 4 0\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHandGrabIcon.displayName = \"HandGrabIcon\";\n\nexport { HandGrabIcon };\n"
  },
  {
    "path": "icons/hand-heart.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandHeartIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandHeartIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\nconst HEART_VARIANTS: Variants = {\n  normal: {\n    translateY: 0,\n    scale: 1,\n    transition: {\n      delay: 0.1,\n      scale: { duration: 0.2 },\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n  animate: {\n    translateY: [0, -2],\n    scale: [1, 1.1],\n    transition: {\n      delay: 0.1,\n      scale: { duration: 0.2 },\n      type: \"spring\",\n      stiffness: 200,\n      damping: 25,\n    },\n  },\n};\n\nconst HandHeartIcon = forwardRef<HandHeartIconHandle, HandHeartIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M11 14h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16\" />\n          <path d=\"m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" />\n          <path d=\"m2 15 6 6\" />\n          <motion.path\n            animate={controls}\n            d=\"M19.5 8.5c.7-.7 1.5-1.6 1.5-2.7A2.73 2.73 0 0 0 16 4a2.78 2.78 0 0 0-5 1.8c0 1.2.8 2 1.5 2.8L16 12Z\"\n            variants={HEART_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nHandHeartIcon.displayName = \"HandHeartIcon\";\n\nexport { HandHeartIcon };\n"
  },
  {
    "path": "icons/hand-helping.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandHelpingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandHelpingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HandHelpingIcon = forwardRef<HandHelpingIconHandle, HandHelpingIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            normal: { x: 0, y: 0 },\n            animate: {\n              x: [0, 2, 0],\n              y: [0, -2, 0],\n              transition: {\n                duration: 0.5,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M11 12h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 14\" />\n          <path d=\"m7 18 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" />\n          <path d=\"m2 13 6 6\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHandHelpingIcon.displayName = \"HandHelpingIcon\";\n\nexport { HandHelpingIcon };\n"
  },
  {
    "path": "icons/hand-metal.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandMetalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandMetalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HandMetalIcon = forwardRef<HandMetalIconHandle, HandMetalIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ originX: \"50%\", originY: \"90%\" }}\n          variants={{\n            normal: { rotate: 0 },\n            animate: {\n              rotate: [0, -15, 15, -10, 10, 0],\n              transition: {\n                duration: 0.6,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18 12.5V10a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4\" />\n          <path d=\"M14 11V9a2 2 0 1 0-4 0v2\" />\n          <path d=\"M10 10.5V5a2 2 0 1 0-4 0v9\" />\n          <path d=\"m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHandMetalIcon.displayName = \"HandMetalIcon\";\n\nexport { HandMetalIcon };\n"
  },
  {
    "path": "icons/hand.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HandIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HandIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HandIcon = forwardRef<HandIconHandle, HandIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={{\n            normal: { rotate: 0, originX: \"50%\", originY: \"90%\" },\n            animate: {\n              rotate: [0, -15, 10, -5, 0],\n              transition: {\n                duration: 0.8,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" />\n          <path d=\"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\" />\n          <path d=\"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8\" />\n          <path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHandIcon.displayName = \"HandIcon\";\n\nexport { HandIcon };\n"
  },
  {
    "path": "icons/hard-drive-download.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HardDriveDownloadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HardDriveDownloadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: -1 },\n  animate: {\n    y: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 10,\n      mass: 1,\n    },\n  },\n};\n\nconst HardDriveDownloadIcon = forwardRef<\n  HardDriveDownloadIconHandle,\n  HardDriveDownloadIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"8\" rx=\"2\" width=\"20\" x=\"2\" y=\"14\" />\n        <path d=\"M6 18h.01\" />\n        <path d=\"M10 18h.01\" />\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\n          <path d=\"M12 2v8\" />\n          <path d=\"m16 6-4 4-4-4\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nHardDriveDownloadIcon.displayName = \"HardDriveDownloadIcon\";\n\nexport { HardDriveDownloadIcon };\n"
  },
  {
    "path": "icons/hard-drive-upload.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HardDriveUploadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HardDriveUploadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: {\n    y: -1,\n    transition: {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 10,\n      mass: 1,\n    },\n  },\n};\n\nconst HardDriveUploadIcon = forwardRef<\n  HardDriveUploadIconHandle,\n  HardDriveUploadIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"8\" rx=\"2\" width=\"20\" x=\"2\" y=\"14\" />\n        <path d=\"M6 18h.01\" />\n        <path d=\"M10 18h.01\" />\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\n          <path d=\"m16 6-4-4-4 4\" />\n          <path d=\"M12 2v8\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nHardDriveUploadIcon.displayName = \"HardDriveUploadIcon\";\n\nexport { HardDriveUploadIcon };\n"
  },
  {
    "path": "icons/heart-handshake.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HeartHandshakeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HeartHandshakeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HeartHandshakeIcon = forwardRef<\n  HeartHandshakeIconHandle,\n  HeartHandshakeIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        style={{ originX: \"50%\", originY: \"50%\" }}\n        variants={{\n          normal: { scale: 1, rotate: 0 },\n          animate: {\n            scale: [1, 0.9, 1, 1, 1, 1, 1],\n            rotate: [0, 0, 0, -7, 7, -3, 0],\n            transition: {\n              duration: 0.7,\n\n              times: [0, 0.15, 0.3, 0.4, 0.55, 0.75, 1],\n              ease: \"easeInOut\",\n            },\n          },\n        }}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M19.414 14.414C21 12.828 22 11.5 22 9.5a5.5 5.5 0 0 0-9.591-3.676.6.6 0 0 1-.818.001A5.5 5.5 0 0 0 2 9.5c0 2.3 1.5 4 3 5.5l5.535 5.362a2 2 0 0 0 2.879.052 2.12 2.12 0 0 0-.004-3 2.124 2.124 0 1 0 3-3 2.124 2.124 0 0 0 3.004 0 2 2 0 0 0 0-2.828l-1.881-1.882a2.41 2.41 0 0 0-3.409 0l-1.71 1.71a2 2 0 0 1-2.828 0 2 2 0 0 1 0-2.828l2.823-2.762\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nHeartHandshakeIcon.displayName = \"HeartHandshakeIcon\";\n\nexport { HeartHandshakeIcon };\n"
  },
  {
    "path": "icons/heart-pulse.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HeartPulseIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HeartPulseIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HEART_DRAW_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n  draw: { pathLength: [0, 1], opacity: [0, 1] },\n};\n\nconst HEART_PULSE_VARIANTS: Variants = {\n  normal: { scale: 1 },\n  pulse: { scale: [1, 1.08, 1] },\n};\n\nconst LINE_VARIANTS: Variants = {\n  normal: { pathLength: 1, pathOffset: 0, opacity: 1 },\n  animate: { pathLength: [0, 1], pathOffset: [1, 0], opacity: [0, 1] },\n};\n\nconst HeartPulseIcon = forwardRef<HeartPulseIconHandle, HeartPulseIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const heartDrawControls = useAnimation();\n    const heartPulseControls = useAnimation();\n    const lineControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    const startAnimation = useCallback(async () => {\n      heartDrawControls.start(\"hidden\", { duration: 0 });\n      await lineControls.start(\"animate\", {\n        duration: 0.6,\n        ease: \"linear\",\n        opacity: { duration: 0.1 },\n      });\n      await heartDrawControls.start(\"draw\", {\n        duration: 0.5,\n        ease: \"easeOut\",\n        opacity: { duration: 0.1 },\n      });\n      heartPulseControls.start(\"pulse\", {\n        duration: 0.9,\n        repeat: 1,\n        ease: \"easeInOut\",\n      });\n    }, [heartDrawControls, heartPulseControls, lineControls]);\n\n    const stopAnimation = useCallback(() => {\n      heartDrawControls.start(\"normal\", { duration: 0.3 });\n      heartPulseControls.start(\"normal\", { duration: 0.3 });\n      lineControls.start(\"normal\", { duration: 0.3 });\n    }, [heartDrawControls, heartPulseControls, lineControls]);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return { startAnimation, stopAnimation };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          startAnimation();\n        }\n      },\n      [startAnimation, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          stopAnimation();\n        }\n      },\n      [stopAnimation, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={heartPulseControls}\n            style={{ originX: \"12px\", originY: \"12px\" }}\n            variants={HEART_PULSE_VARIANTS}\n          >\n            <motion.path\n              animate={heartDrawControls}\n              d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"\n              variants={HEART_DRAW_VARIANTS}\n            />\n          </motion.g>\n          <motion.path\n            animate={lineControls}\n            d=\"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nHeartPulseIcon.displayName = \"HeartPulseIcon\";\n\nexport { HeartPulseIcon };\n"
  },
  {
    "path": "icons/heart.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HeartIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HeartIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HeartIcon = forwardRef<HeartIconHandle, HeartIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 0.45,\n            repeat: 2,\n          }}\n          variants={{\n            normal: { scale: 1 },\n            animate: { scale: [1, 1.08, 1] },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nHeartIcon.displayName = \"HeartIcon\";\n\nexport { HeartIcon };\n"
  },
  {
    "path": "icons/history.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HistoryIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HistoryIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    rotate: \"0deg\",\n  },\n  animate: {\n    rotate: \"-50deg\",\n  },\n};\n\nconst HAND_TRANSITION: Transition = {\n  duration: 0.6,\n  ease: [0.4, 0, 0.2, 1],\n};\n\nconst HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n  animate: {\n    rotate: -360,\n    originX: \"0%\",\n    originY: \"100%\",\n  },\n};\n\nconst MINUTE_HAND_TRANSITION: Transition = {\n  duration: 0.5,\n  ease: \"easeInOut\",\n};\n\nconst MINUTE_HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"0%\",\n  },\n  animate: {\n    rotate: -45,\n    originX: \"0%\",\n    originY: \"0%\",\n  },\n};\n\nconst HistoryIcon = forwardRef<HistoryIconHandle, HistoryIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            transition={ARROW_TRANSITION}\n            variants={ARROW_VARIANTS}\n          >\n            <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n            <path d=\"M3 3v5h5\" />\n          </motion.g>\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={HAND_TRANSITION}\n            variants={HAND_VARIANTS}\n            x1=\"12\"\n            x2=\"12\"\n            y1=\"12\"\n            y2=\"7\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            transition={MINUTE_HAND_TRANSITION}\n            variants={MINUTE_HAND_VARIANTS}\n            x1=\"12\"\n            x2=\"16\"\n            y1=\"12\"\n            y2=\"14\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nHistoryIcon.displayName = \"HistoryIcon\";\n\nexport { HistoryIcon };\n"
  },
  {
    "path": "icons/home.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HomeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HomeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  duration: 0.6,\n  opacity: { duration: 0.2 },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n  },\n};\n\nconst HomeIcon = forwardRef<HomeIconHandle, HomeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n          <motion.path\n            animate={controls}\n            d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"\n            transition={DEFAULT_TRANSITION}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nHomeIcon.displayName = \"HomeIcon\";\n\nexport { HomeIcon };\n"
  },
  {
    "path": "icons/hourglass.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface HourglassIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface HourglassIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HourglassIcon = forwardRef<HourglassIconHandle, HourglassIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            style={{\n              transformOrigin: \"12px 12px\",\n            }}\n            transition={{\n              type: \"spring\",\n              stiffness: 100,\n              damping: 15,\n              mass: 1,\n            }}\n            variants={{\n              normal: {\n                rotate: 0,\n              },\n              animate: {\n                rotate: 180,\n              },\n            }}\n          >\n            <path d=\"M5 22h14\" />\n            <path d=\"M5 2h14\" />\n            <path d=\"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\" />\n            <path d=\"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nHourglassIcon.displayName = \"HourglassIcon\";\n\nexport { HourglassIcon };\n"
  },
  {
    "path": "icons/id-card.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface IdCardIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface IdCardIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      duration: 0.3,\n      delay: custom * 0.1,\n    },\n  }),\n};\n\nconst IdCardIcon = forwardRef<IdCardIconHandle, IdCardIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M16 10h2\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M16 14h2\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M6.17 15a3 3 0 0 1 5.66 0\"\n            variants={VARIANTS}\n          />\n          <motion.circle\n            animate={controls}\n            custom={1}\n            cx=\"9\"\n            cy=\"11\"\n            r=\"2\"\n            variants={VARIANTS}\n          />\n          <rect height=\"14\" rx=\"2\" width=\"20\" x=\"2\" y=\"5\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nIdCardIcon.displayName = \"IdCardIcon\";\n\nexport { IdCardIcon };\n"
  },
  {
    "path": "icons/index.ts",
    "content": "import { AArrowDownIcon } from \"@/icons/a-arrow-down\";\nimport { AArrowUpIcon } from \"@/icons/a-arrow-up\";\nimport { AccessibilityIcon } from \"@/icons/accessibility\";\nimport { ActivityIcon } from \"@/icons/activity\";\nimport { AirVentIcon } from \"@/icons/air-vent\";\nimport { AirplaneIcon } from \"@/icons/airplane\";\nimport { AirplayIcon } from \"@/icons/airplay\";\nimport { AlarmClockIcon } from \"@/icons/alarm-clock\";\nimport { AlignCenterIcon } from \"@/icons/align-center\";\nimport { AlignHorizontalIcon } from \"@/icons/align-horizontal\";\nimport { AlignLeftIcon } from \"@/icons/align-left\";\nimport { AlignRightIcon } from \"@/icons/align-right\";\nimport { AlignVerticalIcon } from \"@/icons/align-vertical\";\nimport { AmbulanceIcon } from \"@/icons/ambulance\";\nimport { AngryIcon } from \"@/icons/angry\";\nimport { AnnoyedIcon } from \"@/icons/annoyed\";\nimport { ArchiveIcon } from \"@/icons/archive\";\nimport { ArrowBigDownIcon } from \"@/icons/arrow-big-down\";\nimport { ArrowBigDownDashIcon } from \"@/icons/arrow-big-down-dash\";\nimport { ArrowBigLeftIcon } from \"@/icons/arrow-big-left\";\nimport { ArrowBigLeftDashIcon } from \"@/icons/arrow-big-left-dash\";\nimport { ArrowBigRightIcon } from \"@/icons/arrow-big-right\";\nimport { ArrowBigRightDashIcon } from \"@/icons/arrow-big-right-dash\";\nimport { ArrowBigUpIcon } from \"@/icons/arrow-big-up\";\nimport { ArrowBigUpDashIcon } from \"@/icons/arrow-big-up-dash\";\nimport { ArrowDownIcon } from \"@/icons/arrow-down\";\nimport { ArrowDown01Icon } from \"@/icons/arrow-down-0-1\";\nimport { ArrowDown10Icon } from \"@/icons/arrow-down-1-0\";\nimport { ArrowDownAZIcon } from \"@/icons/arrow-down-a-z\";\nimport { ArrowDownLeftIcon } from \"@/icons/arrow-down-left\";\nimport { ArrowDownRightIcon } from \"@/icons/arrow-down-right\";\nimport { ArrowDownZAIcon } from \"@/icons/arrow-down-z-a\";\nimport { ArrowLeftIcon } from \"@/icons/arrow-left\";\nimport { ArrowRightIcon } from \"@/icons/arrow-right\";\nimport { ArrowUpIcon } from \"@/icons/arrow-up\";\nimport { ArrowUpLeftIcon } from \"@/icons/arrow-up-left\";\nimport { ArrowUpRightIcon } from \"@/icons/arrow-up-right\";\nimport { AtSignIcon } from \"@/icons/at-sign\";\nimport { AtomIcon } from \"@/icons/atom\";\nimport { AttachFileIcon } from \"@/icons/attach-file\";\nimport { AudioLinesIcon } from \"@/icons/audio-lines\";\nimport { AxeIcon } from \"@/icons/axe\";\nimport { BadgeAlertIcon } from \"@/icons/badge-alert\";\nimport { BadgePercentIcon } from \"@/icons/badge-percent\";\nimport { BanIcon } from \"@/icons/ban\";\nimport { BananaIcon } from \"@/icons/banana\";\nimport { BatteryFullIcon } from \"@/icons/battery-full\";\nimport { BatteryLowIcon } from \"@/icons/battery-low\";\nimport { BatteryMediumIcon } from \"@/icons/battery-medium\";\nimport { BellIcon } from \"@/icons/bell\";\nimport { BlocksIcon } from \"@/icons/blocks\";\nimport { BluetoothIcon } from \"@/icons/bluetooth\";\nimport { BluetoothConnectedIcon } from \"@/icons/bluetooth-connected\";\nimport { BluetoothOffIcon } from \"@/icons/bluetooth-off\";\nimport { BluetoothSearchingIcon } from \"@/icons/bluetooth-searching\";\nimport { BoldIcon } from \"@/icons/bold\";\nimport { BoneIcon } from \"@/icons/bone\";\nimport { BookTextIcon } from \"@/icons/book-text\";\nimport { BookmarkIcon } from \"@/icons/bookmark\";\nimport { BookmarkCheckIcon } from \"@/icons/bookmark-check\";\nimport { BookmarkMinusIcon } from \"@/icons/bookmark-minus\";\nimport { BookmarkPlusIcon } from \"@/icons/bookmark-plus\";\nimport { BookmarkXIcon } from \"@/icons/bookmark-x\";\nimport { BotIcon } from \"@/icons/bot\";\nimport { BotMessageSquareIcon } from \"@/icons/bot-message-square\";\nimport { BoxIcon } from \"@/icons/box\";\nimport { BoxesIcon } from \"@/icons/boxes\";\nimport { BrainIcon } from \"@/icons/brain\";\nimport { CalendarCheckIcon } from \"@/icons/calendar-check\";\nimport { CalendarCheck2Icon } from \"@/icons/calendar-check-2\";\nimport { CalendarCogIcon } from \"@/icons/calendar-cog\";\nimport { CalendarDaysIcon } from \"@/icons/calendar-days\";\nimport { CartIcon } from \"@/icons/cart\";\nimport { CastIcon } from \"@/icons/cast\";\nimport { CctvIcon } from \"@/icons/cctv\";\nimport { ChartBarDecreasingIcon } from \"@/icons/chart-bar-decreasing\";\nimport { ChartBarIncreasingIcon } from \"@/icons/chart-bar-increasing\";\nimport { ChartColumnDecreasingIcon } from \"@/icons/chart-column-decreasing\";\nimport { ChartColumnIncreasingIcon } from \"@/icons/chart-column-increasing\";\nimport { ChartLineIcon } from \"@/icons/chart-line\";\nimport { ChartNoAxesColumnDecreasingIcon } from \"@/icons/chart-no-axes-column-decreasing\";\nimport { ChartNoAxesColumnIncreasingIcon } from \"@/icons/chart-no-axes-column-increasing\";\nimport { ChartPieIcon } from \"@/icons/chart-pie\";\nimport { ChartScatterIcon } from \"@/icons/chart-scatter\";\nimport { ChartSplineIcon } from \"@/icons/chart-spline\";\nimport { CheckIcon } from \"@/icons/check\";\nimport { CheckCheckIcon } from \"@/icons/check-check\";\nimport { ChevronDownIcon } from \"@/icons/chevron-down\";\nimport { ChevronFirstIcon } from \"@/icons/chevron-first\";\nimport { ChevronLeftIcon } from \"@/icons/chevron-left\";\nimport { ChevronRightIcon } from \"@/icons/chevron-right\";\nimport { ChevronUpIcon } from \"@/icons/chevron-up\";\nimport { ChevronsDownUpIcon } from \"@/icons/chevrons-down-up\";\nimport { ChevronsLeftRightIcon } from \"@/icons/chevrons-left-right\";\nimport { ChevronsRightLeftIcon } from \"@/icons/chevrons-right-left\";\nimport { ChevronsUpDownIcon } from \"@/icons/chevrons-up-down\";\nimport { ChromeIcon } from \"@/icons/chrome\";\nimport { CircleCheckIcon } from \"@/icons/circle-check\";\nimport { CircleChevronDownIcon } from \"@/icons/circle-chevron-down\";\nimport { CircleChevronLeftIcon } from \"@/icons/circle-chevron-left\";\nimport { CircleChevronRightIcon } from \"@/icons/circle-chevron-right\";\nimport { CircleChevronUpIcon } from \"@/icons/circle-chevron-up\";\nimport { CircleDashedIcon } from \"@/icons/circle-dashed\";\nimport { CircleDollarSignIcon } from \"@/icons/circle-dollar-sign\";\nimport { CircleHelpIcon } from \"@/icons/circle-help\";\nimport { ClapIcon } from \"@/icons/clap\";\nimport { ClipboardCheckIcon } from \"@/icons/clipboard-check\";\nimport { ClockIcon } from \"@/icons/clock\";\nimport { CloudCogIcon } from \"@/icons/cloud-cog\";\nimport { CloudDownloadIcon } from \"@/icons/cloud-download\";\nimport { CloudLightningIcon } from \"@/icons/cloud-lightning\";\nimport { CloudRainIcon } from \"@/icons/cloud-rain\";\nimport { CloudRainWindIcon } from \"@/icons/cloud-rain-wind\";\nimport { CloudSnowIcon } from \"@/icons/cloud-snow\";\nimport { CloudSunIcon } from \"@/icons/cloud-sun\";\nimport { CloudUploadIcon } from \"@/icons/cloud-upload\";\nimport { CoffeeIcon } from \"@/icons/coffee\";\nimport { CogIcon } from \"@/icons/cog\";\nimport { CompassIcon } from \"@/icons/compass\";\nimport { ConnectIcon } from \"@/icons/connect\";\nimport { ConstructionIcon } from \"@/icons/construction\";\nimport { ContrastIcon } from \"@/icons/contrast\";\nimport { CookingPotIcon } from \"@/icons/cooking-pot\";\nimport { CopyIcon } from \"@/icons/copy\";\nimport { CpuIcon } from \"@/icons/cpu\";\nimport { CupSodaIcon } from \"@/icons/cup-soda\";\nimport { CursorClickIcon } from \"@/icons/cursor-click\";\nimport { DatabaseBackupIcon } from \"@/icons/database-backup\";\nimport { DeleteIcon } from \"@/icons/delete\";\nimport { Disc3Icon } from \"@/icons/disc-3\";\nimport { DiscordIcon } from \"@/icons/discord\";\nimport { DollarSignIcon } from \"@/icons/dollar-sign\";\nimport { DownloadIcon } from \"@/icons/download\";\nimport { DownvoteIcon } from \"@/icons/downvote\";\nimport { DribbbleIcon } from \"@/icons/dribbble\";\nimport { DropletIcon } from \"@/icons/droplet\";\nimport { DrumIcon } from \"@/icons/drum\";\nimport { EarthIcon } from \"@/icons/earth\";\nimport { EuroIcon } from \"@/icons/euro\";\nimport { EvChargerIcon } from \"@/icons/ev-charger\";\nimport { ExpandIcon } from \"@/icons/expand\";\nimport { EyeIcon } from \"@/icons/eye\";\nimport { EyeOffIcon } from \"@/icons/eye-off\";\nimport { FacebookIcon } from \"@/icons/facebook\";\nimport { FeatherIcon } from \"@/icons/feather\";\nimport { FigmaIcon } from \"@/icons/figma\";\nimport { FileChartLineIcon } from \"@/icons/file-chart-line\";\nimport { FileCheckIcon } from \"@/icons/file-check\";\nimport { FileCheck2Icon } from \"@/icons/file-check-2\";\nimport { FileCogIcon } from \"@/icons/file-cog\";\nimport { FilePenLineIcon } from \"@/icons/file-pen-line\";\nimport { FileStackIcon } from \"@/icons/file-stack\";\nimport { FileTextIcon } from \"@/icons/file-text\";\nimport { FingerprintIcon } from \"@/icons/fingerprint\";\nimport { FishSymbolIcon } from \"@/icons/fish-symbol\";\nimport { FlameIcon } from \"@/icons/flame\";\nimport { FlaskIcon } from \"@/icons/flask\";\nimport { FoldersIcon } from \"@/icons/folders\";\nimport { FrameIcon } from \"@/icons/frame\";\nimport { FrownIcon } from \"@/icons/frown\";\nimport { GalleryHorizontalEndIcon } from \"@/icons/gallery-horizontal-end\";\nimport { GalleryThumbnailsIcon } from \"@/icons/gallery-thumbnails\";\nimport { GalleryVerticalEndIcon } from \"@/icons/gallery-vertical-end\";\nimport { GaugeIcon } from \"@/icons/gauge\";\nimport { GeorgianLariIcon } from \"@/icons/georgian-lari\";\nimport { GitCommitHorizontalIcon } from \"@/icons/git-commit-horizontal\";\nimport { GitCommitVerticalIcon } from \"@/icons/git-commit-vertical\";\nimport { GitMergeIcon } from \"@/icons/git-merge\";\nimport { GitPullRequestIcon } from \"@/icons/git-pull-request\";\nimport { GithubIcon } from \"@/icons/github\";\nimport { GripIcon } from \"@/icons/grip\";\nimport { GripHorizontalIcon } from \"@/icons/grip-horizontal\";\nimport { GripVerticalIcon } from \"@/icons/grip-vertical\";\nimport { HammerIcon } from \"@/icons/hammer\";\nimport { HandCoinsIcon } from \"@/icons/hand-coins\";\nimport { HandHeartIcon } from \"@/icons/hand-heart\";\nimport { HardDriveDownloadIcon } from \"@/icons/hard-drive-download\";\nimport { HardDriveUploadIcon } from \"@/icons/hard-drive-upload\";\nimport { HeartIcon } from \"@/icons/heart\";\nimport { HistoryIcon } from \"@/icons/history\";\nimport { HomeIcon } from \"@/icons/home\";\nimport { HourglassIcon } from \"@/icons/hourglass\";\nimport { IdCardIcon } from \"@/icons/id-card\";\nimport { IndianRupeeIcon } from \"@/icons/indian-rupee\";\nimport { InstagramIcon } from \"@/icons/instagram\";\nimport { ItalicIcon } from \"@/icons/italic\";\nimport { JapaneseYenIcon } from \"@/icons/japanese-yen\";\nimport { KeyIcon } from \"@/icons/key\";\nimport { KeyCircleIcon } from \"@/icons/key-circle\";\nimport { KeySquareIcon } from \"@/icons/key-square\";\nimport { KeyboardIcon } from \"@/icons/keyboard\";\nimport { LanguagesIcon } from \"@/icons/languages\";\nimport { LaptopMinimalCheckIcon } from \"@/icons/laptop-minimal-check\";\nimport { LaughIcon } from \"@/icons/laugh\";\nimport { LayersIcon } from \"@/icons/layers\";\nimport { LayoutPanelTopIcon } from \"@/icons/layout-panel-top\";\nimport { LinkIcon } from \"@/icons/link\";\nimport { LinkedinIcon } from \"@/icons/linkedin\";\nimport { LoaderPinwheelIcon } from \"@/icons/loader-pinwheel\";\nimport { LockIcon } from \"@/icons/lock\";\nimport { LockKeyholeIcon } from \"@/icons/lock-keyhole\";\nimport { LockKeyholeOpenIcon } from \"@/icons/lock-keyhole-open\";\nimport { LockOpenIcon } from \"@/icons/lock-open\";\nimport { LogoutIcon } from \"@/icons/logout\";\nimport { MailCheckIcon } from \"@/icons/mail-check\";\nimport { MailboxIcon } from \"@/icons/mailbox\";\nimport { MapPinIcon } from \"@/icons/map-pin\";\nimport { MapPinCheckIcon } from \"@/icons/map-pin-check\";\nimport { MapPinCheckInsideIcon } from \"@/icons/map-pin-check-inside\";\nimport { MapPinHouseIcon } from \"@/icons/map-pin-house\";\nimport { MapPinMinusIcon } from \"@/icons/map-pin-minus\";\nimport { MapPinMinusInsideIcon } from \"@/icons/map-pin-minus-inside\";\nimport { MapPinOffIcon } from \"@/icons/map-pin-off\";\nimport { MapPinPlusIcon } from \"@/icons/map-pin-plus\";\nimport { MapPinPlusInsideIcon } from \"@/icons/map-pin-plus-inside\";\nimport { MapPinXInsideIcon } from \"@/icons/map-pin-x-inside\";\nimport { MaximizeIcon } from \"@/icons/maximize\";\nimport { Maximize2Icon } from \"@/icons/maximize-2\";\nimport { MehIcon } from \"@/icons/meh\";\nimport { MenuIcon } from \"@/icons/menu\";\nimport { MessageCircleIcon } from \"@/icons/message-circle\";\nimport { MessageCircleCheckIcon } from \"@/icons/message-circle-check\";\nimport { MessageCircleDashedIcon } from \"@/icons/message-circle-dashed\";\nimport { MessageCircleMoreIcon } from \"@/icons/message-circle-more\";\nimport { MessageCirclePlusIcon } from \"@/icons/message-circle-plus\";\nimport { MessageCircleXIcon } from \"@/icons/message-circle-x\";\nimport { MessageSquareIcon } from \"@/icons/message-square\";\nimport { MessageSquareCheckIcon } from \"@/icons/message-square-check\";\nimport { MessageSquareDashedIcon } from \"@/icons/message-square-dashed\";\nimport { MessageSquareMoreIcon } from \"@/icons/message-square-more\";\nimport { MessageSquarePlusIcon } from \"@/icons/message-square-plus\";\nimport { MessageSquareXIcon } from \"@/icons/message-square-x\";\nimport { MicIcon } from \"@/icons/mic\";\nimport { MicOffIcon } from \"@/icons/mic-off\";\nimport { MinimizeIcon } from \"@/icons/minimize\";\nimport { MonitorCheckIcon } from \"@/icons/monitor-check\";\nimport { MoonIcon } from \"@/icons/moon\";\nimport { NfcIcon } from \"@/icons/nfc\";\nimport { PanelLeftCloseIcon } from \"@/icons/panel-left-close\";\nimport { PanelLeftOpenIcon } from \"@/icons/panel-left-open\";\nimport { PanelRightOpenIcon } from \"@/icons/panel-right-open\";\nimport { PartyPopperIcon } from \"@/icons/party-popper\";\nimport { PauseIcon } from \"@/icons/pause\";\nimport { PenToolIcon } from \"@/icons/pen-tool\";\nimport { PhilippinePesoIcon } from \"@/icons/philippine-peso\";\nimport { PickaxeIcon } from \"@/icons/pickaxe\";\nimport { PlayIcon } from \"@/icons/play\";\nimport { PlugZapIcon } from \"@/icons/plug-zap\";\nimport { PlusIcon } from \"@/icons/plus\";\nimport { PoundSterlingIcon } from \"@/icons/pound-sterling\";\nimport { RabbitIcon } from \"@/icons/rabbit\";\nimport { RadioIcon } from \"@/icons/radio\";\nimport { RadioTowerIcon } from \"@/icons/radio-tower\";\nimport { RedoIcon } from \"@/icons/redo\";\nimport { RedoDotIcon } from \"@/icons/redo-dot\";\nimport { RefreshCCWIcon } from \"@/icons/refresh-ccw\";\nimport { RefreshCCWDotIcon } from \"@/icons/refresh-ccw-dot\";\nimport { RefreshCWIcon } from \"@/icons/refresh-cw\";\nimport { RefreshCWOffIcon } from \"@/icons/refresh-cw-off\";\nimport { RocketIcon } from \"@/icons/rocket\";\nimport { RockingChairIcon } from \"@/icons/rocking-chair\";\nimport { RollerCoasterIcon } from \"@/icons/roller-coaster\";\nimport { RotateCCWIcon } from \"@/icons/rotate-ccw\";\nimport { RotateCWIcon } from \"@/icons/rotate-cw\";\nimport { RouteIcon } from \"@/icons/route\";\nimport { RussianRubleIcon } from \"@/icons/russian-ruble\";\nimport { SaudiRiyalIcon } from \"@/icons/saudi-riyal\";\nimport { ScanFaceIcon } from \"@/icons/scan-face\";\nimport { ScanTextIcon } from \"@/icons/scan-text\";\nimport { SearchIcon } from \"@/icons/search\";\nimport { SendIcon } from \"@/icons/send\";\nimport { SettingsIcon } from \"@/icons/settings\";\nimport { ShieldCheckIcon } from \"@/icons/shield-check\";\nimport { ShipIcon } from \"@/icons/ship\";\nimport { ShowerHeadIcon } from \"@/icons/shower-head\";\nimport { ShrinkIcon } from \"@/icons/shrink\";\nimport { SlidersHorizontalIcon } from \"@/icons/sliders-horizontal\";\nimport { SmartphoneChargingIcon } from \"@/icons/smartphone-charging\";\nimport { SmartphoneNfcIcon } from \"@/icons/smartphone-nfc\";\nimport { SmileIcon } from \"@/icons/smile\";\nimport { SmilePlusIcon } from \"@/icons/smile-plus\";\nimport { SnowflakeIcon } from \"@/icons/snowflake\";\nimport { SparklesIcon } from \"@/icons/sparkles\";\nimport { SquareActivityIcon } from \"@/icons/square-activity\";\nimport { SquareArrowDownIcon } from \"@/icons/square-arrow-down\";\nimport { SquareArrowLeftIcon } from \"@/icons/square-arrow-left\";\nimport { SquareArrowRightIcon } from \"@/icons/square-arrow-right\";\nimport { SquareArrowUpIcon } from \"@/icons/square-arrow-up\";\nimport { SquareChevronDownIcon } from \"@/icons/square-chevron-down\";\nimport { SquareChevronLeftIcon } from \"@/icons/square-chevron-left\";\nimport { SquareChevronRightIcon } from \"@/icons/square-chevron-right\";\nimport { SquareChevronUpIcon } from \"@/icons/square-chevron-up\";\nimport { SquarePenIcon } from \"@/icons/square-pen\";\nimport { SquareStackIcon } from \"@/icons/square-stack\";\nimport { StethoscopeIcon } from \"@/icons/stethoscope\";\nimport { SunIcon } from \"@/icons/sun\";\nimport { SunDimIcon } from \"@/icons/sun-dim\";\nimport { SunMediumIcon } from \"@/icons/sun-medium\";\nimport { SunMoonIcon } from \"@/icons/sun-moon\";\nimport { SunsetIcon } from \"@/icons/sunset\";\nimport { SwissFrancIcon } from \"@/icons/swiss-franc\";\nimport { SyringeIcon } from \"@/icons/syringe\";\nimport { TelescopeIcon } from \"@/icons/telescope\";\nimport { TerminalIcon } from \"@/icons/terminal\";\nimport { ThermometerIcon } from \"@/icons/thermometer\";\nimport { TimerIcon } from \"@/icons/timer\";\nimport { TornadoIcon } from \"@/icons/tornado\";\nimport { TrainTrackIcon } from \"@/icons/train-track\";\nimport { TrendingDownIcon } from \"@/icons/trending-down\";\nimport { TrendingUpIcon } from \"@/icons/trending-up\";\nimport { TrendingUpDownIcon } from \"@/icons/trending-up-down\";\nimport { TurkishLiraIcon } from \"@/icons/turkish-lira\";\nimport { TwitchIcon } from \"@/icons/twitch\";\nimport { TwitterIcon } from \"@/icons/twitter\";\nimport { UnderlineIcon } from \"@/icons/underline\";\nimport { UndoIcon } from \"@/icons/undo\";\nimport { UndoDotIcon } from \"@/icons/undo-dot\";\nimport { UploadIcon } from \"@/icons/upload\";\nimport { UpvoteIcon } from \"@/icons/upvote\";\nimport { UserIcon } from \"@/icons/user\";\nimport { UserCheckIcon } from \"@/icons/user-check\";\nimport { UserRoundCheckIcon } from \"@/icons/user-round-check\";\nimport { UserRoundPlusIcon } from \"@/icons/user-round-plus\";\nimport { UsersIcon } from \"@/icons/users\";\nimport { VibrateIcon } from \"@/icons/vibrate\";\nimport { VolumeIcon } from \"@/icons/volume\";\nimport { WashingMachineIcon } from \"@/icons/washing-machine\";\nimport { WavesIcon } from \"@/icons/waves\";\nimport { WavesLadderIcon } from \"@/icons/waves-ladder\";\nimport { WaypointsIcon } from \"@/icons/waypoints\";\nimport { WebhookIcon } from \"@/icons/webhook\";\nimport { WifiIcon } from \"@/icons/wifi\";\nimport { WifiLowIcon } from \"@/icons/wifi-low\";\nimport { WindIcon } from \"@/icons/wind\";\nimport { WindArrowDownIcon } from \"@/icons/wind-arrow-down\";\nimport { WorkflowIcon } from \"@/icons/workflow\";\nimport { WrenchIcon } from \"@/icons/wrench\";\nimport { XIcon } from \"@/icons/x\";\nimport { YoutubeIcon } from \"@/icons/youtube\";\nimport { ZapIcon } from \"@/icons/zap\";\nimport { ZapOffIcon } from \"@/icons/zap-off\";\nimport { BatteryIcon } from \"./battery\";\nimport { BatteryChargingIcon } from \"./battery-charging\";\nimport { BatteryPlusIcon } from \"./battery-plus\";\nimport { BatteryWarningIcon } from \"./battery-warning\";\nimport { BellElectricIcon } from \"./bell-electric\";\nimport { ChessBishopIcon } from \"./chess-bishop\";\nimport { ChessKingIcon } from \"./chess-king\";\nimport { ChessKnightIcon } from \"./chess-knight\";\nimport { ChessPawnIcon } from \"./chess-pawn\";\nimport { CornerDownLeftIcon } from \"./corner-down-left\";\nimport { CornerDownRightIcon } from \"./corner-down-right\";\nimport { CornerLeftDownIcon } from \"./corner-left-down\";\nimport { CornerLeftUpIcon } from \"./corner-left-up\";\nimport { CornerRightDownIcon } from \"./corner-right-down\";\nimport { CornerRightUpIcon } from \"./corner-right-up\";\nimport { CornerUpLeftIcon } from \"./corner-up-left\";\nimport { CornerUpRightIcon } from \"./corner-up-right\";\nimport { FolderArchiveIcon } from \"./folder-archive\";\nimport { FolderCheckIcon } from \"./folder-check\";\nimport { FolderClockIcon } from \"./folder-clock\";\nimport { FolderCodeIcon } from \"./folder-code\";\nimport { FolderCogIcon } from \"./folder-cog\";\nimport { FolderDotIcon } from \"./folder-dot\";\nimport { FolderDownIcon } from \"./folder-down\";\nimport { FolderGitIcon } from \"./folder-git\";\nimport { FolderGit2Icon } from \"./folder-git-2\";\nimport { FolderHeartIcon } from \"./folder-heart\";\nimport { FolderInputIcon } from \"./folder-input\";\nimport { FolderKanbanIcon } from \"./folder-kanban\";\nimport { FolderKeyIcon } from \"./folder-key\";\nimport { FolderLockIcon } from \"./folder-lock\";\nimport { FolderMinusIcon } from \"./folder-minus\";\nimport { FolderOpenIcon } from \"./folder-open\";\nimport { FolderOutputIcon } from \"./folder-output\";\nimport { FolderPlusIcon } from \"./folder-plus\";\nimport { FolderRootIcon } from \"./folder-root\";\nimport { FolderSyncIcon } from \"./folder-sync\";\nimport { FolderTreeIcon } from \"./folder-tree\";\nimport { FolderUpIcon } from \"./folder-up\";\nimport { FolderXIcon } from \"./folder-x\";\nimport { GavelIcon } from \"./gavel\";\nimport { GitBranchIcon } from \"./git-branch\";\nimport { GitCompareIcon } from \"./git-compare\";\nimport { GitCompareArrowsIcon } from \"./git-compare-arrows\";\nimport { GitForkIcon } from \"./git-fork\";\nimport { GitGraphIcon } from \"./git-graph\";\nimport { GitPullRequestClosedIcon } from \"./git-pull-request-closed\";\nimport { GitPullRequestCreateIcon } from \"./git-pull-request-create\";\nimport { GitlabIcon } from \"./gitlab\";\nimport { GraduationCapIcon } from \"./graduation-cap\";\nimport { HandIcon } from \"./hand\";\nimport { HandFistIcon } from \"./hand-fist\";\nimport { HandGrabIcon } from \"./hand-grab\";\nimport { HandHelpingIcon } from \"./hand-helping\";\nimport { HandMetalIcon } from \"./hand-metal\";\nimport { HeartHandshakeIcon } from \"./heart-handshake\";\nimport { HeartPulseIcon } from \"./heart-pulse\";\nimport { TruckIcon } from \"./truck\";\n\ntype IconListItem = {\n  name: string;\n  icon: React.ElementType;\n  keywords: string[];\n};\n\nconst ICON_LIST: IconListItem[] = [\n  {\n    name: \"axe\",\n    icon: AxeIcon,\n    keywords: [\n      \"hatchet\",\n      \"weapon\",\n      \"chop\",\n      \"sharp\",\n      \"equipment\",\n      \"fireman\",\n      \"firefighter\",\n      \"brigade\",\n      \"lumberjack\",\n      \"woodcutter\",\n      \"logger\",\n      \"forestry\",\n    ],\n  },\n  {\n    name: \"pickaxe\",\n    icon: PickaxeIcon,\n    keywords: [\n      \"mining\",\n      \"mine\",\n      \"land worker\",\n      \"extraction\",\n      \"labor\",\n      \"construction\",\n      \"progress\",\n      \"advancement\",\n      \"crafting\",\n      \"building\",\n      \"creation\",\n    ],\n  },\n  {\n    name: \"hammer\",\n    icon: HammerIcon,\n    keywords: [\"mallet\", \"nails\", \"diy\", \"toolbox\", \"build\", \"construction\"],\n  },\n  {\n    name: \"gavel\",\n    icon: GavelIcon,\n    keywords: [\n      \"justice\",\n      \"law\",\n      \"court\",\n      \"judgment\",\n      \"legal\",\n      \"hands\",\n      \"penalty\",\n      \"decision\",\n      \"authority\",\n      \"hammer\",\n      \"mallet\",\n    ],\n  },\n  {\n    name: \"mailbox\",\n    icon: MailboxIcon,\n    keywords: [\"emails\", \"messages\", \"letters\", \"mailing list\", \"newsletter\"],\n  },\n  {\n    name: \"send\",\n    icon: SendIcon,\n    keywords: [\n      \"email\",\n      \"message\",\n      \"mail\",\n      \"paper airplane\",\n      \"paper aeroplane\",\n      \"submit\",\n    ],\n  },\n  {\n    name: \"heart-pulse\",\n    icon: HeartPulseIcon,\n    keywords: [\n      \"heartbeat\",\n      \"pulse\",\n      \"health\",\n      \"medical\",\n      \"cardiac\",\n      \"ecg\",\n      \"vital\",\n    ],\n  },\n  {\n    name: \"graduation-cap\",\n    icon: GraduationCapIcon,\n    keywords: [\n      \"school\",\n      \"university\",\n      \"learn\",\n      \"study\",\n      \"mortarboard\",\n      \"education\",\n      \"ceremony\",\n      \"academic\",\n      \"hat\",\n      \"diploma\",\n      \"bachlor's\",\n      \"master's\",\n      \"doctorate\",\n    ],\n  },\n  {\n    name: \"brain\",\n    icon: BrainIcon,\n    keywords: [\n      \"medical\",\n      \"mind\",\n      \"mental\",\n      \"intellect\",\n      \"cerebral\",\n      \"consciousness\",\n      \"genius\",\n      \"artificial intelligence\",\n      \"ai\",\n      \"think\",\n      \"thought\",\n      \"insight\",\n      \"intelligent\",\n      \"smart\",\n    ],\n  },\n  {\n    name: \"truck\",\n    icon: TruckIcon,\n    keywords: [\n      \"delivery\",\n      \"van\",\n      \"shipping\",\n      \"haulage\",\n      \"lorry\",\n      \"transportation\",\n    ],\n  },\n  {\n    name: \"mic\",\n    icon: MicIcon,\n    keywords: [\"microphone\", \"audio\", \"sound\", \"record\", \"voice\"],\n  },\n  {\n    name: \"mic-off\",\n    icon: MicOffIcon,\n    keywords: [\"microphone\", \"audio\", \"sound\", \"mute\", \"silent\", \"disabled\"],\n  },\n  {\n    name: \"align-left\",\n    icon: AlignLeftIcon,\n    keywords: [\"text\", \"alignment\", \"left\", \"paragraph\", \"format\"],\n  },\n  {\n    name: \"align-right\",\n    icon: AlignRightIcon,\n    keywords: [\"text\", \"alignment\", \"right\", \"paragraph\", \"format\"],\n  },\n  {\n    name: \"folder-lock\",\n    icon: FolderLockIcon,\n    keywords: [\"folder\", \"lock\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-key\",\n    icon: FolderKeyIcon,\n    keywords: [\"folder\", \"key\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-input\",\n    icon: FolderInputIcon,\n    keywords: [\"folder\", \"input\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-heart\",\n    icon: FolderHeartIcon,\n    keywords: [\"folder\", \"heart\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-root\",\n    icon: FolderRootIcon,\n    keywords: [\"folder\", \"root\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-tree\",\n    icon: FolderTreeIcon,\n    keywords: [\"folder\", \"tree\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-open\",\n    icon: FolderOpenIcon,\n    keywords: [\"folder\", \"open\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-kanban\",\n    icon: FolderKanbanIcon,\n    keywords: [\"folder\", \"kanban\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-code\",\n    icon: FolderCodeIcon,\n    keywords: [\"folder\", \"code\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-sync\",\n    icon: FolderSyncIcon,\n    keywords: [\"folder\", \"sync\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-plus\",\n    icon: FolderPlusIcon,\n    keywords: [\"folder\", \"plus\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-minus\",\n    icon: FolderMinusIcon,\n    keywords: [\"folder\", \"minus\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-archive\",\n    icon: FolderArchiveIcon,\n    keywords: [\"folder\", \"archive\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-x\",\n    icon: FolderXIcon,\n    keywords: [\"folder\", \"x\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-dot\",\n    icon: FolderDotIcon,\n    keywords: [\"folder\", \"dot\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-cog\",\n    icon: FolderCogIcon,\n    keywords: [\"folder\", \"cog\", \"settings\", \"configuration\"],\n  },\n  {\n    name: \"folder-git-2\",\n    icon: FolderGit2Icon,\n    keywords: [\"folder\", \"git\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"folder-git\",\n    icon: FolderGitIcon,\n    keywords: [\"folder\", \"git\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"folder-down\",\n    icon: FolderDownIcon,\n    keywords: [\"folder\", \"down\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-output\",\n    icon: FolderOutputIcon,\n    keywords: [\"folder\", \"output\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-up\",\n    icon: FolderUpIcon,\n    keywords: [\"folder\", \"up\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-check\",\n    icon: FolderCheckIcon,\n    keywords: [\"folder\", \"check\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"folder-clock\",\n    icon: FolderClockIcon,\n    keywords: [\"folder\", \"clock\", \"time\", \"schedule\"],\n  },\n  {\n    name: \"feather\",\n    icon: FeatherIcon,\n    keywords: [\"feather\", \"quill\", \"writing\", \"light\", \"bird\"],\n  },\n  {\n    name: \"bell-electric\",\n    icon: BellElectricIcon,\n    keywords: [\"bell\", \"electric\", \"notification\", \"alert\"],\n  },\n  {\n    name: \"corner-up-right\",\n    icon: CornerUpRightIcon,\n    keywords: [\"corner\", \"up\", \"right\", \"arrow\"],\n  },\n  {\n    name: \"corner-up-left\",\n    icon: CornerUpLeftIcon,\n    keywords: [\"corner\", \"up\", \"left\", \"arrow\"],\n  },\n  {\n    name: \"corner-right-up\",\n    icon: CornerRightUpIcon,\n    keywords: [\"corner\", \"right\", \"up\", \"arrow\"],\n  },\n  {\n    name: \"corner-right-down\",\n    icon: CornerRightDownIcon,\n    keywords: [\"corner\", \"right\", \"down\", \"arrow\"],\n  },\n  {\n    name: \"corner-left-up\",\n    icon: CornerLeftUpIcon,\n    keywords: [\"corner\", \"left\", \"up\", \"arrow\"],\n  },\n  {\n    name: \"corner-left-down\",\n    icon: CornerLeftDownIcon,\n    keywords: [\"corner\", \"left\", \"down\", \"arrow\"],\n  },\n  {\n    name: \"corner-down-right\",\n    icon: CornerDownRightIcon,\n    keywords: [\"corner\", \"down\", \"right\", \"arrow\"],\n  },\n  {\n    name: \"corner-down-left\",\n    icon: CornerDownLeftIcon,\n    keywords: [\"corner\", \"down\", \"left\", \"arrow\"],\n  },\n  {\n    name: \"git-pull-request-create\",\n    icon: GitPullRequestCreateIcon,\n    keywords: [\n      \"git\",\n      \"pull request\",\n      \"create\",\n      \"version control\",\n      \"repository\",\n    ],\n  },\n  {\n    name: \"git-pull-request-closed\",\n    icon: GitPullRequestClosedIcon,\n    keywords: [\n      \"git\",\n      \"pull request\",\n      \"closed\",\n      \"version control\",\n      \"repository\",\n    ],\n  },\n  {\n    name: \"gitlab\",\n    icon: GitlabIcon,\n    keywords: [\"git\", \"gitlab\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"git-graph\",\n    icon: GitGraphIcon,\n    keywords: [\"git\", \"graph\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"git-compare-arrows\",\n    icon: GitCompareArrowsIcon,\n    keywords: [\"git\", \"compare\", \"arrows\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"git-compare\",\n    icon: GitCompareIcon,\n    keywords: [\"git\", \"compare\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"git-fork\",\n    icon: GitForkIcon,\n    keywords: [\"git\", \"fork\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"git-branch\",\n    icon: GitBranchIcon,\n    keywords: [\"git\", \"branch\", \"version control\", \"repository\"],\n  },\n  {\n    name: \"hourglass\",\n    icon: HourglassIcon,\n    keywords: [\"hourglass\", \"time\", \"timer\", \"sandglass\"],\n  },\n  {\n    name: \"cloud-snow\",\n    icon: CloudSnowIcon,\n    keywords: [\"cloud snow\", \"weather\", \"blizzard\"],\n  },\n  {\n    name: \"chevron-first\",\n    icon: ChevronFirstIcon,\n    keywords: [\"chevron\", \"first\", \"down\", \"arrow\"],\n  },\n  { name: \"bot\", icon: BotIcon, keywords: [\"bot\", \"user\", \"avatar\"] },\n  {\n    name: \"grip-horizontal\",\n    icon: GripHorizontalIcon,\n    keywords: [\"grip\", \"move\", \"drag\", \"resize\", \"drag and drop\"],\n  },\n  {\n    name: \"grip-vertical\",\n    icon: GripVerticalIcon,\n    keywords: [\"grip\", \"move\", \"drag\", \"resize\", \"drag and drop\"],\n  },\n  {\n    name: \"bot-message-square\",\n    icon: BotMessageSquareIcon,\n    keywords: [\"bot\", \"message\", \"square\", \"bubble\", \"chat\", \"conversation\"],\n  },\n  {\n    name: \"bookmark\",\n    icon: BookmarkIcon,\n    keywords: [\"bookmark\", \"save\", \"tag\", \"label\"],\n  },\n  {\n    name: \"bookmark-x\",\n    icon: BookmarkXIcon,\n    keywords: [\"bookmark\", \"x\", \"remove\", \"delete\", \"tag\", \"label\"],\n  },\n  {\n    name: \"bookmark-minus\",\n    icon: BookmarkMinusIcon,\n    keywords: [\"bookmark\", \"minus\", \"remove\", \"delete\", \"tag\", \"label\"],\n  },\n  {\n    name: \"bookmark-plus\",\n    icon: BookmarkPlusIcon,\n    keywords: [\"bookmark\", \"plus\", \"add\", \"create\", \"tag\", \"label\"],\n  },\n  {\n    name: \"bookmark-check\",\n    icon: BookmarkCheckIcon,\n    keywords: [\"bookmark\", \"check\", \"save\", \"tag\", \"label\"],\n  },\n  {\n    name: \"washing-machine\",\n    icon: WashingMachineIcon,\n    keywords: [\n      \"washing machine\",\n      \"tumble dryer\",\n      \"electronics\",\n      \"cycle\",\n      \"clothes\",\n      \"rinse\",\n      \"spin\",\n      \"drum\",\n    ],\n  },\n  {\n    name: \"accessibility\",\n    icon: AccessibilityIcon,\n    keywords: [\"accessibility\", \"disabled\", \"wheelchair\", \"assistive\"],\n  },\n  {\n    name: \"lock-keyhole-open\",\n    icon: LockKeyholeOpenIcon,\n    keywords: [\"security\", \"password\", \"secure\", \"admin\", \"lock\", \"open\"],\n  },\n  {\n    name: \"lock-open\",\n    icon: LockOpenIcon,\n    keywords: [\"security\", \"password\", \"secure\", \"admin\", \"lock\", \"open\"],\n  },\n  {\n    name: \"lock-keyhole\",\n    icon: LockKeyholeIcon,\n    keywords: [\"security\", \"password\", \"secure\", \"admin\", \"lock\"],\n  },\n  {\n    name: \"lock\",\n    icon: LockIcon,\n    keywords: [\"security\", \"password\", \"secure\", \"admin\", \"lock\"],\n  },\n  {\n    name: \"folders\",\n    icon: FoldersIcon,\n    keywords: [\"folder\", \"directory\", \"file\", \"storage\", \"organization\"],\n  },\n  {\n    name: \"snowflake\",\n    icon: SnowflakeIcon,\n    keywords: [\"snow\", \"weather\", \"cold\", \"winter\", \"flake\"],\n  },\n  {\n    name: \"thermometer\",\n    icon: ThermometerIcon,\n    keywords: [\"temperature\", \"celsius\", \"fahrenheit\", \"weather\"],\n  },\n  {\n    name: \"droplet\",\n    icon: DropletIcon,\n    keywords: [\n      \"water\",\n      \"weather\",\n      \"liquid\",\n      \"fluid\",\n      \"wet\",\n      \"moisture\",\n      \"damp\",\n      \"bead\",\n      \"globule\",\n    ],\n  },\n  {\n    name: \"plus\",\n    icon: PlusIcon,\n    keywords: [\n      \"add\",\n      \"new\",\n      \"increase\",\n      \"increment\",\n      \"positive\",\n      \"calculate\",\n      \"toolbar\",\n      \"crosshair\",\n      \"aim\",\n      \"target\",\n      \"scope\",\n      \"sight\",\n      \"reticule\",\n      \"maximum\",\n      \"upgrade\",\n      \"extra\",\n      \"+\",\n    ],\n  },\n  {\n    name: \"heart\",\n    icon: HeartIcon,\n    keywords: [\"like\", \"love\", \"emotion\", \"suit\", \"playing\", \"cards\"],\n  },\n  {\n    name: \"smartphone-charging\",\n    icon: SmartphoneChargingIcon,\n    keywords: [\"phone\", \"cellphone\", \"device\", \"power\", \"screen\"],\n  },\n  {\n    name: \"smartphone-nfc\",\n    icon: SmartphoneNfcIcon,\n    keywords: [\"phone\", \"cellphone\", \"device\", \"nfc\", \"screen\"],\n  },\n  {\n    name: \"nfc\",\n    icon: NfcIcon,\n    keywords: [\"nfc\", \"near field communication\", \"wireless\", \"signal\"],\n  },\n  {\n    name: \"history\",\n    icon: HistoryIcon,\n    keywords: [\"history\", \"back\", \"previous\", \"arrow\"],\n  },\n  {\n    name: \"hard-drive-upload\",\n    icon: HardDriveUploadIcon,\n    keywords: [\"hard drive\", \"upload\", \"storage\", \"data\", \"save\"],\n  },\n  {\n    name: \"hard-drive-download\",\n    icon: HardDriveDownloadIcon,\n    keywords: [\"hard drive\", \"download\", \"storage\", \"data\", \"save\"],\n  },\n  { name: \"square-activity\", icon: SquareActivityIcon, keywords: [\"activity\"] },\n  {\n    name: \"square-arrow-down\",\n    icon: SquareArrowDownIcon,\n    keywords: [\"arrow\", \"down\", \"a\"],\n  },\n  {\n    name: \"square-arrow-left\",\n    icon: SquareArrowLeftIcon,\n    keywords: [\"arrow\", \"left\", \"a\"],\n  },\n  {\n    name: \"square-arrow-right\",\n    icon: SquareArrowRightIcon,\n    keywords: [\"arrow\", \"right\", \"a\"],\n  },\n  {\n    name: \"square-arrow-up\",\n    icon: SquareArrowUpIcon,\n    keywords: [\"arrow\", \"up\", \"a\"],\n  },\n  {\n    name: \"scan-face\",\n    icon: ScanFaceIcon,\n    keywords: [\"scan\", \"face\", \"emotion\"],\n  },\n  {\n    name: \"frown\",\n    icon: FrownIcon,\n    keywords: [\"frown\", \"emotion\", \"face\", \"sad\"],\n  },\n  {\n    name: \"smile-plus\",\n    icon: SmilePlusIcon,\n    keywords: [\"smile\", \"plus\", \"emotion\", \"face\"],\n  },\n  { name: \"smile\", icon: SmileIcon, keywords: [\"smile\", \"emotion\", \"face\"] },\n  { name: \"laugh\", icon: LaughIcon, keywords: [\"laugh\", \"emotion\", \"face\"] },\n  {\n    name: \"annoyed\",\n    icon: AnnoyedIcon,\n    keywords: [\"annoyed\", \"emotion\", \"face\"],\n  },\n  { name: \"meh\", icon: MehIcon, keywords: [\"meh\", \"emotion\", \"face\"] },\n  {\n    name: \"key\",\n    icon: KeyIcon,\n    keywords: [\"key\", \"authentication\", \"security\", \"access\", \"password\"],\n  },\n  {\n    name: \"key-square\",\n    icon: KeySquareIcon,\n    keywords: [\"key\", \"authentication\", \"security\", \"access\", \"password\"],\n  },\n  {\n    name: \"key-circle\",\n    icon: KeyCircleIcon,\n    keywords: [\"key\", \"authentication\", \"security\", \"access\", \"password\"],\n  },\n  {\n    name: \"maximize\",\n    icon: MaximizeIcon,\n    keywords: [\"maximize\", \"fullscreen\", \"expand\", \"screen\"],\n  },\n  {\n    name: \"maximize-2\",\n    icon: Maximize2Icon,\n    keywords: [\"maximize\", \"fullscreen\", \"expand\", \"screen\"],\n  },\n  {\n    name: \"minimize\",\n    icon: MinimizeIcon,\n    keywords: [\"minimize\", \"contract\", \"reduce\", \"small\", \"smaller\"],\n  },\n  {\n    name: \"shrink\",\n    icon: ShrinkIcon,\n    keywords: [\"shrink\", \"contract\", \"reduce\", \"small\", \"smaller\"],\n  },\n  {\n    name: \"rotate-cw\",\n    icon: RotateCWIcon,\n    keywords: [\n      \"rotate\",\n      \"clockwise\",\n      \"turn\",\n      \"degrees\",\n      \"degrees\",\n      \"clockwise\",\n      \"counterclockwise\",\n    ],\n  },\n  {\n    name: \"rotate-ccw\",\n    icon: RotateCCWIcon,\n    keywords: [\n      \"rotate\",\n      \"counterclockwise\",\n      \"turn\",\n      \"degrees\",\n      \"degrees\",\n      \"clockwise\",\n      \"counterclockwise\",\n    ],\n  },\n  {\n    name: \"refresh-cw-off\",\n    icon: RefreshCWOffIcon,\n    keywords: [\"refresh\", \"rotate\", \"reload\", \"rerun\", \"circular\", \"cycle\"],\n  },\n  {\n    name: \"refresh-cw\",\n    icon: RefreshCWIcon,\n    keywords: [\"refresh\", \"rotate\", \"reload\", \"rerun\", \"circular\", \"cycle\"],\n  },\n  {\n    name: \"refresh-ccw-dot\",\n    icon: RefreshCCWDotIcon,\n    keywords: [\"refresh\", \"rotate\", \"reload\", \"rerun\", \"circular\", \"cycle\"],\n  },\n  {\n    name: \"redo\",\n    icon: RedoIcon,\n    keywords: [\"redo\", \"repeat\", \"undo\", \"back\", \"previous\", \"arrow\"],\n  },\n  {\n    name: \"undo-dot\",\n    icon: UndoDotIcon,\n    keywords: [\"undo\", \"repeat\", \"back\", \"previous\", \"arrow\"],\n  },\n  {\n    name: \"redo-dot\",\n    icon: RedoDotIcon,\n    keywords: [\"redo\", \"repeat\", \"undo\", \"back\", \"previous\", \"arrow\"],\n  },\n  {\n    name: \"arrow-big-down\",\n    icon: ArrowBigDownIcon,\n    keywords: [\"arrow\", \"down\", \"big\", \"below\", \"south\", \"bottom\"],\n  },\n  {\n    name: \"arrow-big-left\",\n    icon: ArrowBigLeftIcon,\n    keywords: [\"arrow\", \"left\", \"big\", \"west\", \"previous\", \"<-\"],\n  },\n  {\n    name: \"arrow-big-right\",\n    icon: ArrowBigRightIcon,\n    keywords: [\"arrow\", \"right\", \"big\", \"east\", \"next\", \"->\"],\n  },\n  {\n    name: \"arrow-big-up\",\n    icon: ArrowBigUpIcon,\n    keywords: [\"arrow\", \"up\", \"big\", \"north\", \"top\"],\n  },\n  {\n    name: \"a-arrow-up\",\n    icon: AArrowUpIcon,\n    keywords: [\"arrow\", \"up\", \"a\"],\n  },\n  {\n    name: \"chart-spline\",\n    icon: ChartSplineIcon,\n    keywords: [\n      \"chart\",\n      \"spline\",\n      \"graph\",\n      \"statistics\",\n      \"analytics\",\n      \"diagram\",\n      \"presentation\",\n      \"analytics\",\n    ],\n  },\n  {\n    name: \"arrow-up\",\n    icon: ArrowUpIcon,\n    keywords: [\"up\", \"above\", \"direction\", \"north\", \"top\"],\n  },\n  {\n    name: \"arrow-down\",\n    icon: ArrowDownIcon,\n    keywords: [\"down\", \"below\", \"direction\", \"south\", \"bottom\"],\n  },\n  {\n    name: \"arrow-down-left\",\n    icon: ArrowDownLeftIcon,\n    keywords: [\n      \"arrow\",\n      \"down\",\n      \"left\",\n      \"direction\",\n      \"southwest\",\n      \"bottom left\",\n    ],\n  },\n  {\n    name: \"arrow-down-right\",\n    icon: ArrowDownRightIcon,\n    keywords: [\n      \"arrow\",\n      \"down\",\n      \"right\",\n      \"direction\",\n      \"southeast\",\n      \"bottom right\",\n    ],\n  },\n  {\n    name: \"arrow-up-left\",\n    icon: ArrowUpLeftIcon,\n    keywords: [\"arrow\", \"up\", \"left\", \"direction\", \"northwest\", \"top left\"],\n  },\n  {\n    name: \"arrow-up-right\",\n    icon: ArrowUpRightIcon,\n    keywords: [\"arrow\", \"up\", \"right\", \"direction\", \"northeast\", \"top right\"],\n  },\n  {\n    name: \"vibrate\",\n    icon: VibrateIcon,\n    keywords: [\n      \"smartphone\",\n      \"notification\",\n      \"rumble\",\n      \"haptic feedback\",\n      \"screen\",\n    ],\n  },\n  {\n    name: \"waves-ladder\",\n    icon: WavesLadderIcon,\n    keywords: [\"waves\", \"ladder\", \"water\", \"ocean\", \"sea\"],\n  },\n  {\n    name: \"waves\",\n    icon: WavesIcon,\n    keywords: [\"waves\", \"water\", \"ocean\", \"sea\", \"wave\", \"sea wave\"],\n  },\n  {\n    name: \"wind-arrow-down\",\n    icon: WindArrowDownIcon,\n    keywords: [\"wind\", \"arrow\", \"down\", \"wind arrow down\"],\n  },\n  {\n    name: \"air-vent\",\n    icon: AirVentIcon,\n    keywords: [\"air\", \"vent\", \"fan\", \"air conditioning\", \"wind\", \"cooling\"],\n  },\n  {\n    name: \"tornado\",\n    icon: TornadoIcon,\n    keywords: [\"tornado\", \"wind\", \"weather\", \"spin\", \"twister\", \"whirlwind\"],\n  },\n  {\n    name: \"cloud-download\",\n    icon: CloudDownloadIcon,\n    keywords: [\"cloud\", \"download\", \"weather\", \"cloud download\"],\n  },\n  {\n    name: \"cloud-upload\",\n    icon: CloudUploadIcon,\n    keywords: [\"cloud\", \"upload\", \"weather\", \"cloud upload\"],\n  },\n  {\n    name: \"cloud-cog\",\n    icon: CloudCogIcon,\n    keywords: [\"cloud\", \"cog\", \"cloud cog\", \"edit\", \"gear\", \"preferences\"],\n  },\n  {\n    name: \"cloud-lightning\",\n    icon: CloudLightningIcon,\n    keywords: [\"cloud\", \"lightning\", \"weather\", \"cloud lightning\"],\n  },\n  {\n    name: \"cloud-rain\",\n    icon: CloudRainIcon,\n    keywords: [\"cloud\", \"rain\", \"weather\", \"cloud rain\"],\n  },\n  {\n    name: \"cloud-rain-wind\",\n    icon: CloudRainWindIcon,\n    keywords: [\"cloud\", \"rain\", \"wind\", \"weather\", \"cloud rain wind\"],\n  },\n  {\n    name: \"arrow-big-down-dash\",\n    icon: ArrowBigDownDashIcon,\n    keywords: [\"arrow\", \"down\", \"big\", \"below\", \"south\", \"bottom\", \"dash\"],\n  },\n  {\n    name: \"arrow-big-left-dash\",\n    icon: ArrowBigLeftDashIcon,\n    keywords: [\"arrow\", \"left\", \"big\", \"below\", \"west\", \"dash\"],\n  },\n  {\n    name: \"arrow-big-right-dash\",\n    icon: ArrowBigRightDashIcon,\n    keywords: [\"arrow\", \"right\", \"big\", \"below\", \"east\", \"dash\"],\n  },\n  {\n    name: \"arrow-big-up-dash\",\n    icon: ArrowBigUpDashIcon,\n    keywords: [\"arrow\", \"up\", \"big\", \"above\", \"north\", \"dash\"],\n  },\n  {\n    name: \"moon\",\n    icon: MoonIcon,\n    keywords: [\"night\", \"dark\", \"moon\"],\n  },\n  {\n    name: \"facebook\",\n    icon: FacebookIcon,\n    keywords: [\"social\", \"network\", \"facebook\"],\n  },\n  {\n    name: \"twitter\",\n    icon: TwitterIcon,\n    keywords: [\"social\", \"network\", \"twitter\", \"X\"],\n  },\n  {\n    name: \"linkedin\",\n    icon: LinkedinIcon,\n    keywords: [\"social\", \"network\", \"linkedin\"],\n  },\n  {\n    name: \"youtube\",\n    icon: YoutubeIcon,\n    keywords: [\"social\", \"network\", \"youtube\"],\n  },\n  {\n    name: \"instagram\",\n    icon: InstagramIcon,\n    keywords: [\"social\", \"network\", \"instagram\"],\n  },\n  {\n    name: \"twitch\",\n    icon: TwitchIcon,\n    keywords: [\"social\", \"network\", \"twitch\"],\n  },\n  {\n    name: \"dribbble\",\n    icon: DribbbleIcon,\n    keywords: [\"social\", \"network\", \"dribbble\"],\n  },\n  {\n    name: \"discord\",\n    icon: DiscordIcon,\n    keywords: [\"social\", \"network\", \"discord\"],\n  },\n  {\n    name: \"search\",\n    icon: SearchIcon,\n    keywords: [\"find\", \"scan\", \"magnifier\", \"magnifying glass\"],\n  },\n  {\n    name: \"cloud-sun\",\n    icon: CloudSunIcon,\n    keywords: [\"weather\", \"sun\", \"cloud\", \"light\", \"bright\"],\n  },\n  {\n    name: \"sunset\",\n    icon: SunsetIcon,\n    keywords: [\"sun\", \"sunset\", \"weather\", \"bright\", \"dawn\", \"evening\"],\n  },\n  {\n    name: \"sun-dim\",\n    icon: SunDimIcon,\n    keywords: [\"sun\", \"dim\", \"weather\", \"light\", \"day\"],\n  },\n  {\n    name: \"sun-medium\",\n    icon: SunMediumIcon,\n    keywords: [\"sun\", \"medium\", \"weather\", \"light\", \"day\"],\n  },\n  {\n    name: \"sun-moon\",\n    icon: SunMoonIcon,\n    keywords: [\"sun\", \"moon\", \"day\", \"night\", \"evening\"],\n  },\n  {\n    name: \"cart\",\n    icon: CartIcon,\n    keywords: [\n      \"trolley\",\n      \"cart\",\n      \"basket\",\n      \"e-commerce\",\n      \"store\",\n      \"purchase\",\n      \"products\",\n      \"items\",\n      \"ingredients\",\n    ],\n  },\n  {\n    name: \"stethoscope\",\n    icon: StethoscopeIcon,\n    keywords: [\"phonendoscope\", \"medical\", \"heart\", \"lungs\", \"sound\"],\n  },\n  {\n    name: \"circle-check\",\n    icon: CircleCheckIcon,\n    keywords: [\"done\", \"todo\", \"tick\", \"complete\", \"task\"],\n  },\n  {\n    name: \"earth\",\n    icon: EarthIcon,\n    keywords: [\"world\", \"browser\", \"language\", \"translate\", \"globe\"],\n  },\n  {\n    name: \"workflow\",\n    icon: WorkflowIcon,\n    keywords: [\n      \"action\",\n      \"continuous integration\",\n      \"ci\",\n      \"automation\",\n      \"devops\",\n      \"network\",\n      \"node\",\n      \"connection\",\n    ],\n  },\n  {\n    name: \"wrench\",\n    icon: WrenchIcon,\n    keywords: [\n      \"account\",\n      \"settings\",\n      \"spanner\",\n      \"diy\",\n      \"toolbox\",\n      \"build\",\n      \"construction\",\n    ],\n  },\n  {\n    name: \"logout\",\n    icon: LogoutIcon,\n    keywords: [\"sign out\", \"arrow\", \"exit\", \"auth\"],\n  },\n  {\n    name: \"circle-help\",\n    icon: CircleHelpIcon,\n    keywords: [\"question mark\"],\n  },\n  {\n    name: \"user\",\n    icon: UserIcon,\n    keywords: [\"person\", \"account\", \"contact\"],\n  },\n  {\n    name: \"flame\",\n    icon: FlameIcon,\n    keywords: [\"fire\", \"flame\", \"hot\"],\n  },\n  {\n    name: \"audio-lines\",\n    icon: AudioLinesIcon,\n    keywords: [\n      \"graphic equaliser\",\n      \"sound\",\n      \"noise\",\n      \"listen\",\n      \"hearing\",\n      \"hertz\",\n      \"frequency\",\n      \"wavelength\",\n      \"vibrate\",\n      \"sine\",\n      \"synthesizer\",\n      \"synthesiser\",\n      \"levels\",\n      \"track\",\n      \"music\",\n      \"playback\",\n      \"radio\",\n      \"broadcast\",\n      \"airwaves\",\n      \"voice\",\n      \"vocals\",\n      \"singer\",\n      \"song\",\n    ],\n  },\n  {\n    name: \"eye-off\",\n    icon: EyeOffIcon,\n    keywords: [\n      \"view\",\n      \"watch\",\n      \"see\",\n      \"hide\",\n      \"conceal\",\n      \"mask\",\n      \"hidden\",\n      \"visibility\",\n      \"vision\",\n    ],\n  },\n  {\n    name: \"eye\",\n    icon: EyeIcon,\n    keywords: [\n      \"view\",\n      \"watch\",\n      \"see\",\n      \"show\",\n      \"expose\",\n      \"reveal\",\n      \"display\",\n      \"visible\",\n      \"visibility\",\n      \"vision\",\n      \"preview\",\n      \"read\",\n    ],\n  },\n  {\n    name: \"square-stack\",\n    icon: SquareStackIcon,\n    keywords: [\n      \"versions\",\n      \"clone\",\n      \"copy\",\n      \"duplicate\",\n      \"multiple\",\n      \"revisions\",\n      \"version control\",\n      \"backup\",\n      \"history\",\n    ],\n  },\n  {\n    name: \"chess-king\",\n    icon: ChessKingIcon,\n    keywords: [\n      \"chess\",\n      \"king\",\n      \"piece\",\n      \"board game\",\n      \"strategy\",\n      \"game\",\n      \"checkmate\",\n      \"royal\",\n      \"crown\",\n    ],\n  },\n  {\n    name: \"chess-knight\",\n    icon: ChessKnightIcon,\n    keywords: [\n      \"chess\",\n      \"knight\",\n      \"piece\",\n      \"board game\",\n      \"strategy\",\n      \"game\",\n      \"horse\",\n      \"L-shape\",\n      \"move\",\n    ],\n  },\n  {\n    name: \"chess-pawn\",\n    icon: ChessPawnIcon,\n    keywords: [\n      \"chess\",\n      \"pawn\",\n      \"piece\",\n      \"board game\",\n      \"strategy\",\n      \"game\",\n      \"pawn\",\n      \"pawn-shape\",\n      \"move\",\n    ],\n  },\n  {\n    name: \"chess-bishop\",\n    icon: ChessBishopIcon,\n    keywords: [\n      \"chess\",\n      \"bishop\",\n      \"piece\",\n      \"board game\",\n      \"strategy\",\n      \"game\",\n      \"bishop\",\n      \"bishop-shape\",\n      \"move\",\n    ],\n  },\n  {\n    name: \"badge-alert\",\n    icon: BadgeAlertIcon,\n    keywords: [\n      \"check\",\n      \"verified\",\n      \"unverified\",\n      \"security\",\n      \"safety\",\n      \"issue\",\n    ],\n  },\n  {\n    name: \"message-circle\",\n    icon: MessageCircleIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n    ],\n  },\n  {\n    name: \"message-circle-check\",\n    icon: MessageCircleCheckIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"moderate\",\n      \"check\",\n      \"done\",\n      \"todo\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"message-circle-more\",\n    icon: MessageCircleMoreIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"typing\",\n      \"writing\",\n      \"responding\",\n      \"ellipsis\",\n      \"etc\",\n    ],\n  },\n  {\n    name: \"message-circle-plus\",\n    icon: MessageCirclePlusIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"add\",\n    ],\n  },\n  {\n    name: \"message-circle-x\",\n    icon: MessageCircleXIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"clear\",\n      \"close\",\n      \"delete\",\n      \"remove\",\n      \"cancel\",\n      \"silence\",\n      \"mute\",\n      \"moderate\",\n    ],\n  },\n  {\n    name: \"message-square\",\n    icon: MessageSquareIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"message\",\n    ],\n  },\n  {\n    name: \"message-square-check\",\n    icon: MessageSquareCheckIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"moderate\",\n      \"check\",\n      \"done\",\n      \"todo\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"message-square-more\",\n    icon: MessageSquareMoreIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"typing\",\n      \"writing\",\n      \"message\",\n      \"responding\",\n      \"ellipsis\",\n      \"etc\",\n    ],\n  },\n  {\n    name: \"message-square-plus\",\n    icon: MessageSquarePlusIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"add\",\n    ],\n  },\n  {\n    name: \"message-square-x\",\n    icon: MessageSquareXIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"clear\",\n      \"close\",\n      \"delete\",\n      \"remove\",\n      \"cancel\",\n      \"silence\",\n      \"mute\",\n      \"moderate\",\n    ],\n  },\n  {\n    name: \"message-circle-dashed\",\n    icon: MessageCircleDashedIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"typing\",\n      \"writing\",\n      \"message\",\n      \"responding\",\n      \"ellipsis\",\n      \"etc\",\n    ],\n  },\n  {\n    name: \"message-square-dashed\",\n    icon: MessageSquareDashedIcon,\n    keywords: [\n      \"comment\",\n      \"chat\",\n      \"conversation\",\n      \"dialog\",\n      \"feedback\",\n      \"speech bubble\",\n      \"typing\",\n      \"writing\",\n      \"message\",\n      \"responding\",\n      \"ellipsis\",\n      \"etc\",\n    ],\n  },\n  {\n    name: \"clipboard-check\",\n    icon: ClipboardCheckIcon,\n    keywords: [\"clipboard\", \"check\", \"clipboard-check\", \"clipboard-checkmark\"],\n  },\n  {\n    name: \"home\",\n    icon: HomeIcon,\n    keywords: [\"home\", \"living\", \"building\", \"residence\", \"architecture\"],\n  },\n  {\n    name: \"arrow-left\",\n    icon: ArrowLeftIcon,\n    keywords: [\"previous\", \"back\", \"direction\", \"west\", \"<-\"],\n  },\n  {\n    name: \"arrow-right\",\n    icon: ArrowRightIcon,\n    keywords: [\"forward\", \"next\", \"direction\", \"east\", \"->\"],\n  },\n  {\n    name: \"expand\",\n    icon: ExpandIcon,\n    keywords: [\"scale\", \"fullscreen\"],\n  },\n  {\n    name: \"route\",\n    icon: RouteIcon,\n    keywords: [\"path\", \"journey\", \"planner\", \"points\", \"stops\", \"stations\"],\n  },\n  {\n    name: \"airplane\",\n    icon: AirplaneIcon,\n    keywords: [\n      \"flight\",\n      \"path\",\n      \"journey\",\n      \"planner\",\n      \"points\",\n      \"stops\",\n      \"stations\",\n    ],\n  },\n  {\n    name: \"airplay\",\n    icon: AirplayIcon,\n    keywords: [\"stream\", \"cast\", \"device\", \"screen\", \"monitor\"],\n  },\n  {\n    name: \"refresh-ccw\",\n    icon: RefreshCCWIcon,\n    keywords: [\n      \"arrows\",\n      \"rotate\",\n      \"reload\",\n      \"rerun\",\n      \"synchronise\",\n      \"synchronize\",\n      \"circular\",\n      \"cycle\",\n    ],\n  },\n  { name: \"undo\", icon: UndoIcon, keywords: [\"redo\", \"rerun\", \"history\"] },\n  {\n    name: \"download\",\n    icon: DownloadIcon,\n    keywords: [\"import\", \"export\", \"save\"],\n  },\n  {\n    name: \"square-pen\",\n    icon: SquarePenIcon,\n    keywords: [\n      \"pencil\",\n      \"change\",\n      \"create\",\n      \"draw\",\n      \"sketch\",\n      \"draft\",\n      \"writer\",\n      \"writing\",\n      \"biro\",\n      \"ink\",\n      \"marker\",\n      \"felt tip\",\n      \"stationery\",\n      \"artist\",\n    ],\n  },\n  {\n    name: \"delete\",\n    icon: DeleteIcon,\n    keywords: [\"garbage\", \"delete\", \"remove\", \"bin\"],\n  },\n  {\n    name: \"sliders-horizontal\",\n    icon: SlidersHorizontalIcon,\n    keywords: [\"settings\", \"filters\", \"controls\"],\n  },\n  {\n    name: \"settings\",\n    icon: SettingsIcon,\n    keywords: [\"cog\", \"edit\", \"gear\", \"preferences\"],\n  },\n  {\n    name: \"calendar-cog\",\n    icon: CalendarCogIcon,\n    keywords: [\n      \"date\",\n      \"day\",\n      \"month\",\n      \"year\",\n      \"events\",\n      \"settings\",\n      \"gear\",\n      \"cog\",\n    ],\n  },\n  {\n    name: \"cursor-click\",\n    icon: CursorClickIcon,\n    keywords: [\"click\", \"select\"],\n  },\n  {\n    name: \"menu\",\n    icon: MenuIcon,\n    keywords: [\"bars\", \"navigation\", \"hamburger\", \"options\"],\n  },\n  {\n    name: \"clock\",\n    icon: ClockIcon,\n    keywords: [\"time\", \"watch\", \"alarm\"],\n  },\n  {\n    name: \"file-stack\",\n    icon: FileStackIcon,\n    keywords: [\n      \"versions\",\n      \"multiple\",\n      \"copy\",\n      \"documents\",\n      \"revisions\",\n      \"version control\",\n      \"history\",\n    ],\n  },\n  {\n    name: \"file-pen-line\",\n    icon: FilePenLineIcon,\n    keywords: [\"edit\"],\n  },\n  {\n    name: \"archive\",\n    icon: ArchiveIcon,\n    keywords: [\"index\", \"backup\", \"box\", \"storage\", \"records\"],\n  },\n  {\n    name: \"copy\",\n    icon: CopyIcon,\n    keywords: [\"clone\", \"duplicate\", \"multiple\"],\n  },\n  {\n    name: \"attach-file\",\n    icon: AttachFileIcon,\n    keywords: [\"attachment\", \"file\"],\n  },\n  { name: \"alarm-clock\", icon: AlarmClockIcon, keywords: [\"morning\"] },\n  { name: \"bold\", icon: BoldIcon, keywords: [\"text\", \"strong\", \"format\"] },\n  {\n    name: \"italic\",\n    icon: ItalicIcon,\n    keywords: [\"oblique\", \"text\", \"format\"],\n  },\n  {\n    name: \"underline\",\n    icon: UnderlineIcon,\n    keywords: [\"text\", \"format\"],\n  },\n  {\n    name: \"scan-text\",\n    icon: ScanTextIcon,\n    keywords: [\"recognition\", \"read\", \"translate\", \"copy\", \"lines\"],\n  },\n  {\n    name: \"languages\",\n    icon: LanguagesIcon,\n    keywords: [\"translate\"],\n  },\n  {\n    name: \"at-sign\",\n    icon: AtSignIcon,\n    keywords: [\"mention\", \"at\", \"email\", \"message\", \"@\"],\n  },\n  {\n    name: \"atom\",\n    icon: AtomIcon,\n    keywords: [\"science\", \"physics\", \"chemistry\", \"nucleus\", \"electron\"],\n  },\n  {\n    name: \"bell\",\n    icon: BellIcon,\n    keywords: [\"alarm\", \"notification\", \"sound\", \"reminder\"],\n  },\n  {\n    name: \"users\",\n    icon: UsersIcon,\n    keywords: [\"group\", \"people\"],\n  },\n  {\n    name: \"upvote\",\n    icon: UpvoteIcon,\n    keywords: [\"like\", \"good\", \"emotion\"],\n  },\n  {\n    name: \"downvote\",\n    icon: DownvoteIcon,\n    keywords: [\"dislike\", \"bad\", \"emotion\"],\n  },\n  {\n    name: \"circle-dollar-sign\",\n    icon: CircleDollarSignIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"dollar-sign\",\n    icon: DollarSignIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"indian-rupee\",\n    icon: IndianRupeeIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"japanese-yen\",\n    icon: JapaneseYenIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"philippine-peso\",\n    icon: PhilippinePesoIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"euro\",\n    icon: EuroIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"pound-sterling\",\n    icon: PoundSterlingIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"georgian-lari\",\n    icon: GeorgianLariIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"russian-ruble\",\n    icon: RussianRubleIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"saudi-riyal\",\n    icon: SaudiRiyalIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"swiss-franc\",\n    icon: SwissFrancIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"turkish-lira\",\n    icon: TurkishLiraIcon,\n    keywords: [\"monetization\", \"marketing\", \"currency\", \"money\", \"payment\"],\n  },\n  {\n    name: \"hand-coins\",\n    icon: HandCoinsIcon,\n    keywords: [\n      \"savings\",\n      \"banking\",\n      \"money\",\n      \"finance\",\n      \"offers\",\n      \"mortgage\",\n      \"payment\",\n      \"received\",\n      \"wage\",\n      \"payroll\",\n      \"allowance\",\n      \"pocket money\",\n      \"handout\",\n      \"pennies\",\n    ],\n  },\n  {\n    name: \"badge-percent\",\n    icon: BadgePercentIcon,\n    keywords: [\n      \"verified\",\n      \"unverified\",\n      \"sale\",\n      \"discount\",\n      \"offer\",\n      \"marketing\",\n      \"sticker\",\n      \"price tag\",\n    ],\n  },\n  {\n    name: \"chart-pie\",\n    icon: ChartPieIcon,\n    keywords: [\"statistics\", \"analytics\", \"diagram\", \"presentation\"],\n  },\n  {\n    name: \"chart-scatter\",\n    icon: ChartScatterIcon,\n    keywords: [\"chart\", \"analytics\", \"scatter\"],\n  },\n  {\n    name: \"gauge\",\n    icon: GaugeIcon,\n    keywords: [\n      \"dashboard\",\n      \"dial\",\n      \"meter\",\n      \"speed\",\n      \"pressure\",\n      \"measure\",\n      \"level\",\n    ],\n  },\n  {\n    name: \"pen-tool\",\n    icon: PenToolIcon,\n    keywords: [\"vector\", \"drawing\", \"path\"],\n  },\n  {\n    name: \"fingerprint\",\n    icon: FingerprintIcon,\n    keywords: [\"2fa\", \"authentication\", \"biometric\", \"identity\", \"security\"],\n  },\n  {\n    name: \"link\",\n    icon: LinkIcon,\n    keywords: [\"chain\", \"url\"],\n  },\n  {\n    name: \"layers\",\n    icon: LayersIcon,\n    keywords: [\n      \"stack\",\n      \"pile\",\n      \"pages\",\n      \"sheets\",\n      \"paperwork\",\n      \"copies\",\n      \"copy\",\n    ],\n  },\n  {\n    name: \"grip\",\n    icon: GripIcon,\n    keywords: [\"grab\", \"dots\", \"handle\", \"move\", \"drag\"],\n  },\n  {\n    name: \"git-pull-request\",\n    icon: GitPullRequestIcon,\n    keywords: [\"code\", \"version control\", \"open\"],\n  },\n  {\n    name: \"github\",\n    icon: GithubIcon,\n    keywords: [\"logo\", \"version control\", \"repository\", \"source code\", \"git\"],\n  },\n  {\n    name: \"connect\",\n    icon: ConnectIcon,\n    keywords: [\n      \"electricity\",\n      \"energy\",\n      \"electronics\",\n      \"socket\",\n      \"outlet\",\n      \"disconnect\",\n    ],\n  },\n  {\n    name: \"volume\",\n    icon: VolumeIcon,\n    keywords: [\"music\", \"sound\", \"mute\", \"speaker\"],\n  },\n  {\n    name: \"sun\",\n    icon: SunIcon,\n    keywords: [\"brightness\", \"weather\", \"light\", \"summer\"],\n  },\n  {\n    name: \"party-popper\",\n    icon: PartyPopperIcon,\n    keywords: [\n      \"emoji\",\n      \"congratulations\",\n      \"celebration\",\n      \"party\",\n      \"tada\",\n      \"🎉\",\n      \"🎊\",\n      \"excitement\",\n      \"exciting\",\n      \"excites\",\n      \"confetti\",\n    ],\n  },\n  {\n    name: \"frame\",\n    icon: FrameIcon,\n    keywords: [\"logo\", \"design\", \"tool\"],\n  },\n  {\n    name: \"bone\",\n    icon: BoneIcon,\n    keywords: [\"health\", \"skeleton\", \"skull\", \"death\", \"pets\", \"dog\"],\n  },\n  {\n    name: \"align-center\",\n    icon: AlignCenterIcon,\n    keywords: [\"text\", \"alignment\", \"center\"],\n  },\n  {\n    name: \"align-vertical\",\n    icon: AlignVerticalIcon,\n    keywords: [\"center\", \"items\", \"flex\", \"justify\", \"distribute\", \"between\"],\n  },\n  {\n    name: \"align-horizontal\",\n    icon: AlignHorizontalIcon,\n    keywords: [\"center\", \"items\", \"flex\", \"justify\", \"distribute\", \"between\"],\n  },\n  {\n    name: \"compass\",\n    icon: CompassIcon,\n    keywords: [\n      \"direction\",\n      \"navigation\",\n      \"north\",\n      \"south\",\n      \"east\",\n      \"west\",\n      \"compass\",\n    ],\n  },\n  {\n    name: \"shield-check\",\n    icon: ShieldCheckIcon,\n    keywords: [\"security\", \"verified\", \"safe\", \"protection\", \"secure\"],\n  },\n  {\n    name: \"trending-down\",\n    icon: TrendingDownIcon,\n    keywords: [\"down\", \"trend\", \"graph\", \"downward\", \"decrease\", \"statistics\"],\n  },\n  {\n    name: \"trending-up\",\n    icon: TrendingUpIcon,\n    keywords: [\"up\", \"trend\", \"graph\", \"upward\", \"increase\", \"statistics\"],\n  },\n  {\n    name: \"trending-up-down\",\n    icon: TrendingUpDownIcon,\n    keywords: [\n      \"up\",\n      \"trend\",\n      \"graph\",\n      \"upward\",\n      \"increase\",\n      \"statistics\",\n      \"down\",\n      \"trend\",\n      \"graph\",\n      \"downward\",\n      \"decrease\",\n    ],\n  },\n  {\n    name: \"timer\",\n    icon: TimerIcon,\n    keywords: [\"time\", \"watch\", \"alarm\", \"stopwatch\", \"stopwatch\"],\n  },\n  {\n    name: \"bluetooth\",\n    icon: BluetoothIcon,\n    keywords: [\"tool\", \"connection\", \"network\"],\n  },\n  {\n    name: \"bluetooth-searching\",\n    icon: BluetoothSearchingIcon,\n    keywords: [\"tool\", \"connection\", \"network\"],\n  },\n  {\n    name: \"bluetooth-connected\",\n    icon: BluetoothConnectedIcon,\n    keywords: [\"tool\", \"connection\", \"network\"],\n  },\n  {\n    name: \"bluetooth-off\",\n    icon: BluetoothOffIcon,\n    keywords: [\"tool\", \"connection\", \"network\"],\n  },\n  {\n    name: \"flask\",\n    icon: FlaskIcon,\n    keywords: [\n      \"beaker\",\n      \"erlenmeyer\",\n      \"lab\",\n      \"chemistry\",\n      \"experiment\",\n      \"test\",\n    ],\n  },\n  {\n    name: \"syringe\",\n    icon: SyringeIcon,\n    keywords: [\n      \"medicine\",\n      \"medical\",\n      \"needle\",\n      \"pump\",\n      \"plunger\",\n      \"nozzle\",\n      \"blood\",\n    ],\n  },\n  {\n    name: \"play\",\n    icon: PlayIcon,\n    keywords: [\"video\", \"play\", \"start\"],\n  },\n  {\n    name: \"pause\",\n    icon: PauseIcon,\n    keywords: [\"video\", \"pause\", \"stop\"],\n  },\n  {\n    name: \"chart-column-decreasing\",\n    icon: ChartColumnDecreasingIcon,\n    keywords: [\"chart\", \"column\", \"decreasing\"],\n  },\n  {\n    name: \"chart-column-increasing\",\n    icon: ChartColumnIncreasingIcon,\n    keywords: [\"chart\", \"column\", \"increasing\"],\n  },\n  {\n    name: \"chart-bar-decreasing\",\n    icon: ChartBarDecreasingIcon,\n    keywords: [\"chart\", \"bar\", \"decreasing\"],\n  },\n  {\n    name: \"chart-bar-increasing\",\n    icon: ChartBarIncreasingIcon,\n    keywords: [\"chart\", \"bar\", \"increasing\"],\n  },\n  {\n    name: \"chevron-down\",\n    icon: ChevronDownIcon,\n    keywords: [\"chevron\", \"down\", \"expand\", \"unfold\", \"vertical\"],\n  },\n  {\n    name: \"chevron-up\",\n    icon: ChevronUpIcon,\n    keywords: [\"chevron\", \"up\", \"collapse\", \"fold\", \"vertical\"],\n  },\n  {\n    name: \"chevron-left\",\n    icon: ChevronLeftIcon,\n    keywords: [\"chevron\", \"left\", \"previous\", \"back\", \"direction\"],\n  },\n  {\n    name: \"chevron-right\",\n    icon: ChevronRightIcon,\n    keywords: [\"chevron\", \"right\", \"next\", \"forward\", \"direction\"],\n  },\n  {\n    name: \"chevrons-up-down\",\n    icon: ChevronsUpDownIcon,\n    keywords: [\"expand\", \"unfold\", \"vertical\", \"chevron\"],\n  },\n  {\n    name: \"chevrons-down-up\",\n    icon: ChevronsDownUpIcon,\n    keywords: [\"collapse\", \"fold\", \"vertical\", \"chevron\"],\n  },\n  {\n    name: \"chevrons-left-right\",\n    icon: ChevronsLeftRightIcon,\n    keywords: [\"expand\", \"unfold\", \"horizontal\", \"chevron\"],\n  },\n  {\n    name: \"chevrons-right-left\",\n    icon: ChevronsRightLeftIcon,\n    keywords: [\"collapse\", \"fold\", \"horizontal\", \"chevron\"],\n  },\n  {\n    name: \"circle-chevron-down\",\n    icon: CircleChevronDownIcon,\n    keywords: [\"back\", \"menu\", \"chevron\"],\n  },\n  {\n    name: \"circle-chevron-left\",\n    icon: CircleChevronLeftIcon,\n    keywords: [\n      \"back\",\n      \"previous\",\n      \"less than\",\n      \"fewer\",\n      \"menu\",\n      \"<\",\n      \"chevron\",\n    ],\n  },\n  {\n    name: \"circle-chevron-right\",\n    icon: CircleChevronRightIcon,\n    keywords: [\n      \"next\",\n      \"forward\",\n      \"more than\",\n      \"greater\",\n      \"menu\",\n      \">\",\n      \"chevron\",\n    ],\n  },\n  {\n    name: \"square-chevron-down\",\n    icon: SquareChevronDownIcon,\n    keywords: [\"chevron\", \"down\", \"expand\"],\n  },\n  {\n    name: \"square-chevron-up\",\n    icon: SquareChevronUpIcon,\n    keywords: [\"chevron\", \"up\", \"collapse\"],\n  },\n  {\n    name: \"square-chevron-right\",\n    icon: SquareChevronRightIcon,\n    keywords: [\"chevron\", \"right\", \"next\"],\n  },\n  {\n    name: \"square-chevron-left\",\n    icon: SquareChevronLeftIcon,\n    keywords: [\"chevron\", \"left\", \"previous\"],\n  },\n  {\n    name: \"a-arrow-down\",\n    icon: AArrowDownIcon,\n    keywords: [\"arrow\", \"down\", \"a\"],\n  },\n\n  {\n    name: \"circle-dashed\",\n    icon: CircleDashedIcon,\n    keywords: [\"dashed\", \"circle\", \"dashed circle\"],\n  },\n  {\n    name: \"circle-chevron-up\",\n    icon: CircleChevronUpIcon,\n    keywords: [\"caret\", \"ahead\", \"forward\", \"menu\", \"chevron\"],\n  },\n  {\n    name: \"check\",\n    icon: CheckIcon,\n    keywords: [\"done\", \"todo\", \"tick\", \"complete\", \"task\"],\n  },\n  {\n    name: \"check-check\",\n    icon: CheckCheckIcon,\n    keywords: [\n      \"done\",\n      \"received\",\n      \"double\",\n      \"todo\",\n      \"tick\",\n      \"complete\",\n      \"task\",\n    ],\n  },\n  {\n    name: \"id-card\",\n    icon: IdCardIcon,\n    keywords: [\n      \"identification\",\n      \"personal\",\n      \"details\",\n      \"profile\",\n      \"card\",\n      \"badge\",\n      \"identity\",\n      \"authentication\",\n      \"secure\",\n    ],\n  },\n  {\n    name: \"loader-pinwheel\",\n    icon: LoaderPinwheelIcon,\n    keywords: [\n      \"loading\",\n      \"wait\",\n      \"busy\",\n      \"progress\",\n      \"throbber\",\n      \"spinner\",\n      \"spinning\",\n      \"beach ball\",\n      \"frozen\",\n      \"freeze\",\n    ],\n  },\n  {\n    name: \"rocking-chair\",\n    icon: RockingChairIcon,\n    keywords: [\"furniture\", \"seat\", \"rock\", \"relax\", \"sit\", \"chair\"],\n  },\n  {\n    name: \"banana\",\n    icon: BananaIcon,\n    keywords: [\"fruit\", \"food\", \"yellow\", \"tropical\"],\n  },\n  {\n    name: \"wifi\",\n    icon: WifiIcon,\n    keywords: [\"internet\", \"electronic\", \"connection\", \"data\"],\n  },\n  {\n    name: \"chrome\",\n    icon: ChromeIcon,\n    keywords: [\"browser\", \"google\", \"internet\", \"web\", \"logo\"],\n  },\n  {\n    name: \"figma\",\n    icon: FigmaIcon,\n    keywords: [\"design\", \"tool\", \"logo\"],\n  },\n  {\n    name: \"fish-symbol\",\n    icon: FishSymbolIcon,\n    keywords: [\n      \"fish\",\n      \"seafood\",\n      \"ocean\",\n      \"marine\",\n      \"dish\",\n      \"restaurant\",\n      \"course\",\n      \"meal\",\n      \"seafood\",\n      \"pet\",\n      \"sea\",\n      \"marine\",\n    ],\n  },\n  {\n    name: \"git-commit-vertical\",\n    icon: GitCommitVerticalIcon,\n    keywords: [\n      \"code\",\n      \"open\",\n      \"version control \",\n      \"waypoint\",\n      \"stop\",\n      \"station\",\n    ],\n  },\n  {\n    name: \"git-commit-horizontal\",\n    icon: GitCommitHorizontalIcon,\n    keywords: [\n      \"code\",\n      \"open\",\n      \"version control \",\n      \"waypoint\",\n      \"stop\",\n      \"station\",\n    ],\n  },\n  {\n    name: \"waypoints\",\n    icon: WaypointsIcon,\n    keywords: [\n      \"indirection\",\n      \"vpn\",\n      \"virtual private network\",\n      \"proxy\",\n      \"connections\",\n      \"bounce\",\n      \"reroute\",\n      \"path\",\n      \"journey\",\n      \"planner\",\n      \"stops\",\n      \"stations\",\n      \"shared\",\n      \"spread\",\n      \"vira\",\n    ],\n  },\n  {\n    name: \"ship\",\n    icon: ShipIcon,\n    keywords: [\n      \"boat\",\n      \"vessel\",\n      \"sea\",\n      \"ocean\",\n      \"water\",\n      \"transport\",\n      \"knots\",\n      \"nautical mile\",\n      \"maritime\",\n      \"sailing\",\n      \"yacht\",\n      \"cruise\",\n      \"ocean liner\",\n      \"tanker\",\n      \"vessel\",\n      \"navy\",\n      \"trip\",\n    ],\n  },\n  {\n    name: \"roller-coaster\",\n    icon: RollerCoasterIcon,\n    keywords: [\n      \"ride\",\n      \"fun\",\n      \"amusement\",\n      \"park\",\n      \"thrill\",\n      \"excitement\",\n      \"attraction\",\n      \"entertainment\",\n      \"amusement park\",\n      \"theme park\",\n      \"funfair\",\n    ],\n  },\n  {\n    name: \"drum\",\n    icon: DrumIcon,\n    keywords: [\"music\", \"instrument\", \"percussion\", \"beat\", \"rhythm\", \"sound\"],\n  },\n  {\n    name: \"train-track\",\n    icon: TrainTrackIcon,\n    keywords: [\"railway\", \"track\", \"train\", \"transport\", \"travel\", \"line\"],\n  },\n  {\n    name: \"webhook\",\n    icon: WebhookIcon,\n    keywords: [\n      \"api\",\n      \"integration\",\n      \"web\",\n      \"hook\",\n      \"connect\",\n      \"link\",\n      \"push api\",\n      \"callback\",\n    ],\n  },\n  {\n    name: \"rabbit\",\n    icon: RabbitIcon,\n    keywords: [\n      \"bunny\",\n      \"hare\",\n      \"animal\",\n      \"mammal\",\n      \"ears\",\n      \"fluffy\",\n      \"rodent\",\n      \"pet\",\n      \"pest\",\n      \"bunny\",\n      \"hare\",\n      \"fast\",\n      \"speed\",\n      \"hop\",\n    ],\n  },\n  {\n    name: \"cog\",\n    icon: CogIcon,\n    keywords: [\n      \"gear\",\n      \"settings\",\n      \"preferences\",\n      \"controls\",\n      \"computing\",\n      \"settings\",\n      \"cog\",\n      \"edit\",\n    ],\n  },\n  {\n    name: \"cpu\",\n    icon: CpuIcon,\n    keywords: [\n      \"processor\",\n      \"chip\",\n      \"computer\",\n      \"hardware\",\n      \"central processing unit\",\n      \"computing\",\n      \"cores\",\n      \"technology\",\n      \"circuit\",\n      \"memory\",\n      \"ram\",\n      \"specs\",\n      \"gigahertz\",\n      \"ghz\",\n    ],\n  },\n  {\n    name: \"sparkles\",\n    icon: SparklesIcon,\n    keywords: [\"sparkles\", \"sparkle\", \"star\", \"stars\", \"shine\", \"shining\"],\n  },\n  {\n    name: \"rocket\",\n    icon: RocketIcon,\n    keywords: [\"launch\", \"space\", \"boost\", \"release\", \"version\"],\n  },\n  {\n    name: \"activity\",\n    icon: ActivityIcon,\n    keywords: [\n      \"pulse\",\n      \"action\",\n      \"motion/react\",\n      \"movement\",\n      \"exercise\",\n      \"fitness\",\n      \"healthcare\",\n      \"heart rate monitor\",\n      \"vital signs\",\n      \"vitals\",\n      \"emergency room\",\n      \"er\",\n      \"intensive care\",\n      \"hospital\",\n      \"defibrillator\",\n      \"earthquake\",\n      \"siesmic\",\n      \"magnitude\",\n      \"richter scale\",\n      \"aftershock\",\n      \"tremor\",\n      \"shockwave\",\n      \"audio\",\n      \"waveform\",\n      \"synthesizer\",\n      \"synthesiser\",\n      \"music\",\n    ],\n  },\n  {\n    name: \"ban\",\n    icon: BanIcon,\n    keywords: [\"ban\", \"stop\", \"prevent\", \"no\"],\n  },\n  {\n    name: \"map-pin\",\n    icon: MapPinIcon,\n    keywords: [\"map\", \"pin\", \"marker\", \"location\", \"address\"],\n  },\n  {\n    name: \"map-pin-check-inside\",\n    icon: MapPinCheckInsideIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"done\",\n      \"tick\",\n      \"complete\",\n      \"task\",\n      \"added\",\n    ],\n  },\n  {\n    name: \"map-pin-minus-inside\",\n    icon: MapPinMinusInsideIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"delete\",\n      \"remove\",\n      \"erase\",\n    ],\n  },\n  {\n    name: \"map-pin-plus-inside\",\n    icon: MapPinPlusInsideIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"add\",\n      \"create\",\n      \"new\",\n    ],\n  },\n  {\n    name: \"map-pin-off\",\n    icon: MapPinOffIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"off\",\n      \"remove\",\n      \"non available\",\n      \"invalid\",\n    ],\n  },\n  {\n    name: \"map-pin-check\",\n    icon: MapPinCheckIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"done\",\n      \"tick\",\n      \"complete\",\n      \"task\",\n      \"added\",\n    ],\n  },\n  {\n    name: \"map-pin-house\",\n    icon: MapPinHouseIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"home\",\n      \"living\",\n      \"place\",\n      \"landmark\",\n    ],\n  },\n  {\n    name: \"map-pin-minus\",\n    icon: MapPinMinusIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"delete\",\n      \"remove\",\n      \"erase\",\n    ],\n  },\n  {\n    name: \"map-pin-plus\",\n    icon: MapPinPlusIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"add\",\n      \"create\",\n      \"new\",\n    ],\n  },\n  {\n    name: \"map-pin-x-inside\",\n    icon: MapPinXInsideIcon,\n    keywords: [\n      \"map\",\n      \"pin\",\n      \"marker\",\n      \"location\",\n      \"address\",\n      \"waypoint\",\n      \"delete\",\n      \"remove\",\n      \"erase\",\n    ],\n  },\n  {\n    name: \"battery-full\",\n    icon: BatteryFullIcon,\n    keywords: [\"battery\", \"power\", \"energy\", \"full\", \"charge\"],\n  },\n  {\n    name: \"battery-medium\",\n    icon: BatteryMediumIcon,\n    keywords: [\"battery\", \"power\", \"energy\", \"medium\", \"charge\"],\n  },\n  {\n    name: \"battery-low\",\n    icon: BatteryLowIcon,\n    keywords: [\"battery\", \"power\", \"energy\", \"low\", \"charge\"],\n  },\n  {\n    name: \"terminal\",\n    icon: TerminalIcon,\n    keywords: [\"terminal\", \"console\", \"command line\", \"shell\", \"prompt\"],\n  },\n  {\n    name: \"keyboard\",\n    icon: KeyboardIcon,\n    keywords: [\"keyboard\", \"input\", \"text\", \"type\", \"input method\"],\n  },\n  {\n    name: \"clap\",\n    icon: ClapIcon,\n    keywords: [\n      \"clap\",\n      \"movie\",\n      \"film\",\n      \"video\",\n      \"camera\",\n      \"cinema\",\n      \"cut\",\n      \"action\",\n      \"television\",\n      \"tv\",\n      \"show\",\n      \"entertainment\",\n    ],\n  },\n  {\n    name: \"layout-panel-top\",\n    icon: LayoutPanelTopIcon,\n    keywords: [\n      \"window\",\n      \"webpage\",\n      \"block\",\n      \"section\",\n      \"grid\",\n      \"template\",\n      \"structure\",\n    ],\n  },\n  {\n    name: \"contrast\",\n    icon: ContrastIcon,\n    keywords: [\n      \"contrast\",\n      \"brightness\",\n      \"adjust\",\n      \"enhance\",\n      \"change\",\n      \"theme\",\n      \"dark\",\n      \"light\",\n      \"mode\",\n    ],\n  },\n  {\n    name: \"cooking-pot\",\n    icon: CookingPotIcon,\n    keywords: [\n      \"pod\",\n      \"cooking\",\n      \"recipe\",\n      \"food\",\n      \"kitchen\",\n      \"chef\",\n      \"restaurant\",\n      \"dinner\",\n      \"lunch\",\n      \"breakfast\",\n      \"meal\",\n      \"eat\",\n    ],\n  },\n  {\n    name: \"book-text\",\n    icon: BookTextIcon,\n    keywords: [\n      \"reading\",\n      \"booklet\",\n      \"magazine\",\n      \"leaflet\",\n      \"pamphlet\",\n      \"tome\",\n      \"library\",\n    ],\n  },\n  {\n    name: \"ev-charger\",\n    icon: EvChargerIcon,\n    keywords: [\"ev\", \"charger\", \"charge\", \"electric\", \"vehicle\"],\n  },\n  {\n    name: \"plug-zap\",\n    icon: PlugZapIcon,\n    keywords: [\"plug\", \"zap\", \"power\", \"energy\", \"charge\"],\n  },\n  {\n    name: \"shower-head\",\n    icon: ShowerHeadIcon,\n    keywords: [\"shower\", \"bath\", \"bathroom\", \"amenities\", \"services\"],\n  },\n  {\n    name: \"telescope\",\n    icon: TelescopeIcon,\n    keywords: [\n      \"telescope\",\n      \"astronomy\",\n      \"space\",\n      \"discovery\",\n      \"exploration\",\n      \"explore\",\n      \"vision\",\n      \"perspective\",\n      \"focus\",\n      \"stargazing\",\n      \"observe\",\n      \"view\",\n    ],\n  },\n  {\n    name: \"wind\",\n    icon: WindIcon,\n    keywords: [\"wind\", \"weather\", \"air\", \"blow\"],\n  },\n  {\n    name: \"angry\",\n    icon: AngryIcon,\n    keywords: [\"mad\", \"upset\", \"angry\", \"furious\", \"emotion\", \"face\"],\n  },\n  {\n    name: \"ambulance\",\n    icon: AmbulanceIcon,\n    keywords: [\n      \"ambulance\",\n      \"emergency\",\n      \"medical\",\n      \"hospital\",\n      \"vehicle\",\n      \"rescue\",\n      \"siren\",\n      \"healthcare\",\n      \"transportation\",\n      \"urgent\",\n      \"first aid\",\n    ],\n  },\n  {\n    name: \"cctv\",\n    icon: CctvIcon,\n    keywords: [\n      \"cctv\",\n      \"camera\",\n      \"surveillance\",\n      \"recording\",\n      \"film\",\n      \"videotape\",\n      \"crime\",\n      \"watching\",\n    ],\n  },\n  {\n    name: \"coffee\",\n    icon: CoffeeIcon,\n    keywords: [\n      \"coffee\",\n      \"drink\",\n      \"cup\",\n      \"mug\",\n      \"tea\",\n      \"cafe\",\n      \"hot\",\n      \"beverage\",\n    ],\n  },\n  {\n    name: \"cup-soda\",\n    icon: CupSodaIcon,\n    keywords: [\"beverage\", \"cup\", \"drink\", \"soda\", \"straw\", \"water\"],\n  },\n  {\n    name: \"arrow-down-a-z\",\n    icon: ArrowDownAZIcon,\n    keywords: [\n      \"filter\",\n      \"sort\",\n      \"ascending\",\n      \"descending\",\n      \"increasing\",\n      \"decreasing\",\n      \"rising\",\n      \"falling\",\n      \"alphabetical\",\n    ],\n  },\n  {\n    name: \"arrow-down-z-a\",\n    icon: ArrowDownZAIcon,\n    keywords: [\n      \"filter\",\n      \"sort\",\n      \"ascending\",\n      \"descending\",\n      \"increasing\",\n      \"decreasing\",\n      \"rising\",\n      \"falling\",\n      \"alphabetical\",\n    ],\n  },\n  {\n    name: \"arrow-down-0-1\",\n    icon: ArrowDown01Icon,\n    keywords: [\n      \"filter\",\n      \"sort\",\n      \"ascending\",\n      \"descending\",\n      \"increasing\",\n      \"decreasing\",\n      \"rising\",\n      \"falling\",\n      \"numerical\",\n    ],\n  },\n  {\n    name: \"arrow-down-1-0\",\n    icon: ArrowDown10Icon,\n    keywords: [\n      \"filter\",\n      \"sort\",\n      \"ascending\",\n      \"descending\",\n      \"increasing\",\n      \"decreasing\",\n      \"rising\",\n      \"falling\",\n      \"numerical\",\n    ],\n  },\n  {\n    name: \"x\",\n    icon: XIcon,\n    keywords: [\"x\", \"close\", \"delete\", \"remove\", \"cancel\", \"exit\", \"stop\"],\n  },\n  {\n    name: \"cast\",\n    icon: CastIcon,\n    keywords: [\"cast\", \"screen\", \"chromecast\", \"airplay\"],\n  },\n  {\n    name: \"upload\",\n    icon: UploadIcon,\n    keywords: [\"upload\", \"send\", \"share\"],\n  },\n  {\n    name: \"file-cog\",\n    icon: FileCogIcon,\n    keywords: [\"file\", \"cog\", \"settings\", \"preferences\", \"controls\"],\n  },\n  {\n    name: \"calendar-days\",\n    icon: CalendarDaysIcon,\n    keywords: [\"calendar\", \"days\", \"days of the week\", \"week\", \"month\"],\n  },\n  {\n    name: \"chart-line\",\n    icon: ChartLineIcon,\n    keywords: [\"chart\", \"line\", \"increasing\", \"linechart\", \"chartline\"],\n  },\n  {\n    name: \"file-chart-line\",\n    icon: FileChartLineIcon,\n    keywords: [\n      \"file\",\n      \"chart\",\n      \"line\",\n      \"increasing\",\n      \"filechartline\",\n      \"filechartline\",\n    ],\n  },\n  {\n    name: \"chart-no-axes-column-increasing\",\n    icon: ChartNoAxesColumnIncreasingIcon,\n    keywords: [\"chart\", \"column\", \"increasing\", \"chartnoaxes\"],\n  },\n  {\n    name: \"chart-no-axes-column-decreasing\",\n    icon: ChartNoAxesColumnDecreasingIcon,\n    keywords: [\"chart\", \"column\", \"decreasing\", \"chartnoaxes\"],\n  },\n  {\n    name: \"radio\",\n    icon: RadioIcon,\n    keywords: [\n      \"radio\",\n      \"signal\",\n      \"broadcast\",\n      \"wireless\",\n      \"frequency\",\n      \"connectivity\",\n      \"live\",\n    ],\n  },\n  {\n    name: \"radio-tower\",\n    icon: RadioTowerIcon,\n    keywords: [\n      \"radio\",\n      \"tower\",\n      \"radio tower\",\n      \"signal\",\n      \"broadcast\",\n      \"wireless\",\n      \"frequency\",\n      \"connectivity\",\n      \"live\",\n    ],\n  },\n  {\n    name: \"blocks\",\n    icon: BlocksIcon,\n    keywords: [\n      \"block\",\n      \"blocks\",\n      \"addon\",\n      \"plugin\",\n      \"integration\",\n      \"extension\",\n      \"package\",\n      \"build\",\n      \"stack\",\n      \"toys\",\n      \"kids\",\n      \"children\",\n      \"learning\",\n    ],\n  },\n  {\n    name: \"calendar-check\",\n    icon: CalendarCheckIcon,\n    keywords: [\n      \"calendar\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"calendar-check-2\",\n    icon: CalendarCheck2Icon,\n    keywords: [\n      \"calendar\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"file-check\",\n    icon: FileCheckIcon,\n    keywords: [\n      \"file\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"document\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"file-check-2\",\n    icon: FileCheck2Icon,\n    keywords: [\n      \"file\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"document\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"mail-check\",\n    icon: MailCheckIcon,\n    keywords: [\n      \"mail\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"email\",\n      \"confirm\",\n      \"complete\",\n      \"delivered\",\n      \"message\",\n      \"sent\",\n    ],\n  },\n  {\n    name: \"monitor-check\",\n    icon: MonitorCheckIcon,\n    keywords: [\n      \"monitor\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n      \"tv\",\n      \"screen\",\n      \"display\",\n      \"desktop\",\n      \"running\",\n      \"active\",\n      \"virtual machine\",\n      \"vm\",\n    ],\n  },\n  {\n    name: \"laptop-minimal-check\",\n    icon: LaptopMinimalCheckIcon,\n    keywords: [\n      \"laptop\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n      \"computer\",\n      \"laptop\",\n      \"running\",\n      \"active\",\n      \"virtual machine\",\n      \"vm\",\n    ],\n  },\n  {\n    name: \"gallery-horizontal-end\",\n    icon: GalleryHorizontalEndIcon,\n    keywords: [\n      \"gallery\",\n      \"horizontal\",\n      \"end\",\n      \"last\",\n      \"carousel\",\n      \"pictures\",\n      \"images\",\n      \"scroll\",\n      \"swipe\",\n      \"album\",\n      \"portfolio\",\n      \"history\",\n      \"versions\",\n      \"backup\",\n      \"time machine\",\n    ],\n  },\n  {\n    name: \"gallery-vertical-end\",\n    icon: GalleryVerticalEndIcon,\n    keywords: [\n      \"carousel\",\n      \"pictures\",\n      \"images\",\n      \"scroll\",\n      \"swipe\",\n      \"album\",\n      \"portfolio\",\n      \"history\",\n      \"versions\",\n      \"backup\",\n      \"time machine\",\n    ],\n  },\n  {\n    name: \"hand-heart\",\n    icon: HandHeartIcon,\n    keywords: [\n      \"hand\",\n      \"heart\",\n      \"love\",\n      \"affection\",\n      \"hug\",\n      \"cuddle\",\n      \"emotion\",\n    ],\n  },\n  {\n    name: \"gallery-thumbnails\",\n    icon: GalleryThumbnailsIcon,\n    keywords: [\n      \"gallery\",\n      \"thumbnails\",\n      \"images\",\n      \"carousel\",\n      \"pictures\",\n      \"album\",\n      \"portfolio\",\n      \"preview\",\n    ],\n  },\n  {\n    name: \"user-check\",\n    icon: UserCheckIcon,\n    keywords: [\n      \"user\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"user-round-check\",\n    icon: UserRoundCheckIcon,\n    keywords: [\n      \"user\",\n      \"check\",\n      \"checkmark\",\n      \"tick\",\n      \"done\",\n      \"confirm\",\n      \"complete\",\n    ],\n  },\n  {\n    name: \"box\",\n    icon: BoxIcon,\n    keywords: [\n      \"cube\",\n      \"package\",\n      \"container\",\n      \"storage\",\n      \"geometry\",\n      \"3d\",\n      \"isometric\",\n    ],\n  },\n  {\n    name: \"boxes\",\n    icon: BoxesIcon,\n    keywords: [\"boxes\", \"box\", \"container\", \"package\", \"shipping\"],\n  },\n  {\n    name: \"file-text\",\n    icon: FileTextIcon,\n    keywords: [\"file\", \"text\", \"document\", \"document\", \"document\"],\n  },\n  {\n    name: \"user-round-plus\",\n    icon: UserRoundPlusIcon,\n    keywords: [\"user\", \"plus\", \"add\", \"create\", \"new\"],\n  },\n  {\n    name: \"panel-left-open\",\n    icon: PanelLeftOpenIcon,\n    keywords: [\"panel\", \"left\", \"open\", \"menu\", \"navigation\"],\n  },\n  {\n    name: \"panel-left-close\",\n    icon: PanelLeftCloseIcon,\n    keywords: [\"panel\", \"left\", \"close\", \"menu\", \"navigation\"],\n  },\n  {\n    name: \"panel-right-open\",\n    icon: PanelRightOpenIcon,\n    keywords: [\"panel\", \"right\", \"open\", \"menu\", \"navigation\"],\n  },\n  {\n    name: \"construction\",\n    icon: ConstructionIcon,\n    keywords: [\n      \"roadwork\",\n      \"maintenance\",\n      \"blockade\",\n      \"barricade\",\n      \"development\",\n    ],\n  },\n  {\n    name: \"git-merge\",\n    icon: GitMergeIcon,\n    keywords: [\"code\", \"version control\", \"merge\", \"git\", \"branch\"],\n  },\n  {\n    name: \"zap\",\n    icon: ZapIcon,\n    keywords: [\"electricity\", \"energy\", \"power\", \"lightning\", \"bolt\"],\n  },\n  {\n    name: \"zap-off\",\n    icon: ZapOffIcon,\n    keywords: [\"electricity\", \"energy\", \"power\", \"lightning\", \"bolt\", \"off\"],\n  },\n  {\n    name: \"battery-charging\",\n    icon: BatteryChargingIcon,\n    keywords: [\"battery\", \"charging\", \"power\", \"electricity\", \"energy\"],\n  },\n  {\n    name: \"battery\",\n    icon: BatteryIcon,\n    keywords: [\"power\", \"electricity\", \"energy\", \"accumulator\", \"charge\"],\n  },\n  {\n    name: \"battery-plus\",\n    icon: BatteryPlusIcon,\n    keywords: [\"accumulator\", \"charge\", \"plus\", \"add\", \"battery\", \"new\"],\n  },\n  {\n    name: \"battery-warning\",\n    icon: BatteryWarningIcon,\n    keywords: [\n      \"battery\",\n      \"warning\",\n      \"power\",\n      \"electricity\",\n      \"energy\",\n      \"alert\",\n      \"exclamation\",\n    ],\n  },\n  {\n    name: \"hand\",\n    icon: HandIcon,\n    keywords: [\"wave\", \"hand\", \"hello\", \"bye\", \"gesture\"],\n  },\n  {\n    name: \"hand-grab\",\n    icon: HandGrabIcon,\n    keywords: [\"gesture\", \"hand\", \"grab\"],\n  },\n  {\n    name: \"heart-handshake\",\n    icon: HeartHandshakeIcon,\n    keywords: [\n      \"agreement\",\n      \"charity\",\n      \"deal\",\n      \"handshake\",\n      \"heart\",\n      \"love\",\n      \"partnership\",\n      \"relationship\",\n      \"support\",\n      \"together\",\n    ],\n  },\n  {\n    name: \"hand-fist\",\n    icon: HandFistIcon,\n    keywords: [\"fist\", \"bump\", \"power\", \"punch\", \"strength\", \"rock\"],\n  },\n  {\n    name: \"hand-helping\",\n    icon: HandHelpingIcon,\n    keywords: [\n      \"agreement\",\n      \"assistance\",\n      \"help\",\n      \"partnership\",\n      \"support\",\n      \"volunteer\",\n    ],\n  },\n  {\n    name: \"hand-metal\",\n    icon: HandMetalIcon,\n    keywords: [\n      \"rock\",\n      \"metal\",\n      \"heavy metal\",\n      \"music\",\n      \"gesture\",\n      \"concert\",\n      \"horns\",\n    ],\n  },\n  {\n    name: \"wifi-low\",\n    icon: WifiLowIcon,\n    keywords: [\"internet\", \"electronic\", \"connection\", \"data\"],\n  },\n  {\n    name: \"database-backup\",\n    icon: DatabaseBackupIcon,\n    keywords: [\n      \"database\",\n      \"backup\",\n      \"restore\",\n      \"storage\",\n      \"reload\",\n      \"sync\",\n      \"recovery\",\n      \"data\",\n    ],\n  },\n  {\n    name: \"disc-3\",\n    icon: Disc3Icon,\n    keywords: [\n      \"disc\",\n      \"vinyl\",\n      \"record\",\n      \"music\",\n      \"audio\",\n      \"spin\",\n      \"rotate\",\n      \"cd\",\n      \"dvd\",\n      \"media\",\n    ],\n  },\n].sort((a, b) => a.name.localeCompare(b.name));\n\nexport { ICON_LIST };\n"
  },
  {
    "path": "icons/indian-rupee.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface IndianRupeeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface IndianRupeeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst INDIAN_RUPEE_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst INDIAN_RUPEE_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst IndianRupeeIcon = forwardRef<IndianRupeeIconHandle, IndianRupeeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M9 3c6.667 0 6.667 10 0 10\"\n            initial=\"normal\"\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 13h-3\"\n            initial=\"normal\"\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14.5 21 l-8.5 -8\"\n            initial=\"normal\"\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 3h-12\"\n            initial=\"normal\"\n            variants={INDIAN_RUPEE_SECONDARY_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 8h-12\"\n            initial=\"normal\"\n            variants={INDIAN_RUPEE_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nIndianRupeeIcon.displayName = \"IndianRupeeIcon\";\n\nexport { IndianRupeeIcon };\n"
  },
  {
    "path": "icons/instagram.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InstagramIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface InstagramIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RECT_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LINE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst InstagramIcon = forwardRef<InstagramIconHandle, InstagramIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const rectControls = useAnimation();\n    const pathControls = useAnimation();\n    const lineControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          rectControls.start(\"animate\");\n          pathControls.start(\"animate\");\n          lineControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          rectControls.start(\"normal\");\n          pathControls.start(\"normal\");\n          lineControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          rectControls.start(\"animate\");\n          pathControls.start(\"animate\");\n          lineControls.start(\"animate\");\n        }\n      },\n      [lineControls, onMouseEnter, pathControls, rectControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          rectControls.start(\"normal\");\n          pathControls.start(\"normal\");\n          lineControls.start(\"normal\");\n        }\n      },\n      [rectControls, pathControls, lineControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={rectControls}\n            height=\"20\"\n            initial=\"normal\"\n            rx=\"5\"\n            ry=\"5\"\n            variants={RECT_VARIANTS}\n            width=\"20\"\n            x=\"2\"\n            y=\"2\"\n          />\n          <motion.path\n            animate={pathControls}\n            d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.line\n            animate={lineControls}\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n            x1=\"17.5\"\n            x2=\"17.51\"\n            y1=\"6.5\"\n            y2=\"6.5\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nInstagramIcon.displayName = \"InstagramIcon\";\n\nexport { InstagramIcon };\n"
  },
  {
    "path": "icons/italic.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ItalicIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ItalicIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst ItalicIcon = forwardRef<ItalicIconHandle, ItalicIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            transition={{ duration: 0.2 }}\n            variants={LINE_VARIANTS}\n            x1=\"19\"\n            x2=\"10\"\n            y1=\"4\"\n            y2=\"4\"\n          />\n          <motion.line\n            animate={controls}\n            transition={{ duration: 0.2 }}\n            variants={LINE_VARIANTS}\n            x1=\"14\"\n            x2=\"5\"\n            y1=\"20\"\n            y2=\"20\"\n          />\n          <motion.line\n            animate={controls}\n            transition={{\n              delay: 0.1,\n              duration: 0.4,\n            }}\n            variants={{\n              normal: { pathLength: 1, pathOffset: 0 },\n              animate: {\n                pathLength: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n            x1=\"15\"\n            x2=\"9\"\n            y1=\"4\"\n            y2=\"20\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nItalicIcon.displayName = \"ItalicIcon\";\n\nexport { ItalicIcon };\n"
  },
  {
    "path": "icons/japanese-yen.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface JapaneseYenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface JapaneseYenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst JAPANESE_YEN_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst JAPANESE_YEN_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst JapaneseYenIcon = forwardRef<JapaneseYenIconHandle, JapaneseYenIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M12 9.5V21m0-11.5L6 3m6 6.5L18 3\"\n            initial=\"normal\"\n            variants={JAPANESE_YEN_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 11h-12\"\n            initial=\"normal\"\n            variants={JAPANESE_YEN_SECONDARY_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M18 15h-12\"\n            initial=\"normal\"\n            variants={JAPANESE_YEN_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nJapaneseYenIcon.displayName = \"JapaneseYenIcon\";\n\nexport { JapaneseYenIcon };\n"
  },
  {
    "path": "icons/key-circle.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface KeyIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KeyCircleIcon = forwardRef<KeyIconHandle, KeyIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 0.9,\n            bounce: 0.5,\n          }}\n          variants={{\n            normal: { y: 0, rotate: 0 },\n            animate: {\n              y: [0, -3, 0, -2, 0],\n              rotate: [0, 3, -3, 0],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" />\n          <circle cx=\"16.5\" cy=\"7.5\" fill=\"currentColor\" r=\".5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nKeyCircleIcon.displayName = \"KeyCircleIcon\";\n\nexport { KeyCircleIcon };\n"
  },
  {
    "path": "icons/key-square.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface KeyIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KeySquareIcon = forwardRef<KeyIconHandle, KeyIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 0.6,\n            bounce: 0.4,\n          }}\n          variants={{\n            normal: { rotate: 0, scale: 1 },\n            animate: {\n              rotate: [0, 15, -15, 0],\n              scale: [1, 1.05, 1, 1],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z\" />\n          <path d=\"m14 7 3 3\" />\n          <path d=\"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nKeySquareIcon.displayName = \"KeySquareIcon\";\n\nexport { KeySquareIcon };\n"
  },
  {
    "path": "icons/key.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface KeyIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KeyIcon = forwardRef<KeyIconHandle, KeyIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ originX: 0.3, originY: 0.7 }}\n          variants={{\n            normal: {\n              rotate: 0,\n              transition: {\n                type: \"spring\",\n                stiffness: 120,\n                damping: 14,\n                duration: 0.8,\n              },\n            },\n            animate: {\n              rotate: [-3, -33, -25, -28],\n              transition: {\n                duration: 0.6,\n                times: [0, 0.6, 0.8, 1],\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\" />\n          <path d=\"m21 2-9.6 9.6\" />\n          <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nKeyIcon.displayName = \"KeyIcon\";\n\nexport { KeyIcon };\n"
  },
  {
    "path": "icons/keyboard.tsx",
    "content": "\"use client\";\n\nimport { AnimatePresence, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface KeyboardIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface KeyboardIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst KEYBOARD_PATHS = [\n  { id: \"key1\", d: \"M10 8h.01\" },\n  { id: \"key2\", d: \"M12 12h.01\" },\n  { id: \"key3\", d: \"M14 8h.01\" },\n  { id: \"key4\", d: \"M16 12h.01\" },\n  { id: \"key5\", d: \"M18 8h.01\" },\n  { id: \"key6\", d: \"M6 8h.01\" },\n  { id: \"key7\", d: \"M7 16h10\" },\n  { id: \"key8\", d: \"M8 12h.01\" },\n];\n\nconst KeyboardIcon = forwardRef<KeyboardIconHandle, KeyboardIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const [isHovered, setIsHovered] = useState(false);\n    const controls = useAnimation();\n\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => setIsHovered(true),\n        stopAnimation: () => setIsHovered(false),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          setIsHovered(true);\n        }\n      },\n      [onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          setIsHovered(false);\n        }\n      },\n      [onMouseLeave]\n    );\n\n    useEffect(() => {\n      const animateKeys = async () => {\n        if (isHovered) {\n          await controls.start((i) => ({\n            opacity: [1, 0.2, 1],\n            transition: {\n              duration: 1.5,\n              times: [0, 0.5, 1],\n              delay: i * 0.2 * Math.random(),\n              repeat: 1,\n              repeatType: \"reverse\",\n            },\n          }));\n        } else {\n          controls.stop();\n          controls.set({ opacity: 1 });\n        }\n      };\n\n      animateKeys();\n    }, [isHovered, controls]);\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"16\" rx=\"2\" width=\"20\" x=\"2\" y=\"4\" />\n          <AnimatePresence>\n            {KEYBOARD_PATHS.map((path, index) => (\n              <motion.path\n                animate={controls}\n                custom={index}\n                d={path.d}\n                initial={{ opacity: 1 }}\n                key={path.id}\n              />\n            ))}\n          </AnimatePresence>\n        </svg>\n      </div>\n    );\n  }\n);\n\nKeyboardIcon.displayName = \"KeyboardIcon\";\n\nexport { KeyboardIcon };\n"
  },
  {
    "path": "icons/languages.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LanguagesIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LanguagesIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1, pathLength: 1, pathOffset: 0 },\n  animate: (custom: number) => ({\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      opacity: { duration: 0.01, delay: custom * 0.1 },\n      pathLength: {\n        type: \"spring\",\n        duration: 0.5,\n        bounce: 0,\n        delay: custom * 0.1,\n      },\n    },\n  }),\n};\n\nconst SVG_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: 1,\n    transition: {\n      staggerChildren: 0.1,\n      delayChildren: 0.2,\n    },\n  },\n};\n\nconst LanguagesIcon = forwardRef<LanguagesIconHandle, LanguagesIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const svgControls = useAnimation();\n    const pathControls = useAnimation();\n\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          svgControls.start(\"animate\");\n          pathControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          svgControls.start(\"normal\");\n          pathControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          svgControls.start(\"animate\");\n          pathControls.start(\"animate\");\n        }\n      },\n      [onMouseEnter, pathControls, svgControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          svgControls.start(\"normal\");\n          pathControls.start(\"normal\");\n        }\n      },\n      [svgControls, pathControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={svgControls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={pathControls}\n            custom={3}\n            d=\"m5 8 6 6\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={pathControls}\n            custom={2}\n            d=\"m4 14 6-6 3-3\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={pathControls}\n            custom={1}\n            d=\"M2 5h12\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={pathControls}\n            custom={0}\n            d=\"M7 2h1\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={pathControls}\n            custom={3}\n            d=\"m22 22-5-10-5 10\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={pathControls}\n            custom={3}\n            d=\"M14 18h6\"\n            variants={PATH_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nLanguagesIcon.displayName = \"LanguagesIcon\";\n\nexport { LanguagesIcon };\n"
  },
  {
    "path": "icons/laptop-minimal-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LaptopMinimalCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LaptopMinimalCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst LaptopMinimalCheckIcon = forwardRef<\n  LaptopMinimalCheckIconHandle,\n  LaptopMinimalCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2 20h20\" />\n        <rect height=\"12\" rx=\"2\" width=\"18\" x=\"3\" y=\"4\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 10 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nLaptopMinimalCheckIcon.displayName = \"LaptopMinimalCheckIcon\";\n\nexport { LaptopMinimalCheckIcon };\n"
  },
  {
    "path": "icons/laugh.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LaughIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LaughIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LaughIcon = forwardRef<LaughIconHandle, LaughIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: {\n        scale: 1,\n        rotate: 0,\n        strokeWidth: 2,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.15, 1, 1.1, 1.05],\n        rotate: [0, 3, -2, 3, 0],\n        strokeWidth: [2, 2.5, 2.5, 2.5, 2],\n        transition: {\n          duration: 1.2,\n          times: [0, 0.2, 0.4, 0.6, 1],\n          ease: \"easeInOut\",\n          repeat: 0,\n          repeatType: \"reverse\",\n        },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      normal: {\n        d: \"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\",\n        pathLength: 1,\n        strokeWidth: 2,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        d: \"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\",\n        pathLength: [0.7, 1, 1],\n        strokeWidth: 2.5,\n        scaleY: [1, 1.2, 1.1],\n        y: [0, 0.5, 0.3],\n        transition: {\n          duration: 0.6,\n          times: [0, 0.5, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const eyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        opacity: 1,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.3, 1, 1.7],\n        opacity: [1, 1, 1, 1],\n        transition: {\n          duration: 0.6,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            initial=\"normal\"\n            variants={mouthVariants}\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={eyeVariants}\n            x1=\"9\"\n            x2=\"9.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={eyeVariants}\n            x1=\"15\"\n            x2=\"15.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nLaughIcon.displayName = \"LaughIcon\";\n\nexport { LaughIcon };\n"
  },
  {
    "path": "icons/layers.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LayersIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LayersIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 100,\n  damping: 14,\n  mass: 1,\n};\n\nconst LayersIcon = forwardRef<LayersIconHandle, LayersIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"firstState\");\n          await controls.start(\"secondState\");\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"firstState\");\n          await controls.start(\"secondState\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z\" />\n          <motion.path\n            animate={controls}\n            d=\"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { y: 0 },\n              firstState: { y: -9 },\n              secondState: { y: 0 },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { y: 0 },\n              firstState: { y: -5 },\n              secondState: { y: 0 },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nLayersIcon.displayName = \"LayersIcon\";\n\nexport { LayersIcon };\n"
  },
  {
    "path": "icons/layout-panel-top.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LayoutPanelTopIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LayoutPanelTopIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LayoutPanelTopIcon = forwardRef<\n  LayoutPanelTopIconHandle,\n  LayoutPanelTopIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"7\"\n          initial=\"normal\"\n          rx=\"1\"\n          variants={{\n            normal: { opacity: 1, translateY: 0 },\n            animate: {\n              opacity: [0, 1],\n              translateY: [-5, 0],\n              transition: {\n                opacity: { duration: 0.5, times: [0.2, 1] },\n                duration: 0.5,\n              },\n            },\n          }}\n          width=\"18\"\n          x=\"3\"\n          y=\"3\"\n        />\n        <motion.rect\n          animate={controls}\n          height=\"7\"\n          initial=\"normal\"\n          rx=\"1\"\n          variants={{\n            normal: { opacity: 1, translateX: 0 },\n            animate: {\n              opacity: [0, 1],\n              translateX: [-10, 0],\n              transition: {\n                opacity: { duration: 0.7, times: [0.5, 1] },\n                translateX: { delay: 0.3 },\n                duration: 0.5,\n              },\n            },\n          }}\n          width=\"7\"\n          x=\"3\"\n          y=\"14\"\n        />\n        <motion.rect\n          animate={controls}\n          height=\"7\"\n          initial=\"normal\"\n          rx=\"1\"\n          variants={{\n            normal: { opacity: 1, translateX: 0 },\n            animate: {\n              opacity: [0, 1],\n              translateX: [10, 0],\n              transition: {\n                opacity: { duration: 0.8, times: [0.5, 1] },\n                translateX: { delay: 0.4 },\n                duration: 0.5,\n              },\n            },\n          }}\n          width=\"7\"\n          x=\"14\"\n          y=\"14\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nLayoutPanelTopIcon.displayName = \"LayoutPanelTopIcon\";\n\nexport { LayoutPanelTopIcon };\n"
  },
  {
    "path": "icons/link.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LinkIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LinkIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  initial: { pathLength: 1, pathOffset: 0, rotate: 0 },\n  animate: {\n    pathLength: [1, 0.97, 1, 0.97, 1],\n    pathOffset: [0, 0.05, 0, 0.05, 0],\n    rotate: [0, -5, 0],\n    transition: {\n      rotate: {\n        duration: 0.5,\n      },\n      duration: 1,\n      times: [0, 0.2, 0.4, 0.6, 1],\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst LinkIcon = forwardRef<LinkIconHandle, LinkIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nLinkIcon.displayName = \"LinkIcon\";\n\nexport { LinkIcon };\n"
  },
  {
    "path": "icons/linkedin.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LinkedinIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LinkedinIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst RECT_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LinkedinIcon = forwardRef<LinkedinIconHandle, LinkedinIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const pathControls = useAnimation();\n    const rectControls = useAnimation();\n    const circleControls = useAnimation();\n\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          pathControls.start(\"animate\");\n          rectControls.start(\"animate\");\n          circleControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          pathControls.start(\"normal\");\n          rectControls.start(\"normal\");\n          circleControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          pathControls.start(\"animate\");\n          rectControls.start(\"animate\");\n          circleControls.start(\"animate\");\n        }\n      },\n      [circleControls, onMouseEnter, pathControls, rectControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          pathControls.start(\"normal\");\n          rectControls.start(\"normal\");\n          circleControls.start(\"normal\");\n        }\n      },\n      [pathControls, rectControls, circleControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={pathControls}\n            d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.rect\n            animate={rectControls}\n            height=\"12\"\n            initial=\"normal\"\n            variants={RECT_VARIANTS}\n            width=\"4\"\n            x=\"2\"\n            y=\"9\"\n          />\n          <motion.circle\n            animate={circleControls}\n            cx=\"4\"\n            cy=\"4\"\n            initial=\"normal\"\n            r=\"2\"\n            variants={CIRCLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nLinkedinIcon.displayName = \"LinkedinIcon\";\n\nexport { LinkedinIcon };\n"
  },
  {
    "path": "icons/loader-pinwheel.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LoaderPinwheelIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LoaderPinwheelIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: 360,\n    transition: {\n      repeat: Number.POSITIVE_INFINITY,\n      duration: 1,\n      ease: \"linear\",\n    },\n  },\n};\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 50,\n  damping: 10,\n};\n\nconst LoaderPinwheelIcon = forwardRef<\n  LoaderPinwheelIconHandle,\n  LoaderPinwheelIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.g\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={G_VARIANTS}\n        >\n          <path d=\"M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0\" />\n          <path d=\"M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6\" />\n          <path d=\"M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6\" />\n        </motion.g>\n        <circle cx=\"12\" cy=\"12\" r=\"10\" />\n      </svg>\n    </div>\n  );\n});\n\nLoaderPinwheelIcon.displayName = \"LoaderPinwheelIcon\";\n\nexport { LoaderPinwheelIcon };\n"
  },
  {
    "path": "icons/lock-keyhole-open.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LockKeyholeOpenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LockKeyholeOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LockKeyholeOpenIcon = forwardRef<\n  LockKeyholeOpenIconHandle,\n  LockKeyholeOpenIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        transition={{\n          duration: 1,\n          ease: [0.4, 0, 0.2, 1],\n        }}\n        variants={{\n          normal: {\n            rotate: 0,\n            scale: 1,\n          },\n          animate: {\n            rotate: [2, 4, -2, 0],\n            scale: [1.05, 0.95, 1.02, 1],\n          },\n        }}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle cx=\"12\" cy=\"16\" r=\"1\" />\n        <rect height=\"12\" rx=\"2\" width=\"18\" x=\"3\" y=\"10\" />\n        <motion.path\n          animate={controls}\n          d=\"M7 10V7a5 5 0 0 1 10 0v3\"\n          initial=\"normal\"\n          transition={{\n            duration: 0.3,\n            ease: [0.4, 0, 0.2, 1],\n          }}\n          variants={{\n            normal: {\n              pathLength: 0.8,\n            },\n            animate: {\n              pathLength: 1,\n            },\n          }}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nLockKeyholeOpenIcon.displayName = \"LockKeyholeOpenIcon\";\n\nexport { LockKeyholeOpenIcon };\n"
  },
  {
    "path": "icons/lock-keyhole.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LockKeyholeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LockKeyholeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LockKeyholeIcon = forwardRef<LockKeyholeIconHandle, LockKeyholeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 1,\n            ease: [0.4, 0, 0.2, 1],\n          }}\n          variants={{\n            normal: {\n              rotate: 0,\n              scale: 1,\n            },\n            animate: {\n              rotate: [-3, 1, -2, 0],\n              scale: [0.95, 1.05, 0.98, 1],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"16\" r=\"1\" />\n          <rect height=\"12\" rx=\"2\" width=\"18\" x=\"3\" y=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M7 10V7a5 5 0 0 1 10 0v3\"\n            initial=\"normal\"\n            transition={{\n              duration: 0.3,\n              ease: [0.4, 0, 0.2, 1],\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n              },\n              animate: {\n                pathLength: 0.7,\n              },\n            }}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nLockKeyholeIcon.displayName = \"LockKeyholeIcon\";\n\nexport { LockKeyholeIcon };\n"
  },
  {
    "path": "icons/lock-open.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LockOpenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LockOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LockOpenIcon = forwardRef<LockOpenIconHandle, LockOpenIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 1,\n            ease: [0.4, 0, 0.2, 1],\n          }}\n          variants={{\n            normal: {\n              rotate: 0,\n              scale: 1,\n            },\n            animate: {\n              rotate: [2, 4, -2, 0],\n              scale: [1.05, 0.95, 1.02, 1],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"11\" rx=\"2\" ry=\"2\" width=\"18\" x=\"3\" y=\"11\" />\n          <motion.path\n            animate={controls}\n            d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n            initial=\"normal\"\n            transition={{\n              duration: 0.3,\n              ease: [0.4, 0, 0.2, 1],\n            }}\n            variants={{\n              normal: {\n                pathLength: 0.8,\n              },\n              animate: {\n                pathLength: 1,\n              },\n            }}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nLockOpenIcon.displayName = \"LockOpenIcon\";\n\nexport { LockOpenIcon };\n"
  },
  {
    "path": "icons/lock.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LockIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LockIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LockIcon = forwardRef<LockIconHandle, LockIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 1,\n            ease: [0.4, 0, 0.2, 1],\n          }}\n          variants={{\n            normal: {\n              rotate: 0,\n              scale: 1,\n            },\n            animate: {\n              rotate: [-3, 1, -2, 0],\n              scale: [0.95, 1.05, 0.98, 1],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <rect height=\"11\" rx=\"2\" ry=\"2\" width=\"18\" x=\"3\" y=\"11\" />\n          <motion.path\n            animate={controls}\n            d=\"M7 11V7a5 5 0 0 1 10 0v4\"\n            initial=\"normal\"\n            transition={{\n              duration: 0.3,\n              ease: [0.4, 0, 0.2, 1],\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n              },\n              animate: {\n                pathLength: 0.7,\n              },\n            }}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nLockIcon.displayName = \"LockIcon\";\n\nexport { LockIcon };\n"
  },
  {
    "path": "icons/logout.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface LogoutIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface LogoutIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  animate: {\n    x: 2,\n    translateX: [0, -3, 0],\n    transition: {\n      duration: 0.4,\n    },\n  },\n};\n\nconst LogoutIcon = forwardRef<LogoutIconHandle, LogoutIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n          <motion.polyline\n            animate={controls}\n            points=\"16 17 21 12 16 7\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.line\n            animate={controls}\n            variants={PATH_VARIANTS}\n            x1=\"21\"\n            x2=\"9\"\n            y1=\"12\"\n            y2=\"12\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nLogoutIcon.displayName = \"LogoutIcon\";\n\nexport { LogoutIcon };\n"
  },
  {
    "path": "icons/mail-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MailCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MailCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst MailCheckIcon = forwardRef<MailCheckIconHandle, MailCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8\" />\n          <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n          <motion.path\n            animate={controls}\n            d=\"m16 19 2 2 4-4\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"center\" }}\n            variants={CHECK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMailCheckIcon.displayName = \"MailCheckIcon\";\n\nexport { MailCheckIcon };\n"
  },
  {
    "path": "icons/mailbox.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface MailboxIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MailboxIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FLAG_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 300,\n      damping: 18,\n    },\n  },\n  animate: {\n    rotate: -90,\n    transition: {\n      type: \"spring\",\n      stiffness: 280,\n      damping: 12,\n      mass: 1,\n    },\n  },\n};\n\nconst MailboxIcon = forwardRef<MailboxIconHandle, MailboxIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          className=\"overflow-visible\"\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z\" />\n          <motion.path\n            animate={controls}\n            d=\"M18 11V9H15\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"18px 11px\" }}\n            variants={FLAG_VARIANTS}\n          />\n          <path d=\"M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2\" />\n          <line x1=\"6\" x2=\"7\" y1=\"10\" y2=\"10\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMailboxIcon.displayName = \"MailboxIcon\";\n\nexport { MailboxIcon };\n"
  },
  {
    "path": "icons/map-pin-check-inside.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinCheckInsideIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinCheckInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinCheckInsideIcon = forwardRef<\n  MapPinCheckInsideIconHandle,\n  MapPinCheckInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 10 2 2 4-4\"\n          initial=\"normal\"\n          variants={CHECK_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nMapPinCheckInsideIcon.displayName = \"MapPinCheckInsideIcon\";\n\nexport { MapPinCheckInsideIcon };\n"
  },
  {
    "path": "icons/map-pin-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinCheckIcon = forwardRef<MapPinCheckIconHandle, MapPinCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M19.43 12.935c.357-.967.57-1.955.57-2.935a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32.197 32.197 0 0 0 .813-.728\" />\n          <circle cx=\"12\" cy=\"10\" r=\"3\" />\n          <motion.path\n            animate={controls}\n            d=\"m16 18 2 2 4-4\"\n            initial=\"normal\"\n            variants={CHECK_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinCheckIcon.displayName = \"MapPinCheckIcon\";\n\nexport { MapPinCheckIcon };\n"
  },
  {
    "path": "icons/map-pin-house.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinHouseIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinHouseIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst HOUSE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinHouseIcon = forwardRef<MapPinHouseIconHandle, MapPinHouseIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 .601.2\" />\n          <circle cx=\"10\" cy=\"10\" r=\"3\" />\n          <motion.path\n            animate={controls}\n            d=\"M15 22a1 1 0 0 1-1-1v-4a1 1 0 0 1 .445-.832l3-2a1 1 0 0 1 1.11 0l3 2A1 1 0 0 1 22 17v4a1 1 0 0 1-1 1z M18 22v-3\"\n            initial=\"normal\"\n            variants={HOUSE_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinHouseIcon.displayName = \"MapPinHouseIcon\";\n\nexport { MapPinHouseIcon };\n"
  },
  {
    "path": "icons/map-pin-minus-inside.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinMinusInsideIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinMinusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst MINUS_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinMinusInsideIcon = forwardRef<\n  MapPinMinusInsideIconHandle,\n  MapPinMinusInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n        <motion.path\n          animate={controls}\n          d=\"M9 10h6\"\n          initial=\"normal\"\n          variants={MINUS_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nMapPinMinusInsideIcon.displayName = \"MapPinMinusInsideIcon\";\n\nexport { MapPinMinusInsideIcon };\n"
  },
  {
    "path": "icons/map-pin-minus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinMinusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinMinusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst MINUS_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinMinusIcon = forwardRef<MapPinMinusIconHandle, MapPinMinusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18.977 14C19.6 12.701 20 11.343 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\" />\n          <circle cx=\"12\" cy=\"10\" r=\"3\" />\n          <motion.path\n            animate={controls}\n            d=\"M16 18h6\"\n            initial=\"normal\"\n            variants={MINUS_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinMinusIcon.displayName = \"MapPinMinusIcon\";\n\nexport { MapPinMinusIcon };\n"
  },
  {
    "path": "icons/map-pin-off.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinOffIcon = forwardRef<MapPinOffIconHandle, MapPinOffIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.75 7.09a3 3 0 0 1 2.16 2.16\" />\n          <path d=\"M17.072 17.072c-1.634 2.17-3.527 3.912-4.471 4.727a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 1.432-4.568\" />\n          <motion.path\n            animate={controls}\n            d=\"m2 2 20 20\"\n            initial=\"normal\"\n            variants={BAR_VARIANTS}\n          />\n          <path d=\"M8.475 2.818A8 8 0 0 1 20 10c0 1.183-.31 2.377-.81 3.533\" />\n          <path d=\"M9.13 9.13a3 3 0 0 0 3.74 3.74\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinOffIcon.displayName = \"MapPinOffIcon\";\n\nexport { MapPinOffIcon };\n"
  },
  {
    "path": "icons/map-pin-plus-inside.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinPlusInsideIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinPlusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst VERTICAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.6,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.6 },\n    },\n  },\n};\n\nconst MapPinPlusInsideIcon = forwardRef<\n  MapPinPlusInsideIconHandle,\n  MapPinPlusInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n        <motion.path\n          animate={controls}\n          d=\"M12 7v6\"\n          initial=\"normal\"\n          variants={HORIZONTAL_BAR_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M9 10h6\"\n          initial=\"normal\"\n          variants={VERTICAL_BAR_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nMapPinPlusInsideIcon.displayName = \"MapPinPlusInsideIcon\";\n\nexport { MapPinPlusInsideIcon };\n"
  },
  {
    "path": "icons/map-pin-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinPlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst VERTICAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.6,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.6 },\n    },\n  },\n};\n\nconst MapPinPlusIcon = forwardRef<MapPinPlusIconHandle, MapPinPlusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M19.914 11.105A7.298 7.298 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\" />\n          <circle cx=\"12\" cy=\"10\" r=\"3\" />\n          <motion.path\n            animate={controls}\n            d=\"M16 18h6\"\n            initial=\"normal\"\n            variants={HORIZONTAL_BAR_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M19 15v6\"\n            initial=\"normal\"\n            variants={VERTICAL_BAR_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinPlusIcon.displayName = \"MapPinPlusIcon\";\n\nexport { MapPinPlusIcon };\n"
  },
  {
    "path": "icons/map-pin-x-inside.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinXInsideIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinXInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst FIRST_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst SECOND_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.6,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.6 },\n    },\n  },\n};\n\nconst MapPinXInsideIcon = forwardRef<\n  MapPinXInsideIconHandle,\n  MapPinXInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n        <motion.path\n          animate={controls}\n          d=\"m14.5 7.5-5 5\"\n          initial=\"normal\"\n          variants={FIRST_BAR_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m9.5 7.5 5 5\"\n          initial=\"normal\"\n          variants={SECOND_BAR_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nMapPinXInsideIcon.displayName = \"MapPinXInsideIcon\";\n\nexport { MapPinXInsideIcon };\n"
  },
  {
    "path": "icons/map-pin.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MapPinIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MapPinIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, -5, -3],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.6, 1],\n    },\n  },\n};\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [0.5, 0],\n    transition: {\n      delay: 0.3,\n      duration: 0.5,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst MapPinIcon = forwardRef<MapPinIconHandle, MapPinIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"10\"\n            initial=\"normal\"\n            r=\"3\"\n            variants={CIRCLE_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMapPinIcon.displayName = \"MapPinIcon\";\n\nexport { MapPinIcon };\n"
  },
  {
    "path": "icons/maximize-2.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface Maximize2IconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface Maximize2IconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst Maximize2Icon = forwardRef<Maximize2IconHandle, Maximize2IconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3 16.2V21m0 0h4.8M3 21l6-6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 7.8V3m0 0h-4.8M21 3l-6 6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"-2px\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMaximize2Icon.displayName = \" Maximize2Icon\";\n\nexport { Maximize2Icon };\n"
  },
  {
    "path": "icons/maximize.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MaximizeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\ninterface MaximizeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst MaximizeIcon = forwardRef<MaximizeIconHandle, MaximizeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M8 3H5a2 2 0 0 0-2 2v3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"-2px\" },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M21 8V5a2 2 0 0 0-2-2h-3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"-2px\" },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M3 16v3a2 2 0 0 0 2 2h3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"2px\" },\n            }}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M16 21h3a2 2 0 0 0 2-2v-3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"2px\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMaximizeIcon.displayName = \"MaximizeIcon\";\n\nexport { MaximizeIcon };\n"
  },
  {
    "path": "icons/meh.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MehIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MehIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst MehIcon = forwardRef<MehIconHandle, MehIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: {\n        scale: 1,\n        rotate: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.05, 0.98, 1.02],\n        rotate: [0, 1, -1, 0],\n        transition: {\n          duration: 0.7,\n          times: [0, 0.4, 0.7, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      normal: {\n        scaleX: 1,\n        y: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scaleX: [1, 1.2, 0.9, 1.1],\n        y: [0, 0.5, -0.5, 0],\n        transition: {\n          duration: 0.6,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n          delay: 0.1,\n        },\n      },\n    };\n\n    const leftEyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        x: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.3, 1, 1.2],\n        x: [0, -0.3, 0.3, 0],\n        transition: {\n          duration: 0.5,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const rightEyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        x: 0,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.3, 1, 1.2],\n        x: [0, 0.3, -0.3, 0],\n        transition: {\n          duration: 0.5,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={mouthVariants}\n            x1=\"8\"\n            x2=\"16\"\n            y1=\"15\"\n            y2=\"15\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={leftEyeVariants}\n            x1=\"9\"\n            x2=\"9.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={rightEyeVariants}\n            x1=\"15\"\n            x2=\"15.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMehIcon.displayName = \"MehIcon\";\n\nexport { MehIcon };\n"
  },
  {
    "path": "icons/menu.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MenuIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MenuIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    y: 0,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    rotate: custom === 1 ? 45 : custom === 3 ? -45 : 0,\n    y: custom === 1 ? 6 : custom === 3 ? -6 : 0,\n    opacity: custom === 2 ? 0 : 1,\n    transition: {\n      type: \"spring\",\n      stiffness: 260,\n      damping: 20,\n    },\n  }),\n};\n\nconst MenuIcon = forwardRef<MenuIconHandle, MenuIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            custom={1}\n            variants={LINE_VARIANTS}\n            x1=\"4\"\n            x2=\"20\"\n            y1=\"6\"\n            y2=\"6\"\n          />\n          <motion.line\n            animate={controls}\n            custom={2}\n            variants={LINE_VARIANTS}\n            x1=\"4\"\n            x2=\"20\"\n            y1=\"12\"\n            y2=\"12\"\n          />\n          <motion.line\n            animate={controls}\n            custom={3}\n            variants={LINE_VARIANTS}\n            x1=\"4\"\n            x2=\"20\"\n            y1=\"18\"\n            y2=\"18\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMenuIcon.displayName = \"MenuIcon\";\n\nexport { MenuIcon };\n"
  },
  {
    "path": "icons/message-circle-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCircleCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCircleCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst MessageCircleCheckIcon = forwardRef<\n  MessageCircleCheckIconHandle,\n  MessageCircleCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 12 2 2 4-4\"\n          initial=\"normal\"\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageCircleCheckIcon.displayName = \"MessageCircleCheckIcon\";\n\nexport { MessageCircleCheckIcon };\n"
  },
  {
    "path": "icons/message-circle-dashed.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCircleDashedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst MessageCircleDashedIcon = forwardRef<\n  MessageCircleDashedIconHandle,\n  MessageCircleDashedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        {[\n          \"M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1\",\n          \"M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1\",\n          \"M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5\",\n          \"M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1\",\n          \"M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1\",\n          \"M3.5 17.5 2 22l4.5-1.5\",\n          \"M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5\",\n          \"M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1\",\n        ].map((d, index) => (\n          <motion.path\n            animate={controls}\n            custom={index + 1}\n            d={d}\n            key={d}\n            variants={PATH_VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nMessageCircleDashedIcon.displayName = \"MessageCircleDashedIcon\";\n\nexport { MessageCircleDashedIcon };\n"
  },
  {
    "path": "icons/message-circle-more.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCircleMoreIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCircleMoreIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOT_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    opacity: [1, 0, 0, 1, 1, 0, 0, 1],\n    transition: {\n      opacity: {\n        times: [\n          0,\n          0.1,\n          0.1 + custom * 0.1,\n          0.1 + custom * 0.1 + 0.1,\n          0.5,\n          0.6,\n          0.6 + custom * 0.1,\n          0.6 + custom * 0.1 + 0.1,\n        ],\n        duration: 1.5,\n      },\n    },\n  }),\n};\n\nconst MessageCircleMoreIcon = forwardRef<\n  MessageCircleMoreIconHandle,\n  MessageCircleMoreIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M8 12h.01\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M12 12h.01\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M16 12h.01\"\n          variants={DOT_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageCircleMoreIcon.displayName = \"MessageCircleMoreIcon\";\n\nexport { MessageCircleMoreIcon };\n"
  },
  {
    "path": "icons/message-circle-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCirclePlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCirclePlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PLUS_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst PLUS_HORIZONTAL_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n      opacity: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n    },\n  },\n};\n\nconst MessageCirclePlusIcon = forwardRef<\n  MessageCirclePlusIconHandle,\n  MessageCirclePlusIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />\n        <motion.path\n          animate={controls}\n          d=\"M12 8v8\"\n          initial=\"normal\"\n          variants={PLUS_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M8 12h8\"\n          initial=\"normal\"\n          variants={PLUS_HORIZONTAL_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageCirclePlusIcon.displayName = \"MessageCirclePlusIcon\";\n\nexport { MessageCirclePlusIcon };\n"
  },
  {
    "path": "icons/message-circle-x.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCircleXIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCircleXIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FIRST_LINE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst SECOND_LINE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n      opacity: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n    },\n  },\n};\n\nconst MessageCircleXIcon = forwardRef<\n  MessageCircleXIconHandle,\n  MessageCircleXIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />\n        <motion.path\n          animate={controls}\n          d=\"m15 9-6 6\"\n          initial=\"normal\"\n          variants={FIRST_LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m9 9 6 6\"\n          initial=\"normal\"\n          variants={SECOND_LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageCircleXIcon.displayName = \"MessageCircleXIcon\";\n\nexport { MessageCircleXIcon };\n"
  },
  {
    "path": "icons/message-circle.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageCircleIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageCircleIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ICON_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    rotate: 0,\n  },\n  animate: {\n    scale: 1.05,\n    rotate: [0, -7, 7, 0],\n    transition: {\n      rotate: {\n        duration: 0.5,\n        ease: \"easeInOut\",\n      },\n      scale: {\n        type: \"spring\",\n        stiffness: 400,\n        damping: 10,\n      },\n    },\n  },\n};\n\nconst MessageCircleIcon = forwardRef<\n  MessageCircleIconHandle,\n  MessageCircleIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={ICON_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nMessageCircleIcon.displayName = \"MessageCircleIcon\";\n\nexport { MessageCircleIcon };\n"
  },
  {
    "path": "icons/message-square-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquareCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquareCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst MessageSquareCheckIcon = forwardRef<\n  MessageSquareCheckIconHandle,\n  MessageSquareCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.7.7 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 11 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageSquareCheckIcon.displayName = \"MessageSquareCheckIcon\";\n\nexport { MessageSquareCheckIcon };\n"
  },
  {
    "path": "icons/message-square-dashed.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquareDashedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquareDashedIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst MessageSquareDashedIcon = forwardRef<\n  MessageSquareDashedIconHandle,\n  MessageSquareDashedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        {[\n          \"M14 3h1\",\n          \"M14 17h1\",\n          \"M10 17H7l-4 4v-7\",\n          \"M9 3h1\",\n          \"M19 3a2 2 0 0 1 2 2\",\n          \"M3 9v1\",\n          \"M21 9v1\",\n          \"M21 14v1a2 2 0 0 1-2 2\",\n          \"M5 3a2 2 0 0 0-2 2\",\n        ].map((d, index) => (\n          <motion.path\n            animate={controls}\n            custom={index + 1}\n            d={d}\n            key={d}\n            variants={PATH_VARIANTS}\n          />\n        ))}\n      </svg>\n    </div>\n  );\n});\n\nMessageSquareDashedIcon.displayName = \"MessageSquareDashedIcon\";\n\nexport { MessageSquareDashedIcon };\n"
  },
  {
    "path": "icons/message-square-more.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquareMoreIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquareMoreIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DOT_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    opacity: [1, 0, 0, 1, 1, 0, 0, 1],\n    transition: {\n      opacity: {\n        times: [\n          0,\n          0.1,\n          0.1 + custom * 0.1,\n          0.1 + custom * 0.1 + 0.1,\n          0.5,\n          0.6,\n          0.6 + custom * 0.1,\n          0.6 + custom * 0.1 + 0.1,\n        ],\n        duration: 1.5,\n      },\n    },\n  }),\n};\n\nconst MessageSquareMoreIcon = forwardRef<\n  MessageSquareMoreIconHandle,\n  MessageSquareMoreIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M8 10h.01\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M12 10h.01\"\n          variants={DOT_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M16 10h.01\"\n          variants={DOT_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageSquareMoreIcon.displayName = \"MessageSquareMoreIcon\";\n\nexport { MessageSquareMoreIcon };\n"
  },
  {
    "path": "icons/message-square-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquarePlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquarePlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PLUS_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst PLUS_HORIZONTAL_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n      opacity: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n    },\n  },\n};\n\nconst MessageSquarePlusIcon = forwardRef<\n  MessageSquarePlusIconHandle,\n  MessageSquarePlusIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\" />\n        <motion.path\n          animate={controls}\n          d=\"M12 8v6\"\n          initial=\"normal\"\n          variants={PLUS_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M9 11h6\"\n          initial=\"normal\"\n          variants={PLUS_HORIZONTAL_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageSquarePlusIcon.displayName = \"MessageSquarePlusIcon\";\n\nexport { MessageSquarePlusIcon };\n"
  },
  {
    "path": "icons/message-square-x.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquareXIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquareXIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FIRST_LINE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst SECOND_LINE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n      opacity: { duration: 0.4, ease: \"easeInOut\", delay: 0.2 },\n    },\n  },\n};\n\nconst MessageSquareXIcon = forwardRef<\n  MessageSquareXIconHandle,\n  MessageSquareXIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\" />\n        <motion.path\n          animate={controls}\n          d=\"m14.5 8.5-5 5\"\n          initial=\"normal\"\n          variants={FIRST_LINE_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m9.5 8.5 5 5\"\n          initial=\"normal\"\n          variants={SECOND_LINE_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMessageSquareXIcon.displayName = \"MessageSquareXIcon\";\n\nexport { MessageSquareXIcon };\n"
  },
  {
    "path": "icons/message-square.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MessageSquareIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MessageSquareIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ICON_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    rotate: 0,\n  },\n  animate: {\n    scale: 1.05,\n    rotate: [0, -7, 7, 0],\n    transition: {\n      rotate: {\n        duration: 0.5,\n        ease: \"easeInOut\",\n      },\n      scale: {\n        type: \"spring\",\n        stiffness: 400,\n        damping: 10,\n      },\n    },\n  },\n};\n\nconst MessageSquareIcon = forwardRef<\n  MessageSquareIconHandle,\n  MessageSquareIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={ICON_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nMessageSquareIcon.displayName = \"MessageSquareIcon\";\n\nexport { MessageSquareIcon };\n"
  },
  {
    "path": "icons/mic-off.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MicOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MicOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      duration: 0.4,\n      delay: 0.15,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst MicOffIcon = forwardRef<MicOffIconHandle, MicOffIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 19v3\" />\n          <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\" />\n          <path d=\"M16.95 16.95A7 7 0 0 1 5 12v-2\" />\n          <path d=\"M18.89 13.23A7 7 0 0 0 19 12v-2\" />\n          <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\" />\n          <motion.path\n            animate={controls}\n            d=\"m2 2 20 20\"\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMicOffIcon.displayName = \"MicOffIcon\";\n\nexport { MicOffIcon };\n"
  },
  {
    "path": "icons/mic.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MicIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MicIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CAPSULE_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: {\n    y: [0, -3, 0, -2, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst MicIcon = forwardRef<MicIconHandle, MicIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          overflow=\"visible\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 19v3\" />\n          <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n          <motion.rect\n            animate={controls}\n            height=\"13\"\n            rx=\"3\"\n            variants={CAPSULE_VARIANTS}\n            width=\"6\"\n            x=\"9\"\n            y=\"2\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMicIcon.displayName = \"MicIcon\";\n\nexport { MicIcon };\n"
  },
  {
    "path": "icons/minimize.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MinimizeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MinimizeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst MinimizeIcon = forwardRef<MinimizeIconHandle, MinimizeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M8 3v3a2 2 0 0 1-2 2H3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 8h-3a2 2 0 0 1-2-2V3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 16h3a2 2 0 0 1 2 2v3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"2px\", translateY: \"-2px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M16 21v-3a2 2 0 0 1 2-2h3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-2px\", translateY: \"-2px\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nMinimizeIcon.displayName = \"MinimizeIcon\";\n\nexport { MinimizeIcon };\n"
  },
  {
    "path": "icons/monitor-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MonitorCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MonitorCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst MonitorCheckIcon = forwardRef<\n  MonitorCheckIconHandle,\n  MonitorCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"14\" rx=\"2\" width=\"20\" x=\"2\" y=\"3\" />\n        <path d=\"M12 17v4\" />\n        <path d=\"M8 21h8\" />\n        <motion.path\n          animate={controls}\n          d=\"m9 10 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nMonitorCheckIcon.displayName = \"MonitorCheckIcon\";\n\nexport { MonitorCheckIcon };\n"
  },
  {
    "path": "icons/moon.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface MoonIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface MoonIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, -10, 10, -5, 5, 0],\n  },\n};\n\nconst SVG_TRANSITION: Transition = {\n  duration: 1.2,\n  ease: \"easeInOut\",\n};\n\nconst MoonIcon = forwardRef<MoonIconHandle, MoonIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={SVG_TRANSITION}\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nMoonIcon.displayName = \"MoonIcon\";\n\nexport { MoonIcon };\n"
  },
  {
    "path": "icons/nfc.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface NfcIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface NfcIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: {\n      duration: 0.4,\n    },\n  },\n  fadeOut: {\n    opacity: 0,\n    transition: { duration: 0.3 },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      type: \"spring\",\n      stiffness: 300,\n      damping: 20,\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst NfcIcon = forwardRef<NfcIconHandle, NfcIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M6 8.32a7.43 7.43 0 0 1 0 7.36\"\n            initial={{ opacity: 1 }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M9.46 6.21a11.76 11.76 0 0 1 0 11.58\"\n            initial={{ opacity: 1 }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M12.91 4.1a15.91 15.91 0 0 1 .01 15.8\"\n            initial={{ opacity: 1 }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={3}\n            d=\"M16.37 2a20.16 20.16 0 0 1 0 20\"\n            initial={{ opacity: 1 }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nNfcIcon.displayName = \"NfcIcon\";\n\nexport { NfcIcon };\n"
  },
  {
    "path": "icons/panel-left-close.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PanelLeftCloseIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PanelLeftCloseIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { x: 0 },\n  animate: { x: [0, -1.5, 0] },\n};\n\nconst PanelLeftCloseIcon = forwardRef<\n  PanelLeftCloseIconHandle,\n  PanelLeftCloseIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <path d=\"M9 3v18\" />\n        <motion.path\n          animate={controls}\n          d=\"m16 15-3-3 3-3\"\n          transition={DEFAULT_TRANSITION}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nPanelLeftCloseIcon.displayName = \"PanelLeftCloseIcon\";\n\nexport { PanelLeftCloseIcon };\n"
  },
  {
    "path": "icons/panel-left-open.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PanelLeftOpenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PanelLeftOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { x: 0 },\n  animate: { x: [0, 1.5, 0] },\n};\n\nconst PanelLeftOpenIcon = forwardRef<\n  PanelLeftOpenIconHandle,\n  PanelLeftOpenIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <path d=\"M9 3v18\" />\n        <motion.path\n          animate={controls}\n          d=\"m14 9 3 3-3 3\"\n          transition={DEFAULT_TRANSITION}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nPanelLeftOpenIcon.displayName = \"PanelLeftOpenIcon\";\n\nexport { PanelLeftOpenIcon };\n"
  },
  {
    "path": "icons/panel-right-open.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PanelRightOpenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PanelRightOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { x: 0 },\n  animate: { x: [0, -1.5, 0] },\n};\n\nconst PanelRightOpenIcon = forwardRef<\n  PanelRightOpenIconHandle,\n  PanelRightOpenIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <path d=\"M15 3v18\" />\n        <motion.path\n          animate={controls}\n          d=\"m10 15-3-3 3-3\"\n          transition={DEFAULT_TRANSITION}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nPanelRightOpenIcon.displayName = \"PanelRightOpenIcon\";\n\nexport { PanelRightOpenIcon };\n"
  },
  {
    "path": "icons/party-popper.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PartyPopperIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PartyPopperIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINES_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    scale: 1,\n    translateX: 0,\n    translateY: 0,\n  },\n  animate: {\n    opacity: [0, 1],\n    scale: [0.3, 0.8, 1, 1.1, 1],\n    pathLength: [0, 0.5, 1],\n    translateX: [-5, 0],\n    translateY: [5, 0],\n    transition: {\n      duration: 0.7,\n      velocity: 0.3,\n    },\n  },\n};\n\nconst DOTS_VARIANTS: Variants = {\n  normal: { opacity: 1, scale: 1, translateX: 0, translateY: 0 },\n  animate: {\n    opacity: [0, 1],\n    translateX: [-5, 0],\n    translateY: [5, 0],\n    scale: [0.5, 0.8, 1, 1.1, 1],\n    transition: {\n      duration: 0.7,\n    },\n  },\n};\n\nconst POPPER_VARIANTS: Variants = {\n  normal: { translateX: 0, translateY: 0 },\n  animate: {\n    translateX: [-1.5, 0],\n    translateY: [1.5, 0],\n    transition: {\n      velocity: 0.3,\n    },\n  },\n};\n\nconst PartyPopperIcon = forwardRef<PartyPopperIconHandle, PartyPopperIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M5.8 11.3 2 22l10.7-3.79\"\n            variants={POPPER_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\"\n            variants={POPPER_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M4 3h.01\"\n            variants={DOTS_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M22 8h.01\"\n            variants={DOTS_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 2h.01\"\n            variants={DOTS_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M22 20h.01\"\n            variants={DOTS_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m14 10 1.21-1.06c0.16-0.84 0.9-1.44 1.76-1.44h0.38c0.88 0 1.55-0.77 1.45-1.63a2.9 2.9 0 0 1 1.96-3.12L22 2\"\n            variants={LINES_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M17 15h0.77c0.71 0 1.32-0.52 1.43-1.22c0.16-0.91 1.12-1.45 1.98-1.11L22 13\"\n            variants={LINES_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 7V6.23c0-0.71 0.52-1.33 1.22-1.43c0.91-0.16 1.45-1.12 1.11-1.98L11 2\"\n            variants={LINES_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nPartyPopperIcon.displayName = \"PartyPopperIcon\";\n\nexport { PartyPopperIcon };\n"
  },
  {
    "path": "icons/pause.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PauseIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PauseIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst BASE_RECT_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n};\n\nconst BASE_RECT_TRANSITION = {\n  transition: {\n    times: [0, 0.2, 0.5, 1],\n    duration: 0.5,\n    stiffness: 260,\n    damping: 20,\n  },\n};\n\nconst LEFT_RECT_VARIANTS: Variants = {\n  ...BASE_RECT_VARIANTS,\n  animate: {\n    y: [0, 2, 0, 0],\n    ...BASE_RECT_TRANSITION,\n  },\n};\n\nconst RIGHT_RECT_VARIANTS: Variants = {\n  ...BASE_RECT_VARIANTS,\n  animate: {\n    y: [0, 0, 2, 0],\n    ...BASE_RECT_TRANSITION,\n  },\n};\n\nconst PauseIcon = forwardRef<PauseIconHandle, PauseIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={controls}\n            height=\"16\"\n            rx=\"1\"\n            variants={LEFT_RECT_VARIANTS}\n            width=\"4\"\n            x=\"6\"\n            y=\"4\"\n          />\n          <motion.rect\n            animate={controls}\n            height=\"16\"\n            rx=\"1\"\n            variants={RIGHT_RECT_VARIANTS}\n            width=\"4\"\n            x=\"14\"\n            y=\"4\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nPauseIcon.displayName = \"PauseIcon\";\n\nexport { PauseIcon };\n"
  },
  {
    "path": "icons/pen-tool.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PenToolIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PenToolIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  normal: { rotate: 0, translateX: 0, translateY: 0 },\n  animate: {\n    rotate: [0, 0, 8, -3, 8, 0],\n    translateY: [0, 2, 0, -1, 0],\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 0, 1],\n    opacity: [0, 1],\n    pathOffset: [0, 1, 0],\n  },\n};\n\nconst PenToolIcon = forwardRef<PenToolIconHandle, PenToolIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 1,\n          }}\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z\" />\n          <path d=\"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18\" />\n          <motion.path\n            animate={controls}\n            d=\"m2.3 2.3 7.286 7.286\"\n            transition={{\n              duration: 0.8,\n            }}\n            variants={PATH_VARIANTS}\n          />\n          <circle cx=\"11\" cy=\"11\" r=\"2\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nPenToolIcon.displayName = \"PenToolIcon\";\n\nexport { PenToolIcon };\n"
  },
  {
    "path": "icons/philippine-peso.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PhilippinePesoIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PhilippinePesoIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PESO_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst PESO_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst PhilippinePesoIcon = forwardRef<\n  PhilippinePesoIconHandle,\n  PhilippinePesoIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M7 21V4a1 1 0 0 1 1-1h4a1 1 0 0 1 0 12H7\"\n          initial=\"normal\"\n          variants={PESO_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M20 7H4\"\n          initial=\"normal\"\n          variants={PESO_SECONDARY_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M20 11H4\"\n          initial=\"normal\"\n          variants={PESO_SECONDARY_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nPhilippinePesoIcon.displayName = \"PhilippinePesoIcon\";\n\nexport { PhilippinePesoIcon };\n"
  },
  {
    "path": "icons/pickaxe.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PickaxeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PickaxeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PICKAXE_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeOut\",\n    },\n  },\n  animate: {\n    rotate: [0, -20, 25, 0],\n    transition: {\n      duration: 0.8,\n      times: [0, 0.6, 0.8, 1],\n      ease: [\"easeInOut\", \"easeOut\", \"easeOut\"],\n    },\n  },\n};\n\nconst PickaxeIcon = forwardRef<PickaxeIconHandle, PickaxeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"0% 100%\", transformBox: \"fill-box\" }}\n          variants={PICKAXE_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m14 13-8.381 8.38a1 1 0 0 1-3.001-3L11 9.999\" />\n          <path d=\"M15.973 4.027A13 13 0 0 0 5.902 2.373c-1.398.342-1.092 2.158.277 2.601a19.9 19.9 0 0 1 5.822 3.024\" />\n          <path d=\"M16.001 11.999a19.9 19.9 0 0 1 3.024 5.824c.444 1.369 2.26 1.676 2.603.278A13 13 0 0 0 20 8.069\" />\n          <path d=\"M18.352 3.352a1.205 1.205 0 0 0-1.704 0l-5.296 5.296a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l5.296-5.296a1.205 1.205 0 0 0 0-1.704z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nPickaxeIcon.displayName = \"PickaxeIcon\";\n\nexport { PickaxeIcon };\n"
  },
  {
    "path": "icons/play.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PlayIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PlayIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    rotate: 0,\n  },\n  animate: {\n    x: [0, -1, 2, 0],\n    rotate: [0, -10, 0, 0],\n    transition: {\n      duration: 0.5,\n      times: [0, 0.2, 0.5, 1],\n      stiffness: 260,\n      damping: 20,\n    },\n  },\n};\n\nconst PlayIcon = forwardRef<PlayIconHandle, PlayIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.polygon\n            animate={controls}\n            points=\"6 3 20 12 6 21 6 3\"\n            variants={PATH_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nPlayIcon.displayName = \"PlayIcon\";\n\nexport { PlayIcon };\n"
  },
  {
    "path": "icons/plug-zap.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PlugZapIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PlugZapIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ZAP_VARIANT: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0.4, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst PlugZapIcon = forwardRef<PlugZapIconHandle, PlugZapIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\" />\n          <path d=\"m2 22 3-3\" />\n          <path d=\"M7.5 13.5 10 11\" />\n          <path d=\"M10.5 16.5 13 14\" />\n          <motion.path\n            animate={controls}\n            d=\"m18 3-4 4h6l-4 4\"\n            initial=\"normal\"\n            variants={ZAP_VARIANT}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nPlugZapIcon.displayName = \"PlugZapIcon\";\n\nexport { PlugZapIcon };\n"
  },
  {
    "path": "icons/plus.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PlusIcon = forwardRef<PlusIconHandle, PlusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 100, damping: 15 }}\n          variants={{\n            normal: {\n              rotate: 0,\n            },\n            animate: {\n              rotate: 180,\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M5 12h14\" />\n          <path d=\"M12 5v14\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nPlusIcon.displayName = \"PlusIcon\";\n\nexport { PlusIcon };\n"
  },
  {
    "path": "icons/pound-sterling.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface PoundSterlingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface PoundSterlingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst POUND_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst POUND_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst PoundSterlingIcon = forwardRef<\n  PoundSterlingIconHandle,\n  PoundSterlingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M18 7c0-5.333-8-5.333-8 0\"\n          initial=\"normal\"\n          variants={POUND_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M10 7v14\"\n          initial=\"normal\"\n          variants={POUND_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M18 21h-12\"\n          initial=\"normal\"\n          variants={POUND_SECONDARY_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M16 13h-10\"\n          initial=\"normal\"\n          variants={POUND_SECONDARY_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nPoundSterlingIcon.displayName = \"PoundSterlingIcon\";\n\nexport { PoundSterlingIcon };\n"
  },
  {
    "path": "icons/rabbit.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RabbitIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RabbitIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.6,\n  ease: [0.42, 0, 0.58, 1],\n};\n\nconst SPEED_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    rotate: [0, 5, -5, 3, -3, 0],\n    x: [0, 3, -3, 2, -2, 0],\n    y: [0, 1.5, -1.5, 1, -1, 0],\n    transition: TRANSITION,\n  },\n};\n\nconst RabbitIcon = forwardRef<RabbitIconHandle, RabbitIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SPEED_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3\" />\n          <path d=\"M13 16a3 3 0 0 1 2.24 5\" />\n          <path d=\"M18 12h.01\" />\n          <path d=\"M20 8.54V4a2 2 0 1 0-4 0v3\" />\n          <path d=\"M7.612 12.524a3 3 0 1 0-1.6 4.3\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nRabbitIcon.displayName = \"RabbitIcon\";\n\nexport { RabbitIcon };\n"
  },
  {
    "path": "icons/radio-tower.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RadioTowerIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RadioTowerIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: {\n      duration: 0.4,\n    },\n  },\n  fadeOut: {\n    opacity: 0,\n    transition: { duration: 0.3 },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      type: \"spring\",\n      stiffness: 300,\n      damping: 20,\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst RadioTowerIcon = forwardRef<RadioTowerIconHandle, RadioTowerIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M4.9 16.1C1 12.2 1 5.8 4.9 1.9\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <circle cx=\"12\" cy=\"9\" r=\"2\" />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M16.2 4.8c2 2 2.26 5.11.8 7.47\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M19.1 1.9a9.96 9.96 0 0 1 0 14.1\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <path d=\"M9.5 18h5\" />\n          <path d=\"m8 22 4-11 4 11\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nRadioTowerIcon.displayName = \"RadioTowerIcon\";\n\nexport { RadioTowerIcon };\n"
  },
  {
    "path": "icons/radio.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RadioIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RadioIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: {\n      duration: 0.4,\n    },\n  },\n  fadeOut: {\n    opacity: 0,\n    transition: { duration: 0.3 },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      type: \"spring\",\n      stiffness: 300,\n      damping: 20,\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst RadioIcon = forwardRef<RadioIconHandle, RadioIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M4.9 19.1C1 15.2 1 8.8 4.9 4.9\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <circle cx=\"12\" cy=\"12\" r=\"2\" />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M19.1 4.9C23 8.8 23 15.1 19.1 19\"\n            initial={{ opacity: 1 }}\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nRadioIcon.displayName = \"RadioIcon\";\n\nexport { RadioIcon };\n"
  },
  {
    "path": "icons/redo-dot.tsx",
    "content": "\"use client\";\n\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RedoDotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RedoDotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst RedoDotIcon = forwardRef<RedoDotIconHandle, RedoDotIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21 7v6h-6\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\n              animate: {\n                translateX: [0, -2.1, 0],\n                translateY: [0, -1.4, 0],\n                rotate: [0, -12, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: { pathLength: [1, 0.8, 1] },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"17\"\n            r=\"1\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { scale: 1 },\n              animate: { scale: [1, 1.2, 1] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nRedoDotIcon.displayName = \"RedoDotIcon\";\n\nexport { RedoDotIcon };\n"
  },
  {
    "path": "icons/redo.tsx",
    "content": "\"use client\";\n\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RedoIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RedoIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst RedoIcon = forwardRef<RedoIconHandle, RedoIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M21 7v6h-6\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\n              animate: {\n                translateX: [0, -2.1, 0],\n                translateY: [0, -1.4, 0],\n                rotate: [0, -12, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: { pathLength: [1, 0.8, 1] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nRedoIcon.displayName = \"RedoIcon\";\n\nexport { RedoIcon };\n"
  },
  {
    "path": "icons/refresh-ccw-dot.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RefreshCCWDotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RefreshCCWDotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RefreshCCWDotIcon = forwardRef<\n  RefreshCCWDotIconHandle,\n  RefreshCCWDotIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.g\n          animate={controls}\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: { rotate: \"0deg\" },\n            animate: { rotate: \"-50deg\" },\n          }}\n        >\n          <path d=\"M3 2v6h6\" />\n          <path d=\"M21 12A9 9 0 0 0 6 5.3L3 8\" />\n          <path d=\"M21 22v-6h-6\" />\n          <path d=\"M3 12a9 9 0 0 0 15 6.7l3-2.7\" />\n        </motion.g>\n        <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      </svg>\n    </div>\n  );\n});\n\nRefreshCCWDotIcon.displayName = \"RefreshCCWDotIcon\";\n\nexport { RefreshCCWDotIcon };\n"
  },
  {
    "path": "icons/refresh-ccw.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RefreshCCWIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RefreshCCWIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RefreshCCWIcon = forwardRef<RefreshCCWIconHandle, RefreshCCWIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseEnter?.(e);\n        else controls.start(\"animate\");\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseLeave?.(e);\n        else controls.start(\"normal\");\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n            variants={{\n              normal: { rotate: \"0deg\" },\n              animate: { rotate: \"-50deg\" },\n            }}\n          >\n            <path d=\"M3 2v6h6\" />\n            <path d=\"M21 12A9 9 0 0 0 6 5.3L3 8\" />\n            <path d=\"M21 22v-6h-6\" />\n            <path d=\"M3 12a9 9 0 0 0 15 6.7l3-2.7\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nRefreshCCWIcon.displayName = \"RefreshCCWIcon\";\n\nexport { RefreshCCWIcon };\n"
  },
  {
    "path": "icons/refresh-cw-off.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RefreshCWOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RefreshCWOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RefreshCWOffIcon = forwardRef<\n  RefreshCWOffIconHandle,\n  RefreshCWOffIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        transition={{ type: \"spring\", stiffness: 500, damping: 20 }}\n        variants={{\n          normal: { x: 0 },\n          animate: {\n            x: [-3, 3, -3, 3, 0],\n            transition: { duration: 0.4 },\n          },\n        }}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47\" />\n        <path d=\"M8 16H3v5\" />\n        <path d=\"M3 12C3 9.51 4 7.26 5.64 5.64\" />\n        <path d=\"m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64\" />\n        <path d=\"M21 12c0 1-.16 1.97-.47 2.87\" />\n        <path d=\"M21 3v5h-5\" />\n        <path d=\"M22 22 2 2\" />\n      </motion.svg>\n    </div>\n  );\n});\n\nRefreshCWOffIcon.displayName = \"RefreshCWOffIcon\";\n\nexport { RefreshCWOffIcon };\n"
  },
  {
    "path": "icons/refresh-cw.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RefreshCCWIconWIcon {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RefreshCCWIcoWIcon extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RefreshCWIcon = forwardRef<RefreshCCWIconWIcon, RefreshCCWIcoWIcon>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseEnter?.(e);\n        else controls.start(\"animate\");\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseLeave?.(e);\n        else controls.start(\"normal\");\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: { rotate: \"0deg\" },\n            animate: { rotate: \"50deg\" },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n          <path d=\"M21 3v5h-5\" />\n          <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n          <path d=\"M8 16H3v5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nRefreshCWIcon.displayName = \"RefreshCWIcon\";\n\nexport { RefreshCWIcon };\n"
  },
  {
    "path": "icons/rocket.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RocketIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RocketIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    x: [0, 0, -3, 2, -2, 1, -1, 0],\n    y: [0, -3, 0, -2, -3, -1, -2, 0],\n    transition: {\n      duration: 6,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"reverse\",\n      times: [0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1],\n    },\n  },\n};\n\nconst FIRE_VARIANTS: Variants = {\n  normal: {\n    d: \"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n  },\n  animate: {\n    d: [\n      \"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n      \"M4.5 16.5c-1.5 1.26-3 5.5-3 5.5s4.74-1 6-2.5c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n      \"M4.5 16.5c-1.5 1.26-2.2 4.8-2.2 4.8s3.94-0.3 5.2-1.8c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n      \"M4.5 16.5c-1.5 1.26-2.8 5.2-2.8 5.2s4.54-0.7 5.8-2.2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n      \"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\n    ],\n    transition: {\n      duration: 2,\n      ease: [0.4, 0, 0.2, 1],\n      repeat: Number.POSITIVE_INFINITY,\n      times: [0, 0.2, 0.5, 0.8, 1],\n    },\n  },\n};\n\nconst RocketIcon = forwardRef<RocketIconHandle, RocketIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\"\n            variants={FIRE_VARIANTS}\n          />\n          <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n          <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n          <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nRocketIcon.displayName = \"RocketIcon\";\n\nexport { RocketIcon };\n"
  },
  {
    "path": "icons/rocking-chair.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RockingChairIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RockingChairIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 100,\n  damping: 12,\n  mass: 0.4,\n};\n\nconst ROCKING_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [-5, 5, -5],\n    transition: {\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\" as const,\n      duration: 1.2,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst RockingChairIcon = forwardRef<\n  RockingChairIconHandle,\n  RockingChairIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        style={{ originX: \"10%\", originY: \"90%\" }}\n        variants={ROCKING_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.polyline\n          animate={controls}\n          points=\"3.5 2 6.5 12.5 18 12.5\"\n          transition={DEFAULT_TRANSITION}\n        />\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          x1=\"9.5\"\n          x2=\"5.5\"\n          y1=\"12.5\"\n          y2=\"20\"\n        />\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          x1=\"15\"\n          x2=\"18.5\"\n          y1=\"12.5\"\n          y2=\"20\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"M2.75 18a13 13 0 0 0 18.5 0\"\n          transition={DEFAULT_TRANSITION}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nRockingChairIcon.displayName = \"RockingChairIcon\";\n\nexport { RockingChairIcon };\n"
  },
  {
    "path": "icons/roller-coaster.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RollerCoasterIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RollerCoasterIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.1 * custom,\n      opacity: { delay: 0.1 * custom },\n    },\n  }),\n};\n\nconst RollerCoasterIcon = forwardRef<\n  RollerCoasterIconHandle,\n  RollerCoasterIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path animate={controls} d=\"M6 19V5\" variants={VARIANTS} />\n        <motion.path animate={controls} d=\"M10 19V6.8\" variants={VARIANTS} />\n        <motion.path animate={controls} d=\"M14 19v-7.8\" variants={VARIANTS} />\n        <motion.path animate={controls} d=\"M18 5v4\" variants={VARIANTS} />\n        <motion.path animate={controls} d=\"M18 19v-6\" variants={VARIANTS} />\n        <motion.path animate={controls} d=\"M22 19V9\" variants={VARIANTS} />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65\"\n          variants={VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nRollerCoasterIcon.displayName = \"RollerCoasterIcon\";\n\nexport { RollerCoasterIcon };\n"
  },
  {
    "path": "icons/rotate-ccw.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RotateCCWIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RotateCCWIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RotateCCWIcon = forwardRef<RotateCCWIconHandle, RotateCCWIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseEnter?.(e);\n        else controls.start(\"animate\");\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseLeave?.(e);\n        else controls.start(\"normal\");\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: { rotate: \"0deg\" },\n            animate: { rotate: \"-50deg\" },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n          <path d=\"M3 3v5h5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nRotateCCWIcon.displayName = \"RotateCCWIcon\";\n\nexport { RotateCCWIcon };\n"
  },
  {
    "path": "icons/rotate-cw.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RotateCWIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RotateCWIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RotateCWIcon = forwardRef<RotateCWIconHandle, RotateCWIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseEnter?.(e);\n        else controls.start(\"animate\");\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseLeave?.(e);\n        else controls.start(\"normal\");\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: { rotate: \"0deg\" },\n            animate: { rotate: \"50deg\" },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\" />\n          <path d=\"M21 3v5h-5\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nRotateCWIcon.displayName = \"RotateCWIcon\";\n\nexport { RotateCWIcon };\n"
  },
  {
    "path": "icons/route.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RouteIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RouteIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CIRCLE_TRANSITION: Transition = {\n  duration: 0.3,\n  delay: 0.1,\n  opacity: { delay: 0.15 },\n};\n\nconst CIRCLE_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n  },\n};\n\nconst RouteIcon = forwardRef<RouteIconHandle, RouteIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"6\"\n            cy=\"19\"\n            r=\"3\"\n            transition={CIRCLE_TRANSITION}\n            variants={CIRCLE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\"\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                opacity: 1,\n                pathOffset: 0,\n              },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n                pathOffset: [1, 0],\n              },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"18\"\n            cy=\"5\"\n            r=\"3\"\n            transition={CIRCLE_TRANSITION}\n            variants={CIRCLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nRouteIcon.displayName = \"RouteIcon\";\n\nexport { RouteIcon };\n"
  },
  {
    "path": "icons/russian-ruble.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface RussianRubleIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface RussianRubleIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RUSSIAN_RUBLE_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst RUSSIAN_RUBLE_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst RussianRubleIcon = forwardRef<\n  RussianRubleIconHandle,\n  RussianRubleIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M6 11h8a4 4 0 0 0 0-8H9v18\"\n          initial=\"normal\"\n          variants={RUSSIAN_RUBLE_MAIN_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M6 15h8\"\n          initial=\"normal\"\n          variants={RUSSIAN_RUBLE_SECONDARY_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nRussianRubleIcon.displayName = \"RussianRubleIcon\";\n\nexport { RussianRubleIcon };\n"
  },
  {
    "path": "icons/saudi-riyal.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SaudiRiyalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SaudiRiyalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SAUDI_RIYAL_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst SaudiRiyalIcon = forwardRef<SaudiRiyalIconHandle, SaudiRiyalIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"m20 19.5-5.5 1.2\"\n            initial=\"normal\"\n            variants={SAUDI_RIYAL_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M14.5 4v11.22a1 1 0 0 0 1.242.97L20 15.2\"\n            initial=\"normal\"\n            variants={SAUDI_RIYAL_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m2.978 19.351 5.549-1.363A2 2 0 0 0 10 16V2\"\n            initial=\"normal\"\n            variants={SAUDI_RIYAL_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M20 10 4 13.5\"\n            initial=\"normal\"\n            variants={SAUDI_RIYAL_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSaudiRiyalIcon.displayName = \"SaudiRiyalIcon\";\n\nexport { SaudiRiyalIcon };\n"
  },
  {
    "path": "icons/scan-face.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ScanFaceIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ScanFaceIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ScanFaceIcon = forwardRef<ScanFaceIconHandle, ScanFaceIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: async () => {\n          await controls.start(\"hidden\");\n          await controls.start(\"visible\");\n        },\n        stopAnimation: () => controls.start(\"visible\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"hidden\");\n          await controls.start(\"visible\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"visible\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      visible: { scale: 1 },\n      hidden: {\n        scale: 0.9,\n        transition: { type: \"spring\", stiffness: 200, damping: 20 },\n      },\n    };\n\n    const cornerVariants: Variants = {\n      visible: { scale: 1, rotate: 0, opacity: 1 },\n      hidden: {\n        scale: 1.2,\n        rotate: 45,\n        opacity: 0,\n        transition: { type: \"spring\", stiffness: 200, damping: 20 },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      visible: { scale: 1, opacity: 1 },\n      hidden: {\n        scale: 0.8,\n        opacity: 0,\n        transition: { duration: 0.3, delay: 0.1 },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3 7V5a2 2 0 0 1 2-2h2\"\n            initial=\"visible\"\n            variants={cornerVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M17 3h2a2 2 0 0 1 2 2v2\"\n            initial=\"visible\"\n            variants={cornerVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 17v2a2 2 0 0 1-2 2h-2\"\n            initial=\"visible\"\n            variants={cornerVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M7 21H5a2 2 0 0 1-2-2v-2\"\n            initial=\"visible\"\n            variants={cornerVariants}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M8 14s1.5 2 4 2 4-2 4-2\"\n            initial=\"visible\"\n            variants={mouthVariants}\n          />\n          <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\n          <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nScanFaceIcon.displayName = \"ScanFaceIcon\";\n\nexport { ScanFaceIcon };\n"
  },
  {
    "path": "icons/scan-text.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ScanTextIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ScanTextIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FRAME_VARIANTS: Variants = {\n  visible: { opacity: 1 },\n  hidden: { opacity: 1 },\n};\n\nconst LINE_VARIANTS: Variants = {\n  visible: { pathLength: 1, opacity: 1 },\n  hidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ScanTextIcon = forwardRef<ScanTextIconHandle, ScanTextIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start((i) => ({\n            pathLength: 0,\n            opacity: 0,\n            transition: { delay: i * 0.1, duration: 0.3 },\n          }));\n          await controls.start((i) => ({\n            pathLength: 1,\n            opacity: 1,\n            transition: { delay: i * 0.1, duration: 0.3 },\n          }));\n        },\n        stopAnimation: () => controls.start(\"visible\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start((i) => ({\n            pathLength: 0,\n            opacity: 0,\n            transition: { delay: i * 0.1, duration: 0.3 },\n          }));\n          await controls.start((i) => ({\n            pathLength: 1,\n            opacity: 1,\n            transition: { delay: i * 0.1, duration: 0.3 },\n          }));\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"visible\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path d=\"M3 7V5a2 2 0 0 1 2-2h2\" variants={FRAME_VARIANTS} />\n          <motion.path d=\"M17 3h2a2 2 0 0 1 2 2v2\" variants={FRAME_VARIANTS} />\n          <motion.path\n            d=\"M21 17v2a2 2 0 0 1-2 2h-2\"\n            variants={FRAME_VARIANTS}\n          />\n          <motion.path d=\"M7 21H5a2 2 0 0 1-2-2v-2\" variants={FRAME_VARIANTS} />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M7 8h8\"\n            initial=\"visible\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M7 12h10\"\n            initial=\"visible\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M7 16h6\"\n            initial=\"visible\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nScanTextIcon.displayName = \"ScanTextIcon\";\n\nexport { ScanTextIcon };\n"
  },
  {
    "path": "icons/search.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SearchIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SearchIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SearchIcon = forwardRef<SearchIconHandle, SearchIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{\n            duration: 1,\n            bounce: 0.3,\n          }}\n          variants={{\n            normal: { x: 0, y: 0 },\n            animate: {\n              x: [0, 0, -3, 0],\n              y: [0, -4, 0, 0],\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"11\" cy=\"11\" r=\"8\" />\n          <path d=\"m21 21-4.3-4.3\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSearchIcon.displayName = \"SearchIcon\";\n\nexport { SearchIcon };\n"
  },
  {
    "path": "icons/send.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface SendIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SendIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SendIcon = forwardRef<SendIconHandle, SendIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          className=\"overflow-visible\"\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            transition={{ duration: 0.5 }}\n            variants={{\n              normal: { x: 0, y: 0, scale: 1 },\n              animate: {\n                x: 3,\n                y: -3,\n                scale: 0.8,\n              },\n            }}\n          >\n            <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" />\n            <path d=\"m21.854 2.147-10.94 10.939\" />\n          </motion.g>\n          <motion.path\n            animate={controls}\n            d=\"M -3 28 C -0.5 26.8 1.6 24.6 3.3 22 C 4.8 19.7 5.2 17.6 4.2 16.1 C 3.2 14.7 1.4 14.5 0.3 15.8 C -0.9 17.2 -0.6 19.4 1.2 20.4 C 3.4 21.5 6.4 19.4 9 15.8\"\n            fill=\"none\"\n            initial={{ opacity: 0, pathLength: 0 }}\n            stroke=\"currentColor\"\n            strokeDasharray=\"2 2\"\n            strokeWidth=\"1\"\n            transition={{ duration: 0.55, delay: 0.1 }}\n            variants={{\n              normal: {\n                pathLength: 0,\n                opacity: 0,\n                translateX: -3,\n                translateY: 3,\n                transition: { duration: 0.3 },\n              },\n              animate: {\n                pathLength: 1,\n                opacity: 1,\n                translateX: 0,\n                translateY: 0,\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSendIcon.displayName = \"SendIcon\";\n\nexport { SendIcon };\n"
  },
  {
    "path": "icons/settings.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SettingsIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SettingsIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SettingsIcon = forwardRef<SettingsIconHandle, SettingsIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 50, damping: 10 }}\n          variants={{\n            normal: {\n              rotate: 0,\n            },\n            animate: {\n              rotate: 180,\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" />\n          <circle cx=\"12\" cy=\"12\" r=\"3\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSettingsIcon.displayName = \"SettingsIcon\";\n\nexport { SettingsIcon };\n"
  },
  {
    "path": "icons/shield-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ShieldCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ShieldCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    scale: 1,\n    transition: {\n      duration: 0.3,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    scale: [0.5, 1],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ShieldCheckIcon = forwardRef<ShieldCheckIconHandle, ShieldCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\n          <motion.path\n            animate={controls}\n            d=\"m9 12 2 2 4-4\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nShieldCheckIcon.displayName = \"ShieldCheckIcon\";\n\nexport { ShieldCheckIcon };\n"
  },
  {
    "path": "icons/ship.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ShipIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ShipIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15,\n      opacity: { delay: 0.1 },\n    },\n  },\n};\n\nconst G_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: [-3, 3, -3],\n    transition: {\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"mirror\" as const,\n      duration: 1.2,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst ShipIcon = forwardRef<ShipIconHandle, ShipIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1 .6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.g animate={controls} variants={G_VARIANTS}>\n            <path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-9-4-9 4c0 2.9.94 5.34 2.81 7.76\" />\n            <path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\" />\n            <path d=\"M12 10v4\" />\n            <path d=\"M12 2v3\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nShipIcon.displayName = \"ShipIcon\";\n\nexport { ShipIcon };\n"
  },
  {
    "path": "icons/shower-head.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ShowerHeadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ShowerHeadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DROP_VARIANTS: Variants = {\n  animate: {\n    transition: {\n      staggerChildren: 0.2,\n    },\n  },\n};\n\nconst DROP_CHILD_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [1, 0.2, 1],\n    transition: {\n      duration: 1,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst DROP_PATH = [\n  { id: \"drop1\", d: \"M14 17v.01\" },\n  { id: \"drop2\", d: \"M10 16v.01\" },\n  { id: \"drop3\", d: \"M13 13v.01\" },\n  { id: \"drop4\", d: \"M16 10v.01\" },\n  { id: \"drop5\", d: \"M11 20v.01\" },\n  { id: \"drop6\", d: \"M17 14v.01\" },\n  { id: \"drop7\", d: \"M20 11v.01\" },\n];\n\nconst ShowerHeadIcon = forwardRef<ShowerHeadIconHandle, ShowerHeadIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m4 4 2.5 2.5\" />\n          <path d=\"M13.5 6.5a4.95 4.95 0 0 0-7 7\" />\n          <path d=\"M15 5 5 15\" />\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={DROP_VARIANTS}\n          >\n            {DROP_PATH.map((path) => (\n              <motion.path\n                d={path.d}\n                key={path.id}\n                variants={DROP_CHILD_VARIANTS}\n              />\n            ))}\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nShowerHeadIcon.displayName = \"ShowerHeadIcon\";\n\nexport { ShowerHeadIcon };\n"
  },
  {
    "path": "icons/shrink.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ShrinkIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ShrinkIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 250,\n  damping: 25,\n};\n\nconst ShrinkIcon = forwardRef<ShrinkIconHandle, ShrinkIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M9 4.2V9m0 0H4.2M9 9 3 3\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"1px\", translateY: \"1px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 4.2V9m0 0h4.8M15 9l6-6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-1px\", translateY: \"1px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M9 19.8V15m0 0H4.2M9 15l-6 6\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"1px\", translateY: \"-1px\" },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m15 15 6 6m-6-6v4.8m0-4.8h4.8\"\n            transition={DEFAULT_TRANSITION}\n            variants={{\n              normal: { translateX: \"0%\", translateY: \"0%\" },\n              animate: { translateX: \"-1px\", translateY: \"-1px\" },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nShrinkIcon.displayName = \"ShrinkIcon\";\n\nexport { ShrinkIcon };\n"
  },
  {
    "path": "icons/sliders-horizontal.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SlidersHorizontalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SlidersHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  type: \"spring\",\n  stiffness: 100,\n  damping: 12,\n  mass: 0.4,\n};\n\nconst SlidersHorizontalIcon = forwardRef<\n  SlidersHorizontalIconHandle,\n  SlidersHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.line\n          animate={controls}\n          initial={false}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x2: 14,\n            },\n            animate: {\n              x2: 10,\n            },\n          }}\n          x1=\"21\"\n          x2=\"14\"\n          y1=\"4\"\n          y2=\"4\"\n        />\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 10,\n            },\n            animate: {\n              x1: 5,\n            },\n          }}\n          x1=\"10\"\n          x2=\"3\"\n          y1=\"4\"\n          y2=\"4\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x2: 12,\n            },\n            animate: {\n              x2: 18,\n            },\n          }}\n          x1=\"21\"\n          x2=\"12\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 8,\n            },\n            animate: {\n              x1: 13,\n            },\n          }}\n          x1=\"8\"\n          x2=\"3\"\n          y1=\"12\"\n          y2=\"12\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x2: 12,\n            },\n            animate: {\n              x2: 4,\n            },\n          }}\n          x1=\"3\"\n          x2=\"12\"\n          y1=\"20\"\n          y2=\"20\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 16,\n            },\n            animate: {\n              x1: 8,\n            },\n          }}\n          x1=\"16\"\n          x2=\"21\"\n          y1=\"20\"\n          y2=\"20\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 14,\n              x2: 14,\n            },\n            animate: {\n              x1: 9,\n              x2: 9,\n            },\n          }}\n          x1=\"14\"\n          x2=\"14\"\n          y1=\"2\"\n          y2=\"6\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 8,\n              x2: 8,\n            },\n            animate: {\n              x1: 14,\n              x2: 14,\n            },\n          }}\n          x1=\"8\"\n          x2=\"8\"\n          y1=\"10\"\n          y2=\"14\"\n        />\n\n        <motion.line\n          animate={controls}\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: {\n              x1: 16,\n              x2: 16,\n            },\n            animate: {\n              x1: 8,\n              x2: 8,\n            },\n          }}\n          x1=\"16\"\n          x2=\"16\"\n          y1=\"18\"\n          y2=\"22\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nSlidersHorizontalIcon.displayName = \"SlidersHorizontalIcon\";\n\nexport { SlidersHorizontalIcon };\n"
  },
  {
    "path": "icons/smartphone-charging.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SmartphoneChargingIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SmartphoneChargingIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SmartphoneChargingIcon = forwardRef<\n  SmartphoneChargingIconHandle,\n  SmartphoneChargingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"20\" rx=\"2\" ry=\"2\" width=\"14\" x=\"5\" y=\"2\" />\n        <motion.path\n          animate={controls}\n          d=\"M12.667 8 10 12h4l-2.667 4\"\n          initial=\"normal\"\n          variants={{\n            normal: { opacity: 1 },\n            animate: {\n              opacity: [1, 0.4, 1],\n              transition: {\n                duration: 1,\n                repeat: Number.POSITIVE_INFINITY,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSmartphoneChargingIcon.displayName = \"SmartphoneChargingIcon\";\n\nexport { SmartphoneChargingIcon };\n"
  },
  {
    "path": "icons/smartphone-nfc.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SmartphoneNfcIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SmartphoneNfcIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    transition: {\n      duration: 0.4,\n    },\n  },\n  fadeOut: {\n    opacity: 0,\n    transition: { duration: 0.3 },\n  },\n  fadeIn: (i: number) => ({\n    opacity: 1,\n    transition: {\n      type: \"spring\",\n      stiffness: 300,\n      damping: 20,\n      delay: i * 0.1,\n    },\n  }),\n};\n\nconst SmartphoneNfcIcon = forwardRef<\n  SmartphoneNfcIconHandle,\n  SmartphoneNfcIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: async () => {\n        await controls.start(\"fadeOut\");\n        controls.start(\"fadeIn\");\n      },\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    async (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        await controls.start(\"fadeOut\");\n        controls.start(\"fadeIn\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"12\" rx=\"1\" width=\"7\" x=\"2\" y=\"6\" />\n        <motion.path\n          animate={controls}\n          custom={0}\n          d=\"M13 8.32a7.43 7.43 0 0 1 0 7.36\"\n          initial={{ opacity: 1 }}\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={1}\n          d=\"M16.46 6.21a11.76 11.76 0 0 1 0 11.58\"\n          initial={{ opacity: 1 }}\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={2}\n          d=\"M19.91 4.1a15.91 15.91 0 0 1 .01 15.8\"\n          initial={{ opacity: 1 }}\n          variants={PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSmartphoneNfcIcon.displayName = \"SmartphoneNfcIcon\";\n\nexport { SmartphoneNfcIcon };\n"
  },
  {
    "path": "icons/smile-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SmilePlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SmilePlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SmilePlusIcon = forwardRef<SmilePlusIconHandle, SmilePlusIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseEnter?.(e);\n        else controls.start(\"animate\");\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) onMouseLeave?.(e);\n        else controls.start(\"normal\");\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: { scale: 1 },\n      animate: {\n        scale: 1.1,\n        transition: { type: \"spring\", stiffness: 200, damping: 20 },\n      },\n    };\n\n    const plusVariants: Variants = {\n      normal: { rotate: 0, scale: 1 },\n      animate: {\n        rotate: 90,\n        scale: 1.2,\n        transition: { type: \"spring\", stiffness: 200, damping: 20, delay: 0.1 },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M22 11v1a10 10 0 1 1-9-10\" />\n          <path d=\"M8 14s1.5 2 4 2 4-2 4-2\" />\n          <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\n          <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\n          <motion.path animate={controls} d=\"M16 5h6\" variants={plusVariants} />\n          <motion.path animate={controls} d=\"M19 2v6\" variants={plusVariants} />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSmilePlusIcon.displayName = \"SmilePlusIcon\";\n\nexport { SmilePlusIcon };\n"
  },
  {
    "path": "icons/smile.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SmileIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SmileIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SmileIcon = forwardRef<SmileIconHandle, SmileIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    const faceVariants: Variants = {\n      normal: {\n        scale: 1,\n        rotate: 0,\n        strokeWidth: 2,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.15, 1.05, 1.1],\n        rotate: [0, -3, 3, 0],\n        strokeWidth: [2, 2.5, 2.5, 2.5],\n        transition: {\n          duration: 0.8,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    const mouthVariants: Variants = {\n      normal: {\n        d: \"M8 14s1.5 2 4 2 4-2 4-2\",\n        pathLength: 1,\n        pathOffset: 0,\n        strokeWidth: 2,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        d: \"M7 13.5s2.5 3.5 5 3.5 5-3.5 5-3.5\",\n        pathLength: [0.3, 1, 1],\n        pathOffset: [0, 0, 0],\n        strokeWidth: 2.5,\n        transition: {\n          d: { duration: 0.4, ease: \"easeOut\" },\n          pathLength: {\n            duration: 0.5,\n            times: [0, 0.5, 1],\n            ease: \"easeInOut\",\n          },\n          delay: 0.1,\n        },\n      },\n    };\n\n    const eyeVariants: Variants = {\n      normal: {\n        scale: 1,\n        opacity: 1,\n        transition: { duration: 0.3, ease: \"easeOut\" },\n      },\n      animate: {\n        scale: [1, 1.5, 0.8, 1.2],\n        opacity: [1, 1, 1, 1],\n        transition: {\n          duration: 0.5,\n          times: [0, 0.3, 0.6, 1],\n          ease: \"easeInOut\",\n        },\n      },\n    };\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={faceVariants}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle cx=\"12\" cy=\"12\" r=\"10\" />\n          <motion.path\n            animate={controls}\n            d=\"M8 14s1.5 2 4 2 4-2 4-2\"\n            initial=\"normal\"\n            variants={mouthVariants}\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={eyeVariants}\n            x1=\"9\"\n            x2=\"9.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={eyeVariants}\n            x1=\"15\"\n            x2=\"15.01\"\n            y1=\"9\"\n            y2=\"9\"\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSmileIcon.displayName = \"SmileIcon\";\n\nexport { SmileIcon };\n"
  },
  {
    "path": "icons/snowflake.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, -5, 5, -5, 5, 0],\n    transition: {\n      duration: 0.4,\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\n    },\n  },\n};\n\nexport interface SnowflakeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SnowflakeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SnowflakeIcon = forwardRef<SnowflakeIconHandle, SnowflakeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"center\" }}\n          variants={PATH_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m10 20-1.25-2.5L6 18\" />\n          <path d=\"M10 4 8.75 6.5 6 6\" />\n          <path d=\"m14 20 1.25-2.5L18 18\" />\n          <path d=\"m14 4 1.25 2.5L18 6\" />\n          <path d=\"m17 21-3-6h-4\" />\n          <path d=\"m17 3-3 6 1.5 3\" />\n          <path d=\"M2 12h6.5L10 9\" />\n          <path d=\"m20 10-1.5 2 1.5 2\" />\n          <path d=\"M22 12h-6.5L14 15\" />\n          <path d=\"m4 10 1.5 2L4 14\" />\n          <path d=\"m7 21 3-6-1.5-3\" />\n          <path d=\"m7 3 3 6h4\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSnowflakeIcon.displayName = \"SnowflakeIcon\";\n\nexport { SnowflakeIcon };\n"
  },
  {
    "path": "icons/sparkles.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SparklesIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SparklesIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SPARKLE_VARIANTS: Variants = {\n  initial: {\n    y: 0,\n    fill: \"none\",\n  },\n  hover: {\n    y: [0, -1, 0, 0],\n    fill: \"currentColor\",\n    transition: {\n      duration: 1,\n      bounce: 0.3,\n    },\n  },\n};\n\nconst STAR_VARIANTS: Variants = {\n  initial: {\n    opacity: 1,\n    x: 0,\n    y: 0,\n  },\n  blink: () => ({\n    opacity: [0, 1, 0, 0, 0, 0, 1],\n    transition: {\n      duration: 2,\n      type: \"spring\",\n      stiffness: 70,\n      damping: 10,\n      mass: 0.4,\n    },\n  }),\n};\n\nconst SparklesIcon = forwardRef<SparklesIconHandle, SparklesIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const starControls = useAnimation();\n    const sparkleControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          sparkleControls.start(\"hover\");\n          starControls.start(\"blink\", { delay: 1 });\n        },\n        stopAnimation: () => {\n          sparkleControls.start(\"initial\");\n          starControls.start(\"initial\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          sparkleControls.start(\"hover\");\n          starControls.start(\"blink\", { delay: 1 });\n        }\n      },\n      [onMouseEnter, sparkleControls, starControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          sparkleControls.start(\"initial\");\n          starControls.start(\"initial\");\n        }\n      },\n      [sparkleControls, starControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={sparkleControls}\n            d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\"\n            variants={SPARKLE_VARIANTS}\n          />\n          <motion.path\n            animate={starControls}\n            d=\"M20 3v4\"\n            variants={STAR_VARIANTS}\n          />\n          <motion.path\n            animate={starControls}\n            d=\"M22 5h-4\"\n            variants={STAR_VARIANTS}\n          />\n          <motion.path\n            animate={starControls}\n            d=\"M4 17v2\"\n            variants={STAR_VARIANTS}\n          />\n          <motion.path\n            animate={starControls}\n            d=\"M5 18H3\"\n            variants={STAR_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSparklesIcon.displayName = \"SparklesIcon\";\n\nexport { SparklesIcon };\n"
  },
  {
    "path": "icons/square-activity.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ActivityIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst SQUARE_VARIANTS: Variants = {\n  normal: {\n    transition: {\n      duration: 0.4,\n    },\n  },\n  animate: {\n    transition: {\n      duration: 0.6,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst SquareActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={controls}\n            height=\"18\"\n            initial=\"normal\"\n            rx=\"2\"\n            variants={SQUARE_VARIANTS}\n            width=\"18\"\n            x=\"3\"\n            y=\"3\"\n          />\n          <motion.path\n            animate={controls}\n            d=\"M17 12h-2l-2 5-2-10-2 5H7\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSquareActivityIcon.displayName = \"SquareActivityIcon\";\n\nexport { SquareActivityIcon };\n"
  },
  {
    "path": "icons/square-arrow-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareArrowDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SQUARE_VARIANTS: Variants = {\n  normal: { transition: { duration: 0.4 } },\n  animate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m8 12 4 4 4-4\", translateY: 0, opacity: 1 },\n  animate: {\n    d: \"m8 12 4 4 4-4\",\n    translateY: [0, -3, 0],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M12 8v8\", opacity: 1 },\n  animate: {\n    d: [\"M12 8v8\", \"M12 8v5\", \"M12 8v8\"],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SquareArrowDownIcon = forwardRef<\n  SquareArrowDownIconHandle,\n  SquareArrowDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"18\"\n          initial=\"normal\"\n          rx=\"2\"\n          variants={SQUARE_VARIANTS}\n          width=\"18\"\n          x=\"3\"\n          y=\"3\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"m8 12 4 4 4-4\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M12 8v8\"\n          initial=\"normal\"\n          variants={SECOND_PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareArrowDownIcon.displayName = \"SquareArrowDownIcon\";\n\nexport { SquareArrowDownIcon };\n"
  },
  {
    "path": "icons/square-arrow-left.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareArrowLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SQUARE_VARIANTS: Variants = {\n  normal: { transition: { duration: 0.4 } },\n  animate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m12 8-4 4 4 4\", translateX: 0, opacity: 1 },\n  animate: {\n    d: \"m12 8-4 4 4 4\",\n    translateX: [0, 3, 0],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M16 12H8\", opacity: 1 },\n  animate: {\n    d: [\"M16 12H8\", \"M16 12H13\", \"M16 12H8\"],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SquareArrowLeftIcon = forwardRef<\n  SquareArrowLeftIconHandle,\n  SquareArrowLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"18\"\n          initial=\"normal\"\n          rx=\"2\"\n          variants={SQUARE_VARIANTS}\n          width=\"18\"\n          x=\"3\"\n          y=\"3\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"m12 8-4 4 4 4\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M16 12H8\"\n          initial=\"normal\"\n          variants={SECOND_PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareArrowLeftIcon.displayName = \"SquareArrowLeftIcon\";\n\nexport { SquareArrowLeftIcon };\n"
  },
  {
    "path": "icons/square-arrow-right.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareArrowRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SQUARE_VARIANTS: Variants = {\n  normal: { transition: { duration: 0.4 } },\n  animate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"M8 12h8\", opacity: 1 },\n  animate: {\n    d: [\"M8 12h8\", \"M8 12h5\", \"M8 12h8\"],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"m12 8 4 4-4 4\", translateX: 0, opacity: 1 },\n  animate: {\n    d: \"m12 8 4 4-4 4\",\n    translateX: [0, -3, 0],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SquareArrowRightIcon = forwardRef<\n  SquareArrowRightIconHandle,\n  SquareArrowRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"18\"\n          initial=\"normal\"\n          rx=\"2\"\n          variants={SQUARE_VARIANTS}\n          width=\"18\"\n          x=\"3\"\n          y=\"3\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"M8 12h8\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m12 8 4 4-4 4\"\n          initial=\"normal\"\n          variants={SECOND_PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareArrowRightIcon.displayName = \"SquareArrowRightIcon\";\n\nexport { SquareArrowRightIcon };\n"
  },
  {
    "path": "icons/square-arrow-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareArrowUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SQUARE_VARIANTS: Variants = {\n  normal: { transition: { duration: 0.4 } },\n  animate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { d: \"m16 12-4-4-4 4\", translateY: 0, opacity: 1 },\n  animate: {\n    d: \"m16 12-4-4-4 4\",\n    translateY: [0, 3, 0],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n  normal: { d: \"M12 16V8\", opacity: 1 },\n  animate: {\n    d: [\"M12 16V8\", \"M12 16V13\", \"M12 16V8\"],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst SquareArrowUpIcon = forwardRef<\n  SquareArrowUpIconHandle,\n  SquareArrowUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseEnter?.(e);\n      else controls.start(\"animate\");\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) onMouseLeave?.(e);\n      else controls.start(\"normal\");\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.rect\n          animate={controls}\n          height=\"18\"\n          initial=\"normal\"\n          rx=\"2\"\n          variants={SQUARE_VARIANTS}\n          width=\"18\"\n          x=\"3\"\n          y=\"3\"\n        />\n        <motion.path\n          animate={controls}\n          d=\"m16 12-4-4-4 4\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M12 16V8\"\n          initial=\"normal\"\n          variants={SECOND_PATH_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareArrowUpIcon.displayName = \"SquareArrowUpIcon\";\n\nexport { SquareArrowUpIcon };\n"
  },
  {
    "path": "icons/square-chevron-down.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareChevronDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst SquareChevronDownIcon = forwardRef<\n  SquareChevronDownIconHandle,\n  SquareChevronDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <motion.path\n          animate={controls}\n          d=\"m16 10-4 4-4-4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { y: 0 },\n            animate: { y: [0, 2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareChevronDownIcon.displayName = \"SquareChevronDownIcon\";\n\nexport { SquareChevronDownIcon };\n"
  },
  {
    "path": "icons/square-chevron-left.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareChevronLeftIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst SquareChevronLeftIcon = forwardRef<\n  SquareChevronLeftIconHandle,\n  SquareChevronLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <motion.path\n          animate={controls}\n          d=\"m14 16-4-4 4-4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { x: 0 },\n            animate: { x: [0, -2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareChevronLeftIcon.displayName = \"SquareChevronLeftIcon\";\n\nexport { SquareChevronLeftIcon };\n"
  },
  {
    "path": "icons/square-chevron-right.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareChevronRightIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst SquareChevronRightIcon = forwardRef<\n  SquareChevronRightIconHandle,\n  SquareChevronRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <motion.path\n          animate={controls}\n          d=\"m10 8 4 4-4 4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { x: 0 },\n            animate: { x: [0, 2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareChevronRightIcon.displayName = \"SquareChevronRightIcon\";\n\nexport { SquareChevronRightIcon };\n"
  },
  {
    "path": "icons/square-chevron-up.tsx",
    "content": "\"use client\";\n\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareChevronUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DEFAULT_TRANSITION: Transition = {\n  times: [0, 0.4, 1],\n  duration: 0.5,\n};\n\nconst SquareChevronUpIcon = forwardRef<\n  SquareChevronUpIconHandle,\n  SquareChevronUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <rect height=\"18\" rx=\"2\" width=\"18\" x=\"3\" y=\"3\" />\n        <motion.path\n          animate={controls}\n          d=\"m8 14 4-4 4 4\"\n          transition={DEFAULT_TRANSITION}\n          variants={{\n            normal: { y: 0 },\n            animate: { y: [0, -2, 0] },\n          }}\n        />\n      </svg>\n    </div>\n  );\n});\n\nSquareChevronUpIcon.displayName = \"SquareChevronUpIcon\";\n\nexport { SquareChevronUpIcon };\n"
  },
  {
    "path": "icons/square-pen.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquarePenIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquarePenIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PEN_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    x: 0,\n    y: 0,\n  },\n  animate: {\n    rotate: [-0.5, 0.5, -0.5],\n    x: [0, -1, 1.5, 0],\n    y: [0, 1.5, -1, 0],\n  },\n};\n\nconst SquarePenIcon = forwardRef<SquarePenIconHandle, SquarePenIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ overflow: \"visible\" }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n          <motion.path\n            animate={controls}\n            d=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"\n            variants={PEN_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSquarePenIcon.displayName = \"SquarePenIcon\";\n\nexport { SquarePenIcon };\n"
  },
  {
    "path": "icons/square-stack.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SquareStackIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SquareStackIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RECT_VARIANTS: Variants = {\n  normal: { scale: 1 },\n  animate: {\n    scale: [1, 0.8, 1],\n    transition: { duration: 0.4 },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: { scale: 1 },\n  animate: {\n    scale: [1, 0.9, 1],\n  },\n};\n\nconst SquareStackIcon = forwardRef<SquareStackIconHandle, SquareStackIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\"\n            transition={{\n              delay: 0.3,\n              duration: 0.4,\n            }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\"\n            transition={{\n              delay: 0.2,\n              duration: 0.2,\n            }}\n            variants={PATH_VARIANTS}\n          />\n          <motion.rect\n            animate={controls}\n            height=\"8\"\n            rx=\"2\"\n            variants={RECT_VARIANTS}\n            width=\"8\"\n            x=\"14\"\n            y=\"14\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSquareStackIcon.displayName = \"SquareStackIcon\";\n\nexport { SquareStackIcon };\n"
  },
  {
    "path": "icons/stethoscope.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface StethoscopeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface StethoscopeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst DURATION = 0.25;\n\nconst CALCULATE_DELAY = (i: number) => {\n  return i === 0 ? 0.1 : i * DURATION + 0.1;\n};\n\nconst StethoscopeIcon = forwardRef<StethoscopeIconHandle, StethoscopeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M11 2v2\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathOffset: [1, 0],\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M5 2v2\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathOffset: [1, 0],\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(2),\n              opacity: { delay: CALCULATE_DELAY(2) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathLength: [0, 1],\n                pathOffset: [1, 0],\n                opacity: [0, 1],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M8 15a6 6 0 0 0 12 0v-3\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(1),\n              opacity: { delay: CALCULATE_DELAY(1) },\n            }}\n            variants={{\n              normal: {\n                pathLength: 1,\n                pathOffset: 0,\n                opacity: 1,\n                transition: { delay: 0 },\n              },\n              animate: {\n                pathOffset: [1, 0],\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"20\"\n            cy=\"10\"\n            r=\"2\"\n            transition={{\n              duration: DURATION,\n              delay: CALCULATE_DELAY(0),\n              opacity: { delay: CALCULATE_DELAY(0) },\n            }}\n            variants={{\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\n              animate: {\n                pathLength: [0, 1],\n                opacity: [0, 1],\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nStethoscopeIcon.displayName = \"StethoscopeIcon\";\n\nexport { StethoscopeIcon };\n"
  },
  {
    "path": "icons/sun-dim.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SunDimIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SunDimIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst SunDimIcon = forwardRef<SunDimIconHandle, SunDimIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"4\" />\n          {[\n            \"M12 4h.01\",\n            \"M20 12h.01\",\n            \"M12 20h.01\",\n            \"M4 12h.01\",\n            \"M17.657 6.343h.01\",\n            \"M17.657 17.657h.01\",\n            \"M6.343 17.657h.01\",\n            \"M6.343 6.343h.01\",\n          ].map((d, index) => (\n            <motion.path\n              animate={controls}\n              custom={index + 1}\n              d={d}\n              key={d}\n              variants={PATH_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nSunDimIcon.displayName = \"SunDimIcon\";\n\nexport { SunDimIcon };\n"
  },
  {
    "path": "icons/sun-medium.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SunMediumIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SunMediumIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst SunMediumIcon = forwardRef<SunMediumIconHandle, SunMediumIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"4\" />\n          {[\n            \"M12 3v1\",\n            \"M12 20v1\",\n            \"M3 12h1\",\n            \"M20 12h1\",\n            \"m18.364 5.636-.707.707\",\n            \"m6.343 17.657-.707.707\",\n            \"m5.636 5.636.707.707\",\n            \"m17.657 17.657.707.707\",\n          ].map((d, index) => (\n            <motion.path\n              animate={controls}\n              custom={index + 1}\n              d={d}\n              key={d}\n              variants={PATH_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nSunMediumIcon.displayName = \"SunMediumIcon\";\n\nexport { SunMediumIcon };\n"
  },
  {
    "path": "icons/sun-moon.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SunMoonIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SunMoonIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SUN_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, -5, 5, -2, 2, 0],\n    transition: {\n      duration: 1.5,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst MOON_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst SunMoonIcon = forwardRef<SunMoonIconHandle, SunMoonIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const sunControls = useAnimation();\n    const moonControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          sunControls.start(\"animate\");\n          moonControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          sunControls.start(\"normal\");\n          moonControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          sunControls.start(\"animate\");\n          moonControls.start(\"animate\");\n        }\n      },\n      [sunControls, moonControls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          sunControls.start(\"normal\");\n          moonControls.start(\"normal\");\n        }\n      },\n      [sunControls, moonControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={sunControls}\n            initial=\"normal\"\n            variants={SUN_VARIANTS}\n          >\n            <path d=\"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4\" />\n          </motion.g>\n          {[\n            \"M12 2v2\",\n            \"M12 20v2\",\n            \"m4.9 4.9 1.4 1.4\",\n            \"m17.7 17.7 1.4 1.4\",\n            \"M2 12h2\",\n            \"M20 12h2\",\n            \"m6.3 17.7-1.4 1.4\",\n            \"m19.1 4.9-1.4 1.4\",\n          ].map((d, index) => (\n            <motion.path\n              animate={moonControls}\n              custom={index + 1}\n              d={d}\n              initial=\"normal\"\n              key={d}\n              variants={MOON_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nSunMoonIcon.displayName = \"SunMoonIcon\";\n\nexport { SunMoonIcon };\n"
  },
  {
    "path": "icons/sun.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SunIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SunIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst SunIcon = forwardRef<SunIconHandle, SunIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle cx=\"12\" cy=\"12\" r=\"4\" />\n          {[\n            \"M12 2v2\",\n            \"m19.07 4.93-1.41 1.41\",\n            \"M20 12h2\",\n            \"m17.66 17.66 1.41 1.41\",\n            \"M12 20v2\",\n            \"m6.34 17.66-1.41 1.41\",\n            \"M2 12h2\",\n            \"m4.93 4.93 1.41 1.41\",\n          ].map((d, index) => (\n            <motion.path\n              animate={controls}\n              custom={index + 1}\n              d={d}\n              key={d}\n              variants={PATH_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nSunIcon.displayName = \"SunIcon\";\n\nexport { SunIcon };\n"
  },
  {
    "path": "icons/sunset.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SunsetIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SunsetIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n  },\n  animate: {\n    y: [0, 1, 0],\n  },\n};\nconst RAYS_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: (i: number) => ({\n    opacity: [0, 1],\n    transition: { delay: i * 0.1, duration: 0.3 },\n  }),\n};\n\nconst SunsetIcon = forwardRef<SunsetIconHandle, SunsetIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const arrowControls = useAnimation();\n    const raysControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          arrowControls.start(\"animate\");\n          raysControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          arrowControls.start(\"normal\");\n          raysControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          arrowControls.start(\"animate\");\n          raysControls.start(\"animate\");\n        }\n      },\n      [arrowControls, raysControls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          arrowControls.start(\"normal\");\n          raysControls.start(\"normal\");\n        }\n      },\n      [arrowControls, raysControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={arrowControls}\n            initial=\"normal\"\n            variants={ARROW_VARIANTS}\n          >\n            <path d=\"M12 10V2\" />\n            <path d=\"m16 6-4 4-4-4\" />\n          </motion.g>\n\n          {[\n            \"m4.93 10.93 1.41 1.41\",\n            \"M2 18h2\",\n            \"M20 18h2\",\n            \"m19.07 10.93-1.41 1.41\",\n            \"M22 22H2\",\n            ,\n          ].map((d, index) => (\n            <motion.path\n              animate={raysControls}\n              custom={index + 1}\n              d={d}\n              initial=\"normal\"\n              key={d}\n              variants={RAYS_VARIANTS}\n            />\n          ))}\n          <path d=\"M16 18a4 4 0 0 0-8 0\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSunsetIcon.displayName = \"SunsetIcon\";\n\nexport { SunsetIcon };\n"
  },
  {
    "path": "icons/swiss-franc.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SwissFrancIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SwissFrancIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst FRANC_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst FRANC_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst SwissFrancIcon = forwardRef<SwissFrancIconHandle, SwissFrancIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M10 21V3h8\"\n            initial=\"normal\"\n            variants={FRANC_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M6 16h9\"\n            initial=\"normal\"\n            variants={FRANC_SECONDARY_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M10 9.5h7\"\n            initial=\"normal\"\n            variants={FRANC_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nSwissFrancIcon.displayName = \"SwissFrancIcon\";\n\nexport { SwissFrancIcon };\n"
  },
  {
    "path": "icons/syringe.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface SyringeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface SyringeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SyringeIcon = forwardRef<SyringeIconHandle, SyringeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          className=\"icon\"\n          fill=\"currentColor\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"5.632\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: {\n              translateX: 0,\n              translateY: 0,\n              rotate: \"0deg\",\n            },\n            animate: {\n              translateX: -3,\n              translateY: 3,\n              rotate: \"1deg\",\n            },\n          }}\n          viewBox=\"0 0 512 512\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M450.327,224.582l-46.545-46.545c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l15.127,15.127L205.964,406.109c-4.655,4.655-11.636,4.655-16.291,0l-18.618-18.618c-4.655-4.655-11.636-4.655-16.291,0l-18.618,18.618c-4.655,4.655-11.636,4.655-16.291,0l-13.964-13.964c-2.327-2.327-3.491-4.655-3.491-8.145s1.164-5.818,3.491-8.145l18.618-18.618c4.655-4.655,4.655-11.636,0-16.291l-18.618-18.618c-2.327-2.327-3.491-4.655-3.491-8.145c0-3.491,1.164-5.818,3.491-8.146l169.891-169.891c4.655-4.655,4.655-11.636,0-16.291s-11.636-4.655-16.291,0L89.6,289.745c-6.982,6.982-10.473,15.127-10.473,24.436S82.618,332.8,89.6,338.618l10.473,10.473L89.6,359.564c-6.982,6.982-10.473,15.127-10.473,24.436c0,8.145,3.491,16.291,9.309,23.273L3.491,492.218c-4.655,4.655-4.655,11.636,0,16.291C5.818,510.836,8.145,512,11.636,512s5.818-1.164,8.145-3.491l84.945-84.945c13.964,11.636,34.909,11.636,47.709-1.164l10.473-10.473l10.473,10.473c6.982,6.982,16.291,10.473,24.436,10.473c9.309,0,17.455-3.491,24.436-10.473l196.655-196.655l15.127,15.127c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C454.982,236.218,454.982,229.236,450.327,224.582z\" />\n          <path d=\"M508.509,119.855L392.145,3.491c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l39.564,39.564c2.327,2.327,3.491,6.982,3.491,10.473s-1.164,8.145-4.655,10.473l-53.527,54.691l-73.309-73.309c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l73.309,73.309L244.364,251.345L217.6,224.582c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l69.818,69.818c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491c4.655-4.655,4.655-11.636,0-16.291l-26.764-26.764L431.709,97.745c6.982-5.818,15.127-5.818,22.109,0l38.4,38.4c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C513.164,131.491,513.164,124.509,508.509,119.855z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nSyringeIcon.displayName = \"SyringeIcon\";\n\nexport { SyringeIcon };\n"
  },
  {
    "path": "icons/telescope.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TelescopeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TelescopeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SCOPE_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: {\n      duration: 0.6,\n      ease: \"easeInOut\",\n    },\n  },\n  animate: {\n    rotate: -15,\n    transition: {\n      duration: 0.8,\n      ease: \"easeInOut\",\n    },\n  },\n};\n\nconst TelescopeIcon = forwardRef<TelescopeIconHandle, TelescopeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.g\n            animate={controls}\n            style={{ transformOrigin: \"12px 13px\" }}\n            variants={SCOPE_VARIANTS}\n          >\n            <path d=\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\" />\n            <path d=\"m13.56 11.747 4.332-.924\" />\n            <path d=\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\" />\n            <path d=\"m13.56 11.747 4.332-.924\" />\n            <path d=\"M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z\" />\n            <path d=\"m6.158 8.633 1.114 4.456\" />\n          </motion.g>\n          <path d=\"m16 21-3.105-6.21\" />\n          <path d=\"m8 21 3.105-6.21\" />\n          <circle cx=\"12\" cy=\"13\" r=\"2\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTelescopeIcon.displayName = \"TelescopeIcon\";\n\nexport { TelescopeIcon };\n"
  },
  {
    "path": "icons/terminal.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TerminalIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TerminalIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LINE_VARIANTS: Variants = {\n  normal: { opacity: 1 },\n  animate: {\n    opacity: [1, 0, 1],\n    transition: {\n      duration: 0.8,\n      repeat: Number.POSITIVE_INFINITY,\n      ease: \"linear\",\n    },\n  },\n};\n\nconst TerminalIcon = forwardRef<TerminalIconHandle, TerminalIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <polyline points=\"4 17 10 11 4 5\" />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n            x1=\"12\"\n            x2=\"20\"\n            y1=\"19\"\n            y2=\"19\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTerminalIcon.displayName = \"TerminalIcon\";\n\nexport { TerminalIcon };\n"
  },
  {
    "path": "icons/thermometer.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, -5, 5, -5, 5, 0],\n    transition: {\n      duration: 0.4,\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\n    },\n  },\n};\n\nexport interface ThermometerIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ThermometerIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ThermometerIcon = forwardRef<ThermometerIconHandle, ThermometerIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z\"\n            style={{ transformOrigin: \"center\" }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nThermometerIcon.displayName = \"ThermometerIcon\";\n\nexport { ThermometerIcon };\n"
  },
  {
    "path": "icons/timer.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TimerIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TimerIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst HAND_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    originX: \"0%\",\n    originY: \"100%\",\n    transition: {\n      duration: 0.6,\n      ease: [0.4, 0, 0.2, 1],\n    },\n  },\n  animate: {\n    rotate: 300,\n    originX: \"0%\",\n    originY: \"100%\",\n    transition: {\n      delay: 0.1,\n      duration: 0.6,\n      ease: [0.4, 0, 0.2, 1],\n    },\n  },\n};\n\nconst BUTTON_VARIANTS: Variants = {\n  normal: {\n    scale: 1,\n    y: 0,\n  },\n  animate: {\n    scale: [0.9, 1],\n    y: [0, 1, 0],\n    transition: {\n      duration: 0.3,\n      ease: [0.4, 0, 0.2, 1],\n    },\n  },\n};\n\nconst TimerIcon = forwardRef<TimerIconHandle, TimerIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.line\n            animate={controls}\n            variants={BUTTON_VARIANTS}\n            x1=\"10\"\n            x2=\"14\"\n            y1=\"2\"\n            y2=\"2\"\n          />\n          <motion.line\n            animate={controls}\n            initial=\"normal\"\n            variants={HAND_VARIANTS}\n            x1=\"12\"\n            x2=\"15\"\n            y1=\"14\"\n            y2=\"11\"\n          />\n          <circle cx=\"12\" cy=\"14\" r=\"8\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTimerIcon.displayName = \"TimerIcon\";\n\nexport { TimerIcon };\n"
  },
  {
    "path": "icons/tornado.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TornadoIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TornadoIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    x: 0,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n    },\n  },\n  animate: (custom: number) => ({\n    x: [0, custom * 1, 0],\n    opacity: 1,\n    transition: {\n      x: {\n        duration: 0.6,\n        repeat: 1,\n        ease: \"easeInOut\",\n        delay: custom * 0.1,\n      },\n    },\n  }),\n};\n\nconst TornadoIcon = forwardRef<TornadoIconHandle, TornadoIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"M21 4H3\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M18 8H6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={3}\n            d=\"M19 12H9\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={4}\n            d=\"M16 16h-6\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={5}\n            d=\"M11 20H9\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTornadoIcon.displayName = \"TornadoIcon\";\n\nexport { TornadoIcon };\n"
  },
  {
    "path": "icons/train-track.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TrainTrackIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TrainTrackIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.3,\n  opacity: { delay: 0.15 },\n};\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      ...TRANSITION,\n      delay: 0.1 * custom,\n    },\n  }),\n};\n\nconst TrainTrackIcon = forwardRef<TrainTrackIconHandle, TrainTrackIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2 17 17 2\" />\n          <motion.path\n            animate={controls}\n            custom={4}\n            d=\"m2 14 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={3}\n            d=\"m5 11 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"m8 8 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"m11 5 8 8\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"m14 2 8 8\"\n            variants={VARIANTS}\n          />\n          <path d=\"M7 22 22 7\" />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTrainTrackIcon.displayName = \"TrainTrackIcon\";\n\nexport { TrainTrackIcon };\n"
  },
  {
    "path": "icons/trending-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TrendingDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TrendingDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  animate: {\n    x: 0,\n    y: 0,\n    translateX: [0, 2, 0],\n    translateY: [0, 2, 0],\n    transition: {\n      duration: 0.5,\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [0.5, 0],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst TrendingDownIcon = forwardRef<\n  TrendingDownIconHandle,\n  TrendingDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.polyline\n          animate={controls}\n          initial=\"normal\"\n          points=\"22 17 13.5 8.5 8.5 13.5 2 7\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.polyline\n          animate={controls}\n          initial=\"normal\"\n          points=\"16 17 22 17 22 11\"\n          variants={ARROW_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nTrendingDownIcon.displayName = \"TrendingDownIcon\";\n\nexport { TrendingDownIcon };\n"
  },
  {
    "path": "icons/trending-up-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TrendingUpDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TrendingUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  animate: {\n    x: 0,\n    y: 0,\n    translateX: [0, 2, 0],\n    transition: {\n      duration: 0.5,\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [0.5, 0],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst TrendingUpDownIcon = forwardRef<\n  TrendingUpDownIconHandle,\n  TrendingUpDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        animate={controls}\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        variants={SVG_VARIANTS}\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          d=\"M21 21 14.828 14.828\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M21 16v5h-5\"\n          initial=\"normal\"\n          variants={ARROW_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m21 3-9 9-4-4-6 6\"\n          initial=\"normal\"\n          variants={PATH_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M21 8V3h-5\"\n          initial=\"normal\"\n          variants={ARROW_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nTrendingUpDownIcon.displayName = \"TrendingUpDownIcon\";\n\nexport { TrendingUpDownIcon };\n"
  },
  {
    "path": "icons/trending-up.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TrendingUpIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TrendingUpIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst SVG_VARIANTS: Variants = {\n  animate: {\n    x: 0,\n    y: 0,\n    translateX: [0, 2, 0],\n    translateY: [0, -2, 0],\n    transition: {\n      duration: 0.5,\n    },\n  },\n};\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [0.5, 0],\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst TrendingUpIcon = forwardRef<TrendingUpIconHandle, TrendingUpIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          variants={SVG_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.polyline\n            animate={controls}\n            initial=\"normal\"\n            points=\"22 7 13.5 15.5 8.5 10.5 2 17\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.polyline\n            animate={controls}\n            initial=\"normal\"\n            points=\"16 7 22 7 22 13\"\n            variants={ARROW_VARIANTS}\n          />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nTrendingUpIcon.displayName = \"TrendingUpIcon\";\n\nexport { TrendingUpIcon };\n"
  },
  {
    "path": "icons/truck.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nexport interface TruckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TruckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRUCK_VARIANTS: Variants = {\n  normal: { x: 0, y: 0 },\n  animate: {\n    y: [0, -1, 0, -0.5, 0],\n    transition: {\n      duration: 0.4,\n      ease: \"easeInOut\",\n      repeat: Number.POSITIVE_INFINITY,\n      repeatType: \"loop\",\n    },\n  },\n};\n\nconst WHEEL_VARIANTS: Variants = {\n  normal: { rotate: 0 },\n  animate: {\n    rotate: 360,\n    transition: {\n      duration: 0.5,\n      ease: \"linear\",\n      repeat: Number.POSITIVE_INFINITY,\n    },\n  },\n};\n\nconst SPEED_LINE_VARIANTS: Variants = {\n  normal: {\n    opacity: 0,\n    x: 0,\n    scaleX: 0,\n  },\n  animate: (custom: number) => ({\n    opacity: [0, 0.7, 0.5, 0],\n    x: [0, -4, -10, -16],\n    scaleX: [0.2, 1, 0.8, 0.3],\n    transition: {\n      duration: 0.5,\n      ease: \"easeOut\",\n      repeat: Number.POSITIVE_INFINITY,\n      delay: custom * 0.08,\n      times: [0, 0.2, 0.6, 1],\n    },\n  }),\n};\n\nconst TruckIcon = forwardRef<TruckIconHandle, TruckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"animate\");\n        }\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"normal\");\n        }\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={className}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          className=\"overflow-visible\"\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {[\n            { y: 8, width: 5, x: 0 },\n            { y: 11, width: 7, x: -1 },\n            { y: 14, width: 4, x: 0 },\n          ].map((line, i) => (\n            <motion.line\n              animate={controls}\n              custom={i}\n              initial=\"normal\"\n              key={`speed-${i}`}\n              strokeLinecap=\"round\"\n              strokeWidth=\"2\"\n              variants={SPEED_LINE_VARIANTS}\n              x1={line.x}\n              x2={line.x + line.width}\n              y1={line.y}\n              y2={line.y}\n            />\n          ))}\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={TRUCK_VARIANTS}\n          >\n            <path d=\"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2\" />\n            <path d=\"M15 18H9\" />\n            <path d=\"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14\" />\n          </motion.g>\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={TRUCK_VARIANTS}\n          >\n            <motion.g\n              animate={controls}\n              initial=\"normal\"\n              style={{ transformOrigin: \"7px 18px\" }}\n              variants={WHEEL_VARIANTS}\n            >\n              <circle cx=\"7\" cy=\"18\" r=\"2\" />\n              <line strokeWidth=\"1.5\" x1=\"7\" x2=\"7\" y1=\"16.5\" y2=\"19.5\" />\n              <line strokeWidth=\"1.5\" x1=\"5.5\" x2=\"8.5\" y1=\"18\" y2=\"18\" />\n            </motion.g>\n          </motion.g>\n\n          <motion.g\n            animate={controls}\n            initial=\"normal\"\n            variants={TRUCK_VARIANTS}\n          >\n            <motion.g\n              animate={controls}\n              initial=\"normal\"\n              style={{ transformOrigin: \"17px 18px\" }}\n              variants={WHEEL_VARIANTS}\n            >\n              <circle cx=\"17\" cy=\"18\" r=\"2\" />\n              <line strokeWidth=\"1.5\" x1=\"17\" x2=\"17\" y1=\"16.5\" y2=\"19.5\" />\n              <line strokeWidth=\"1.5\" x1=\"15.5\" x2=\"18.5\" y1=\"18\" y2=\"18\" />\n            </motion.g>\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nTruckIcon.displayName = \"TruckIcon\";\n\nexport { TruckIcon };\n"
  },
  {
    "path": "icons/turkish-lira.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TurkishLiraIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TurkishLiraIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst LIRA_MAIN_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LIRA_SECONDARY_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      delay: 0.3,\n      duration: 0.3,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      delay: 0.5,\n      duration: 0.4,\n      opacity: { duration: 0.1, delay: 0.5 },\n    },\n  },\n};\n\nconst TurkishLiraIcon = forwardRef<TurkishLiraIconHandle, TurkishLiraIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M18 12a9 9 0 0 1-9 9V3\"\n            initial=\"normal\"\n            variants={LIRA_MAIN_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M15 4 5 9\"\n            initial=\"normal\"\n            variants={LIRA_SECONDARY_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m15 8.5-10 5\"\n            initial=\"normal\"\n            variants={LIRA_SECONDARY_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTurkishLiraIcon.displayName = \"TurkishLiraIcon\";\n\nexport { TurkishLiraIcon };\n"
  },
  {
    "path": "icons/twitch.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TwitchIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TwitchIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst LINE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst TwitchIcon = forwardRef<TwitchIconHandle, TwitchIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const pathControls = useAnimation();\n    const line1Controls = useAnimation();\n    const line2Controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          pathControls.start(\"animate\");\n          line1Controls.start(\"animate\");\n          line2Controls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          pathControls.start(\"normal\");\n          line1Controls.start(\"normal\");\n          line2Controls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          pathControls.start(\"animate\");\n          line1Controls.start(\"animate\");\n          line2Controls.start(\"animate\");\n        }\n      },\n      [line1Controls, line2Controls, onMouseEnter, pathControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          pathControls.start(\"normal\");\n          line1Controls.start(\"normal\");\n          line2Controls.start(\"normal\");\n        }\n      },\n      [pathControls, line1Controls, line2Controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={pathControls}\n            d=\"M21 2H3v16h5v4l4-4h5l4-4V2z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={line1Controls}\n            d=\"M11 11V7\"\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n          />\n          <motion.path\n            animate={line2Controls}\n            d=\"M16 11V7\"\n            initial=\"normal\"\n            variants={LINE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTwitchIcon.displayName = \"TwitchIcon\";\n\nexport { TwitchIcon };\n"
  },
  {
    "path": "icons/twitter.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TwitterIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface TwitterIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst TwitterIcon = forwardRef<TwitterIconHandle, TwitterIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nTwitterIcon.displayName = \"TwitterIcon\";\n\nexport { TwitterIcon };\n"
  },
  {
    "path": "icons/underline.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UnderlineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UnderlineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst UnderlineIcon = forwardRef<UnderlineIconHandle, UnderlineIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M6 4v6a6 6 0 0 0 12 0V4\"\n            transition={{ duration: 0.3 }}\n            variants={VARIANTS}\n          />\n          <motion.line\n            animate={controls}\n            transition={{\n              delay: 0.2,\n              duration: 0.4,\n            }}\n            variants={VARIANTS}\n            x1=\"4\"\n            x2=\"20\"\n            y1=\"20\"\n            y2=\"20\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUnderlineIcon.displayName = \"UnderlineIcon\";\n\nexport { UnderlineIcon };\n"
  },
  {
    "path": "icons/undo-dot.tsx",
    "content": "\"use client\";\n\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UndoDotIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UndoDotIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst UndoDotIcon = forwardRef<UndoDotIconHandle, UndoDotIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3 7v6h6\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\n              animate: {\n                translateX: [0, 2.1, 0],\n                translateY: [0, -1.4, 0],\n                rotate: [0, 12, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 17a9 9 0 0 0-15-6.7L3 13\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: { pathLength: [1, 0.8, 1] },\n            }}\n          />\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"17\"\n            r=\"1\"\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\n            variants={{\n              normal: { scale: 1 },\n              animate: { scale: [1, 1.2, 1] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUndoDotIcon.displayName = \"UndoDotIcon\";\n\nexport { UndoDotIcon };\n"
  },
  {
    "path": "icons/undo.tsx",
    "content": "\"use client\";\n\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UndoIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UndoIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst UndoIcon = forwardRef<UndoIconHandle, UndoIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M3 7v6h6\"\n            transition={{\n              duration: 0.6,\n              ease: CUSTOM_EASING,\n            }}\n            variants={{\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\n              animate: {\n                translateX: [0, 2.1, 0],\n                translateY: [0, -1.4, 0],\n                rotate: [0, 12, 0],\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"\n            transition={{\n              duration: 0.6,\n              ease: CUSTOM_EASING,\n            }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: { pathLength: [1, 0.8, 1] },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUndoIcon.displayName = \"UndoIcon\";\n\nexport { UndoIcon };\n"
  },
  {
    "path": "icons/upload.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UploadIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UploadIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ARROW_VARIANTS: Variants = {\n  normal: { y: 0 },\n  animate: {\n    y: -2,\n    transition: {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 10,\n      mass: 1,\n    },\n  },\n};\n\nconst UploadIcon = forwardRef<UploadIconHandle, UploadIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\n            <polyline points=\"17 8 12 3 7 8\" />\n            <line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nUploadIcon.displayName = \"UploadIcon\";\n\nexport { UploadIcon };\n"
  },
  {
    "path": "icons/upvote.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UpvoteIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UpvoteIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst UpvoteIcon = forwardRef<UpvoteIconHandle, UpvoteIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          transition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n          variants={{\n            normal: {\n              translateX: \"0px\",\n              translateY: \"0px\",\n              rotate: \"0deg\",\n            },\n            animate: {\n              translateX: \"-1px\",\n              translateY: \"-2px\",\n              rotate: \"-12deg\",\n            },\n          }}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M7 10v12\" />\n          <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nUpvoteIcon.displayName = \"UpvoteIcon\";\n\nexport { UpvoteIcon };\n"
  },
  {
    "path": "icons/user-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UserCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UserCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst UserCheckIcon = forwardRef<UserCheckIconHandle, UserCheckIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n          <circle cx=\"9\" cy=\"7\" r=\"4\" />\n          <motion.path\n            animate={controls}\n            d=\"M16 11L18 13L22 9\"\n            initial=\"normal\"\n            style={{ transformOrigin: \"center\" }}\n            variants={CHECK_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUserCheckIcon.displayName = \"UserCheckIcon\";\n\nexport { UserCheckIcon };\n"
  },
  {
    "path": "icons/user-round-check.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UserRoundCheckIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UserRoundCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst CHECK_VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n    },\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      pathLength: { duration: 0.4, ease: \"easeInOut\" },\n      opacity: { duration: 0.4, ease: \"easeInOut\" },\n    },\n  },\n};\n\nconst UserRoundCheckIcon = forwardRef<\n  UserRoundCheckIconHandle,\n  UserRoundCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2 21a8 8 0 0 1 13.292-6\" />\n        <circle cx=\"10\" cy=\"8\" r=\"5\" />\n        <motion.path\n          animate={controls}\n          d=\"m16 19 2 2 4-4\"\n          initial=\"normal\"\n          style={{ transformOrigin: \"center\" }}\n          variants={CHECK_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nUserRoundCheckIcon.displayName = \"UserRoundCheckIcon\";\n\nexport { UserRoundCheckIcon };\n"
  },
  {
    "path": "icons/user-round-plus.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UserRoundPlusIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UserRoundPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VERTICAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.3,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.3 },\n    },\n  },\n};\n\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      delay: 0.6,\n      duration: 0.2,\n      opacity: { duration: 0.1, delay: 0.6 },\n    },\n  },\n};\n\nconst UserRoundPlusIcon = forwardRef<\n  UserRoundPlusIconHandle,\n  UserRoundPlusIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <motion.svg\n        fill=\"none\"\n        height={size}\n        initial=\"normal\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path d=\"M2 21a8 8 0 0 1 13.292-6\" />\n        <circle cx=\"10\" cy=\"8\" r=\"5\" />\n        <motion.path\n          animate={controls}\n          d=\"M19 16v6\"\n          initial=\"normal\"\n          variants={VERTICAL_BAR_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M22 19h-6\"\n          initial=\"normal\"\n          variants={HORIZONTAL_BAR_VARIANTS}\n        />\n      </motion.svg>\n    </div>\n  );\n});\n\nUserRoundPlusIcon.displayName = \"UserRoundPlusIcon\";\n\nexport { UserRoundPlusIcon };\n"
  },
  {
    "path": "icons/user.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UserIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UserIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANT: Variants = {\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n  },\n};\n\nconst CIRCLE_VARIANT: Variants = {\n  normal: {\n    pathLength: 1,\n    pathOffset: 0,\n    scale: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    scale: [0.5, 1],\n  },\n};\n\nconst UserIcon = forwardRef<UserIconHandle, UserIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            cx=\"12\"\n            cy=\"8\"\n            r=\"5\"\n            variants={CIRCLE_VARIANT}\n          />\n\n          <motion.path\n            animate={controls}\n            d=\"M20 21a8 8 0 0 0-16 0\"\n            transition={{\n              delay: 0.2,\n              duration: 0.4,\n            }}\n            variants={PATH_VARIANT}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUserIcon.displayName = \"UserIcon\";\n\nexport { UserIcon };\n"
  },
  {
    "path": "icons/users.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface UsersIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface UsersIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    translateX: 0,\n    transition: {\n      type: \"spring\",\n      stiffness: 200,\n      damping: 13,\n    },\n  },\n  animate: {\n    translateX: [-6, 0],\n    transition: {\n      delay: 0.1,\n      type: \"spring\",\n      stiffness: 200,\n      damping: 13,\n    },\n  },\n};\n\nconst UsersIcon = forwardRef<UsersIconHandle, UsersIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n          <circle cx=\"9\" cy=\"7\" r=\"4\" />\n          <motion.path\n            animate={controls}\n            d=\"M22 21v-2a4 4 0 0 0-3-3.87\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M16 3.13a4 4 0 0 1 0 7.75\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nUsersIcon.displayName = \"UsersIcon\";\n\nexport { UsersIcon };\n"
  },
  {
    "path": "icons/vibrate.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface VibrateIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface VibrateIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst RECT_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n  },\n  animate: {\n    rotate: [0, -5, 5, -5, 5, 0],\n    transition: {\n      duration: 0.4,\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\n    },\n  },\n};\n\nconst VibrateIcon = forwardRef<VibrateIconHandle, VibrateIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"m2 8 2 2-2 2 2 2-2 2\" />\n          <path d=\"m22 8-2 2 2 2-2 2 2 2\" />\n          <motion.rect\n            animate={controls}\n            height=\"14\"\n            rx=\"1\"\n            style={{ transformOrigin: \"center\" }}\n            variants={RECT_VARIANTS}\n            width=\"8\"\n            x=\"8\"\n            y=\"5\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nVibrateIcon.displayName = \"VibrateIcon\";\n\nexport { VibrateIcon };\n"
  },
  {
    "path": "icons/volume.tsx",
    "content": "\"use client\";\n\nimport { AnimatePresence, motion } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport {\n  Fragment,\n  forwardRef,\n  useCallback,\n  useImperativeHandle,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface VolumeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface VolumeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VolumeIcon = forwardRef<VolumeIconHandle, VolumeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const [isHovered, setIsHovered] = useState(false);\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => setIsHovered(true),\n        stopAnimation: () => setIsHovered(false),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          setIsHovered(true);\n        }\n      },\n      [onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          setIsHovered(false);\n        }\n      },\n      [onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" />\n          <AnimatePresence initial={false} mode=\"wait\">\n            {isHovered ? (\n              <Fragment key=\"volume-icon-active\">\n                <motion.path\n                  animate={{ opacity: 1, transition: { delay: 0.1 } }}\n                  d=\"M16 9a5 5 0 0 1 0 6\"\n                  exit={{ opacity: 0 }}\n                  initial={{ opacity: 0 }}\n                />\n                <motion.path\n                  animate={{ opacity: 1, transition: { delay: 0.2 } }}\n                  d=\"M19.364 18.364a9 9 0 0 0 0-12.728\"\n                  exit={{ opacity: 0 }}\n                  initial={{ opacity: 0 }}\n                />\n              </Fragment>\n            ) : (\n              <Fragment key=\"volume-icon-inactive\">\n                <motion.line\n                  animate={{\n                    pathLength: [0, 1],\n                    opacity: [0, 1],\n                    transition: { delay: 0.1 },\n                  }}\n                  exit={{ pathLength: 1, opacity: 1 }}\n                  initial={{ pathLength: 1, opacity: 1 }}\n                  x1=\"22\"\n                  x2=\"16\"\n                  y1=\"9\"\n                  y2=\"15\"\n                />\n                <motion.line\n                  animate={{\n                    pathLength: [0, 1],\n                    opacity: [0, 1],\n                    transition: { delay: 0.2 },\n                  }}\n                  exit={{ pathLength: 1, opacity: 1 }}\n                  initial={{ pathLength: 1, opacity: 1 }}\n                  x1=\"16\"\n                  x2=\"22\"\n                  y1=\"9\"\n                  y2=\"15\"\n                />\n              </Fragment>\n            )}\n          </AnimatePresence>\n        </svg>\n      </div>\n    );\n  }\n);\n\nVolumeIcon.displayName = \"VolumeIcon\";\n\nexport { VolumeIcon };\n"
  },
  {
    "path": "icons/washing-machine.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WashingMachineIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WashingMachineIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WashingMachineIcon = forwardRef<\n  WashingMachineIconHandle,\n  WashingMachineIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.g\n          animate={controls}\n          variants={{\n            normal: {\n              x: 0,\n            },\n            animate: {\n              x: [0, 0.5, -0.5, 0.3, -0.3, 0],\n              transition: {\n                duration: 0.8,\n                repeat: Number.POSITIVE_INFINITY,\n                ease: \"easeInOut\",\n              },\n            },\n          }}\n        >\n          <path d=\"M3 6h3\" />\n          <path d=\"M17 6h.01\" />\n          <rect height=\"20\" rx=\"2\" width=\"18\" x=\"3\" y=\"2\" />\n        </motion.g>\n        <motion.g\n          animate={controls}\n          variants={{\n            normal: {\n              rotate: 0,\n              y: 0,\n              transition: {\n                duration: 0.5,\n                ease: \"linear\",\n              },\n            },\n            animate: {\n              rotate: 360,\n              y: [0, -0.3, 0, 0.3, 0],\n              transition: {\n                rotate: {\n                  duration: 1,\n                  repeat: Number.POSITIVE_INFINITY,\n                  ease: \"linear\",\n                },\n                y: {\n                  duration: 0.3,\n                  repeat: Number.POSITIVE_INFINITY,\n                  ease: \"easeInOut\",\n                },\n              },\n            },\n          }}\n        >\n          <circle cx=\"12\" cy=\"13\" r=\"5\" />\n          <path d=\"M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5\" />\n        </motion.g>\n      </svg>\n    </div>\n  );\n});\n\nWashingMachineIcon.displayName = \"WashingMachineIcon\";\n\nexport { WashingMachineIcon };\n"
  },
  {
    "path": "icons/waves-ladder.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WavesLadderIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WavesLadderIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WavesLadderIcon = forwardRef<WavesLadderIconHandle, WavesLadderIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"animate\");\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) controls.start(\"normal\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\" />\n          <motion.g\n            animate={controls}\n            initial={{ y: 0, opacity: 1 }}\n            variants={{\n              normal: { y: 0, opacity: 1 },\n              animate: {\n                y: [13, 0],\n                opacity: [0, 0, 1],\n                transition: { duration: 1, times: [0, 0.5, 1], repeat: 0 },\n              },\n            }}\n          >\n            <path d=\"M19 5a2 2 0 0 0-2 2v11\" />\n            <path d=\"M7 13h10\" />\n            <path d=\"M7 9h10\" />\n            <path d=\"M9 5a2 2 0 0 0-2 2v11\" />\n          </motion.g>\n        </svg>\n      </div>\n    );\n  }\n);\n\nWavesLadderIcon.displayName = \"WavesLadderIcon\";\nexport { WavesLadderIcon };\n"
  },
  {
    "path": "icons/waves.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WavesIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WavesIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WavesIcon = forwardRef<WavesIconHandle, WavesIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"animate\");\n        }\n        onMouseEnter?.(e);\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (!isControlledRef.current) {\n          controls.start(\"normal\");\n        }\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\n            initial={{ pathLength: 1 }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: {\n                pathLength: [0, 1],\n                transition: { duration: 0.4, ease: \"linear\" },\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 12c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\n            initial={{ pathLength: 1 }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: {\n                pathLength: [0, 1],\n                transition: { duration: 0.4, ease: \"linear\" },\n              },\n            }}\n          />\n          <motion.path\n            animate={controls}\n            d=\"M2 18c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\n            initial={{ pathLength: 1 }}\n            variants={{\n              normal: { pathLength: 1 },\n              animate: {\n                pathLength: [0, 1],\n                transition: { duration: 0.4, ease: \"linear\" },\n              },\n            }}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nWavesIcon.displayName = \"WavesIcon\";\nexport { WavesIcon };\n"
  },
  {
    "path": "icons/waypoints.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WaypointsIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WaypointsIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      delay: 0.15 * custom,\n      opacity: { delay: 0.1 * custom },\n    },\n  }),\n};\n\nconst WaypointsIcon = forwardRef<WaypointsIconHandle, WaypointsIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"12\"\n            cy=\"4.5\"\n            r=\"2.5\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={1}\n            d=\"m10.2 6.3-3.9 3.9\"\n            variants={VARIANTS}\n          />\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"4.5\"\n            cy=\"12\"\n            r=\"2.5\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={2}\n            d=\"M7 12h10\"\n            variants={VARIANTS}\n          />\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"19.5\"\n            cy=\"12\"\n            r=\"2.5\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={3}\n            d=\"m13.8 17.7 3.9-3.9\"\n            variants={VARIANTS}\n          />\n          <motion.circle\n            animate={controls}\n            custom={0}\n            cx=\"12\"\n            cy=\"19.5\"\n            r=\"2.5\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nWaypointsIcon.displayName = \"WaypointsIcon\";\n\nexport { WaypointsIcon };\n"
  },
  {
    "path": "icons/webhook.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WebhookIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WebhookIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.3,\n  opacity: { delay: 0.15 },\n};\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: {\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      ...TRANSITION,\n      delay: 0.1,\n    },\n  },\n};\n\nconst WebhookIcon = forwardRef<WebhookIconHandle, WebhookIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\"\n            variants={VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\"\n            variants={VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nWebhookIcon.displayName = \"WebhookIcon\";\n\nexport { WebhookIcon };\n"
  },
  {
    "path": "icons/wifi-low.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport {\n  forwardRef,\n  useCallback,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n} from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WifiLowIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WifiLowIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WIFI_LEVELS = [\n  { d: \"M12 20h.01\", initialOpacity: 1, delay: 0 },\n  { d: \"M8.5 16.429a5 5 0 0 1 7 0\", initialOpacity: 1, delay: 0.1 },\n];\n\nconst WifiLowIcon = forwardRef<WifiLowIconHandle, WifiLowIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const questionControls = useAnimation();\n\n    const isControlledRef = useRef(false);\n    const hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n    const scheduleHide = useCallback(() => {\n      if (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n      hideTimerRef.current = setTimeout(() => {\n        questionControls.start(\"hide\");\n      }, 1500);\n    }, [questionControls]);\n\n    const cancelHide = useCallback(() => {\n      if (hideTimerRef.current) {\n        clearTimeout(hideTimerRef.current);\n        hideTimerRef.current = null;\n      }\n    }, []);\n\n    useEffect(() => () => cancelHide(), [cancelHide]);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n          questionControls.start(\"show\");\n          scheduleHide();\n        },\n        stopAnimation: () => {\n          cancelHide();\n          controls.start(\"fadeIn\");\n          questionControls.start(\"hide\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          cancelHide();\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n          questionControls.start(\"show\");\n          scheduleHide();\n        }\n      },\n      [controls, questionControls, onMouseEnter, scheduleHide, cancelHide]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        cancelHide();\n        controls.start(\"fadeIn\");\n        questionControls.start(\"hide\");\n        onMouseLeave?.(e);\n      },\n      [controls, questionControls, onMouseLeave, cancelHide]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {WIFI_LEVELS.map((level, index) => (\n            <motion.path\n              animate={controls}\n              d={level.d}\n              initial={{ opacity: level.initialOpacity }}\n              key={level.d}\n              variants={{\n                fadeOut: {\n                  opacity: index === 0 ? 1 : 0,\n                  transition: { duration: 0.2 },\n                },\n                fadeIn: {\n                  opacity: 1,\n                  transition: {\n                    type: \"spring\",\n                    stiffness: 300,\n                    damping: 20,\n                    delay: level.delay,\n                  },\n                },\n              }}\n            />\n          ))}\n          <motion.text\n            animate={questionControls}\n            dominantBaseline=\"central\"\n            fill=\"currentColor\"\n            fontSize=\"8\"\n            fontWeight=\"bold\"\n            initial={{ opacity: 0, scale: 0 }}\n            stroke=\"none\"\n            style={{ transformOrigin: \"12px 8px\" }}\n            textAnchor=\"middle\"\n            variants={{\n              hide: {\n                opacity: 0,\n                scale: 0,\n                transition: { duration: 0.15 },\n              },\n              show: {\n                opacity: 1,\n                scale: 1,\n                transition: {\n                  type: \"spring\",\n                  stiffness: 400,\n                  damping: 18,\n                  delay: 0.1,\n                },\n              },\n            }}\n            x=\"12\"\n            y=\"8\"\n          >\n            ?\n          </motion.text>\n        </svg>\n      </div>\n    );\n  }\n);\n\nWifiLowIcon.displayName = \"WifiLowIcon\";\n\nexport { WifiLowIcon };\n"
  },
  {
    "path": "icons/wifi.tsx",
    "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WifiIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WifiIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WIFI_LEVELS = [\n  { d: \"M12 20h.01\", initialOpacity: 1, delay: 0 },\n  { d: \"M8.5 16.429a5 5 0 0 1 7 0\", initialOpacity: 1, delay: 0.1 },\n  { d: \"M5 12.859a10 10 0 0 1 14 0\", initialOpacity: 1, delay: 0.2 },\n  { d: \"M2 8.82a15 15 0 0 1 20 0\", initialOpacity: 1, delay: 0.3 },\n];\n\nconst WifiIcon = forwardRef<WifiIconHandle, WifiIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: async () => {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        },\n        stopAnimation: () => controls.start(\"fadeIn\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      async (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          await controls.start(\"fadeOut\");\n          controls.start(\"fadeIn\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        controls.start(\"fadeIn\");\n        onMouseLeave?.(e);\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {WIFI_LEVELS.map((level, index) => (\n            <motion.path\n              animate={controls}\n              d={level.d}\n              initial={{ opacity: level.initialOpacity }}\n              key={index}\n              variants={{\n                fadeOut: {\n                  opacity: index === 0 ? 1 : 0,\n                  transition: { duration: 0.2 },\n                },\n                fadeIn: {\n                  opacity: 1,\n                  transition: {\n                    type: \"spring\",\n                    stiffness: 300,\n                    damping: 20,\n                    delay: level.delay,\n                  },\n                },\n              }}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nWifiIcon.displayName = \"WifiIcon\";\n\nexport { WifiIcon };\n"
  },
  {
    "path": "icons/wind-arrow-down.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WindArrowDownIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WindArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst WIND_VARIANTS: Variants = {\n  normal: (custom: number) => ({\n    pathLength: 1,\n    opacity: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n};\n\nconst ARROW_VARIANTS: Variants = {\n  normal: {\n    y: 0,\n    opacity: 1,\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n    },\n  },\n  animate: {\n    y: [-10, 0],\n    opacity: [0, 1],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n      delay: 0.35,\n    },\n  },\n};\n\nconst WindArrowDownIcon = forwardRef<\n  WindArrowDownIconHandle,\n  WindArrowDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n  const controls = useAnimation();\n  const isControlledRef = useRef(false);\n\n  useImperativeHandle(ref, () => {\n    isControlledRef.current = true;\n    return {\n      startAnimation: () => controls.start(\"animate\"),\n      stopAnimation: () => controls.start(\"normal\"),\n    };\n  });\n\n  const handleMouseEnter = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseEnter?.(e);\n      } else {\n        controls.start(\"animate\");\n      }\n    },\n    [controls, onMouseEnter]\n  );\n\n  const handleMouseLeave = useCallback(\n    (e: React.MouseEvent<HTMLDivElement>) => {\n      if (isControlledRef.current) {\n        onMouseLeave?.(e);\n      } else {\n        controls.start(\"normal\");\n      }\n    },\n    [controls, onMouseLeave]\n  );\n\n  return (\n    <div\n      className={cn(className)}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      {...props}\n    >\n      <svg\n        fill=\"none\"\n        height={size}\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        viewBox=\"0 0 24 24\"\n        width={size}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <motion.path\n          animate={controls}\n          custom={0.2}\n          d=\"M12.8 21.6A2 2 0 1 0 14 18H2\"\n          initial=\"normal\"\n          variants={WIND_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          custom={0.4}\n          d=\"M17.5 10a2.5 2.5 0 1 1 2 4H2\"\n          initial=\"normal\"\n          variants={WIND_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"M10 2v8\"\n          initial=\"normal\"\n          variants={ARROW_VARIANTS}\n        />\n        <motion.path\n          animate={controls}\n          d=\"m6 6 4 4 4-4\"\n          initial=\"normal\"\n          variants={ARROW_VARIANTS}\n        />\n      </svg>\n    </div>\n  );\n});\n\nWindArrowDownIcon.displayName = \"WindArrowDownIcon\";\n\nexport { WindArrowDownIcon };\n"
  },
  {
    "path": "icons/wind.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WindIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WindIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: (custom: number) => ({\n    pathLength: 1,\n    opacity: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.3,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.5,\n      ease: \"easeInOut\",\n      delay: custom,\n    },\n  }),\n};\n\nconst WindIcon = forwardRef<WindIconHandle, WindIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            custom={0.2}\n            d=\"M12.8 19.6A2 2 0 1 0 14 16H2\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0}\n            d=\"M17.5 8a2.5 2.5 0 1 1 2 4H2\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            custom={0.4}\n            d=\"M9.8 4.4A2 2 0 1 1 11 8H2\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nWindIcon.displayName = \"WindIcon\";\n\nexport { WindIcon };\n"
  },
  {
    "path": "icons/workflow.tsx",
    "content": "\"use client\";\n\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WorkflowIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WorkflowIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst TRANSITION: Transition = {\n  duration: 0.3,\n  opacity: { delay: 0.15 },\n};\n\nconst VARIANTS: Variants = {\n  normal: {\n    pathLength: 1,\n    opacity: 1,\n  },\n  animate: (custom: number) => ({\n    pathLength: [0, 1],\n    opacity: [0, 1],\n    transition: {\n      ...TRANSITION,\n      delay: 0.1 * custom,\n    },\n  }),\n};\n\nconst WorkflowIcon = forwardRef<WorkflowIconHandle, WorkflowIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.rect\n            animate={controls}\n            custom={0}\n            height=\"8\"\n            rx=\"2\"\n            variants={VARIANTS}\n            width=\"8\"\n            x=\"3\"\n            y=\"3\"\n          />\n          <motion.path\n            animate={controls}\n            custom={3}\n            d=\"M7 11v4a2 2 0 0 0 2 2h4\"\n            variants={VARIANTS}\n          />\n          <motion.rect\n            animate={controls}\n            custom={0}\n            height=\"8\"\n            rx=\"2\"\n            variants={VARIANTS}\n            width=\"8\"\n            x=\"13\"\n            y=\"13\"\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nWorkflowIcon.displayName = \"WorkflowIcon\";\n\nexport { WorkflowIcon };\n"
  },
  {
    "path": "icons/wrench.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface WrenchIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface WrenchIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst ICON_VARIANTS: Variants = {\n  normal: {\n    rotate: 0,\n    transition: { duration: 0.25, ease: \"easeOut\" },\n  },\n  animate: {\n    rotate: [0, 12, -14, 4, 0],\n    transition: {\n      duration: 1.05,\n      times: [0, 0.42, 0.68, 0.88, 1],\n      ease: [\"easeInOut\", \"easeInOut\", \"easeOut\", \"easeOut\"],\n    },\n  },\n};\n\nconst WrenchIcon = forwardRef<WrenchIconHandle, WrenchIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <motion.svg\n          animate={controls}\n          fill=\"none\"\n          height={size}\n          initial=\"normal\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          style={{ transformOrigin: \"90% 10%\", transformBox: \"fill-box\" }}\n          variants={ICON_VARIANTS}\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />\n        </motion.svg>\n      </div>\n    );\n  }\n);\n\nWrenchIcon.displayName = \"WrenchIcon\";\n\nexport { WrenchIcon };\n"
  },
  {
    "path": "icons/x.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface XIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface XIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n  },\n};\n\nconst XIcon = forwardRef<XIconHandle, XIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M18 6 6 18\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={controls}\n            d=\"m6 6 12 12\"\n            transition={{ delay: 0.2 }}\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nXIcon.displayName = \"XIcon\";\n\nexport { XIcon };\n"
  },
  {
    "path": "icons/youtube.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface YoutubeIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface YoutubeIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst TRIANGLE_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    pathOffset: 0,\n    transition: {\n      duration: 0.4,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    pathOffset: [1, 0],\n    transition: {\n      duration: 0.6,\n      ease: \"linear\",\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst YoutubeIcon = forwardRef<YoutubeIconHandle, YoutubeIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const pathControls = useAnimation();\n    const triangleControls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => {\n          pathControls.start(\"animate\");\n          triangleControls.start(\"animate\");\n        },\n        stopAnimation: () => {\n          pathControls.start(\"normal\");\n          triangleControls.start(\"normal\");\n        },\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          pathControls.start(\"animate\");\n          triangleControls.start(\"animate\");\n        }\n      },\n      [onMouseEnter, pathControls, triangleControls]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          pathControls.start(\"normal\");\n          triangleControls.start(\"normal\");\n        }\n      },\n      [pathControls, triangleControls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={pathControls}\n            d=\"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17\"\n            initial=\"normal\"\n            variants={PATH_VARIANTS}\n          />\n          <motion.path\n            animate={triangleControls}\n            d=\"M10 15l5-3-5-3z\"\n            initial=\"normal\"\n            variants={TRIANGLE_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nYoutubeIcon.displayName = \"YoutubeIcon\";\n\nexport { YoutubeIcon };\n"
  },
  {
    "path": "icons/zap-off.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ZapOffIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ZapOffIconProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ZapOffIcon = forwardRef<ZapOffIconHandle, ZapOffIconProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    const PATHS = [\n      \"M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317\",\n      \"M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773\",\n      \"M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643\",\n      \"m2 2 20 20\",\n    ];\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          {PATHS.map((d, i) => (\n            <motion.path\n              animate={controls}\n              custom={i * 0.15}\n              d={d}\n              key={i}\n              variants={PATH_VARIANTS}\n            />\n          ))}\n        </svg>\n      </div>\n    );\n  }\n);\n\nZapOffIcon.displayName = \"ZapOffIcon\";\n\nexport { ZapOffIcon };\n"
  },
  {
    "path": "icons/zap.tsx",
    "content": "\"use client\";\n\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ZapHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n\ninterface ZapProps extends HTMLAttributes<HTMLDivElement> {\n  size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n  normal: {\n    opacity: 1,\n    pathLength: 1,\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n  animate: {\n    opacity: [0, 1],\n    pathLength: [0, 1],\n    transition: {\n      duration: 0.6,\n      opacity: { duration: 0.1 },\n    },\n  },\n};\n\nconst ZapIcon = forwardRef<ZapHandle, ZapProps>(\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n    const controls = useAnimation();\n    const isControlledRef = useRef(false);\n\n    useImperativeHandle(ref, () => {\n      isControlledRef.current = true;\n\n      return {\n        startAnimation: () => controls.start(\"animate\"),\n        stopAnimation: () => controls.start(\"normal\"),\n      };\n    });\n\n    const handleMouseEnter = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseEnter?.(e);\n        } else {\n          controls.start(\"animate\");\n        }\n      },\n      [controls, onMouseEnter]\n    );\n\n    const handleMouseLeave = useCallback(\n      (e: React.MouseEvent<HTMLDivElement>) => {\n        if (isControlledRef.current) {\n          onMouseLeave?.(e);\n        } else {\n          controls.start(\"normal\");\n        }\n      },\n      [controls, onMouseLeave]\n    );\n\n    return (\n      <div\n        className={cn(className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        {...props}\n      >\n        <svg\n          fill=\"none\"\n          height={size}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"2\"\n          viewBox=\"0 0 24 24\"\n          width={size}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <motion.path\n            animate={controls}\n            d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\"\n            variants={PATH_VARIANTS}\n          />\n        </svg>\n      </div>\n    );\n  }\n);\n\nZapIcon.displayName = \"ZapIcon\";\n\nexport { ZapIcon };\n"
  },
  {
    "path": "lib/get-package-manager-prefix.ts",
    "content": "import { PACKAGE_MANAGER } from \"@/constants\";\n\nconst getPackageManagerPrefix = (\n  packageManager: (typeof PACKAGE_MANAGER)[keyof typeof PACKAGE_MANAGER]\n) => {\n  switch (packageManager) {\n    case PACKAGE_MANAGER.PNPM:\n      return \"pnpm dlx\";\n    case PACKAGE_MANAGER.NPM:\n      return \"npx\";\n    case PACKAGE_MANAGER.YARN:\n      return \"npx\";\n    case PACKAGE_MANAGER.BUN:\n      return \"bunx --bun\";\n    default:\n      return \"npx\";\n  }\n};\n\nexport { getPackageManagerPrefix };\n"
  },
  {
    "path": "lib/kebab-to-pascal.ts",
    "content": "const kebabToPascalCase = (str: string): string => {\n  return `${str\n    .split(\"-\")\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(\"\")}Icon`;\n};\n\nexport { kebabToPascalCase };\n"
  },
  {
    "path": "lib/utils.ts",
    "content": "import type { ClassValue } from \"clsx\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n"
  },
  {
    "path": "next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  reactCompiler: true,\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"pqoqubbw-icons\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"prebuild\": \"node scripts/download-fonts.js\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"pnpm run check-style:fix && npx ultracite fix\",\n    \"lint:check\": \"pnpm run check-style && npx ultracite check\",\n    \"check-duplicates\": \"tsx scripts/check-duplicates.ts\",\n    \"check-imports\": \"tsx scripts/check-imports.ts\",\n    \"check-style\": \"tsx scripts/check-icon-style.ts\",\n    \"check-style:fix\": \"tsx scripts/check-icon-style.ts --fix\",\n    \"sync-registry\": \"tsx scripts/sync-registry.ts\",\n    \"build-registry\": \"tsx scripts/registry-build.ts\",\n    \"gen-cli\": \"pnpm run check-style:fix && pnpm run sync-registry && pnpm run build-registry && pnpm lint\"\n  },\n  \"dependencies\": {\n    \"@base-ui/react\": \"^1.2.0\",\n    \"@openpanel/nextjs\": \"^1.1.3\",\n    \"@tanstack/react-hotkeys\": \"^0.1.0\",\n    \"@toolwind/corner-shape\": \"0.0.8-3\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"fuse.js\": \"^7.1.0\",\n    \"lucide-react\": \"^0.564.0\",\n    \"motion\": \"^12.34.0\",\n    \"next\": \"16.2.0\",\n    \"next-themes\": \"^0.4.6\",\n    \"nuqs\": \"^2.8.8\",\n    \"react\": \"19.2.4\",\n    \"react-dom\": \"19.2.4\",\n    \"sonner\": \"^2.0.7\",\n    \"tailwind-merge\": \"^3.4.0\",\n    \"tw-animate-css\": \"^1.4.0\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"2.3.10\",\n    \"@tailwindcss/postcss\": \"^4.1.18\",\n    \"@types/node\": \"^25.5.0\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"babel-plugin-react-compiler\": \"1.0.0\",\n    \"postcss\": \"^8.5.6\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"tsx\": \"^4.21.0\",\n    \"typescript\": \"^5.9.3\",\n    \"ultracite\": \"7.2.0\"\n  }\n}\n"
  },
  {
    "path": "postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: [\"@tailwindcss/postcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "providers/package-name.tsx",
    "content": "\"use client\";\n\nimport { createContext, useContext, useState } from \"react\";\n\nimport { PACKAGE_MANAGER } from \"@/constants\";\n\ntype PackageManager = (typeof PACKAGE_MANAGER)[keyof typeof PACKAGE_MANAGER];\n\ntype PackageNameContextType = {\n  packageName: PackageManager;\n  setPackageName: (packageName: PackageManager) => void;\n};\n\nconst PackageNameContext = createContext<PackageNameContextType>({\n  packageName: PACKAGE_MANAGER.PNPM,\n  setPackageName: (_packageName: PackageManager) => {\n    return;\n  },\n});\n\nconst PackageNameProvider = ({ children }: { children: React.ReactNode }) => {\n  const [packageName, setPackageName] = useState<PackageManager>(\n    PACKAGE_MANAGER.PNPM\n  );\n\n  return (\n    <PackageNameContext.Provider value={{ packageName, setPackageName }}>\n      {children}\n    </PackageNameContext.Provider>\n  );\n};\n\nconst usePackageNameContext = () => {\n  const context = useContext(PackageNameContext);\n\n  if (!context) {\n    throw new Error(\n      \"usePackageNameContext must be used within a PackageNameProvider\"\n    );\n  }\n\n  return context;\n};\n\nexport { PackageNameProvider, usePackageNameContext };\n"
  },
  {
    "path": "providers/theme.tsx",
    "content": "\"use client\";\n\nimport type { ThemeProviderProps } from \"next-themes\";\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n  return <NextThemesProvider {...props}>{children}</NextThemesProvider>;\n}\n"
  },
  {
    "path": "public/r/a-arrow-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"a-arrow-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"a-arrow-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AArrowDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LETTER_VARIANTS: Variants = {\\n  normal: { opacity: 1, scale: 1 },\\n  animate: {\\n    opacity: [0, 1],\\n    scale: [0.8, 1],\\n    transition: { duration: 0.3 },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { opacity: 1, y: 0 },\\n  animate: {\\n    opacity: [0, 1],\\n    y: [-10, 0],\\n    transition: { duration: 0.3, delay: 0.2 },\\n  },\\n};\\n\\nconst AArrowDownIcon = forwardRef<AArrowDownIconHandle, AArrowDownIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3.5 13h6\\\"\\n            variants={LETTER_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 16 4.5-9 4.5 9\\\"\\n            variants={LETTER_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 7v9\\\"\\n            variants={ARROW_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14 12 4 4 4-4\\\"\\n            variants={ARROW_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAArrowDownIcon.displayName = \\\"AArrowDownIcon\\\";\\n\\nexport { AArrowDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/a-arrow-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"a-arrow-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"a-arrow-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AArrowUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LETTER_VARIANTS: Variants = {\\n  normal: { opacity: 1, scale: 1 },\\n  animate: {\\n    opacity: [0, 1],\\n    scale: [0.8, 1],\\n    transition: { duration: 0.3 },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { opacity: 1, y: 0 },\\n  animate: {\\n    opacity: [0, 1],\\n    y: [10, 0],\\n    transition: { duration: 0.3, delay: 0.2 },\\n  },\\n};\\n\\nconst AArrowUpIcon = forwardRef<AArrowUpIconHandle, AArrowUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3.5 13h6\\\"\\n            variants={LETTER_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 16 4.5-9 4.5 9\\\"\\n            variants={LETTER_VARIANTS}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 16V7\\\"\\n            variants={ARROW_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14 11 4-4 4 4\\\"\\n            variants={ARROW_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAArrowUpIcon.displayName = \\\"AArrowUpIcon\\\";\\n\\nexport { AArrowUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/accessibility.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"accessibility\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"accessibility.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AccessibilityIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AccessibilityIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  initial: {\\n    y: 0,\\n    x: 0,\\n  },\\n  animate: {\\n    y: [0, 1, -1, 0],\\n    x: [0, 1, -1, 0],\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst PRIMARY_GROUP_VARIANTS: Variants = {\\n  initial: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, 5, -5, 0],\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SECONDARY_GROUP_VARIANTS: Variants = {\\n  initial: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: -360,\\n    transition: {\\n      duration: 1,\\n      delay: 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  initial: {\\n    rotate: 0,\\n    d: \\\"M8 5 L5 8\\\",\\n  },\\n  animate: {\\n    rotate: [0, -60, 0],\\n    d: [\\\"M8 5 L5 8\\\", \\\"M8 5 L4 9\\\", \\\"M8 5 L5 8\\\"],\\n    transition: {\\n      duration: 0.4,\\n      delay: 0.2,\\n      ease: \\\"easeInOut\\\",\\n    },\\n    transformOrigin: \\\"top right\\\",\\n  },\\n};\\n\\nconst AccessibilityIcon = forwardRef<\\n  AccessibilityIconHandle,\\n  AccessibilityIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"initial\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"16\\\"\\n          cy=\\\"4\\\"\\n          initial=\\\"initial\\\"\\n          r=\\\"1\\\"\\n          variants={CIRCLE_VARIANTS}\\n        />\\n        <motion.g\\n          animate={controls}\\n          initial=\\\"initial\\\"\\n          variants={PRIMARY_GROUP_VARIANTS}\\n        >\\n          <path d=\\\"m18 19 1-7-6 1\\\" />\\n          <path d=\\\"M8,5l5.5,3-2.4,3.5\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 5 L5 8\\\"\\n            initial=\\\"initial\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </motion.g>\\n        <motion.g\\n          animate={controls}\\n          initial=\\\"initial\\\"\\n          variants={SECONDARY_GROUP_VARIANTS}\\n        >\\n          <path d=\\\"M4.2,14.5c-.8,2.6.7,5.4,3.3,6.2,1.2.4,2.4.3,3.6-.2\\\" />\\n          <path d=\\\"M13.8,17.5c.8-2.6-.7-5.4-3.3-6.2-1.2-.4-2.4-.3-3.6.2\\\" />\\n          <path d=\\\"M13,13.1c-.5-.7-1.1-1.2-1.9-1.6\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nAccessibilityIcon.displayName = \\\"AccessibilityIcon\\\";\\n\\nexport { AccessibilityIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/activity.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"activity\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"activity.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ActivityIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nActivityIcon.displayName = \\\"ActivityIcon\\\";\\n\\nexport { ActivityIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/air-vent.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"air-vent\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"air-vent.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AirVentIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AirVentIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WIND_VARIANTS: Variants = {\\n  normal: (custom: number) => ({\\n    pathLength: 1,\\n    opacity: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n};\\n\\nconst AirVentIcon = forwardRef<AirVentIconHandle, AirVentIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\" />\\n          <path d=\\\"M6 8h12\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12\\\"\\n            initial=\\\"normal\\\"\\n            variants={WIND_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.2}\\n            d=\\\"M6.6 15.6A2 2 0 1 0 10 17v-5\\\"\\n            initial=\\\"normal\\\"\\n            variants={WIND_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAirVentIcon.displayName = \\\"AirVentIcon\\\";\\n\\nexport { AirVentIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/airplane.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"airplane\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"airplane.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AirplaneIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AirplaneIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SPEED_LINES = [\\n  { x1: 5, y1: 15, x2: 1, y2: 19, delay: 0.1 },\\n  { x1: 7, y1: 17, x2: 3, y2: 21, delay: 0.2 },\\n  { x1: 9, y1: 19, x2: 5, y2: 23, delay: 0.3 },\\n];\\n\\nconst AirplaneIcon = forwardRef<AirplaneIconHandle, AirplaneIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          className=\\\"overflow-visible\\\"\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17.8 19.2L16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z\\\"\\n            transition={{\\n              duration: 0.5,\\n            }}\\n            variants={{\\n              normal: { x: 0, y: 0, scale: 1 },\\n              animate: {\\n                x: 3,\\n                y: -3,\\n                scale: 0.8,\\n              },\\n            }}\\n          />\\n          {SPEED_LINES.map((line, index) => (\\n            <motion.line\\n              animate={controls}\\n              initial={{ opacity: 0, pathLength: 1, pathSpacing: 1 }}\\n              key={index}\\n              stroke=\\\"currentColor\\\"\\n              strokeWidth=\\\"1\\\"\\n              transition={{ duration: 0.15, delay: line.delay }}\\n              variants={{\\n                normal: {\\n                  pathOffset: [0, 1],\\n                  translateX: -3,\\n                  translateY: 3,\\n                  opacity: 0,\\n                  transition: {\\n                    duration: 0.3,\\n                    times: [0, 0.6, 1],\\n                  },\\n                },\\n                animate: {\\n                  pathOffset: [1, 2],\\n                  translateX: [0, 0],\\n                  translateY: [0, 0],\\n                  opacity: 1,\\n                },\\n              }}\\n              x1={line.x1}\\n              x2={line.x2}\\n              y1={line.y1}\\n              y2={line.y2}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAirplaneIcon.displayName = \\\"AirplaneIcon\\\";\\n\\nexport { AirplaneIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/airplay.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"airplay\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"airplay.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { easeInOut, easeOut, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AirplayIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AirplayIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst SCREEN_VARIANTS = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: { duration: DURATION },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: DURATION * 2,\\n      ease: easeInOut,\\n    },\\n  },\\n};\\n\\nconst TRIANGLE_VARIANTS = {\\n  normal: {\\n    scale: 1,\\n    opacity: 1,\\n    transition: { duration: DURATION },\\n  },\\n  animate: {\\n    scale: [0.6, 1.1, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: DURATION * 2,\\n      ease: easeOut,\\n    },\\n  },\\n};\\n\\nconst AirplayIcon = forwardRef<AirplayIconHandle, AirplayIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"animate\\\");\\n          controls.start(\\\"normal\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"animate\\\");\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"\\n            variants={SCREEN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 15l5 6H7z\\\"\\n            variants={TRIANGLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAirplayIcon.displayName = \\\"AirplayIcon\\\";\\n\\nexport { AirplayIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/alarm-clock.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"alarm-clock\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"alarm-clock.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlarmClockIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlarmClockIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    x: 0,\\n    transition: {\\n      duration: 0.2,\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n  animate: {\\n    y: -1.5,\\n    x: [-1, 1, -1, 1, -1, 0],\\n    transition: {\\n      y: {\\n        duration: 0.2,\\n        type: \\\"spring\\\",\\n        stiffness: 200,\\n        damping: 25,\\n      },\\n      x: {\\n        duration: 0.3,\\n        repeat: Number.POSITIVE_INFINITY,\\n        ease: \\\"linear\\\",\\n      },\\n    },\\n  },\\n};\\n\\nconst SECONDARY_PATH_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    x: 0,\\n    transition: {\\n      duration: 0.2,\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n  animate: {\\n    y: -2.5,\\n    x: [-2, 2, -2, 2, -2, 0],\\n    transition: {\\n      y: {\\n        duration: 0.2,\\n        type: \\\"spring\\\",\\n        stiffness: 200,\\n        damping: 25,\\n      },\\n      x: {\\n        duration: 0.3,\\n        repeat: Number.POSITIVE_INFINITY,\\n        ease: \\\"linear\\\",\\n      },\\n    },\\n  },\\n};\\n\\nconst AlarmClockIcon = forwardRef<AlarmClockIconHandle, AlarmClockIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 20.5L19.5 22\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 20.5L4.5 22\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 13C21 17.968 16.968 22 12 22C7.032 22 3 17.968 3 13C3 8.032 7.032 4 12 4C16.968 4 21 8.032 21 13Z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15.339 15.862L12.549 14.197C12.063 13.909 11.667 13.216 11.667 12.649V8.95898\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 2L21.747 5.31064\\\"\\n            initial=\\\"normal\\\"\\n            variants={SECONDARY_PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 2L2.25304 5.31064\\\"\\n            initial=\\\"normal\\\"\\n            variants={SECONDARY_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAlarmClockIcon.displayName = \\\"AlarmClockIcon\\\";\\n\\nexport { AlarmClockIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/align-center.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"align-center\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"align-center.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlignCenterIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlignCenterIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst AlignCenterIcon = forwardRef<AlignCenterIconHandle, AlignCenterIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 12H7\\\"\\n            variants={{\\n              normal: { translateX: 0 },\\n              animate: {\\n                translateX: [0, 3, -3, 2, -2, 0],\\n                transition: {\\n                  ease: \\\"linear\\\",\\n                  translateX: {\\n                    duration: 1,\\n                  },\\n                },\\n              },\\n            }}\\n          />\\n          <path d=\\\"M19 18H5\\\" />\\n          <path d=\\\"M21 6H3\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAlignCenterIcon.displayName = \\\"AlignCenterIcon\\\";\\n\\nexport { AlignCenterIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/align-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"align-horizontal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"align-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlignHorizontalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlignHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 160,\\n  damping: 17,\\n  mass: 1,\\n};\\n\\nconst AlignHorizontalIcon = forwardRef<\\n  AlignHorizontalIconHandle,\\n  AlignHorizontalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"10\\\"\\n          rx=\\\"2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { scaleX: 1 },\\n            animate: { scaleX: 0.85 },\\n          }}\\n          width=\\\"6\\\"\\n          x=\\\"9\\\"\\n          y=\\\"7\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M4 22V2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: 0, scaleY: 1 },\\n            animate: {\\n              translateX: 2,\\n              scaleY: 0.9,\\n            },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M20 22V2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: 0, scaleY: 1 },\\n            animate: {\\n              translateX: -2,\\n              scaleY: 0.9,\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nAlignHorizontalIcon.displayName = \\\"AlignHorizontalIcon\\\";\\n\\nexport { AlignHorizontalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/align-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"align-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"align-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlignLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlignLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 150,\\n  damping: 15,\\n  mass: 0.3,\\n};\\n\\nconst AlignLeftIcon = forwardRef<AlignLeftIconHandle, AlignLeftIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x2: 21 },\\n              animate: { x2: 21 },\\n            }}\\n            x1=\\\"3\\\"\\n            x2=\\\"21\\\"\\n            y1=\\\"6\\\"\\n            y2=\\\"6\\\"\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x2: 15 },\\n              animate: { x2: 19 },\\n            }}\\n            x1=\\\"3\\\"\\n            x2=\\\"15\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"12\\\"\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x2: 17 },\\n              animate: { x2: 12 },\\n            }}\\n            x1=\\\"3\\\"\\n            x2=\\\"17\\\"\\n            y1=\\\"18\\\"\\n            y2=\\\"18\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAlignLeftIcon.displayName = \\\"AlignLeftIcon\\\";\\n\\nexport { AlignLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/align-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"align-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"align-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlignRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlignRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 150,\\n  damping: 15,\\n  mass: 0.3,\\n};\\n\\nconst AlignRightIcon = forwardRef<AlignRightIconHandle, AlignRightIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x1: 3 },\\n              animate: { x1: 3 },\\n            }}\\n            x1=\\\"3\\\"\\n            x2=\\\"21\\\"\\n            y1=\\\"6\\\"\\n            y2=\\\"6\\\"\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x1: 9 },\\n              animate: { x1: 5 },\\n            }}\\n            x1=\\\"9\\\"\\n            x2=\\\"21\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"12\\\"\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x1: 7 },\\n              animate: { x1: 12 },\\n            }}\\n            x1=\\\"7\\\"\\n            x2=\\\"21\\\"\\n            y1=\\\"18\\\"\\n            y2=\\\"18\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAlignRightIcon.displayName = \\\"AlignRightIcon\\\";\\n\\nexport { AlignRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/align-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"align-vertical\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"align-vertical.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AlignVerticalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AlignVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 160,\\n  damping: 17,\\n  mass: 1,\\n};\\n\\nconst AlignVerticalIcon = forwardRef<\\n  AlignVerticalIconHandle,\\n  AlignVerticalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"6\\\"\\n          rx=\\\"2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { scaleY: 1 },\\n            animate: { scaleY: 0.8 },\\n          }}\\n          width=\\\"10\\\"\\n          x=\\\"7\\\"\\n          y=\\\"9\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M22 20H2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: 0, scaleX: 1 },\\n            animate: {\\n              translateY: -2,\\n              scaleX: 0.9,\\n            },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M22 4H2\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: 0, scaleX: 1 },\\n            animate: {\\n              translateY: 2,\\n              scaleX: 0.9,\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nAlignVerticalIcon.displayName = \\\"AlignVerticalIcon\\\";\\n\\nexport { AlignVerticalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/ambulance.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ambulance\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"ambulance.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nexport interface AmbulanceIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AmbulanceIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BODY_VARIANTS: Variants = {\\n  normal: { x: 0, y: 0 },\\n  animate: {\\n    y: [0, -1, 0, -0.5, 0],\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"loop\\\",\\n    },\\n  },\\n};\\n\\nconst WHEEL_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: 360,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"linear\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst SPEED_LINE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 0,\\n    x: 0,\\n    scaleX: 0,\\n  },\\n  animate: (custom: number) => ({\\n    opacity: [0, 0.7, 0.5, 0],\\n    x: [0, -4, -10, -16],\\n    scaleX: [0.2, 1, 0.8, 0.3],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n      delay: custom * 0.08,\\n      times: [0, 0.2, 0.6, 1],\\n    },\\n  }),\\n};\\n\\nconst CROSS_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0.3, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst AmbulanceIcon = forwardRef<AmbulanceIconHandle, AmbulanceIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"animate\\\");\\n        }\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"normal\\\");\\n        }\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={className}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          className=\\\"overflow-visible\\\"\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {[\\n            { y: 8, width: 5, x: 0 },\\n            { y: 11, width: 7, x: -1 },\\n            { y: 14, width: 4, x: 0 },\\n          ].map((line, i) => (\\n            <motion.line\\n              animate={controls}\\n              custom={i}\\n              initial=\\\"normal\\\"\\n              key={`speed-${i}`}\\n              strokeLinecap=\\\"round\\\"\\n              strokeWidth=\\\"2\\\"\\n              variants={SPEED_LINE_VARIANTS}\\n              x1={line.x}\\n              x2={line.x + line.width}\\n              y1={line.y}\\n              y2={line.y}\\n            />\\n          ))}\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={BODY_VARIANTS}\\n          >\\n            <path d=\\\"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2\\\" />\\n            <path d=\\\"M19 18h2a1 1 0 0 0 1-1v-3.28a1 1 0 0 0-.684-.948l-1.923-.641a1 1 0 0 1-.578-.502l-1.539-3.076A1 1 0 0 0 16.382 8H14\\\" />\\n            <path d=\\\"M9 18h6\\\" />\\n\\n            <motion.g\\n              animate={controls}\\n              initial=\\\"normal\\\"\\n              variants={CROSS_VARIANTS}\\n            >\\n              <path d=\\\"M10 10H6\\\" />\\n              <path d=\\\"M8 8v4\\\" />\\n            </motion.g>\\n          </motion.g>\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={BODY_VARIANTS}\\n          >\\n            <motion.circle\\n              animate={controls}\\n              cx=\\\"7\\\"\\n              cy=\\\"18\\\"\\n              initial=\\\"normal\\\"\\n              r=\\\"2\\\"\\n              style={{ transformOrigin: \\\"7px 18px\\\" }}\\n              variants={WHEEL_VARIANTS}\\n            />\\n          </motion.g>\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={BODY_VARIANTS}\\n          >\\n            <motion.circle\\n              animate={controls}\\n              cx=\\\"17\\\"\\n              cy=\\\"18\\\"\\n              initial=\\\"normal\\\"\\n              r=\\\"2\\\"\\n              style={{ transformOrigin: \\\"17px 18px\\\" }}\\n              variants={WHEEL_VARIANTS}\\n            />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAmbulanceIcon.displayName = \\\"AmbulanceIcon\\\";\\n\\nexport { AmbulanceIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/angry.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"angry\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"angry.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AngryIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AngryIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst EYEBROW_ROTATION = 20;\\nconst DURATION = 0.6;\\n\\nconst PATH_VARIANTS_FACE: Variants = {\\n  normal: { scale: 1, rotate: 0 },\\n  animate: {\\n    scale: [1, 1.2, 1.2, 1.2, 1],\\n    rotate: [0, -3, 3, -1, 1, 0],\\n    transition: {\\n      duration: DURATION,\\n      times: [0, 0.2, 0.4, 0.6, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS_LEFT_EYEBROW: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, EYEBROW_ROTATION, 0],\\n    transition: {\\n      duration: DURATION + 0.2,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS_RIGHT_EYEBROW: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, -EYEBROW_ROTATION, 0],\\n    transition: {\\n      duration: DURATION + 0.2,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS_EYE: Variants = {\\n  normal: { scale: 1 },\\n  animate: {\\n    scale: [1, 1.2, 1],\\n    transition: {\\n      duration: DURATION,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS_MOUTH: Variants = {\\n  normal: { translateY: 0 },\\n  animate: {\\n    translateY: [0, -0.5, 0],\\n    transition: {\\n      duration: DURATION,\\n    },\\n  },\\n};\\n\\nconst AngryIcon = forwardRef<AngryIconHandle, AngryIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={PATH_VARIANTS_FACE}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"\\n            variants={PATH_VARIANTS_MOUTH}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7.5 8 10 9\\\"\\n            variants={PATH_VARIANTS_LEFT_EYEBROW}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14 9 2.5-1\\\"\\n            variants={PATH_VARIANTS_RIGHT_EYEBROW}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 10h.01\\\"\\n            variants={PATH_VARIANTS_EYE}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 10h.01\\\"\\n            variants={PATH_VARIANTS_EYE}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAngryIcon.displayName = \\\"AngryIcon\\\";\\n\\nexport { AngryIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/annoyed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"annoyed\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"annoyed.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AnnoyedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AnnoyedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst AnnoyedIcon = forwardRef<AnnoyedIconHandle, AnnoyedIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        transition: { duration: 0.2, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: 1.05,\\n        transition: {\\n          duration: 0.3,\\n          ease: \\\"easeOut\\\",\\n        },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      normal: {\\n        scaleX: 1,\\n        y: 0,\\n        transition: { duration: 0.2, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scaleX: 0.8,\\n        y: 1,\\n        transition: {\\n          duration: 0.3,\\n          ease: \\\"easeOut\\\",\\n        },\\n      },\\n    };\\n\\n    const leftEyebrowVariants: Variants = {\\n      normal: {\\n        rotate: 0,\\n        y: 0,\\n        x: 0,\\n        transition: { duration: 0.2, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        rotate: 15,\\n        y: -1,\\n        x: -0.5,\\n        transition: {\\n          duration: 0.25,\\n          ease: \\\"easeOut\\\",\\n        },\\n      },\\n    };\\n\\n    const rightEyebrowVariants: Variants = {\\n      normal: {\\n        rotate: 0,\\n        y: 0,\\n        x: 0,\\n        transition: { duration: 0.2, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        rotate: 15,\\n        y: -1,\\n        x: 0.5,\\n        transition: {\\n          duration: 0.25,\\n          ease: \\\"easeOut\\\",\\n          delay: 0.05,\\n        },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 15h8\\\"\\n            initial=\\\"normal\\\"\\n            variants={mouthVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 9h2\\\"\\n            initial=\\\"normal\\\"\\n            variants={leftEyebrowVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 9h2\\\"\\n            initial=\\\"normal\\\"\\n            variants={rightEyebrowVariants}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAnnoyedIcon.displayName = \\\"AnnoyedIcon\\\";\\n\\nexport { AnnoyedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/archive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"archive\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"archive.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArchiveIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArchiveIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RECT_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n    transition: {\\n      duration: 0.2,\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n  animate: {\\n    translateY: -1.5,\\n    transition: {\\n      duration: 0.2,\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\\\" },\\n  animate: { d: \\\"M4 11v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V11\\\" },\\n};\\n\\nconst SECONDARY_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M10 12h4\\\" },\\n  animate: { d: \\\"M10 15h4\\\" },\\n};\\n\\nconst ArchiveIcon = forwardRef<ArchiveIconHandle, ArchiveIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"5\\\"\\n            initial=\\\"normal\\\"\\n            rx=\\\"1\\\"\\n            variants={RECT_VARIANTS}\\n            width=\\\"20\\\"\\n            x=\\\"2\\\"\\n            y=\\\"3\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 12h4\\\"\\n            variants={SECONDARY_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArchiveIcon.displayName = \\\"ArchiveIcon\\\";\\n\\nexport { ArchiveIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-down-dash.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-down-dash\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-down-dash.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigDownDashIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigDownDashIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DASH_VARIANTS: Variants = {\\n  normal: { translateY: 0 },\\n  animate: {\\n    translateY: [0, 1, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { translateY: 0 },\\n  animate: {\\n    translateY: [0, 3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigDownDashIcon = forwardRef<\\n  ArrowBigDownDashIconHandle,\\n  ArrowBigDownDashIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path animate={controls} d=\\\"M15 5H9\\\" variants={DASH_VARIANTS} />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M15 9v3h4l-7 7-7-7h4V9z\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigDownDashIcon.displayName = \\\"ArrowBigDownDashIcon\\\";\\n\\nexport { ArrowBigDownDashIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M15 6v6h4l-7 7-7-7h4V6h6z\\\", translateY: 0 },\\n  animate: {\\n    d: \\\"M15 6v6h4l-7 7-7-7h4V6h6z\\\",\\n    translateY: [0, +3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigDownIcon = forwardRef<\\n  ArrowBigDownIconHandle,\\n  ArrowBigDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M15 6v6h4l-7 7-7-7h4V6h6z\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigDownIcon.displayName = \\\"ArrowBigDownIcon\\\";\\n\\nexport { ArrowBigDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-left-dash.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-left-dash\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-left-dash.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigLeftDashIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigLeftDashIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DASH_VARIANTS: Variants = {\\n  normal: { translateX: 0 },\\n  animate: {\\n    translateX: [0, -1, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { translateX: 0 },\\n  animate: {\\n    translateX: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigLeftDashIcon = forwardRef<\\n  ArrowBigLeftDashIconHandle,\\n  ArrowBigLeftDashIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path animate={controls} d=\\\"M19 15V9\\\" variants={DASH_VARIANTS} />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M15 15h-3v4l-7-7 7-7v4h3v6z\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigLeftDashIcon.displayName = \\\"ArrowBigLeftDashIcon\\\";\\n\\nexport { ArrowBigLeftDashIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M18 15h-6v4l-7-7 7-7v4h6v6z\\\", translateX: 0 },\\n  animate: {\\n    d: \\\"M18 15h-6v4l-7-7 7-7v4h6v6z\\\",\\n    translateX: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigLeftIcon = forwardRef<\\n  ArrowBigLeftIconHandle,\\n  ArrowBigLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 15h-6v4l-7-7 7-7v4h6v6z\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigLeftIcon.displayName = \\\"ArrowBigLeftIcon\\\";\\n\\nexport { ArrowBigLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-right-dash.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-right-dash\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-right-dash.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigRightDashIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigRightDashIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DASH_VARIANTS: Variants = {\\n  normal: { translateX: 0 },\\n  animate: {\\n    translateX: [0, 1, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { translateX: 0 },\\n  animate: {\\n    translateX: [0, 3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigRightDashIcon = forwardRef<\\n  ArrowBigRightDashIconHandle,\\n  ArrowBigRightDashIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path animate={controls} d=\\\"M5 9v6\\\" variants={DASH_VARIANTS} />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 9h3V5l7 7-7 7v-4H9V9z\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigRightDashIcon.displayName = \\\"ArrowBigRightDashIcon\\\";\\n\\nexport { ArrowBigRightDashIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M6 9h6V5l7 7-7 7v-4H6V9z\\\", translateX: 0 },\\n  animate: {\\n    d: \\\"M6 9h6V5l7 7-7 7v-4H6V9z\\\",\\n    translateX: [0, 3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigRightIcon = forwardRef<\\n  ArrowBigRightIconHandle,\\n  ArrowBigRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M6 9h6V5l7 7-7 7v-4H6V9z\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigRightIcon.displayName = \\\"ArrowBigRightIcon\\\";\\n\\nexport { ArrowBigRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-up-dash.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-up-dash\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-up-dash.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigUpDashIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigUpDashIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DASH_VARIANTS: Variants = {\\n  normal: { translateY: 0 },\\n  animate: {\\n    translateY: [0, -1, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { translateY: 0 },\\n  animate: {\\n    translateY: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigUpDashIcon = forwardRef<\\n  ArrowBigUpDashIconHandle,\\n  ArrowBigUpDashIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path animate={controls} d=\\\"M9 19h6\\\" variants={DASH_VARIANTS} />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 15v-3H5l7-7 7 7h-4v3H9z\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowBigUpDashIcon.displayName = \\\"ArrowBigUpDashIcon\\\";\\n\\nexport { ArrowBigUpDashIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-big-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-big-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-big-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowBigUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowBigUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M9 18v-6H5l7-7 7 7h-4v6H9z\\\", translateY: 0 },\\n  animate: {\\n    d: \\\"M9 18v-6H5l7-7 7 7h-4v6H9z\\\",\\n    translateY: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowBigUpIcon = forwardRef<ArrowBigUpIconHandle, ArrowBigUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 18v-6H5l7-7 7 7h-4v6H9z\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowBigUpIcon.displayName = \\\"ArrowBigUpIcon\\\";\\n\\nexport { ArrowBigUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-0-1.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-0-1\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-0-1.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDown01IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDown01IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SWAP_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 240,\\n  damping: 24,\\n};\\n\\nconst SWAP_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n  },\\n  animate: (custom: number) => ({\\n    translateY: custom * 10,\\n  }),\\n};\\n\\nconst ArrowDown01Icon = forwardRef<ArrowDown01IconHandle, ArrowDown01IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m3 16 4 4 4-4\\\" />\\n          <path d=\\\"M7 20V4\\\" />\\n          <motion.rect\\n            animate={controls}\\n            custom={1}\\n            height=\\\"6\\\"\\n            initial=\\\"normal\\\"\\n            ry=\\\"2\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n            width=\\\"4\\\"\\n            x=\\\"15\\\"\\n            y=\\\"4\\\"\\n          />\\n          <motion.g\\n            animate={controls}\\n            custom={-1}\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          >\\n            <path d=\\\"M17 20v-6h-2\\\" />\\n            <path d=\\\"M15 20h4\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowDown01Icon.displayName = \\\"ArrowDown01con\\\";\\n\\nexport { ArrowDown01Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-1-0.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-1-0\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-1-0.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDown10IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDown10IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SWAP_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 240,\\n  damping: 24,\\n};\\n\\nconst SWAP_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n  },\\n  animate: (custom: number) => ({\\n    translateY: custom * 10,\\n  }),\\n};\\n\\nconst ArrowDown10Icon = forwardRef<ArrowDown10IconHandle, ArrowDown10IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m3 16 4 4 4-4\\\" />\\n          <path d=\\\"M7 20V4\\\" />\\n          <motion.g\\n            animate={controls}\\n            custom={1}\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          >\\n            <path d=\\\"M17 10V4h-2\\\" />\\n            <path d=\\\"M15 10h4\\\" />\\n          </motion.g>\\n          <motion.rect\\n            animate={controls}\\n            custom={-1}\\n            height=\\\"6\\\"\\n            initial=\\\"normal\\\"\\n            ry=\\\"2\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n            width=\\\"4\\\"\\n            x=\\\"15\\\"\\n            y=\\\"14\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowDown10Icon.displayName = \\\"ArrowDown10Icon\\\";\\n\\nexport { ArrowDown10Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-a-z.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-a-z\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-a-z.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDownAZIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDownAZIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SWAP_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 240,\\n  damping: 24,\\n};\\n\\nconst SWAP_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n  },\\n  animate: (custom: number) => ({\\n    translateY: custom * 10,\\n  }),\\n};\\n\\nconst ArrowDownAZIcon = forwardRef<ArrowDownAZIconHandle, ArrowDownAZIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m3 16 4 4 4-4\\\" />\\n          <path d=\\\"M7 20V4\\\" />\\n          <motion.g\\n            animate={controls}\\n            custom={1}\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          >\\n            <path d=\\\"M20 8h-5\\\" />\\n            <path d=\\\"M15 10V6.5a2.5 2.5 0 0 1 5 0V10\\\" />\\n          </motion.g>\\n          <motion.path\\n            animate={controls}\\n            custom={-1}\\n            d=\\\"M15 14h5l-5 6h5\\\"\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowDownAZIcon.displayName = \\\"ArrowDownAZIcon\\\";\\n\\nexport { ArrowDownAZIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDownLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDownLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HEAD_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0 },\\n  animate: {\\n    translateX: [0, 3, 0],\\n    translateY: [0, -3, 0],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SHAFT_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0, scale: 1 },\\n  animate: {\\n    translateX: [0, 3, 0],\\n    translateY: [0, -3, 0],\\n    scale: [1, 0.85, 1],\\n    originX: 1,\\n    originY: 1,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ArrowDownLeftIcon = forwardRef<\\n  ArrowDownLeftIconHandle,\\n  ArrowDownLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n      onMouseEnter?.(e);\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n      onMouseLeave?.(e);\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M17 17H7V7\\\"\\n          variants={HEAD_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M7 17 L12 12\\\"\\n          variants={SHAFT_VARIANTS}\\n        />\\n        <path d=\\\"M17 7 L12 12\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowDownLeftIcon.displayName = \\\"ArrowDownLeftIcon\\\";\\n\\nexport { ArrowDownLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDownRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDownRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HEAD_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0 },\\n  animate: {\\n    translateX: [0, -3, 0],\\n    translateY: [0, -3, 0],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SHAFT_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0, scale: 1 },\\n  animate: {\\n    translateX: [0, -3, 0],\\n    translateY: [0, -3, 0],\\n    scale: [1, 0.85, 1],\\n    originX: 1,\\n    originY: 1,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ArrowDownRightIcon = forwardRef<\\n  ArrowDownRightIconHandle,\\n  ArrowDownRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n      onMouseEnter?.(e);\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n      onMouseLeave?.(e);\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M7 7 L17 17\\\"\\n          variants={SHAFT_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M17 7v10H7\\\"\\n          variants={HEAD_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M17 17 L10 17\\\"\\n          variants={HEAD_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowDownRightIcon.displayName = \\\"ArrowDownRightIcon\\\";\\n\\nexport { ArrowDownRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down-z-a.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down-z-a\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down-z-a.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDownZAIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDownZAIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SWAP_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 240,\\n  damping: 24,\\n};\\n\\nconst SWAP_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n  },\\n  animate: (custom: number) => ({\\n    translateY: custom * 10,\\n  }),\\n};\\n\\nconst ArrowDownZAIcon = forwardRef<ArrowDownZAIconHandle, ArrowDownZAIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m3 16 4 4 4-4\\\" />\\n          <path d=\\\"M7 20V4\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M15 4h5l-5 6h5\\\"\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          />\\n          <motion.g\\n            animate={controls}\\n            custom={-1}\\n            initial=\\\"normal\\\"\\n            transition={SWAP_TRANSITION}\\n            variants={SWAP_VARIANTS}\\n          >\\n            <path d=\\\"M20 18h-5\\\" />\\n            <path d=\\\"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowDownZAIcon.displayName = \\\"ArrowDownZAIcon\\\";\\n\\nexport { ArrowDownZAIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m19 12-7 7-7-7\\\", translateY: 0 },\\n  animate: {\\n    d: \\\"m19 12-7 7-7-7\\\",\\n    translateY: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M12 5v14\\\" },\\n  animate: {\\n    d: [\\\"M12 5v14\\\", \\\"M12 5v9\\\", \\\"M12 5v14\\\"],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowDownIcon = forwardRef<ArrowDownIconHandle, ArrowDownIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m19 12-7 7-7-7\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 5v14\\\"\\n            variants={SECOND_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowDownIcon.displayName = \\\"ArrowDownIcon\\\";\\n\\nexport { ArrowDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m12 19-7-7 7-7\\\", translateX: 0 },\\n  animate: {\\n    d: \\\"m12 19-7-7 7-7\\\",\\n    translateX: [0, 3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M19 12H5\\\" },\\n  animate: {\\n    d: [\\\"M19 12H5\\\", \\\"M19 12H10\\\", \\\"M19 12H5\\\"],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowLeftIcon = forwardRef<ArrowLeftIconHandle, ArrowLeftIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 19-7-7 7-7\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19 12H5\\\"\\n            variants={SECOND_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowLeftIcon.displayName = \\\"ArrowLeftIcon\\\";\\n\\nexport { ArrowLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M5 12h14\\\" },\\n  animate: {\\n    d: [\\\"M5 12h14\\\", \\\"M5 12h9\\\", \\\"M5 12h14\\\"],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst SECONDARY_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m12 5 7 7-7 7\\\", translateX: 0 },\\n  animate: {\\n    d: \\\"m12 5 7 7-7 7\\\",\\n    translateX: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowRightIcon = forwardRef<ArrowRightIconHandle, ArrowRightIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 12h14\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 5 7 7-7 7\\\"\\n            variants={SECONDARY_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowRightIcon.displayName = \\\"ArrowRightIcon\\\";\\n\\nexport { ArrowRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-up-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-up-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-up-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowUpLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowUpLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    translateX: 0,\\n    translateY: 0,\\n  },\\n  animate: {\\n    scale: [1, 0.85, 1],\\n    translateX: [0, 4, 0],\\n    translateY: [0, 4, 0],\\n    originX: 0,\\n    originY: 0,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ArrowUpLeftIcon = forwardRef<ArrowUpLeftIconHandle, ArrowUpLeftIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n            <path d=\\\"M7 7H17\\\" />\\n            <path d=\\\"M7 7V17\\\" />\\n            <path d=\\\"M17 17L7 7\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowUpLeftIcon.displayName = \\\"ArrowUpLeftIcon\\\";\\n\\nexport { ArrowUpLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-up-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-up-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-up-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowUpRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowUpRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    translateX: 0,\\n    translateY: 0,\\n  },\\n  animate: {\\n    scale: [1, 0.85, 1],\\n    translateX: [0, -4, 0],\\n    translateY: [0, 4, 0],\\n    originX: 1,\\n    originY: 0,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ArrowUpRightIcon = forwardRef<\\n  ArrowUpRightIconHandle,\\n  ArrowUpRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n      onMouseEnter?.(e);\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n      onMouseLeave?.(e);\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n          <path d=\\\"M7 7H17\\\" />\\n          <path d=\\\"M17 7V17\\\" />\\n          <path d=\\\"M7 17L17 7\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nArrowUpRightIcon.displayName = \\\"ArrowUpRightIcon\\\";\\n\\nexport { ArrowUpRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/arrow-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"arrow-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"arrow-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ArrowUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m5 12 7-7 7 7\\\", translateY: 0 },\\n  animate: {\\n    d: \\\"m5 12 7-7 7 7\\\",\\n    translateY: [0, 3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M12 19V5\\\" },\\n  animate: {\\n    d: [\\\"M12 19V5\\\", \\\"M12 19V10\\\", \\\"M12 19V5\\\"],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst ArrowUpIcon = forwardRef<ArrowUpIconHandle, ArrowUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m5 12 7-7 7 7\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 19V5\\\"\\n            variants={SECOND_PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nArrowUpIcon.displayName = \\\"ArrowUpIcon\\\";\\n\\nexport { ArrowUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/at-sign.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"at-sign\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"at-sign.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AtSignIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AtSignIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst AtSignIcon = forwardRef<AtSignIconHandle, AtSignIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"4\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAtSignIcon.displayName = \\\"AtSignIcon\\\";\\n\\nexport { AtSignIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/atom.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"atom\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"atom.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AtomIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AtomIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: (custom: number) => ({\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n  animate: (custom: number) => ({\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n};\\n\\nconst AtomIcon = forwardRef<AtomIconHandle, AtomIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"1\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.3}\\n            d=\\\"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.6}\\n            d=\\\"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAtomIcon.displayName = \\\"AtomIcon\\\";\\n\\nexport { AtomIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/attach-file.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"attach-file\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"attach-file.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AttachFileIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AttachFileIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.1,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst AttachFileIcon = forwardRef<AttachFileIconHandle, AttachFileIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 7.90909V16C6 19.3137 8.68629 22 12 22V22C15.3137 22 18 19.3137 18 16V6C18 3.79086 16.2091 2 14 2V2C11.7909 2 10 3.79086 10 6V15.1818C10 16.2864 10.8954 17.1818 12 17.1818V17.1818C13.1046 17.1818 14 16.2864 14 15.1818V8\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAttachFileIcon.displayName = \\\"AttachFileIcon\\\";\\n\\nexport { AttachFileIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/audio-lines.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"audio-lines\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"audio-lines.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AudioLinesIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AudioLinesIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst AudioLinesIcon = forwardRef<AudioLinesIconHandle, AudioLinesIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2 10v3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 6v11\\\"\\n            variants={{\\n              normal: { d: \\\"M6 6v11\\\" },\\n              animate: {\\n                d: [\\\"M6 6v11\\\", \\\"M6 10v3\\\", \\\"M6 6v11\\\"],\\n                transition: {\\n                  duration: 1.5,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 3v18\\\"\\n            variants={{\\n              normal: { d: \\\"M10 3v18\\\" },\\n              animate: {\\n                d: [\\\"M10 3v18\\\", \\\"M10 9v5\\\", \\\"M10 3v18\\\"],\\n                transition: {\\n                  duration: 1,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 8v7\\\"\\n            variants={{\\n              normal: { d: \\\"M14 8v7\\\" },\\n              animate: {\\n                d: [\\\"M14 8v7\\\", \\\"M14 6v11\\\", \\\"M14 8v7\\\"],\\n                transition: {\\n                  duration: 0.8,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 5v13\\\"\\n            variants={{\\n              normal: { d: \\\"M18 5v13\\\" },\\n              animate: {\\n                d: [\\\"M18 5v13\\\", \\\"M18 7v9\\\", \\\"M18 5v13\\\"],\\n                transition: {\\n                  duration: 1.5,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                },\\n              },\\n            }}\\n          />\\n          <path d=\\\"M22 10v3\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAudioLinesIcon.displayName = \\\"AudioLinesIcon\\\";\\n\\nexport { AudioLinesIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/axe.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"axe\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"axe.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface AxeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface AxeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst AXE_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    rotate: [0, -20, 25, 0],\\n    transition: {\\n      duration: 0.8,\\n      times: [0, 0.6, 0.8, 1],\\n      ease: [\\\"easeInOut\\\", \\\"easeOut\\\", \\\"easeOut\\\"],\\n    },\\n  },\\n};\\n\\nconst AxeIcon = forwardRef<AxeIconHandle, AxeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"0% 100%\\\", transformBox: \\\"fill-box\\\" }}\\n          variants={AXE_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m14 12-8.381 8.38a1 1 0 0 1-3.001-3L11 9\\\" />\\n          <path d=\\\"M15 15.5a.5.5 0 0 0 .5.5A6.5 6.5 0 0 0 22 9.5a.5.5 0 0 0-.5-.5h-1.672a2 2 0 0 1-1.414-.586l-5.062-5.062a1.205 1.205 0 0 0-1.704 0L9.352 5.648a1.205 1.205 0 0 0 0 1.704l5.062 5.062A2 2 0 0 1 15 13.828z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nAxeIcon.displayName = \\\"AxeIcon\\\";\\n\\nexport { AxeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/badge-alert.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-alert\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"badge-alert.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BadgeAlertIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BadgeAlertIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ICON_VARIANTS: Variants = {\\n  normal: { scale: 1, rotate: 0 },\\n  animate: {\\n    scale: [1, 1.1, 1.1, 1.1, 1],\\n    rotate: [0, -3, 3, -2, 2, 0],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.2, 0.4, 0.6, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\nconst BadgeAlertIcon = forwardRef<BadgeAlertIconHandle, BadgeAlertIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={ICON_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\\\" />\\n          <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"8\\\" y2=\\\"12\\\" />\\n          <line x1=\\\"12\\\" x2=\\\"12.01\\\" y1=\\\"16\\\" y2=\\\"16\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBadgeAlertIcon.displayName = \\\"BadgeAlertIcon\\\";\\n\\nexport { BadgeAlertIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/badge-percent.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"badge-percent\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"badge-percent.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BadgePercentIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BadgePercentIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 60,\\n      damping: 10,\\n      duration: 0.5,\\n    },\\n  },\\n  animate: {\\n    rotate: 180,\\n    transition: {\\n      delay: 0.1,\\n      type: \\\"spring\\\",\\n      stiffness: 80,\\n      damping: 13,\\n    },\\n  },\\n};\\n\\nconst BadgePercentIcon = forwardRef<\\n  BadgePercentIconHandle,\\n  BadgePercentIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <path d=\\\"m15 9-6 6\\\" />\\n        <path d=\\\"M9 9h.01\\\" />\\n        <path d=\\\"M15 15h.01\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBadgePercentIcon.displayName = \\\"BadgePercentIcon\\\";\\n\\nexport { BadgePercentIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/ban.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ban\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"ban.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BanIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BanIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  slash: () => ({\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  }),\\n};\\n\\nconst BanIcon = forwardRef<BanIconHandle, BanIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          controls.start(\\\"animate\\\");\\n          controls.start(\\\"slash\\\", { delay: 0.5 });\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n          controls.start(\\\"slash\\\", { delay: 0.5 });\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"10\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m4.9 4.9 14.2 14.2\\\"\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBanIcon.displayName = \\\"BanIcon\\\";\\n\\nexport { BanIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/banana.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"banana\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"banana.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BananaIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BananaIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.3,\\n  delay: 0.1,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: custom * 0.1,\\n    },\\n  }),\\n};\\n\\nconst BananaIcon = forwardRef<BananaIconHandle, BananaIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5\\\"\\n            transition={TRANSITION}\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z\\\"\\n            transition={TRANSITION}\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBananaIcon.displayName = \\\"BananaIcon\\\";\\n\\nexport { BananaIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-charging.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-charging\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-charging.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryChargingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryChargingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BatteryChargingIcon = forwardRef<\\n  BatteryChargingIconHandle,\\n  BatteryChargingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935\\\" />\\n        <path d=\\\"M22 14v-4\\\" />\\n        <path d=\\\"M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m11 7-3 5h4l-3 5\\\"\\n          initial=\\\"normal\\\"\\n          style={{ originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n          variants={{\\n            normal: { scale: 1, opacity: 1 },\\n            animate: {\\n              scale: [1, 1.2, 1],\\n              opacity: [1, 0.8, 1],\\n              transition: {\\n                duration: 0.8,\\n                repeat: Number.POSITIVE_INFINITY,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBatteryChargingIcon.displayName = \\\"BatteryChargingIcon\\\";\\n\\nexport { BatteryChargingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-full.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-full\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-full.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryFullIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryFullIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  initial: { opacity: 1 },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      duration: 0.6,\\n      delay: i * 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  }),\\n};\\n\\nconst BatteryFullIcon = forwardRef<BatteryFullIconHandle, BatteryFullIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"initial\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"initial\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"10\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"16\\\" x=\\\"2\\\" y=\\\"7\\\" />\\n          <line x1=\\\"22\\\" x2=\\\"22\\\" y1=\\\"11\\\" y2=\\\"13\\\" />\\n          <motion.line\\n            animate={controls}\\n            custom={0}\\n            initial=\\\"initial\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"6\\\"\\n            x2=\\\"6\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"13\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={1}\\n            initial=\\\"initial\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"10\\\"\\n            x2=\\\"10\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"13\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={2}\\n            initial=\\\"initial\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"14\\\"\\n            x2=\\\"14\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"13\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBatteryFullIcon.displayName = \\\"BatteryFullIcon\\\";\\n\\nexport { BatteryFullIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-low.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-low\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-low.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryLowIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryLowIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  initial: { opacity: 1 },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      duration: 0.6,\\n      delay: i * 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  }),\\n};\\n\\nconst BatteryLowIcon = forwardRef<BatteryLowIconHandle, BatteryLowIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"initial\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"initial\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"10\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"16\\\" x=\\\"2\\\" y=\\\"7\\\" />\\n          <line x1=\\\"22\\\" x2=\\\"22\\\" y1=\\\"11\\\" y2=\\\"13\\\" />\\n          <motion.line\\n            animate={controls}\\n            custom={0}\\n            initial=\\\"initial\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"6\\\"\\n            x2=\\\"6\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"13\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBatteryLowIcon.displayName = \\\"BatteryLowIcon\\\";\\n\\nexport { BatteryLowIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-medium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-medium\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-medium.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryMediumIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryMediumIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  initial: { opacity: 1 },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      duration: 0.6,\\n      delay: i * 0.4,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  }),\\n};\\n\\nconst BatteryMediumIcon = forwardRef<\\n  BatteryMediumIconHandle,\\n  BatteryMediumIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start(\\\"fadeOut\\\");\\n        controls.start(\\\"fadeIn\\\");\\n      },\\n      stopAnimation: () => controls.start(\\\"initial\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start(\\\"fadeOut\\\");\\n        controls.start(\\\"fadeIn\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"initial\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"10\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"16\\\" x=\\\"2\\\" y=\\\"7\\\" />\\n        <line x1=\\\"22\\\" x2=\\\"22\\\" y1=\\\"11\\\" y2=\\\"13\\\" />\\n        <motion.line\\n          animate={controls}\\n          custom={0}\\n          initial=\\\"initial\\\"\\n          variants={LINE_VARIANTS}\\n          x1=\\\"6\\\"\\n          x2=\\\"6\\\"\\n          y1=\\\"11\\\"\\n          y2=\\\"13\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          custom={1}\\n          initial=\\\"initial\\\"\\n          variants={LINE_VARIANTS}\\n          x1=\\\"10\\\"\\n          x2=\\\"10\\\"\\n          y1=\\\"11\\\"\\n          y2=\\\"13\\\"\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nBatteryMediumIcon.displayName = \\\"BatteryMediumIcon\\\";\\n\\nexport { BatteryMediumIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryPlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryPlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BatteryPlusIcon = forwardRef<BatteryPlusIconHandle, BatteryPlusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.543 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.605\\\" />\\n          <path d=\\\"M22 14v-4\\\" />\\n          <path d=\\\"M7.606 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.606\\\" />\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n            variants={{\\n              normal: { opacity: 1, scale: 1 },\\n              animate: {\\n                opacity: [1, 0.5, 1],\\n                scale: [1, 0.8, 1.2, 1],\\n                transition: {\\n                  duration: 0.5,\\n                  ease: \\\"easeInOut\\\",\\n                },\\n              },\\n            }}\\n          >\\n            <path d=\\\"M10 9v6\\\" />\\n            <path d=\\\"M7 12h6\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBatteryPlusIcon.displayName = \\\"BatteryPlusIcon\\\";\\n\\nexport { BatteryPlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery-warning.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery-warning\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery-warning.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryWarningIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryWarningIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BatteryWarningIcon = forwardRef<\\n  BatteryWarningIconHandle,\\n  BatteryWarningIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M14 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2\\\" />\\n        <path d=\\\"M22 14v-4\\\" />\\n        <path d=\\\"M6 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2\\\" />\\n\\n        <motion.g\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          style={{ originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n          variants={{\\n            normal: { opacity: 1, scale: 1 },\\n            animate: {\\n              opacity: [1, 0.4, 1],\\n              scale: [1, 1.1, 1],\\n              transition: {\\n                duration: 0.8,\\n                repeat: Number.POSITIVE_INFINITY,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n        >\\n          <path d=\\\"M10 17h.01\\\" />\\n          <path d=\\\"M10 7v6\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBatteryWarningIcon.displayName = \\\"BatteryWarningIcon\\\";\\n\\nexport { BatteryWarningIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/battery.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"battery\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"battery.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BatteryIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BatteryIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BatteryIcon = forwardRef<BatteryIconHandle, BatteryIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"16\\\" x=\\\"2\\\" y=\\\"6\\\" />\\n          <path d=\\\"M22 14v-4\\\" />\\n\\n          <motion.rect\\n            animate={controls}\\n            fill=\\\"currentColor\\\"\\n            height=\\\"8\\\"\\n            initial=\\\"normal\\\"\\n            rx=\\\"1\\\"\\n            stroke=\\\"none\\\"\\n            variants={{\\n              normal: { width: 0, opacity: 0 },\\n              animate: {\\n                width: 12,\\n                opacity: 1,\\n                transition: { duration: 0.4, ease: \\\"easeOut\\\" },\\n              },\\n            }}\\n            x=\\\"4\\\"\\n            y=\\\"8\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBatteryIcon.displayName = \\\"BatteryIcon\\\";\\n\\nexport { BatteryIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bell-electric.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bell-electric\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bell-electric.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BellElectricIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BellElectricIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BellElectricIcon = forwardRef<\\n  BellElectricIconHandle,\\n  BellElectricIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        style={{ transformBox: \\\"fill-box\\\", transformOrigin: \\\"50% 50%\\\" }}\\n        transition={{ duration: 0.9 }}\\n        variants={{\\n          normal: { rotate: 0, translateX: 0, translateY: 0 },\\n          animate: {\\n            rotate: [0, -12, 12, -8, 8, 0],\\n            translateX: [0, -1.5, 1.5, -1, 1, 0],\\n            translateY: [0, -1, 1, -0.5, 0.5, 0],\\n          },\\n        }}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M18.518 17.347A7 7 0 0 1 14 19\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18.8 4A11 11 0 0 1 20 9\\\"\\n          style={{ transformBox: \\\"fill-box\\\", originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n          transition={{ duration: 0.9 }}\\n          variants={{\\n            normal: { translateX: 0, translateY: 0, rotate: 0 },\\n            animate: {\\n              translateX: [0, -0.8, 0.8, -0.6, 0.6, 0],\\n              translateY: [0, -0.5, 0.5, -0.3, 0.3, 0],\\n              rotate: [0, -6, 6, -4, 4, 0],\\n            },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 9h.01\\\"\\n          style={{ transformBox: \\\"fill-box\\\", originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n          transition={{ duration: 0.75 }}\\n          variants={{\\n            normal: { translateX: 0, translateY: 0, rotate: 0, scale: 1 },\\n            animate: {\\n              translateX: [0, -1.6, 1.6, -1.2, 1.2, 0],\\n              translateY: [0, -1.2, 1.2, -0.8, 0.8, 0],\\n              rotate: [0, -10, 10, -7, 7, 0],\\n              scale: [1, 1.08, 0.95, 1.06, 0.98, 1],\\n            },\\n          }}\\n        />\\n        <circle cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\" />\\n        <rect height=\\\"6\\\" rx=\\\"2\\\" width=\\\"10\\\" x=\\\"4\\\" y=\\\"16\\\" />\\n        <circle cx=\\\"20\\\" cy=\\\"16\\\" r=\\\"2\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nBellElectricIcon.displayName = \\\"BellElectricIcon\\\";\\n\\nexport { BellElectricIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bell.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bell\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bell.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BellIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BellIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: [0, -10, 10, -10, 0] },\\n};\\n\\nconst BellIcon = forwardRef<BellIconHandle, BellIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 0.5,\\n            ease: \\\"easeInOut\\\",\\n          }}\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\\\" />\\n          <path d=\\\"M10.3 21a1.94 1.94 0 0 0 3.4 0\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBellIcon.displayName = \\\"BellIcon\\\";\\n\\nexport { BellIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/blocks.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"blocks\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"blocks.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BlocksIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BlocksIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0 },\\n  animate: { translateX: -4, translateY: 4 },\\n};\\n\\nconst BlocksIcon = forwardRef<BlocksIconHandle, BlocksIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 3h7v7h-7z\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBlocksIcon.displayName = \\\"BlocksIcon\\\";\\n\\nexport { BlocksIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bluetooth-connected.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bluetooth-connected\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bluetooth-connected.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BluetoothConnectedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BluetoothConnectedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1, 0.5, 1],\\n    transition: {\\n      duration: 0.3,\\n      delay: 0.2,\\n    },\\n  },\\n};\\n\\nconst BluetoothConnectedIcon = forwardRef<\\n  BluetoothConnectedIconHandle,\\n  BluetoothConnectedIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 7 10 10-5 5V2l5 5L7 17\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.line\\n          animate={controls}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n              transition: {\\n                duration: 0.4,\\n              },\\n            },\\n          }}\\n          x1=\\\"18\\\"\\n          x2=\\\"21\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [-1, 0],\\n              transition: {\\n                duration: 0.2,\\n              },\\n            },\\n          }}\\n          x1=\\\"3\\\"\\n          x2=\\\"6\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBluetoothConnectedIcon.displayName = \\\"BluetoothConnectedIcon\\\";\\n\\nexport { BluetoothConnectedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bluetooth-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bluetooth-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bluetooth-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BluetoothOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BluetoothOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst OFFLINE_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n  },\\n};\\n\\nconst BluetoothOffIcon = forwardRef<\\n  BluetoothOffIconHandle,\\n  BluetoothOffIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m17 17-5 5V12l-5 5\\\"\\n          transition={{\\n            duration: 0.3,\\n          }}\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m2 2 20 20\\\"\\n          transition={{\\n            duration: 0.2,\\n            delay: 0.3,\\n          }}\\n          variants={OFFLINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M14.5 9.5 17 7l-5-5v4.5\\\"\\n          transition={{\\n            duration: 0.3,\\n          }}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBluetoothOffIcon.displayName = \\\"BluetoothOffIcon\\\";\\n\\nexport { BluetoothOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bluetooth-searching.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bluetooth-searching\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bluetooth-searching.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BluetoothSearchingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BluetoothSearchingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    transition: {\\n      repeat: 0,\\n    },\\n  },\\n  animate: {\\n    scale: [0, 1, 0.8],\\n  },\\n};\\n\\nconst SECOND_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0.8, 1],\\n    transition: { repeat: Number.POSITIVE_INFINITY },\\n  },\\n};\\n\\nconst BluetoothSearchingIcon = forwardRef<\\n  BluetoothSearchingIconHandle,\\n  BluetoothSearchingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 7 10 10-5 5V2l5 5L7 17\\\"\\n          variants={SECOND_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M20.83 14.83a4 4 0 0 0 0-5.66\\\"\\n          transition={{\\n            duration: 0.6,\\n            delay: 0.2,\\n            repeat: Number.POSITIVE_INFINITY,\\n          }}\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 12h.01\\\"\\n          transition={{\\n            duration: 0.6,\\n            repeat: Number.POSITIVE_INFINITY,\\n          }}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBluetoothSearchingIcon.displayName = \\\"BluetoothSearchingIcon\\\";\\n\\nexport { BluetoothSearchingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bluetooth.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bluetooth\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bluetooth.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BluetoothIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BluetoothIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst BluetoothIcon = forwardRef<BluetoothIconHandle, BluetoothIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m7 7 10 10-5 5V2l5 5L7 17\\\"\\n            transition={{ duration: 0.3, ease: \\\"easeInOut\\\" }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14.5 9.5 17 7l-5-5v4.5\\\"\\n            transition={{ duration: 0.3, ease: \\\"easeInOut\\\" }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBluetoothIcon.displayName = \\\"BluetoothIcon\\\";\\n\\nexport { BluetoothIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bold.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bold\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bold.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BoldIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BoldIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    strokeWidth: 2,\\n  },\\n  animate: {\\n    strokeWidth: 3.5,\\n  },\\n};\\n\\nconst BoldIcon = forwardRef<BoldIconHandle, BoldIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\\\"\\n            transition={{ duration: 0.6 }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBoldIcon.displayName = \\\"BoldIcon\\\";\\n\\nexport { BoldIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bone.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bone\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bone.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BoneIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BoneIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, -8, 8, -6, 0],\\n    transition: {\\n      ease: \\\"circIn\\\",\\n      rotate: {\\n        duration: 0.5,\\n      },\\n    },\\n  },\\n};\\n\\nconst BoneIcon = forwardRef<BoneIconHandle, BoneIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBoneIcon.displayName = \\\"BoneIcon\\\";\\n\\nexport { BoneIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/book-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"book-text\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"book-text.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookTextIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookTextIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BookTextIcon = forwardRef<BookTextIconHandle, BookTextIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            animate: {\\n              scale: [1, 1.04, 1],\\n              rotate: [0, -8, 8, -8, 0],\\n              y: [0, -2, 0],\\n              transition: {\\n                duration: 0.6,\\n                ease: \\\"easeInOut\\\",\\n                times: [0, 0.2, 0.5, 0.8, 1],\\n              },\\n            },\\n            normal: {\\n              scale: 1,\\n              rotate: 0,\\n              y: 0,\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\\\" />\\n          <path d=\\\"M8 11h8\\\" />\\n          <path d=\\\"M8 7h6\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBookTextIcon.displayName = \\\"BookTextIcon\\\";\\n\\nexport { BookTextIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bookmark-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bookmark-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bookmark-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookmarkCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookmarkCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BOOKMARK_VARIANTS: Variants = {\\n  normal: { scaleY: 1, scaleX: 1 },\\n  animate: {\\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: { opacity: 1, strokeDashoffset: 0 },\\n  animate: {\\n    strokeDashoffset: [1, 0],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst BookmarkCheckIcon = forwardRef<\\n  BookmarkCheckIconHandle,\\n  BookmarkCheckIconProps\\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z\\\"\\n          style={{ originX: 0.5, originY: 0.5 }}\\n          variants={BOOKMARK_VARIANTS}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 10 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          pathLength=\\\"1\\\"\\n          strokeDasharray=\\\"1 1\\\"\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBookmarkCheckIcon.displayName = \\\"BookmarkCheckIcon\\\";\\n\\nexport { BookmarkCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bookmark-minus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bookmark-minus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bookmark-minus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookmarkMinusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookmarkMinusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BOOKMARK_VARIANTS: Variants = {\\n  normal: { scaleY: 1, scaleX: 1 },\\n  animate: {\\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst MINUS_VARIANTS: Variants = {\\n  normal: { strokeDashoffset: 0, opacity: 1 },\\n  animate: {\\n    strokeDashoffset: [1, 0],\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst BookmarkMinusIcon = forwardRef<\\n  BookmarkMinusIconHandle,\\n  BookmarkMinusIconProps\\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\\\"\\n          style={{ originX: 0.5, originY: 0.5 }}\\n          variants={BOOKMARK_VARIANTS}\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          pathLength=\\\"1\\\"\\n          strokeDasharray=\\\"1 1\\\"\\n          variants={MINUS_VARIANTS}\\n          x1=\\\"15\\\"\\n          x2=\\\"9\\\"\\n          y1=\\\"10\\\"\\n          y2=\\\"10\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBookmarkMinusIcon.displayName = \\\"BookmarkMinusIcon\\\";\\n\\nexport { BookmarkMinusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bookmark-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bookmark-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bookmark-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookmarkPlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookmarkPlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BOOKMARK_VARIANTS: Variants = {\\n  normal: { scaleY: 1, scaleX: 1 },\\n  animate: {\\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst PLUS_LINE_VARIANTS: Variants = {\\n  normal: { strokeDashoffset: 0, opacity: 1 },\\n  animate: (i: number) => ({\\n    strokeDashoffset: [1, 0],\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst BookmarkPlusIcon = forwardRef<\\n  BookmarkPlusIconHandle,\\n  BookmarkPlusIconProps\\n>(({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\\\"\\n          style={{ originX: 0.5, originY: 0.5 }}\\n          variants={BOOKMARK_VARIANTS}\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          custom={0}\\n          initial=\\\"normal\\\"\\n          pathLength=\\\"1\\\"\\n          strokeDasharray=\\\"1 1\\\"\\n          variants={PLUS_LINE_VARIANTS}\\n          x1=\\\"12\\\"\\n          x2=\\\"12\\\"\\n          y1=\\\"7\\\"\\n          y2=\\\"13\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          custom={1}\\n          initial=\\\"normal\\\"\\n          pathLength=\\\"1\\\"\\n          strokeDasharray=\\\"1 1\\\"\\n          variants={PLUS_LINE_VARIANTS}\\n          x1=\\\"15\\\"\\n          x2=\\\"9\\\"\\n          y1=\\\"10\\\"\\n          y2=\\\"10\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nBookmarkPlusIcon.displayName = \\\"BookmarkPlusIcon\\\";\\n\\nexport { BookmarkPlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bookmark-x.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bookmark-x\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bookmark-x.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookmarkXIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookmarkXIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BOOKMARK_VARIANTS: Variants = {\\n  normal: { scaleY: 1, scaleX: 1 },\\n  animate: {\\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst X_LINE_VARIANTS: Variants = {\\n  normal: { strokeDashoffset: 0, opacity: 1 },\\n  animate: (i: number) => ({\\n    strokeDashoffset: [1, 0],\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst BookmarkXIcon = forwardRef<BookmarkXIconHandle, BookmarkXIconProps>(\\n  ({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z\\\"\\n            style={{ originX: 0.5, originY: 0.5 }}\\n            variants={BOOKMARK_VARIANTS}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"m14.5 7.5-5 5\\\"\\n            initial=\\\"normal\\\"\\n            pathLength=\\\"1\\\"\\n            strokeDasharray=\\\"1 1\\\"\\n            variants={X_LINE_VARIANTS}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"m9.5 7.5 5 5\\\"\\n            initial=\\\"normal\\\"\\n            pathLength=\\\"1\\\"\\n            strokeDasharray=\\\"1 1\\\"\\n            variants={X_LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBookmarkXIcon.displayName = \\\"BookmarkXIcon\\\";\\n\\nexport { BookmarkXIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bookmark.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bookmark\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bookmark.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BookmarkIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BookmarkIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BOOKMARK_VARIANTS: Variants = {\\n  normal: { scaleY: 1, scaleX: 1 },\\n  animate: {\\n    scaleY: [1, 1.3, 0.9, 1.05, 1],\\n    scaleX: [1, 0.9, 1.1, 0.95, 1],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n};\\n\\nconst BookmarkIcon = forwardRef<BookmarkIconHandle, BookmarkIconProps>(\\n  ({ className, size = 28, onMouseEnter, onMouseLeave, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z\\\"\\n            style={{ originY: 0.5, originX: 0.5 }}\\n            variants={BOOKMARK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBookmarkIcon.displayName = \\\"BookmarkIcon\\\";\\n\\nexport { BookmarkIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bot-message-square.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bot-message-square\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bot-message-square.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BotMessageSquareHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BotMessageSquareProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nexport const BotMessageSquareIcon = forwardRef<\\n  BotMessageSquareHandle,\\n  BotMessageSquareProps\\n>(({ className, onMouseEnter, onMouseLeave, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(\\\"inline-flex items-center justify-center\\\", className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={{\\n          normal: { rotate: 0, y: 0, scale: 1 },\\n          animate: {\\n            rotate: [0, -3, 3, 0, 0],\\n            y: [0, 1.5, -1.5, 0],\\n            scale: [1, 1.03, 1],\\n            transition: {\\n              duration: 1,\\n              ease: \\\"easeInOut\\\",\\n              repeat: 0,\\n            },\\n          },\\n        }}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M12 6V2H8\\\" />\\n        <path d=\\\"M2 12h2\\\" />\\n        <path d=\\\"M20 12h2\\\" />\\n        <motion.path\\n          d=\\\"M20 16a2 2 0 0 1-2 2H8.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 4 20.286V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z\\\"\\n          variants={{\\n            normal: { scale: 1, originX: 0.5, originY: 0.5 },\\n            animate: {\\n              scale: [1, 1.04, 1],\\n              transition: {\\n                duration: 0.6,\\n                ease: \\\"easeInOut\\\",\\n                repeat: 1,\\n              },\\n            },\\n          }}\\n        />\\n        <motion.path\\n          d=\\\"M9 11v2\\\"\\n          variants={{\\n            normal: { scaleY: 1, originY: 0.5 },\\n            animate: {\\n              scaleY: [1, 0.1, 1],\\n              transition: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.1 },\\n            },\\n          }}\\n        />\\n        <motion.path\\n          d=\\\"M15 11v2\\\"\\n          variants={{\\n            normal: { scaleY: 1, originY: 0.5 },\\n            animate: {\\n              scaleY: [1, 0.1, 1],\\n              transition: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n            },\\n          }}\\n        />\\n        <motion.circle\\n          cx=\\\"10\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"0.5\\\"\\n          variants={{\\n            normal: { opacity: 0 },\\n            animate: {\\n              opacity: [0.3, 1, 0.3],\\n              transition: {\\n                repeat: Number.POSITIVE_INFINITY,\\n                duration: 1.2,\\n                delay: 0,\\n              },\\n            },\\n          }}\\n        />\\n        <motion.circle\\n          cx=\\\"12\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"0.5\\\"\\n          variants={{\\n            normal: { opacity: 0 },\\n            animate: {\\n              opacity: [0.3, 1, 0.3],\\n              transition: {\\n                repeat: Number.POSITIVE_INFINITY,\\n                duration: 1.2,\\n                delay: 0.3,\\n              },\\n            },\\n          }}\\n        />\\n        <motion.circle\\n          cx=\\\"14\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"0.5\\\"\\n          variants={{\\n            normal: { opacity: 0 },\\n            animate: {\\n              opacity: [0.3, 1, 0.3],\\n              transition: {\\n                repeat: Number.POSITIVE_INFINITY,\\n                duration: 1.2,\\n                delay: 0.6,\\n              },\\n            },\\n          }}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nBotMessageSquareIcon.displayName = \\\"BotMessageSquareIcon\\\";\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/bot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"bot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"bot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BotIcon = forwardRef<BotIconHandle, BotIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 8V4H8\\\" />\\n          <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"16\\\" x=\\\"4\\\" y=\\\"8\\\" />\\n          <path d=\\\"M2 14h2\\\" />\\n          <path d=\\\"M20 14h2\\\" />\\n\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={{\\n              normal: { y1: 13, y2: 15 },\\n              animate: {\\n                y1: [13, 14, 13],\\n                y2: [15, 14, 15],\\n                transition: {\\n                  duration: 0.5,\\n                  ease: \\\"easeInOut\\\",\\n                  delay: 0.2,\\n                },\\n              },\\n            }}\\n            x1={15}\\n            x2={15}\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={{\\n              normal: { y1: 13, y2: 15 },\\n              animate: {\\n                y1: [13, 14, 13],\\n                y2: [15, 14, 15],\\n                transition: {\\n                  duration: 0.5,\\n                  ease: \\\"easeInOut\\\",\\n                  delay: 0.2,\\n                },\\n              },\\n            }}\\n            x1={9}\\n            x2={9}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBotIcon.displayName = \\\"Bot\\\";\\n\\nexport { BotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/box.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"box\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"box.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BoxIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BoxIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst BoxIcon = forwardRef<BoxIconHandle, BoxIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m3.3 7 8.7 5 8.7-5\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 22V12\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBoxIcon.displayName = \\\"BoxIcon\\\";\\n\\nexport { BoxIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/boxes.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"boxes\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"boxes.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BoxesIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BoxesIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BoxesIcon = forwardRef<BoxesIconHandle, BoxesIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z m4.03 3.58 -4.74 -2.85 m4.74 2.85 5-3 m-5 3v5.17\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: -1.5, translateY: 1.5 },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z m5 3-5-3 m5 3 4.74-2.85 M17 16.5v5.17\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: 1.5, translateY: 1.5 },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z M12 8 7.26 5.15 m4.74 2.85 4.74-2.85 M12 13.5V8\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: 0, translateY: -1.5 },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBoxesIcon.displayName = \\\"BoxesIcon\\\";\\n\\nexport { BoxesIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/brain.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"brain\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"brain.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface BrainIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface BrainIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BRAIN_STEM_VARIANTS: Variants = {\\n  normal: { pathLength: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [1, 0.4, 1],\\n    pathOffset: [0, 0.25, 0],\\n    transition: {\\n      duration: 1.4,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\",\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BRAIN_SIDE_VARIANTS: Variants = {\\n  normal: { pathLength: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [1, 0.5, 1],\\n    pathOffset: [0, 0.25, 0],\\n    transition: {\\n      duration: 1.4,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\",\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BRAIN_TOP_ARC_VARIANTS: Variants = {\\n  normal: { pathLength: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [1, 0.8, 1],\\n    pathOffset: [0, 0.07, 0],\\n    transition: {\\n      duration: 1.4,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\",\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BRAIN_LOWER_ARC_VARIANTS: Variants = {\\n  normal: { pathLength: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [1, 0.8, 1],\\n    pathOffset: [0, 0.14, 0],\\n    transition: {\\n      duration: 1.4,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\",\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BrainIcon = forwardRef<BrainIconHandle, BrainIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth={2}\\n          variants={{\\n            normal: {\\n              scale: 1,\\n              strokeWidth: 2,\\n            },\\n            animate: {\\n              scale: [1, 1.08, 1],\\n              strokeWidth: [2, 2.25, 2],\\n              transition: {\\n                duration: 1.4,\\n                repeat: Number.POSITIVE_INFINITY,\\n                repeatType: \\\"mirror\\\",\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 18V5\\\"\\n            variants={BRAIN_STEM_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\\\"\\n            variants={BRAIN_SIDE_VARIANTS}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 5A3 3 0 1 1 17.598 6.5\\\"\\n            variants={BRAIN_TOP_ARC_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 5A3 3 0 1 0 6.402 6.5\\\"\\n            variants={BRAIN_TOP_ARC_VARIANTS}\\n          />\\n\\n          <path d=\\\"M17.997 5.125a4 4 0 0 1 2.526 5.77\\\" />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 18a4 4 0 0 0 2-7.464\\\"\\n            variants={BRAIN_LOWER_ARC_VARIANTS}\\n          />\\n\\n          <path d=\\\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\\\" />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 18a4 4 0 0 1-2-7.464\\\"\\n            variants={BRAIN_LOWER_ARC_VARIANTS}\\n          />\\n          <path d=\\\"M6.003 5.125a4 4 0 0 0-2.526 5.77\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nBrainIcon.displayName = \\\"BrainIcon\\\";\\n\\nexport { BrainIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/calendar-check-2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-check-2\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"calendar-check-2.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CalendarCheck2IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CalendarCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst CalendarCheck2Icon = forwardRef<\\n  CalendarCheck2IconHandle,\\n  CalendarCheck2IconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M8 2v4\\\" />\\n        <path d=\\\"M16 2v4\\\" />\\n        <path d=\\\"M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8\\\" />\\n        <path d=\\\"M3 10h18\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 20 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCalendarCheck2Icon.displayName = \\\"CalendarCheck2Icon\\\";\\n\\nexport { CalendarCheck2Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/calendar-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"calendar-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CalendarCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CalendarCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst CalendarCheckIcon = forwardRef<\\n  CalendarCheckIconHandle,\\n  CalendarCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M8 2v4\\\" />\\n        <path d=\\\"M16 2v4\\\" />\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"4\\\" />\\n        <path d=\\\"M3 10h18\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 16 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCalendarCheckIcon.displayName = \\\"CalendarCheckIcon\\\";\\n\\nexport { CalendarCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/calendar-cog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-cog\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"calendar-cog.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CalendarCogIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CalendarCogIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: 180 },\\n};\\n\\nconst CalendarCogIcon = forwardRef<CalendarCogIconHandle, CalendarCogIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M21 10.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\\\" />\\n          <path d=\\\"M16 2v4\\\" />\\n          <path d=\\\"M3 10h18\\\" />\\n          <path d=\\\"M8 2v4\\\" />\\n          <motion.g\\n            animate={controls}\\n            transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n            variants={G_VARIANTS}\\n          >\\n            <path d=\\\"m15.2 16.9-.9-.4\\\" />\\n            <path d=\\\"m15.2 19.1-.9.4\\\" />\\n            <path d=\\\"m16.9 15.2-.4-.9\\\" />\\n            <path d=\\\"m16.9 20.8-.4.9\\\" />\\n            <path d=\\\"m19.5 14.3-.4.9\\\" />\\n            <path d=\\\"m19.5 21.7-.4-.9\\\" />\\n            <path d=\\\"m21.7 16.5-.9.4\\\" />\\n            <path d=\\\"m21.7 19.5-.9-.4\\\" />\\n            <circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCalendarCogIcon.displayName = \\\"CalendarCogIcon\\\";\\n\\nexport { CalendarCogIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/calendar-days.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"calendar-days\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"calendar-days.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { AnimatePresence, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CalendarDaysIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CalendarDaysIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOTS = [\\n  { cx: 8, cy: 14 },\\n  { cx: 12, cy: 14 },\\n  { cx: 16, cy: 14 },\\n  { cx: 8, cy: 18 },\\n  { cx: 12, cy: 18 },\\n  { cx: 16, cy: 18 },\\n];\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: {\\n      duration: 0.2,\\n    },\\n  },\\n  animate: (i: number) => ({\\n    opacity: [1, 0.3, 1],\\n    transition: {\\n      delay: i * 0.1,\\n      duration: 0.4,\\n      times: [0, 0.5, 1],\\n    },\\n  }),\\n};\\n\\nconst CalendarDaysIcon = forwardRef<\\n  CalendarDaysIconHandle,\\n  CalendarDaysIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M8 2v4\\\" />\\n        <path d=\\\"M16 2v4\\\" />\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"4\\\" />\\n        <path d=\\\"M3 10h18\\\" />\\n        <AnimatePresence>\\n          {DOTS.map((dot, index) => (\\n            <motion.circle\\n              animate={controls}\\n              custom={index}\\n              cx={dot.cx}\\n              cy={dot.cy}\\n              fill=\\\"currentColor\\\"\\n              initial=\\\"normal\\\"\\n              key={`${dot.cx}-${dot.cy}`}\\n              r=\\\"1\\\"\\n              stroke=\\\"none\\\"\\n              variants={VARIANTS}\\n            />\\n          ))}\\n        </AnimatePresence>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCalendarDaysIcon.displayName = \\\"CalendarDaysIcon\\\";\\n\\nexport { CalendarDaysIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cart\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cart.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CartIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CartIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CART_VARIANTS: Variants = {\\n  normal: { scale: 1 },\\n  animate: {\\n    scale: 1.1,\\n    y: [0, -5, 0],\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n      y: { repeat: 1, delay: 0.1, duration: 0.4 },\\n    },\\n  },\\n};\\n\\nconst CartIcon = forwardRef<CartIconHandle, CartIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ duration: 0.2 }}\\n          variants={CART_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M6.29977 5H21L19 12H7.37671M20 16H8L6 3H3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCartIcon.displayName = \\\"CartIcon\\\";\\n\\nexport { CartIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cast\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cast.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CastIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CastIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (custom: number) => ({\\n    opacity: [0, 1],\\n    transition: {\\n      delay: custom,\\n      duration: 0.5,\\n    },\\n  }),\\n};\\n\\nconst CastIcon = forwardRef<CastIconHandle, CastIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={0.2}\\n            d=\\\"M2 12a9 9 0 0 1 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.1}\\n            d=\\\"M2 16a5 5 0 0 1 4 4\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={0}\\n            variants={VARIANTS}\\n            x1=\\\"2\\\"\\n            x2=\\\"2.01\\\"\\n            y1=\\\"20\\\"\\n            y2=\\\"20\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCastIcon.displayName = \\\"CastIcon\\\";\\n\\nexport { CastIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cctv.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cctv\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cctv.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CctvIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CctvIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CCTV_GROUP_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    y: 0,\\n    x: 0,\\n  },\\n  animate: {\\n    rotate: [0, -20, -20, 15, 15, 0],\\n    y: [0, -0.5, -0.5, 0, 0, 0],\\n    x: [0, 0, 0, 0.5, 0.5, 0],\\n    transition: {\\n      duration: 1.8,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CCTV_PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0, 1, 0, 1, 0, 1],\\n    transition: {\\n      duration: 1.8,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CctvIcon = forwardRef<CctvIconHandle, CctvIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"initial\\\"\\n            variants={CCTV_GROUP_VARIANTS}\\n          >\\n            <path d=\\\"M16.75 12h3.632a1 1 0 0 1 .894 1.447l-2.034 4.069a1 1 0 0 1-1.708.134l-2.124-2.97\\\" />\\n            <path d=\\\"M17.106 9.053a1 1 0 0 1 .447 1.341l-3.106 6.211a1 1 0 0 1-1.342.447L3.61 12.3a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3z\\\" />\\n            <motion.path\\n              animate={controls}\\n              d=\\\"M7 9h.01\\\"\\n              variants={CCTV_PATH_VARIANTS}\\n            />\\n          </motion.g>\\n          <path d=\\\"M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15\\\" />\\n          <path d=\\\"M2 21v-4\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCctvIcon.displayName = \\\"CctvIcon\\\";\\n\\nexport { CctvIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-bar-decreasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-decreasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-bar-decreasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartBarDecreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartBarDecreasingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartBarDecreasingIcon = forwardRef<\\n  ChartBarDecreasingIconHandle,\\n  ChartBarDecreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M7 11h8\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M7 16h3\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M7 6h12\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartBarDecreasingIcon.displayName = \\\"ChartBarDecreasingIcon\\\";\\n\\nexport { ChartBarDecreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-bar-increasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-bar-increasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-bar-increasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartBarIncreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartBarIncreasingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartBarIncreasingIcon = forwardRef<\\n  ChartBarIncreasingIconHandle,\\n  ChartBarIncreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M7 11h8\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M7 16h12\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M7 6h3\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartBarIncreasingIcon.displayName = \\\"ChartBarIncreasingIcon\\\";\\n\\nexport { ChartBarIncreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-column-decreasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-column-decreasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-column-decreasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartColumnDecreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartColumnDecreasingIconProps\\n  extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartColumnDecreasingIcon = forwardRef<\\n  ChartColumnDecreasingIconHandle,\\n  ChartColumnDecreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M13 17V9\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M18 17v-3\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M8 17V5\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartColumnDecreasingIcon.displayName = \\\"ChartColumnDecreasingIcon\\\";\\n\\nexport { ChartColumnDecreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-column-increasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-column-increasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-column-increasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartColumnIncreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartColumnIncreasingIconProps\\n  extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartColumnIncreasingIcon = forwardRef<\\n  ChartColumnIncreasingIconHandle,\\n  ChartColumnIncreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M13 17V9\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M18 17V5\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M8 17v-3\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartColumnIncreasingIcon.displayName = \\\"ChartColumnIncreasingIcon\\\";\\n\\nexport { ChartColumnIncreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-line\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-line.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartLineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15,\\n      duration: 0.3,\\n      opacity: { delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ChartLineIcon = forwardRef<ChartLineIconHandle, ChartLineIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m7 13 3-3 4 4 5-5\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChartLineIcon.displayName = \\\"ChartLineIcon\\\";\\n\\nexport { ChartLineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-no-axes-column-decreasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-no-axes-column-decreasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-no-axes-column-decreasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartNoAxesColumnDecreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartNoAxesColumnDecreasingIconProps\\n  extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartNoAxesColumnDecreasingIcon = forwardRef<\\n  ChartNoAxesColumnDecreasingIconHandle,\\n  ChartNoAxesColumnDecreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M6 20V4\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M12 20V10\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M18 20v-4\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartNoAxesColumnDecreasingIcon.displayName = \\\"ChartNoAxesColumnDecreasingIcon\\\";\\n\\nexport { ChartNoAxesColumnDecreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-no-axes-column-increasing.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-no-axes-column-increasing\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-no-axes-column-increasing.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartNoAxesColumnIncreasingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartNoAxesColumnIncreasingIconProps\\n  extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ChartNoAxesColumnIncreasingIcon = forwardRef<\\n  ChartNoAxesColumnIncreasingIconHandle,\\n  ChartNoAxesColumnIncreasingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      },\\n      stopAnimation: () => controls.start(\\\"visible\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start((i) => ({\\n          pathLength: 0,\\n          opacity: 0,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n        await controls.start((i) => ({\\n          pathLength: 1,\\n          opacity: 1,\\n          transition: { delay: i * 0.1, duration: 0.3 },\\n        }));\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M6 20v-4\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M12 20v-10\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M18 20v-16\\\"\\n          initial=\\\"visible\\\"\\n          variants={LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChartNoAxesColumnIncreasingIcon.displayName = \\\"ChartNoAxesColumnIncreasingIcon\\\";\\n\\nexport { ChartNoAxesColumnIncreasingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-pie.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-pie\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-pie.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartPieIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartPieIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0 },\\n  animate: { translateX: 1.1, translateY: -1.1 },\\n};\\n\\nconst ChartPieIcon = forwardRef<ChartPieIconHandle, ChartPieIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z\\\"\\n            transition={{\\n              type: \\\"spring\\\",\\n              stiffness: 250,\\n              damping: 15,\\n              bounce: 0.6,\\n            }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChartPieIcon.displayName = \\\"ChartPieIcon\\\";\\n\\nexport { ChartPieIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-scatter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-scatter\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-scatter.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartScatterIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartScatterIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOT_VARIANTS: Variants = {\\n  visible: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      delay: i * 0.15,\\n      duration: 0.3,\\n    },\\n  }),\\n  hidden: {\\n    opacity: 0,\\n    transition: {\\n      duration: 0.2,\\n    },\\n  },\\n  default: { opacity: 1 },\\n};\\n\\nconst ChartScatterIcon = forwardRef<\\n  ChartScatterIconHandle,\\n  ChartScatterIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: async () => {\\n        await controls.start(\\\"hidden\\\");\\n        await controls.start(\\\"visible\\\");\\n      },\\n      stopAnimation: async () => controls.start(\\\"default\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start(\\\"hidden\\\");\\n        await controls.start(\\\"visible\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        await controls.start(\\\"default\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"default\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          custom={0}\\n          cx=\\\"7.5\\\"\\n          cy=\\\"7.5\\\"\\n          fill=\\\"currentColor\\\"\\n          r=\\\".5\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.circle\\n          custom={1}\\n          cx=\\\"18.5\\\"\\n          cy=\\\"5.5\\\"\\n          fill=\\\"currentColor\\\"\\n          r=\\\".5\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.circle\\n          custom={2}\\n          cx=\\\"11.5\\\"\\n          cy=\\\"11.5\\\"\\n          fill=\\\"currentColor\\\"\\n          r=\\\".5\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.circle\\n          custom={3}\\n          cx=\\\"7.5\\\"\\n          cy=\\\"16.5\\\"\\n          fill=\\\"currentColor\\\"\\n          r=\\\".5\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.circle\\n          custom={4}\\n          cx=\\\"17.5\\\"\\n          cy=\\\"14.5\\\"\\n          fill=\\\"currentColor\\\"\\n          r=\\\".5\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" strokeWidth=\\\"2\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nChartScatterIcon.displayName = \\\"ChartScatterIcon\\\";\\n\\nexport { ChartScatterIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chart-spline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chart-spline\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chart-spline.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChartSplineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChartSplineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15,\\n      duration: 0.3,\\n      opacity: { delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ChartSplineIcon = forwardRef<ChartSplineIconHandle, ChartSplineIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3 3v16a2 2 0 0 0 2 2h16\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChartSplineIcon.displayName = \\\"ChartSplineIcon\\\";\\n\\nexport { ChartSplineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/check-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"check-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"check-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CheckCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CheckCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    scale: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: (custom: number) => ({\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    scale: [0.5, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n      delay: 0.1 * custom,\\n    },\\n  }),\\n};\\n\\nconst CheckCheckIcon = forwardRef<CheckCheckIconHandle, CheckCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M2 12 7 17L18 6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M13 16L14.5 17.5L22 10\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCheckCheckIcon.displayName = \\\"CheckCheckIcon\\\";\\n\\nexport { CheckCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    scale: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    scale: [0.5, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst CheckIcon = forwardRef<CheckIconHandle, CheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 12 9 17L20 6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCheckIcon.displayName = \\\"CheckIcon\\\";\\n\\nexport { CheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chess-bishop.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chess-bishop\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chess-bishop.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation, type Variants } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChessBishopIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChessBishopIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BISHOP_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n    rotate: 0,\\n    opacity: 1,\\n    transition: { type: \\\"spring\\\", stiffness: 220, damping: 18 },\\n  },\\n  animate: {\\n    x: [0, -6, -6, -6, 6, 6, 6, 0],\\n    y: [0, -6, -6, -6, 6, 6, 6, 0],\\n    rotate: [0, -16, -16, -16, 16, 16, 4, 0],\\n    opacity: [1, 1, 0, 0, 0, 0, 1, 1],\\n    transition: {\\n      duration: 1.4,\\n      times: [0, 0.28, 0.38, 0.45, 0.5, 0.58, 0.72, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ChessBishopIcon = forwardRef<ChessBishopIconHandle, ChessBishopIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformBox: \\\"view-box\\\", transformOrigin: \\\"12px 12px\\\" }}\\n            variants={BISHOP_VARIANTS}\\n          >\\n            <path d=\\\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\\\" />\\n            <path d=\\\"M15 18c1.5-.615 3-2.461 3-4.923C18 8.769 14.5 4.462 12 2 9.5 4.462 6 8.77 6 13.077 6 15.539 7.5 17.385 9 18\\\" />\\n            <path d=\\\"m16 7-2.5 2.5\\\" />\\n            <path d=\\\"M9 2h6\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChessBishopIcon.displayName = \\\"ChessBishopIcon\\\";\\n\\nexport { ChessBishopIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chess-king.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chess-king\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chess-king.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation, type Variants } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChessKingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChessKingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KING_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    y: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 160,\\n      damping: 14,\\n    },\\n  },\\n  animate: {\\n    rotate: [0, -10, 10, -6, 6, -2, 0],\\n    y: [0, -3, -3, -2, -2, -1, 0],\\n    transition: {\\n      duration: 1.1,\\n      times: [0, 0.18, 0.38, 0.55, 0.7, 0.85, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ChessKingIcon = forwardRef<ChessKingIconHandle, ChessKingIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformBox: \\\"view-box\\\", transformOrigin: \\\"12px 22px\\\" }}\\n            variants={KING_VARIANTS}\\n          >\\n            <path d=\\\"M4 20a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1z\\\" />\\n            <path d=\\\"m6.7 18-1-1C4.35 15.682 3 14.09 3 12a5 5 0 0 1 4.95-5c1.584 0 2.7.455 4.05 1.818C13.35 7.455 14.466 7 16.05 7A5 5 0 0 1 21 12c0 2.082-1.359 3.673-2.7 5l-1 1\\\" />\\n            <path d=\\\"M10 4h4\\\" />\\n            <path d=\\\"M12 2v6.818\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChessKingIcon.displayName = \\\"ChessKingIcon\\\";\\n\\nexport { ChessKingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chess-knight.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chess-knight\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chess-knight.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation, type Variants } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChessKnightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChessKnightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KNIGHT_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    y: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 220,\\n      damping: 12,\\n    },\\n  },\\n  animate: {\\n    rotate: [0, 12, 38, 42, 38, 10, -5, 0],\\n    y: [0, -2, -9, -12, -9, -2, 1, 0],\\n    transition: {\\n      duration: 0.9,\\n      times: [0, 0.1, 0.3, 0.45, 0.6, 0.78, 0.9, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ChessKnightIcon = forwardRef<ChessKnightIconHandle, ChessKnightIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlled = !!ref;\\n\\n    useImperativeHandle(\\n      ref,\\n      () => ({\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      }),\\n      [controls]\\n    );\\n\\n    const handleMouseEnter = useCallback(\\n      (e: MouseEvent<HTMLDivElement>) => {\\n        if (isControlled) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, isControlled, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: MouseEvent<HTMLDivElement>) => {\\n        if (isControlled) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, isControlled, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformBox: \\\"view-box\\\", transformOrigin: \\\"12px 22px\\\" }}\\n            variants={KNIGHT_VARIANTS}\\n          >\\n            <path d=\\\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\\\" />\\n            <path d=\\\"M16.5 18c1-2 2.5-5 2.5-9a7 7 0 0 0-7-7H6.635a1 1 0 0 0-.768 1.64L7 5l-2.32 5.802a2 2 0 0 0 .95 2.526l2.87 1.456\\\" />\\n            <path d=\\\"m15 5 1.425-1.425\\\" />\\n            <path d=\\\"m17 8 1.53-1.53\\\" />\\n            <path d=\\\"M9.713 12.185 7 18\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChessKnightIcon.displayName = \\\"ChessKnightIcon\\\";\\n\\nexport { ChessKnightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chess-pawn.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chess-pawn\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chess-pawn.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation, type Variants } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChessPawnIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChessPawnIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HEAD_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n    scale: 1,\\n    rotate: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 180,\\n      damping: 16,\\n    },\\n  },\\n  animate: {\\n    x: [0, -5, 5, 0],\\n    rotate: [0, -15, 15, 0],\\n    transition: {\\n      duration: 2.4,\\n      times: [0, 0.33, 0.66, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BODY_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 260,\\n      damping: 16,\\n    },\\n  },\\n  animate: {\\n    rotate: [0, 5, 5, 5, 3, 0],\\n    transition: {\\n      duration: 1.8,\\n      times: [0, 0.08, 0.3, 0.52, 0.72, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ChessPawnIcon = forwardRef<ChessPawnIconHandle, ChessPawnIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const headControls = useAnimation();\\n    const bodyControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => {\\n          headControls.start(\\\"animate\\\");\\n          bodyControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          headControls.start(\\\"normal\\\");\\n          bodyControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          headControls.start(\\\"animate\\\");\\n          bodyControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [headControls, bodyControls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          headControls.start(\\\"normal\\\");\\n          bodyControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [headControls, bodyControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={bodyControls}\\n            initial=\\\"normal\\\"\\n            style={{ transformBox: \\\"view-box\\\", transformOrigin: \\\"12px 21px\\\" }}\\n            variants={BODY_VARIANTS}\\n          >\\n            <path d=\\\"M5 20a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1z\\\" />\\n            <path d=\\\"m14.5 10 1.5 8\\\" />\\n            <path d=\\\"M7 10h10\\\" />\\n            <path d=\\\"m8 18 1.5-8\\\" />\\n          </motion.g>\\n          <motion.circle\\n            animate={headControls}\\n            cx=\\\"12\\\"\\n            cy=\\\"6\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"4\\\"\\n            style={{ transformBox: \\\"fill-box\\\", transformOrigin: \\\"center\\\" }}\\n            variants={HEAD_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChessPawnIcon.displayName = \\\"ChessPawnIcon\\\";\\n\\nexport { ChessPawnIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevron-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevron-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevron-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst ChevronDownIcon = forwardRef<ChevronDownIconHandle, ChevronDownIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m6 9 6 6 6-6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { y: 0 },\\n              animate: { y: [0, 2, 0] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChevronDownIcon.displayName = \\\"ChevronDownIcon\\\";\\n\\nexport { ChevronDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevron-first.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevron-first\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevron-first.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronFirstIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronFirstIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ChevronFirstIcon = forwardRef<\\n  ChevronFirstIconHandle,\\n  ChevronFirstIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m17 18-6-6 6-6\\\"\\n          initial=\\\"normal\\\"\\n          variants={{\\n            normal: {\\n              translateX: 0,\\n              transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n            },\\n            animate: {\\n              translateX: [-2, 1, -1, 0],\\n              transition: {\\n                duration: 0.6,\\n                ease: \\\"easeInOut\\\",\\n                times: [0, 0.3, 0.7, 1],\\n              },\\n            },\\n          }}\\n        />\\n\\n        <path d=\\\"M7 6v12\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronFirstIcon.displayName = \\\"ChevronsDownUpIcon\\\";\\n\\nexport { ChevronFirstIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevron-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevron-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevron-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst ChevronLeftIcon = forwardRef<ChevronLeftIconHandle, ChevronLeftIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m15 18-6-6 6-6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x: 0 },\\n              animate: { x: [0, -2, 0] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChevronLeftIcon.displayName = \\\"ChevronLeftIcon\\\";\\n\\nexport { ChevronLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevron-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevron-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevron-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst ChevronRightIcon = forwardRef<\\n  ChevronRightIconHandle,\\n  ChevronRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 18 6-6-6-6\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { x: 0 },\\n            animate: { x: [0, 2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronRightIcon.displayName = \\\"ChevronRightIcon\\\";\\n\\nexport { ChevronRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevron-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevron-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevron-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst ChevronUpIcon = forwardRef<ChevronUpIconHandle, ChevronUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m18 15-6-6-6 6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { y: 0 },\\n              animate: { y: [0, -2, 0] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChevronUpIcon.displayName = \\\"ChevronUpIcon\\\";\\n\\nexport { ChevronUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevrons-down-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevrons-down-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevrons-down-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronsDownUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronsDownUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ChevronsDownUpIcon = forwardRef<\\n  ChevronsDownUpIconHandle,\\n  ChevronsDownUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 20 5-5 5 5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: \\\"0%\\\" },\\n            animate: { translateY: \\\"-2px\\\" },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 4 5 5 5-5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: \\\"0%\\\" },\\n            animate: { translateY: \\\"2px\\\" },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronsDownUpIcon.displayName = \\\"ChevronsDownUpIcon\\\";\\n\\nexport { ChevronsDownUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevrons-left-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevrons-left-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevrons-left-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronsLeftRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronsLeftRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ChevronsLeftRightIcon = forwardRef<\\n  ChevronsLeftRightIconHandle,\\n  ChevronsLeftRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 7-5 5 5 5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: \\\"0%\\\" },\\n            animate: { translateX: \\\"-2px\\\" },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m15 7 5 5-5 5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: \\\"0%\\\" },\\n            animate: { translateX: \\\"2px\\\" },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronsLeftRightIcon.displayName = \\\"ChevronsLeftRightIcon\\\";\\n\\nexport { ChevronsLeftRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevrons-right-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevrons-right-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevrons-right-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronsRightLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronsRightLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ChevronsRightLeftIcon = forwardRef<\\n  ChevronsRightLeftIconHandle,\\n  ChevronsRightLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m20 17-5-5 5-5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: \\\"0%\\\" },\\n            animate: { translateX: \\\"-2px\\\" },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m4 17 5-5-5-5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateX: \\\"0%\\\" },\\n            animate: { translateX: \\\"2px\\\" },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronsRightLeftIcon.displayName = \\\"ChevronsRightLeftIcon\\\";\\n\\nexport { ChevronsRightLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chevrons-up-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chevrons-up-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chevrons-up-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChevronsUpDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChevronsUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ChevronsUpDownIcon = forwardRef<\\n  ChevronsUpDownIconHandle,\\n  ChevronsUpDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 15 5 5 5-5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: \\\"0%\\\" },\\n            animate: { translateY: \\\"2px\\\" },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m7 9 5-5 5 5\\\"\\n          initial=\\\"normal\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { translateY: \\\"0%\\\" },\\n            animate: { translateY: \\\"-2px\\\" },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nChevronsUpDownIcon.displayName = \\\"ChevronsUpDownIcon\\\";\\n\\nexport { ChevronsUpDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/chrome.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"chrome\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"chrome.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ChromeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ChromeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.3,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      ...TRANSITION,\\n      delay: 0.1 * custom,\\n    },\\n  }),\\n};\\n\\nconst ChromeIcon = forwardRef<ChromeIconHandle, ChromeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"4\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={3}\\n            variants={VARIANTS}\\n            x1=\\\"21.17\\\"\\n            x2=\\\"12\\\"\\n            y1=\\\"8\\\"\\n            y2=\\\"8\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={3}\\n            variants={VARIANTS}\\n            x1=\\\"3.95\\\"\\n            x2=\\\"8.54\\\"\\n            y1=\\\"6.06\\\"\\n            y2=\\\"14\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={3}\\n            variants={VARIANTS}\\n            x1=\\\"10.88\\\"\\n            x2=\\\"15.46\\\"\\n            y1=\\\"21.94\\\"\\n            y2=\\\"14\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nChromeIcon.displayName = \\\"ChromeIcon\\\";\\n\\nexport { ChromeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst CircleCheckIcon = forwardRef<CircleCheckIconHandle, CircleCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9 12 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCircleCheckIcon.displayName = \\\"CircleCheckIcon\\\";\\n\\nexport { CircleCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-chevron-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-chevron-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-chevron-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleChevronDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst CircleChevronDownIcon = forwardRef<\\n  CircleChevronDownIconHandle,\\n  CircleChevronDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 10-4 4-4-4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { y: 0 },\\n            animate: {\\n              y: [0, 2, 0],\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleChevronDownIcon.displayName = \\\"CircleChevronDownIcon\\\";\\n\\nexport { CircleChevronDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-chevron-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-chevron-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-chevron-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleChevronLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst CircleChevronLeftIcon = forwardRef<\\n  CircleChevronLeftIconHandle,\\n  CircleChevronLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m14 16-4-4 4-4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { x: 0 },\\n            animate: { x: [0, -2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleChevronLeftIcon.displayName = \\\"CircleChevronLeftIcon\\\";\\n\\nexport { CircleChevronLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-chevron-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-chevron-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-chevron-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleChevronRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst CircleChevronRightIcon = forwardRef<\\n  CircleChevronRightIconHandle,\\n  CircleChevronRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m10 8 4 4-4 4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { x: 0 },\\n            animate: { x: [0, 2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleChevronRightIcon.displayName = \\\"CircleChevronRightIcon\\\";\\n\\nexport { CircleChevronRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-chevron-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-chevron-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-chevron-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleChevronUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst CircleChevronUpIcon = forwardRef<\\n  CircleChevronUpIconHandle,\\n  CircleChevronUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m8 14 4-4 4 4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { y: 0 },\\n            animate: {\\n              y: [0, -2, 0],\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleChevronUpIcon.displayName = \\\"CircleChevronUpIcon\\\";\\n\\nexport { CircleChevronUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-dashed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-dashed\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-dashed.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleDashedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst CircleDashedIcon = forwardRef<\\n  CircleDashedIconHandle,\\n  CircleDashedIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        {[\\n          \\\"M10.1 2.182a10 10 0 0 1 3.8 0\\\",\\n          \\\"M13.9 21.818a10 10 0 0 1-3.8 0\\\",\\n          \\\"M17.609 3.721a10 10 0 0 1 2.69 2.7\\\",\\n          \\\"M2.182 13.9a10 10 0 0 1 0-3.8\\\",\\n          \\\"M20.279 17.609a10 10 0 0 1-2.7 2.69\\\",\\n          \\\"M21.818 10.1a10 10 0 0 1 0 3.8\\\",\\n          \\\"M3.721 6.391a10 10 0 0 1 2.7-2.69\\\",\\n          \\\"M6.391 20.279a10 10 0 0 1-2.69-2.7\\\",\\n        ].map((d, index) => (\\n          <motion.path\\n            animate={controls}\\n            custom={index + 1}\\n            d={d}\\n            key={d}\\n            variants={PATH_VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleDashedIcon.displayName = \\\"CircleDashedIcon\\\";\\n\\nexport { CircleDashedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-dollar-sign.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-dollar-sign\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-dollar-sign.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleDollarSignIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleDollarSignIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOLLAR_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst DOLLAR_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst CircleDollarSignIcon = forwardRef<\\n  CircleDollarSignIconHandle,\\n  CircleDollarSignIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8\\\"\\n          initial=\\\"normal\\\"\\n          variants={DOLLAR_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 18V6\\\"\\n          initial=\\\"normal\\\"\\n          variants={DOLLAR_SECONDARY_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCircleDollarSignIcon.displayName = \\\"CircleDollarSignIcon\\\";\\n\\nexport { CircleDollarSignIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/circle-help.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"circle-help\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"circle-help.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CircleHelpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CircleHelpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: [0, -10, 10, -10, 0] },\\n};\\n\\nconst CircleHelpIcon = forwardRef<CircleHelpIconHandle, CircleHelpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.g\\n            animate={controls}\\n            transition={{\\n              duration: 0.5,\\n              ease: \\\"easeInOut\\\",\\n            }}\\n            variants={VARIANTS}\\n          >\\n            <path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\" />\\n            <path d=\\\"M12 17h.01\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCircleHelpIcon.displayName = \\\"CircleHelpIcon\\\";\\n\\nexport { CircleHelpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/clap.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"clap\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"clap.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ClapIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ClapIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"4px\\\",\\n    originY: \\\"20px\\\",\\n  },\\n  animate: {\\n    rotate: [-10, -10, 0],\\n    transition: {\\n      duration: 0.8,\\n      times: [0, 0.5, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CLAP_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"3px\\\",\\n    originY: \\\"11px\\\",\\n  },\\n  animate: {\\n    rotate: [0, -10, 16, 0],\\n    transition: {\\n      duration: 0.4,\\n      times: [0, 0.3, 0.6, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ClapIcon = forwardRef<ClapIconHandle, ClapIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g animate={controls} variants={VARIANTS}>\\n            <motion.g animate={controls} variants={CLAP_VARIANTS}>\\n              <path d=\\\"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z\\\" />\\n              <path d=\\\"m6.2 5.3 3.1 3.9\\\" />\\n              <path d=\\\"m12.4 3.4 3.1 4\\\" />\\n            </motion.g>\\n            <path d=\\\"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nClapIcon.displayName = \\\"ClapIcon\\\";\\n\\nexport { ClapIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/clipboard-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"clipboard-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"clipboard-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ClipboardCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ClipboardCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 0,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.3, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.3, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst ClipboardCheckIcon = forwardRef<\\n  ClipboardCheckIconHandle,\\n  ClipboardCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\" width=\\\"8\\\" x=\\\"8\\\" y=\\\"2\\\" />\\n        <path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 14 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nClipboardCheckIcon.displayName = \\\"ClipboardCheckIcon\\\";\\n\\nexport { ClipboardCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/clock.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"clock\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"clock.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ClockIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ClockIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HAND_TRANSITION: Transition = {\\n  duration: 0.6,\\n  ease: [0.4, 0, 0.2, 1],\\n};\\n\\nconst HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n  animate: {\\n    rotate: 360,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n};\\n\\nconst MINUTE_HAND_TRANSITION: Transition = {\\n  duration: 0.5,\\n  ease: \\\"easeInOut\\\",\\n};\\n\\nconst MINUTE_HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n  animate: {\\n    rotate: 45,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n};\\n\\nconst ClockIcon = forwardRef<ClockIconHandle, ClockIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={HAND_TRANSITION}\\n            variants={HAND_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"12\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"6\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={MINUTE_HAND_TRANSITION}\\n            variants={MINUTE_HAND_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"16\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"12\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nClockIcon.displayName = \\\"ClockIcon\\\";\\n\\nexport { ClockIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-cog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-cog\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-cog.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudCogIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudCogIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: 180 },\\n};\\n\\nconst CloudCogIcon = forwardRef<CloudCogIconHandle, CloudCogIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\\\" />\\n          <motion.g\\n            animate={controls}\\n            transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n            variants={G_VARIANTS}\\n          >\\n            <path d=\\\"m9.2 15.9-.9-.4\\\" />\\n            <path d=\\\"m9.2 18.1-.9.4\\\" />\\n            <path d=\\\"m10.9 14.2-.4-.9\\\" />\\n            <path d=\\\"m10.9 19.8-.4.9\\\" />\\n            <path d=\\\"m13.5 13.3-.4.9\\\" />\\n            <path d=\\\"m13.5 20.7-.4-.9\\\" />\\n            <path d=\\\"m15.7 15.5-.9.4\\\" />\\n            <path d=\\\"m15.7 18.5-.9-.4\\\" />\\n            <circle cx=\\\"12\\\" cy=\\\"17\\\" r=\\\"3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCloudCogIcon.displayName = \\\"CloudCogIcon\\\";\\n\\nexport { CloudCogIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-download.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-download\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-download.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudDownloadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudDownloadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CLOUD_VARIANTS: Variants = {\\n  initial: { y: 2 },\\n  active: { y: 0 },\\n};\\n\\nconst CloudDownloadIcon = forwardRef<\\n  CloudDownloadIconHandle,\\n  CloudDownloadIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"initial\\\"),\\n      stopAnimation: () => controls.start(\\\"active\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"initial\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"active\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\\\" />\\n        <motion.g\\n          animate={controls}\\n          transition={{\\n            duration: 0.3,\\n            ease: [0.68, -0.6, 0.32, 1.6],\\n          }}\\n          variants={CLOUD_VARIANTS}\\n        >\\n          <path d=\\\"M12 13v8l-4-4\\\" />\\n          <path d=\\\"m12 21 4-4\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCloudDownloadIcon.displayName = \\\"CloudDownloadIcon\\\";\\n\\nexport { CloudDownloadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-lightning.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-lightning\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-lightning.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudLightningIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudLightningIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CloudLightningIcon = forwardRef<\\n  CloudLightningIconHandle,\\n  CloudLightningIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m13 12-3 5h4l-3 5\\\"\\n          initial=\\\"normal\\\"\\n          variants={{\\n            normal: { opacity: 1 },\\n            animate: {\\n              opacity: [1, 0.4, 1],\\n              transition: {\\n                duration: 1,\\n                repeat: Number.POSITIVE_INFINITY,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCloudLightningIcon.displayName = \\\"CloudLightningIcon\\\";\\n\\nexport { CloudLightningIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-rain-wind.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-rain-wind\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-rain-wind.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudRainWindIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudRainWindIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WIND_VARIANTS: Variants = {\\n  animate: {\\n    transition: {\\n      staggerChildren: 0.2,\\n    },\\n  },\\n};\\n\\nconst WIND_CHILD_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0.2, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CloudRainWindIcon = forwardRef<\\n  CloudRainWindIconHandle,\\n  CloudRainWindIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\\\" />\\n        <motion.g animate={controls} initial=\\\"normal\\\" variants={WIND_VARIANTS}>\\n          <motion.path d=\\\"m9.2 22 3-7\\\" variants={WIND_CHILD_VARIANTS} />\\n          <motion.path d=\\\"m9 13-3 7\\\" variants={WIND_CHILD_VARIANTS} />\\n          <motion.path d=\\\"m17 13-3 7\\\" variants={WIND_CHILD_VARIANTS} />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nCloudRainWindIcon.displayName = \\\"CloudRainWindIcon\\\";\\n\\nexport { CloudRainWindIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-rain.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-rain\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-rain.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudRainIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudRainIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RAIN_VARIANTS: Variants = {\\n  animate: {\\n    transition: {\\n      staggerChildren: 0.2,\\n    },\\n  },\\n};\\n\\nconst RAIN_CHILD_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0.2, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CloudRainIcon = forwardRef<CloudRainIconHandle, CloudRainIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={RAIN_VARIANTS}\\n          >\\n            <motion.path d=\\\"M16 14v6\\\" variants={RAIN_CHILD_VARIANTS} />\\n            <motion.path d=\\\"M8 14v6\\\" variants={RAIN_CHILD_VARIANTS} />\\n            <motion.path d=\\\"M12 16v6\\\" variants={RAIN_CHILD_VARIANTS} />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCloudRainIcon.displayName = \\\"CloudRainIcon\\\";\\n\\nexport { CloudRainIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-snow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-snow\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-snow.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudSnowIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudSnowIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SNOWFLAKE_VARIANTS: Variants = {\\n  animate: {\\n    transition: {\\n      staggerChildren: 0.3,\\n    },\\n  },\\n};\\n\\nconst SNOWFLAKE_CHILD_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0.3, 1],\\n    transition: {\\n      duration: 1.5,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SNOWFLAKE_PATH = [\\n  { id: \\\"snowflake1\\\", d: \\\"M8 15h.01\\\" },\\n  { id: \\\"snowflake2\\\", d: \\\"M8 19h.01\\\" },\\n  { id: \\\"snowflake3\\\", d: \\\"M12 17h.01\\\" },\\n  { id: \\\"snowflake4\\\", d: \\\"M12 21h.01\\\" },\\n  { id: \\\"snowflake5\\\", d: \\\"M16 15h.01\\\" },\\n  { id: \\\"snowflake6\\\", d: \\\"M16 19h.01\\\" },\\n];\\n\\nconst CloudSnowIcon = forwardRef<CloudSnowIconHandle, CloudSnowIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={SNOWFLAKE_VARIANTS}\\n          >\\n            {SNOWFLAKE_PATH.map((path) => (\\n              <motion.path\\n                d={path.d}\\n                key={path.id}\\n                variants={SNOWFLAKE_CHILD_VARIANTS}\\n              />\\n            ))}\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCloudSnowIcon.displayName = \\\"CloudSnowIcon\\\";\\n\\nexport { CloudSnowIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-sun.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-sun\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-sun.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudSunIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudSunIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CLOUD_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    x: [-1, 1, -1, 1, 0],\\n    y: [-1, 1, -1, 1, 0],\\n    transition: {\\n      duration: 1,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SUN_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst CloudSunIcon = forwardRef<CloudSunIconHandle, CloudSunIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const cloudControls = useAnimation();\\n    const sunControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          cloudControls.start(\\\"animate\\\");\\n          sunControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          cloudControls.start(\\\"normal\\\");\\n          sunControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          cloudControls.start(\\\"animate\\\");\\n          sunControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [cloudControls, sunControls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          cloudControls.start(\\\"normal\\\");\\n          sunControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [cloudControls, sunControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={cloudControls}\\n            initial=\\\"normal\\\"\\n            variants={CLOUD_VARIANTS}\\n          >\\n            <path d=\\\"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z\\\" />\\n          </motion.g>\\n          {[\\n            \\\"M12 2v2\\\",\\n            \\\"m4.93 4.93 1.41 1.41\\\",\\n            \\\"M20 12h2\\\",\\n            \\\"m19.07 4.93-1.41 1.41\\\",\\n            \\\"M15.947 12.65a4 4 0 0 0-5.925-4.128\\\",\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={sunControls}\\n              custom={index + 1}\\n              d={d}\\n              initial=\\\"normal\\\"\\n              key={d}\\n              variants={SUN_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCloudSunIcon.displayName = \\\"CloudSunIcon\\\";\\n\\nexport { CloudSunIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cloud-upload.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cloud-upload\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cloud-upload.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CloudUploadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CloudUploadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CLOUD_VARIANTS: Variants = {\\n  initial: { y: -2 },\\n  active: { y: 0 },\\n};\\n\\nconst CloudUploadIcon = forwardRef<CloudUploadIconHandle, CloudUploadIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"initial\\\"),\\n        stopAnimation: () => controls.start(\\\"active\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"initial\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"active\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\\\" />\\n          <motion.g\\n            animate={controls}\\n            transition={{\\n              duration: 0.3,\\n              ease: [0.68, -0.6, 0.32, 1.6],\\n            }}\\n            variants={CLOUD_VARIANTS}\\n          >\\n            <path d=\\\"M12 13v8\\\" />\\n            <path d=\\\"m8 17 4-4 4 4\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCloudUploadIcon.displayName = \\\"CloudUploadIcon\\\";\\n\\nexport { CloudUploadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/coffee.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"coffee\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"coffee.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CoffeeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CoffeeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    y: -3,\\n    opacity: [0, 1, 0],\\n    transition: {\\n      repeat: Number.POSITIVE_INFINITY,\\n      duration: 1.5,\\n      ease: \\\"easeInOut\\\",\\n      delay: 0.2 * custom,\\n    },\\n  }),\\n};\\n\\nconst CoffeeIcon = forwardRef<CoffeeIconHandle, CoffeeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={0.2}\\n            d=\\\"M10 2v2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.4}\\n            d=\\\"M14 2v2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M6 2v2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <path d=\\\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCoffeeIcon.displayName = \\\"CoffeeIcon\\\";\\n\\nexport { CoffeeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cog\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cog.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CogIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CogIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CogIcon = forwardRef<CogIconHandle, CogIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n            },\\n            animate: {\\n              rotate: 180,\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z\\\" />\\n          <path d=\\\"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\\\" />\\n          <path d=\\\"M12 2v2\\\" />\\n          <path d=\\\"M12 22v-2\\\" />\\n          <path d=\\\"m17 20.66-1-1.73\\\" />\\n          <path d=\\\"M11 10.27 7 3.34\\\" />\\n          <path d=\\\"m20.66 17-1.73-1\\\" />\\n          <path d=\\\"m3.34 7 1.73 1\\\" />\\n          <path d=\\\"M14 12h8\\\" />\\n          <path d=\\\"M2 12h2\\\" />\\n          <path d=\\\"m20.66 7-1.73 1\\\" />\\n          <path d=\\\"m3.34 17 1.73-1\\\" />\\n          <path d=\\\"m17 3.34-1 1.73\\\" />\\n          <path d=\\\"m11 13.73-4 6.93\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCogIcon.displayName = \\\"CogIcon\\\";\\n\\nexport { CogIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/compass.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"compass\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"compass.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CompassIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CompassIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CompassIcon = forwardRef<CompassIconHandle, CompassIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.polygon\\n            animate={controls}\\n            points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"\\n            transition={{\\n              type: \\\"spring\\\",\\n              stiffness: 120,\\n              damping: 15,\\n            }}\\n            variants={{\\n              normal: {\\n                rotate: 0,\\n              },\\n              animate: {\\n                rotate: 360,\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCompassIcon.displayName = \\\"CompassIcon\\\";\\n\\nexport { CompassIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/connect.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"connect\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"connect.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ConnectIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ConnectIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PLUG_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    x: -3,\\n    y: 3,\\n  },\\n};\\n\\nconst SOCKET_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    x: 3,\\n    y: -3,\\n  },\\n};\\n\\nconst PATH_VARIANTS = {\\n  normal: (custom: { x: number; y: number }) => ({\\n    d: `M${custom.x} ${custom.y} l2.5 -2.5`,\\n  }),\\n  animate: (custom: { x: number; y: number }) => ({\\n    d: `M${custom.x + 2.93} ${custom.y - 2.93} l0.10 -0.10`,\\n  }),\\n};\\n\\nconst ConnectIcon = forwardRef<ConnectIconHandle, ConnectIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19 5l3 -3\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={{\\n              normal: {\\n                d: \\\"M19 5l3 -3\\\",\\n              },\\n              animate: {\\n                d: \\\"M17 7l5 -5\\\",\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 22 3-3\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={{\\n              normal: {\\n                d: \\\"m2 22 3-3\\\",\\n              },\\n              animate: {\\n                d: \\\"m2 22 6-6\\\",\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={SOCKET_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={{ x: 7.5, y: 13.5 }}\\n            initial=\\\"normal\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={{ x: 10.5, y: 16.5 }}\\n            initial=\\\"normal\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z\\\"\\n            transition={{ type: \\\"spring\\\", stiffness: 500, damping: 30 }}\\n            variants={PLUG_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nConnectIcon.displayName = \\\"ConnectIcon\\\";\\n\\nexport { ConnectIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/construction.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"construction\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"construction.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ConstructionIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ConstructionIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ConstructionIcon = forwardRef<\\n  ConstructionIconHandle,\\n  ConstructionIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <defs>\\n          <motion.pattern\\n            animate={controls}\\n            height=\\\"14\\\"\\n            id=\\\"stripes\\\"\\n            initial=\\\"normal\\\"\\n            patternUnits=\\\"userSpaceOnUse\\\"\\n            variants={{\\n              normal: {\\n                x: 0,\\n              },\\n              animate: {\\n                x: [0, 6],\\n                transition: {\\n                  duration: 1,\\n                  ease: \\\"linear\\\",\\n                  repeat: Number.POSITIVE_INFINITY,\\n                  repeatType: \\\"loop\\\",\\n                },\\n              },\\n            }}\\n            width=\\\"6\\\"\\n          >\\n            <path d=\\\"M-4 -2 L14 30\\\" stroke=\\\"currentColor\\\" strokeWidth=\\\"2\\\" />\\n          </motion.pattern>\\n        </defs>\\n        <rect fill=\\\"url(#stripes)\\\" height=\\\"8\\\" rx=\\\"1\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"6\\\" />\\n        <path d=\\\"M17 14v7\\\" />\\n        <path d=\\\"M7 14v7\\\" />\\n        <path d=\\\"M17 3v3\\\" />\\n        <path d=\\\"M7 3v3\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nConstructionIcon.displayName = \\\"ConstructionIcon\\\";\\n\\nexport { ConstructionIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/contrast.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"contrast\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"contrast.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ContrastIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ContrastIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANT: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: 180,\\n    transformOrigin: \\\"left center\\\",\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 80,\\n      damping: 12,\\n    },\\n  },\\n};\\n\\nconst ContrastIcon = forwardRef<ContrastIconHandle, ContrastIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 18a6 6 0 0 0 0-12v12z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANT}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nContrastIcon.displayName = \\\"ContrastIcon\\\";\\n\\nexport { ContrastIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cooking-pot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cooking-pot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cooking-pot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CookingPotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CookingPotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LID_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, -14, 14, -10, 10, -6, 6, 0],\\n    transition: {\\n      duration: 0.9,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst POT_VARIANTS: Variants = {\\n  normal: { scale: 1 },\\n  animate: {\\n    scale: [1, 1.08, 1],\\n    transition: {\\n      duration: 0.95,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst CookingPotIcon = forwardRef<CookingPotIconHandle, CookingPotIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"12px 16px\\\" }}\\n            variants={POT_VARIANTS}\\n          >\\n            <path d=\\\"M2 12h20\\\" />\\n            <path d=\\\"M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8\\\" />\\n          </motion.g>\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"18px 6px\\\" }}\\n            variants={LID_VARIANTS}\\n          >\\n            <path d=\\\"m4 8 16-4\\\" />\\n            <path d=\\\"m8.86 6.78-.45-1.81a2 2 0 0 1 1.45-2.43l1.94-.48a2 2 0 0 1 2.43 1.46l.45 1.8\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCookingPotIcon.displayName = \\\"CookingPotIcon\\\";\\n\\nexport { CookingPotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/copy.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"copy\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"copy.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CopyIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CopyIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 160,\\n  damping: 17,\\n  mass: 1,\\n};\\n\\nconst CopyIcon = forwardRef<CopyIconHandle, CopyIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"14\\\"\\n            rx=\\\"2\\\"\\n            ry=\\\"2\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateY: 0, translateX: 0 },\\n              animate: { translateY: -3, translateX: -3 },\\n            }}\\n            width=\\\"14\\\"\\n            x=\\\"8\\\"\\n            y=\\\"8\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { x: 0, y: 0 },\\n              animate: { x: 3, y: 3 },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCopyIcon.displayName = \\\"CopyIcon\\\";\\n\\nexport { CopyIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-down-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-down-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-down-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleX: 1, x: 0, opacity: 1 },\\n  animate: {\\n    scaleX: [1, 1.15, 1],\\n    x: [0, -2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerDownLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerDownLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerDownLeftIcon = forwardRef<\\n  CornerDownLeftIconHandle,\\n  CornerDownLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M4 15h12a4 4 0 0 0 4-4V4\\\" />\\n        <path d=\\\"m9 20-5-5 5-5\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerDownLeftIcon.displayName = \\\"CornerDownLeftIcon\\\";\\n\\nexport { CornerDownLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-down-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-down-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-down-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleX: 1, x: 0, opacity: 1 },\\n  animate: {\\n    scaleX: [1, 1.15, 1],\\n    x: [0, 2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerDownRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerDownRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerDownRightIcon = forwardRef<\\n  CornerDownRightIconHandle,\\n  CornerDownRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"m15 10 5 5-5 5\\\" />\\n        <path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerDownRightIcon.displayName = \\\"CornerDownRightIcon\\\";\\n\\nexport { CornerDownRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-left-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-left-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-left-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleY: 1, y: 0, opacity: 1 },\\n  animate: {\\n    scaleY: [1, 1.15, 1],\\n    y: [0, 2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerLeftDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerLeftDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerLeftDownIcon = forwardRef<\\n  CornerLeftDownIconHandle,\\n  CornerLeftDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"m14 15-5 5-5-5\\\" />\\n        <path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerLeftDownIcon.displayName = \\\"CornerLeftDownIcon\\\";\\n\\nexport { CornerLeftDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-left-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-left-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-left-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleY: 1, y: 0, opacity: 1 },\\n  animate: {\\n    scaleY: [1, 1.15, 1],\\n    y: [0, -2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerLeftUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerLeftUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerLeftUpIcon = forwardRef<\\n  CornerLeftUpIconHandle,\\n  CornerLeftUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M14 9 9 4 4 9\\\" />\\n        <path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerLeftUpIcon.displayName = \\\"CornerLeftUpIcon\\\";\\n\\nexport { CornerLeftUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-right-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-right-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-right-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleY: 1, y: 0, opacity: 1 },\\n  animate: {\\n    scaleY: [1, 1.15, 1],\\n    y: [0, 2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerRightDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerRightDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerRightDownIcon = forwardRef<\\n  CornerRightDownIconHandle,\\n  CornerRightDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"m10 15 5 5 5-5\\\" />\\n        <path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerRightDownIcon.displayName = \\\"CornerRightDownIcon\\\";\\n\\nexport { CornerRightDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-right-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-right-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-right-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleY: 1, y: 0, opacity: 1 },\\n  animate: {\\n    scaleY: [1, 1.15, 1],\\n    y: [0, -2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerRightUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerRightUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerRightUpIcon = forwardRef<\\n  CornerRightUpIconHandle,\\n  CornerRightUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"m10 9 5-5 5 5\\\" />\\n        <path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerRightUpIcon.displayName = \\\"CornerRightUpIcon\\\";\\n\\nexport { CornerRightUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-up-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-up-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-up-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleX: 1, x: 0, opacity: 1 },\\n  animate: {\\n    scaleX: [1, 1.15, 1],\\n    x: [0, -2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerUpLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerUpLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerUpLeftIcon = forwardRef<\\n  CornerUpLeftIconHandle,\\n  CornerUpLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\" />\\n        <path d=\\\"M9 14 4 9l5-5\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerUpLeftIcon.displayName = \\\"CornerUpLeftIcon\\\";\\n\\nexport { CornerUpLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/corner-up-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"corner-up-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"corner-up-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst STRETCH_VARIANTS: Variants = {\\n  normal: { scaleX: 1, x: 0, opacity: 1 },\\n  animate: {\\n    scaleX: [1, 1.15, 1],\\n    x: [0, 2, 0],\\n    transition: {\\n      duration: 0.45,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nexport interface CornerUpRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CornerUpRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CornerUpRightIcon = forwardRef<\\n  CornerUpRightIconHandle,\\n  CornerUpRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={STRETCH_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"m15 14 5-5-5-5\\\" />\\n        <path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nCornerUpRightIcon.displayName = \\\"CornerUpRightIcon\\\";\\n\\nexport { CornerUpRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cpu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cpu\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cpu.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CpuIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CpuIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.5,\\n  ease: \\\"easeInOut\\\",\\n  repeat: 1,\\n};\\n\\nconst Y_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    rotate: 0,\\n    opacity: 1,\\n  },\\n  animate: {\\n    scaleY: [1, 1.5, 1],\\n    opacity: [1, 0.8, 1],\\n  },\\n};\\nconst X_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    rotate: 0,\\n    opacity: 1,\\n  },\\n  animate: {\\n    scaleX: [1, 1.5, 1],\\n    opacity: [1, 0.8, 1],\\n  },\\n};\\n\\nconst CpuIcon = forwardRef<CpuIconHandle, CpuIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"16\\\" rx=\\\"2\\\" width=\\\"16\\\" x=\\\"4\\\" y=\\\"4\\\" />\\n          <rect height=\\\"6\\\" rx=\\\"1\\\" width=\\\"6\\\" x=\\\"9\\\" y=\\\"9\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 2v2\\\"\\n            transition={TRANSITION}\\n            variants={Y_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 20v2\\\"\\n            transition={TRANSITION}\\n            variants={Y_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 15h2\\\"\\n            transition={TRANSITION}\\n            variants={X_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 9h2\\\"\\n            transition={TRANSITION}\\n            variants={X_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 15h2\\\"\\n            transition={TRANSITION}\\n            variants={X_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 9h2\\\"\\n            transition={TRANSITION}\\n            variants={X_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 2v2\\\"\\n            transition={TRANSITION}\\n            variants={Y_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 20v2\\\"\\n            transition={TRANSITION}\\n            variants={Y_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCpuIcon.displayName = \\\"CpuIcon\\\";\\n\\nexport { CpuIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cup-soda.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cup-soda\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cup-soda.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CupSodaIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CupSodaIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst STRAW_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    scaleY: 1,\\n    transition: {\\n      duration: 0.25,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    y: [0, -0.85, 0.15, 0],\\n    scaleY: [1, 1.06, 0.99, 1],\\n    transition: {\\n      duration: 0.5,\\n      ease: [0.34, 1.56, 0.64, 1],\\n      times: [0, 0.35, 0.65, 1],\\n    },\\n  },\\n};\\n\\nconst WAVE_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    transition: {\\n      duration: 0.25,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    y: [0, -1, 0],\\n    transition: {\\n      duration: 1.8,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst BUBBLE_VARIANTS: Variants = {\\n  normal: { opacity: 0, y: 0, scale: 1 },\\n  animate: (delay: number) => ({\\n    opacity: [0, 0.9, 0.4, 0],\\n    y: [0, -3, -10, -14],\\n    scale: [1, 1, 0.85, 0.6],\\n    transition: {\\n      duration: 1.5,\\n      ease: \\\"easeIn\\\",\\n      delay,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatDelay: 0,\\n      times: [0, 0.08, 0.7, 1],\\n    },\\n  }),\\n};\\n\\nconst BUBBLES = [\\n  { delay: 0, cx: 8.25, cy: 20.5, r: 0.75 },\\n  { delay: 0.35, cx: 11.25, cy: 19.5, r: 0.6 },\\n  { delay: 0.7, cx: 14, cy: 20.75, r: 0.6 },\\n  { delay: 1.05, cx: 9.75, cy: 19, r: 0.75 },\\n  { delay: 0.55, cx: 12.5, cy: 20, r: 0.45 },\\n] as const;\\n\\nconst CupSodaIcon = forwardRef<CupSodaIconHandle, CupSodaIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(\\\"relative\\\", className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8\\\" />\\n          <path d=\\\"M5 8h14\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0\\\"\\n            variants={WAVE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 8 1-6h2\\\"\\n            style={{\\n              transformBox: \\\"fill-box\\\",\\n              originX: \\\"50%\\\",\\n              originY: \\\"100%\\\",\\n            }}\\n            variants={STRAW_VARIANTS}\\n          />\\n          {BUBBLES.map((b, i) => (\\n            <motion.circle\\n              animate={controls}\\n              custom={b.delay}\\n              cx={b.cx}\\n              cy={b.cy}\\n              fill=\\\"currentColor\\\"\\n              initial=\\\"normal\\\"\\n              key={i}\\n              r={b.r}\\n              stroke=\\\"none\\\"\\n              style={{\\n                transformBox: \\\"fill-box\\\",\\n                originX: \\\"50%\\\",\\n                originY: \\\"50%\\\",\\n              }}\\n              variants={BUBBLE_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCupSodaIcon.displayName = \\\"CupSodaIcon\\\";\\n\\nexport { CupSodaIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/cursor-click.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"cursor-click\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"cursor-click.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface CursorClickIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface CursorClickIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CURSOR_VARIANTS: Variants = {\\n  initial: { x: 0, y: 0 },\\n  hover: {\\n    x: [0, 0, -3, 0],\\n    y: [0, -4, 0, 0],\\n    transition: {\\n      duration: 1,\\n      bounce: 0.3,\\n    },\\n  },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  initial: { opacity: 1, x: 0, y: 0 },\\n  spread: (custom: { x: number; y: number }) => ({\\n    opacity: [0, 1, 0, 0, 0, 0, 1],\\n    x: [0, custom.x, 0, 0],\\n    y: [0, custom.y, 0, 0],\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 70,\\n      damping: 10,\\n      mass: 0.4,\\n    },\\n  }),\\n};\\n\\nconst CursorClickIcon = forwardRef<CursorClickIconHandle, CursorClickIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const clickControls = useAnimation();\\n    const cursorControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          cursorControls.start(\\\"hover\\\");\\n          clickControls.start(\\\"spread\\\", { delay: 1.3 });\\n        },\\n        stopAnimation: () => {\\n          cursorControls.start(\\\"initial\\\");\\n          clickControls.start(\\\"initial\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          cursorControls.start(\\\"hover\\\");\\n          clickControls.start(\\\"spread\\\", { delay: 1.3 });\\n        }\\n      },\\n      [clickControls, cursorControls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          cursorControls.start(\\\"initial\\\");\\n          clickControls.start(\\\"initial\\\");\\n        }\\n      },\\n      [cursorControls, clickControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={cursorControls}\\n            d=\\\"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\\\"\\n            variants={CURSOR_VARIANTS}\\n          />\\n          <motion.path\\n            animate={clickControls}\\n            custom={{ x: 1, y: -1 }}\\n            d=\\\"M14 4.1 12 6\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={clickControls}\\n            custom={{ x: -1, y: 0 }}\\n            d=\\\"m5.1 8-2.9-.8\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={clickControls}\\n            custom={{ x: -1, y: 1 }}\\n            d=\\\"m6 12-1.9 2\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={clickControls}\\n            custom={{ x: 0, y: -1 }}\\n            d=\\\"M7.2 2.2 8 5.1\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nCursorClickIcon.displayName = \\\"CursorClickIcon\\\";\\n\\nexport { CursorClickIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/database-backup.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"database-backup\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"database-backup.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DatabaseBackupIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DatabaseBackupIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DatabaseBackupIcon = forwardRef<\\n  DatabaseBackupIconHandle,\\n  DatabaseBackupIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\" />\\n        <path d=\\\"M3 12a9 3 0 0 0 5 2.69\\\" />\\n        <path d=\\\"M21 9.3V5\\\" />\\n        <path d=\\\"M3 5v14a9 3 0 0 0 6.47 2.88\\\" />\\n\\n        <motion.g\\n          animate={controls}\\n          style={{ transformOrigin: \\\"17.5px 17px\\\" }}\\n          transition={{ duration: 0.6, ease: \\\"easeInOut\\\" }}\\n          variants={{\\n            normal: { rotate: 0 },\\n            animate: { rotate: 360 },\\n          }}\\n        >\\n          <path d=\\\"M12 12v4h4\\\" />\\n          <path d=\\\"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nDatabaseBackupIcon.displayName = \\\"DatabaseBackupIcon\\\";\\n\\nexport { DatabaseBackupIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/delete.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"delete\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"delete.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DeleteIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DeleteIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LID_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: { y: -1.1 },\\n};\\n\\nconst SPRING_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 500,\\n  damping: 30,\\n};\\n\\nconst DeleteIcon = forwardRef<DeleteIconHandle, DeleteIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            transition={SPRING_TRANSITION}\\n            variants={LID_VARIANTS}\\n          >\\n            <path d=\\\"M3 6h18\\\" />\\n            <path d=\\\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\\\" />\\n          </motion.g>\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\\\"\\n            transition={SPRING_TRANSITION}\\n            variants={{\\n              normal: { d: \\\"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\\\" },\\n              animate: { d: \\\"M19 9v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V9\\\" },\\n            }}\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={SPRING_TRANSITION}\\n            variants={{\\n              normal: { y1: 11, y2: 17 },\\n              animate: { y1: 11.5, y2: 17.5 },\\n            }}\\n            x1=\\\"10\\\"\\n            x2=\\\"10\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"17\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={SPRING_TRANSITION}\\n            variants={{\\n              normal: { y1: 11, y2: 17 },\\n              animate: { y1: 11.5, y2: 17.5 },\\n            }}\\n            x1=\\\"14\\\"\\n            x2=\\\"14\\\"\\n            y1=\\\"11\\\"\\n            y2=\\\"17\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDeleteIcon.displayName = \\\"DeleteIcon\\\";\\n\\nexport { DeleteIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/disc-3.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"disc-3\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"disc-3.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface Disc3IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface Disc3IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst Disc3Icon = forwardRef<Disc3IconHandle, Disc3IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\" />\\n\\n          <motion.g\\n            animate={controls}\\n            style={{ transformOrigin: \\\"12px 12px\\\" }}\\n            transition={{ duration: 0.4, ease: \\\"easeInOut\\\" }}\\n            variants={{\\n              normal: { rotate: 0 },\\n              animate: { rotate: 90 },\\n            }}\\n          >\\n            <path d=\\\"M6 12c0-1.7.7-3.2 1.8-4.2\\\" />\\n            <path d=\\\"M18 12c0 1.7-.7 3.2-1.8 4.2\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDisc3Icon.displayName = \\\"Disc3Icon\\\";\\n\\nexport { Disc3Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/discord.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"discord\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"discord.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DiscordIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DiscordIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    translateX: 0,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.2,\\n    },\\n  },\\n  animate: {\\n    translateX: [0, -2, 2, -2, 2, 0],\\n    opacity: 1,\\n    transition: {\\n      duration: 0.4,\\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst DiscordIcon = forwardRef<DiscordIconHandle, DiscordIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"3\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 44 44\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17.54,34.22A47.42,47.42,0,0,1,14.68,38C7.3,37.79,4.5,33,4.5,33A44.83,44.83,0,0,1,9.31,13.48,16.47,16.47,0,0,1,18.69,10l1,2.31\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17.85,22.67a3.48,3.48,0,0,0-3.37,3.9,3.38,3.38,0,0,0,3.31,3.22,3.53,3.53,0,0,0,3.43-3.9A3.45,3.45,0,0,0,17.85,22.67Z\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12.2,14.37a28.19,28.19,0,0,1,8.16-2.18A23.26,23.26,0,0,1,24,12a23.26,23.26,0,0,1,3.64.21,28.19,28.19,0,0,1,8.16,2.18m-7.47-2.09l1-2.31a16.47,16.47,0,0,1,9.38,3.51A44.83,44.83,0,0,1,43.5,33S40.7,37.79,33.32,38a47.42,47.42,0,0,1-2.86-3.81\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M36.92,31.29a29.63,29.63,0,0,1-8.64,3.49,21.25,21.25,0,0,1-4.28.4h0a21.25,21.25,0,0,1-4.28-.4,29.63,29.63,0,0,1-8.64-3.49\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M30.15,22.67a3.48,3.48,0,0,1,3.37,3.9,3.38,3.38,0,0,1-3.31,3.22,3.53,3.53,0,0,1-3.43-3.9A3.45,3.45,0,0,1,30.15,22.67Z\\\"\\n            initial=\\\"normal\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDiscordIcon.displayName = \\\"DiscordIcon\\\";\\n\\nexport { DiscordIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/dollar-sign.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dollar-sign\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"dollar-sign.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DollarSignIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DollarSignIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOLLAR_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst DOLLAR_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst DollarSignIcon = forwardRef<DollarSignIconHandle, DollarSignIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"\\n            initial=\\\"normal\\\"\\n            variants={DOLLAR_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 22 L12 2\\\"\\n            initial=\\\"normal\\\"\\n            variants={DOLLAR_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDollarSignIcon.displayName = \\\"DollarSignIcon\\\";\\n\\nexport { DollarSignIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/download.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"download\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"download.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DownloadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DownloadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: {\\n    y: 2,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 10,\\n      mass: 1,\\n    },\\n  },\\n};\\n\\nconst DownloadIcon = forwardRef<DownloadIconHandle, DownloadIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" />\\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n            <polyline points=\\\"7 10 12 15 17 10\\\" />\\n            <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"15\\\" y2=\\\"3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDownloadIcon.displayName = \\\"DownloadIcon\\\";\\n\\nexport { DownloadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/downvote.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"downvote\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"downvote.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DownvoteIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DownvoteIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DownvoteIcon = forwardRef<DownvoteIconHandle, DownvoteIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: {\\n              translateX: \\\"0px\\\",\\n              translateY: \\\"0px\\\",\\n              rotate: \\\"0deg\\\",\\n            },\\n            animate: {\\n              translateX: \\\"-1px\\\",\\n              translateY: \\\"2px\\\",\\n              rotate: \\\"-12deg\\\",\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M17 14V2\\\" />\\n          <path d=\\\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDownvoteIcon.displayName = \\\"DownvoteIcon\\\";\\n\\nexport { DownvoteIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/dribbble.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"dribbble\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"dribbble.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DribbbleIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DribbbleIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst DribbbleIcon = forwardRef<DribbbleIconHandle, DribbbleIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const circleControls = useAnimation();\\n    const path1Controls = useAnimation();\\n    const path2Controls = useAnimation();\\n    const path3Controls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          circleControls.start(\\\"animate\\\");\\n          path1Controls.start(\\\"animate\\\");\\n          path2Controls.start(\\\"animate\\\");\\n          path3Controls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          circleControls.start(\\\"normal\\\");\\n          path1Controls.start(\\\"normal\\\");\\n          path2Controls.start(\\\"normal\\\");\\n          path3Controls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          circleControls.start(\\\"animate\\\");\\n          path1Controls.start(\\\"animate\\\");\\n          path2Controls.start(\\\"animate\\\");\\n          path3Controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [\\n        circleControls,\\n        onMouseEnter,\\n        path1Controls,\\n        path2Controls,\\n        path3Controls,\\n      ]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          circleControls.start(\\\"normal\\\");\\n          path1Controls.start(\\\"normal\\\");\\n          path2Controls.start(\\\"normal\\\");\\n          path3Controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [\\n        circleControls,\\n        path1Controls,\\n        path2Controls,\\n        path3Controls,\\n        onMouseLeave,\\n      ]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={circleControls}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"10\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={path1Controls}\\n            d=\\\"M19.13 5.09C15.22 9.14 10 10.44 2.25 10.94\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={path2Controls}\\n            d=\\\"M21.75 12.84c-6.62-1.41-12.14 1-16.38 6.32\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={path3Controls}\\n            d=\\\"M8.56 2.75c4.37 6 6 9.42 8 17.72\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDribbbleIcon.displayName = \\\"DribbbleIcon\\\";\\n\\nexport { DribbbleIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/droplet.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"droplet\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"droplet.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DropletIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DropletIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DropletIcon = forwardRef<DropletIconHandle, DropletIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\\\"\\n            transition={{ duration: 0.6, delay: 0.2 }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                opacity: 1,\\n                pathOffset: 0,\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDropletIcon.displayName = \\\"DropletIcon\\\";\\n\\nexport { DropletIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/drum.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"drum\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"drum.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface DrumIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface DrumIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: (custom: number) => ({\\n    rotate: custom === 1 ? [-10, 10, 0] : [10, -10, 0],\\n    transition: {\\n      delay: 0.1 * custom,\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"reverse\\\",\\n      duration: 0.5,\\n    },\\n  }),\\n};\\n\\nconst DrumIcon = forwardRef<DrumIconHandle, DrumIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"m2 2 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"m22 2-8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <ellipse cx=\\\"12\\\" cy=\\\"9\\\" rx=\\\"10\\\" ry=\\\"5\\\" />\\n          <path d=\\\"M7 13.4v7.9\\\" />\\n          <path d=\\\"M12 14v8\\\" />\\n          <path d=\\\"M17 13.4v7.9\\\" />\\n          <path d=\\\"M2 9v8a10 5 0 0 0 20 0V9\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nDrumIcon.displayName = \\\"DrumIcon\\\";\\n\\nexport { DrumIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/earth.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"earth\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"earth.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface EarthIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface EarthIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_TRANSITION: Transition = {\\n  duration: 0.3,\\n  delay: 0.1,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n  },\\n};\\n\\nconst EarthIcon = forwardRef<EarthIconHandle, EarthIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21.54 15H17a2 2 0 0 0-2 2v4.54\\\"\\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                opacity: 1,\\n                pathOffset: 0,\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17\\\"\\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                opacity: 1,\\n                pathOffset: 0,\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05\\\"\\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                opacity: 1,\\n                pathOffset: 0,\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"10\\\"\\n            transition={CIRCLE_TRANSITION}\\n            variants={CIRCLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nEarthIcon.displayName = \\\"EarthIcon\\\";\\n\\nexport { EarthIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/euro.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"euro\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"euro.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface EuroIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface EuroIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst EURO_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst EURO_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst EuroIcon = forwardRef<EuroIconHandle, EuroIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2\\\"\\n            initial=\\\"normal\\\"\\n            variants={EURO_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 10h-12\\\"\\n            initial=\\\"normal\\\"\\n            variants={EURO_SECONDARY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M13 14h-9\\\"\\n            initial=\\\"normal\\\"\\n            variants={EURO_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nEuroIcon.displayName = \\\"EuroIcon\\\";\\n\\nexport { EuroIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/ev-charger.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ev-charger\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"ev-charger.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface EvChargerIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface EvChargerIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst EV_CHARGER_VARIANT: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0.4, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst EvChargerIcon = forwardRef<EvChargerIconHandle, EvChargerIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5\\\" />\\n          <path d=\\\"M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16\\\" />\\n          <path d=\\\"M2 21h13\\\" />\\n          <path d=\\\"M3 7h11\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9 11-2 3h3l-2 3\\\"\\n            initial=\\\"normal\\\"\\n            variants={EV_CHARGER_VARIANT}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nEvChargerIcon.displayName = \\\"EvChargerIcon\\\";\\n\\nexport { EvChargerIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/expand.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"expand\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"expand.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ExpandIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ExpandIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ExpandIcon = forwardRef<ExpandIconHandle, ExpandIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m21 21-6-6m6 6v-4.8m0 4.8h-4.8\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 16.2V21m0 0h4.8M3 21l6-6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 7.8V3m0 0h-4.8M21 3l-6 6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 7.8V3m0 0h4.8M3 3l6 6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nExpandIcon.displayName = \\\"ExpandIcon\\\";\\n\\nexport { ExpandIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/eye-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"eye-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"eye-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface EyeOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface EyeOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 2],\\n    opacity: [0, 1],\\n    pathOffset: [0, 2],\\n    transition: { duration: 0.6 },\\n  },\\n};\\n\\nconst EyeOffIcon = forwardRef<EyeOffIconHandle, EyeOffIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\\\" />\\n          <path d=\\\"M14.084 14.158a3 3 0 0 1-4.242-4.242\\\" />\\n          <path d=\\\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 2 20 20\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nEyeOffIcon.displayName = \\\"EyeOffIcon\\\";\\n\\nexport { EyeOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/eye.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"eye\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"eye.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface EyeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface EyeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst EyeIcon = forwardRef<EyeIconHandle, EyeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\\\"\\n            style={{ originY: \\\"50%\\\" }}\\n            transition={{ duration: 0.4, ease: \\\"easeInOut\\\" }}\\n            variants={{\\n              normal: { scaleY: 1, opacity: 1 },\\n              animate: { scaleY: [1, 0.1, 1], opacity: [1, 0.3, 1] },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"3\\\"\\n            transition={{ duration: 0.4, ease: \\\"easeInOut\\\" }}\\n            variants={{\\n              normal: { scale: 1, opacity: 1 },\\n              animate: { scale: [1, 0.3, 1], opacity: [1, 0.3, 1] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nEyeIcon.displayName = \\\"EyeIcon\\\";\\n\\nexport { EyeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/facebook.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"facebook\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"facebook.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FacebookIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FacebookIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FACEBOOK_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst FacebookIcon = forwardRef<FacebookIconHandle, FacebookIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"\\n            initial=\\\"normal\\\"\\n            variants={FACEBOOK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFacebookIcon.displayName = \\\"FacebookIcon\\\";\\n\\nexport { FacebookIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/feather.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"feather\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"feather.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FeatherIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FeatherIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FEATHER_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    y: 0,\\n    x: 0,\\n  },\\n  animate: {\\n    rotate: [0, -8, 4, -3, 0],\\n    y: [0, -4, -2, -1, 0],\\n    x: [0, 2, -2, 1, 0],\\n    transition: {\\n      duration: 1.6,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst FeatherIcon = forwardRef<FeatherIconHandle, FeatherIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={FEATHER_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z\\\" />\\n          <path d=\\\"M16 8 2 22\\\" />\\n          <path d=\\\"M17.5 15H9\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFeatherIcon.displayName = \\\"FeatherIcon\\\";\\n\\nexport { FeatherIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/figma.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"figma\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"figma.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FigmaIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FigmaIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.5,\\n      opacity: { delay: 0.25 },\\n    },\\n  },\\n};\\n\\nconst FigmaIcon = forwardRef<FigmaIconHandle, FigmaIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFigmaIcon.displayName = \\\"FigmaIcon\\\";\\n\\nexport { FigmaIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-chart-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-chart-line\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-chart-line.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileChartLineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FileChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15,\\n      duration: 0.3,\\n      opacity: { delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst FileChartLineIcon = forwardRef<\\n  FileChartLineIconHandle,\\n  FileChartLineIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\\\" />\\n        <path d=\\\"M14 2v4a2 2 0 0 0 2 2h4\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m8 17 2.5-2.5 2 2L16 13\\\"\\n          variants={VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nFileChartLineIcon.displayName = \\\"FileChartLineIcon\\\";\\n\\nexport { FileChartLineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-check-2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-check-2\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-check-2.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileCheck2IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FileCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst FileCheck2Icon = forwardRef<FileCheck2IconHandle, FileCheck2IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M14 2v4a2 2 0 0 0 2 2h4\\\" />\\n          <path d=\\\"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m3 15 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={CHECK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFileCheck2Icon.displayName = \\\"FileCheck2Icon\\\";\\n\\nexport { FileCheck2Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FileCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst FileCheckIcon = forwardRef<FileCheckIconHandle, FileCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\\\" />\\n          <path d=\\\"M14 2v4a2 2 0 0 0 2 2h4\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9 15 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={CHECK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFileCheckIcon.displayName = \\\"FileCheckIcon\\\";\\n\\nexport { FileCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-cog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-cog\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-cog.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileCogIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: 180 },\\n};\\n\\nconst FileCogIcon = forwardRef<\\n  FileCogIconHandle,\\n  HTMLAttributes<HTMLDivElement>\\n>(({ onMouseEnter, onMouseLeave, className, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height=\\\"28\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width=\\\"28\\\"\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M14 2v4a2 2 0 0 0 2 2h4\\\" />\\n        <path d=\\\"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5\\\" />\\n        <motion.g\\n          animate={controls}\\n          transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n          variants={G_VARIANTS}\\n        >\\n          <path d=\\\"m3.2 12.9-.9-.4\\\" />\\n          <path d=\\\"m3.2 15.1-.9.4\\\" />\\n          <path d=\\\"m4.9 11.2-.4-.9\\\" />\\n          <path d=\\\"m4.9 16.8-.4.9\\\" />\\n          <path d=\\\"m7.5 10.3-.4.9\\\" />\\n          <path d=\\\"m7.5 17.7-.4-.9\\\" />\\n          <path d=\\\"m9.7 12.5-.9.4\\\" />\\n          <path d=\\\"m9.7 15.5-.9-.4\\\" />\\n          <circle cx=\\\"6\\\" cy=\\\"14\\\" r=\\\"3\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nFileCogIcon.displayName = \\\"FileCogIcon\\\";\\n\\nexport { FileCogIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-pen-line.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-pen-line\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-pen-line.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FilePenLineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FilePenLineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PEN_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    rotate: [-0.3, 0.2, -0.4],\\n    x: [0, -0.5, 1, 0],\\n    y: [0, 1, -0.5, 0],\\n    transition: {\\n      duration: 0.5,\\n      repeat: 1,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst FilePenLineIcon = forwardRef<FilePenLineIconHandle, FilePenLineIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PEN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 18h1\\\"\\n            transition={{ duration: 0.5 }}\\n            variants={{\\n              normal: { d: \\\"M8 18h1\\\" },\\n              animate: { d: \\\"M8 18h5\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFilePenLineIcon.displayName = \\\"FilePenLineIcon\\\";\\n\\nexport { FilePenLineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-stack.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-stack\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-stack.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileStackIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FileStackIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FileStackIcon = forwardRef<FileStackIconHandle, FileStackIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 7h-3a2 2 0 0 1-2-2V2\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: -4, translateY: 4 },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17Z\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: -4, translateY: 4 },\\n            }}\\n          />\\n          <path d=\\\"M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11\\\"\\n            variants={{\\n              normal: { translateX: 0, translateY: 0 },\\n              animate: { translateX: 4, translateY: -4 },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFileStackIcon.displayName = \\\"FileStackIcon\\\";\\n\\nexport { FileStackIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/file-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"file-text\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"file-text.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type React from \\\"react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FileTextIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FileTextIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FILE_TEXT = forwardRef<FileTextIconHandle, FileTextIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            normal: { scale: 1 },\\n            animate: {\\n              scale: 1.05,\\n              transition: {\\n                duration: 0.3,\\n                ease: \\\"easeOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\\\" />\\n          <path d=\\\"M14 2v4a2 2 0 0 0 2 2h4\\\" />\\n\\n          <motion.path\\n            d=\\\"M10 9H8\\\"\\n            stroke=\\\"currentColor\\\"\\n            strokeWidth=\\\"2\\\"\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                x1: 8,\\n                x2: 10,\\n              },\\n              animate: {\\n                pathLength: [1, 0, 1],\\n                x1: [8, 10, 8],\\n                x2: [10, 10, 10],\\n                transition: {\\n                  duration: 0.7,\\n                  delay: 0.3,\\n                },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            d=\\\"M16 13H8\\\"\\n            stroke=\\\"currentColor\\\"\\n            strokeWidth=\\\"2\\\"\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                x1: 8,\\n                x2: 16,\\n              },\\n              animate: {\\n                pathLength: [1, 0, 1],\\n                x1: [8, 16, 8],\\n                x2: [16, 16, 16],\\n                transition: {\\n                  duration: 0.7,\\n                  delay: 0.5,\\n                },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            d=\\\"M16 17H8\\\"\\n            stroke=\\\"currentColor\\\"\\n            strokeWidth=\\\"2\\\"\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                x1: 8,\\n                x2: 16,\\n              },\\n              animate: {\\n                pathLength: [1, 0, 1],\\n                x1: [8, 16, 8],\\n                x2: [16, 16, 16],\\n                transition: {\\n                  duration: 0.7,\\n                  delay: 0.7,\\n                },\\n              },\\n            }}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFILE_TEXT.displayName = \\\"FileTextIcon\\\";\\n\\nexport { FILE_TEXT as FileTextIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/fingerprint.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"fingerprint\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"fingerprint.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FingerprintIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FingerprintIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  animate: {\\n    opacity: [0, 0, 1, 1, 1],\\n    pathLength: [0.1, 0.3, 0.5, 0.7, 0.9, 1],\\n    transition: {\\n      opacity: { duration: 0.5 },\\n      pathLength: {\\n        duration: 2,\\n      },\\n    },\\n  },\\n};\\n\\nconst FingerprintIcon = forwardRef<FingerprintIconHandle, FingerprintIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path\\n            d=\\\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M14 13.12c0 2.38 0 6.38-1 8.88\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 13.12c0 2.38 0 6.38-1 8.88\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M17.29 21.02c.12-.6.43-2.3.5-3.02\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17.29 21.02c.12-.6.43-2.3.5-3.02\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M2 12a10 10 0 0 1 18-6\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 12a10 10 0 0 1 18-6\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path d=\\\"M2 16h.01\\\" fill=\\\"none\\\" strokeOpacity={0.4} strokeWidth=\\\"2\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 16h.01\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M21.8 16c.2-2 .131-5.354 0-6\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21.8 16c.2-2 .131-5.354 0-6\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M8.65 22c.21-.66.45-1.32.57-2\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8.65 22c.21-.66.45-1.32.57-2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n\\n          <path\\n            d=\\\"M9 6.8a6 6 0 0 1 9 5.2v2\\\"\\n            fill=\\\"none\\\"\\n            strokeOpacity={0.4}\\n            strokeWidth=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 6.8a6 6 0 0 1 9 5.2v2\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFingerprintIcon.displayName = \\\"FingerprintIcon\\\";\\n\\nexport { FingerprintIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/fish-symbol.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"fish-symbol\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"fish-symbol.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FishSymbolIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FishSymbolIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15,\\n      opacity: { delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst FishSymbolIcon = forwardRef<FishSymbolIconHandle, FishSymbolIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 16s9-15 20-4C11 23 2 8 2 8\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFishSymbolIcon.displayName = \\\"FishSymbolIcon\\\";\\n\\nexport { FishSymbolIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/flame.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"flame\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"flame.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FlameIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FlameIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    pathOffset: 0,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.1,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst FlameIcon = forwardRef<FlameIconHandle, FlameIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8.9 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\\\"\\n            fill=\\\"none\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFlameIcon.displayName = \\\"FlameIcon\\\";\\n\\nexport { FlameIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/flask.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"flask\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"flask.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FlaskIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FlaskIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FlaskIcon = forwardRef<FlaskIconHandle, FlaskIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"currentColor\\\"\\n          height={size}\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"5.632\\\"\\n          viewBox=\\\"0 0 512 512\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            variants={{\\n              normal: { rotate: 0, translateY: 0 },\\n              animate: {\\n                translateY: -12,\\n                rotate: [0, 5, -5, 3, -3, 0],\\n                transition: {\\n                  ease: \\\"linear\\\",\\n                  rotate: { duration: 0.8 },\\n                },\\n              },\\n            }}\\n          >\\n            <circle cx=\\\"151.273\\\" cy=\\\"407.273\\\" r=\\\"11.636\\\" />\\n            <circle cx=\\\"244.364\\\" cy=\\\"372.364\\\" r=\\\"11.636\\\" />\\n            <circle cx=\\\"290.909\\\" cy=\\\"418.909\\\" r=\\\"11.636\\\" />\\n            <circle cx=\\\"221.091\\\" cy=\\\"453.818\\\" r=\\\"11.636\\\" />\\n            <circle cx=\\\"372.364\\\" cy=\\\"430.545\\\" r=\\\"11.636\\\" />\\n          </motion.g>\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M456.145,436.364l-79.127-124.509c0-2.327-2.327-4.655-3.491-5.818l-34.909-55.855c-8.146-13.964-12.8-29.091-12.8-44.218 V67.491c13.964-4.655,23.273-17.455,23.273-32.582C349.091,15.127,333.964,0,314.182,0H197.818 c-19.782,0-34.909,15.127-34.909,34.909c0,19.782,15.127,34.909,34.909,34.909h69.818c6.982,0,11.636-4.655,11.636-11.636 s-4.655-11.636-11.636-11.636h-69.818c-6.982,0-11.636-4.655-11.636-11.636c0-6.982,4.655-11.636,11.636-11.636h116.364 c6.982,0,11.636,4.655,11.636,11.636c0,6.982-4.655,11.636-11.636,11.636s-11.636,4.655-11.636,11.636v147.782 c0,19.782,5.818,39.564,16.291,55.855l19.782,31.418c-30.255-5.818-64-2.327-88.436,10.473 c-23.273,11.636-60.509,13.964-87.273,4.655l30.255-46.545c10.473-16.291,16.291-36.073,16.291-55.855V104.727 c0-6.982-4.655-11.636-11.636-11.636s-11.636,4.655-11.636,11.636v101.236c0,15.127-4.655,30.255-12.8,43.055l-34.909,55.855 c-1.164,1.164-2.327,2.327-3.491,3.491c0,1.164,0,1.164-1.164,2.327L55.855,436.364c-5.818,9.309-9.309,19.782-9.309,31.418v9.309 c0,19.782,15.127,34.909,34.909,34.909h349.091c19.782,0,34.909-15.127,34.909-34.909v-9.309 C465.455,456.145,461.964,445.673,456.145,436.364z M443.345,477.091h-1.164c0,6.982-4.655,11.636-11.636,11.636H81.455 c-6.982,0-11.636-4.655-11.636-11.636v-9.309c0-6.982,2.327-12.8,5.818-18.618l75.636-119.855 c15.127,5.818,32.582,8.145,50.036,8.145c22.109,0,43.055-4.655,60.509-12.8c25.6-12.8,68.655-13.964,96.582-1.164l79.127,125.673 c3.491,5.818,5.818,11.636,5.818,18.618V477.091z\\\"\\n            variants={{\\n              normal: { rotate: 0, scale: 1 },\\n              animate: {\\n                scale: 0.9,\\n                rotate: [0, 6, -6, 3, -3, 0],\\n                transition: {\\n                  duration: 0.8,\\n                  scale: {\\n                    duration: 0.3,\\n                    type: \\\"spring\\\",\\n                    bounce: 0.4,\\n                    stiffness: 150,\\n                    damping: 10,\\n                  },\\n                },\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFlaskIcon.displayName = \\\"FlaskIcon\\\";\\n\\nexport { FlaskIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-archive.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-archive\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-archive.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderArchiveIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderArchiveIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BLINK_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0, 1],\\n    transition: { duration: 0.6, ease: \\\"easeInOut\\\" },\\n  },\\n};\\n\\nconst FolderArchiveIcon = forwardRef<\\n  FolderArchiveIconHandle,\\n  FolderArchiveIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20.9 19.8A2 2 0 0 0 22 18V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h5.1\\\" />\\n        <motion.g animate={controls} initial=\\\"normal\\\" variants={BLINK_VARIANTS}>\\n          <circle cx=\\\"15\\\" cy=\\\"19\\\" r=\\\"2\\\" />\\n          <path d=\\\"M15 11v-1\\\" />\\n          <path d=\\\"M15 17v-2\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nFolderArchiveIcon.displayName = \\\"FolderArchiveIcon\\\";\\n\\nexport { FolderArchiveIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst FolderCheckIcon = forwardRef<FolderCheckIconHandle, FolderCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9 13 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={CHECK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderCheckIcon.displayName = \\\"FolderCheckIcon\\\";\\n\\nexport { FolderCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-clock.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-clock\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-clock.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderClockIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderClockIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HAND_TRANSITION: Transition = {\\n  duration: 0.6,\\n  ease: [0.4, 0, 0.2, 1],\\n};\\n\\nconst HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n  animate: {\\n    rotate: 360,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n};\\n\\nconst MINUTE_HAND_TRANSITION: Transition = {\\n  duration: 0.5,\\n  ease: \\\"easeInOut\\\",\\n};\\n\\nconst MINUTE_HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n  animate: {\\n    rotate: 45,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n};\\n\\nconst FolderClockIcon = forwardRef<FolderClockIconHandle, FolderClockIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2\\\" />\\n\\n          <circle cx=\\\"16\\\" cy=\\\"16\\\" r=\\\"6\\\" />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={HAND_TRANSITION}\\n            variants={HAND_VARIANTS}\\n            x1=\\\"16\\\"\\n            x2=\\\"16\\\"\\n            y1=\\\"16\\\"\\n            y2=\\\"13\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={MINUTE_HAND_TRANSITION}\\n            variants={MINUTE_HAND_VARIANTS}\\n            x1=\\\"16\\\"\\n            x2=\\\"18.5\\\"\\n            y1=\\\"16\\\"\\n            y2=\\\"16\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderClockIcon.displayName = \\\"FolderClockIcon\\\";\\n\\nexport { FolderClockIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-code.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-code\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-code.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderCodeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderCodeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CODE_VARIANTS: Variants = {\\n  normal: { x: 0, rotate: 0, opacity: 1 },\\n  animate: (direction: number) => ({\\n    x: [0, direction * 2, 0],\\n    rotate: [0, direction * -8, 0],\\n    opacity: 1,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  }),\\n};\\n\\nconst FolderCodeIcon = forwardRef<FolderCodeIconHandle, FolderCodeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2z\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={-1}\\n            d=\\\"M10 10.5 8 13l2 2.5\\\"\\n            initial=\\\"normal\\\"\\n            variants={CODE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"m14 10.5 2 2.5-2 2.5\\\"\\n            initial=\\\"normal\\\"\\n            variants={CODE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderCodeIcon.displayName = \\\"FolderCodeIcon\\\";\\n\\nexport { FolderCodeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-cog.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-cog\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-cog.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderCogIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderCogIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: 180 },\\n};\\n\\nconst FolderCogIcon = forwardRef<FolderCogIconHandle, FolderCogIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3\\\" />\\n          <motion.g\\n            animate={controls}\\n            transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n            variants={G_VARIANTS}\\n          >\\n            <path d=\\\"m14.305 19.53.923-.382\\\" />\\n            <path d=\\\"m15.228 16.852-.923-.383\\\" />\\n            <path d=\\\"m16.852 15.228-.383-.923\\\" />\\n            <path d=\\\"m16.852 20.772-.383.924\\\" />\\n            <path d=\\\"m19.148 15.228.383-.923\\\" />\\n            <path d=\\\"m19.53 21.696-.382-.924\\\" />\\n            <path d=\\\"m20.772 16.852.924-.383\\\" />\\n            <path d=\\\"m20.772 19.148.924.383\\\" />\\n            <circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderCogIcon.displayName = \\\"FolderCogIcon\\\";\\n\\nexport { FolderCogIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-dot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-dot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-dot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderDotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderDotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOT_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0, 1],\\n    transition: { duration: 0.6, ease: \\\"easeInOut\\\" },\\n  },\\n};\\n\\nconst FolderDotIcon = forwardRef<FolderDotIconHandle, FolderDotIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\\\" />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"13\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"1\\\"\\n            variants={DOT_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderDotIcon.displayName = \\\"FolderDotIcon\\\";\\n\\nexport { FolderDotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: { y: [0, 2, 0] },\\n};\\n\\nconst ARROW_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst FolderDownIcon = forwardRef<FolderDownIconHandle, FolderDownIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={ARROW_TRANSITION}\\n            variants={ARROW_VARIANTS}\\n          >\\n            <path d=\\\"M12 10v6\\\" />\\n            <path d=\\\"m15 13-3 3-3-3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderDownIcon.displayName = \\\"FolderDownIcon\\\";\\n\\nexport { FolderDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-git-2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-git-2\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-git-2.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderGit2IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderGit2IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst FolderGit2Icon = forwardRef<FolderGit2IconHandle, FolderGit2IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5\\\" />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"13\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"2\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 19c-2.8 0-5-2.2-5-5v8\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"20\\\"\\n            cy=\\\"19\\\"\\n            r=\\\"2\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderGit2Icon.displayName = \\\"FolderGit2Icon\\\";\\n\\nexport { FolderGit2Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-git.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-git\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-git.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderGitIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderGitIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst COMMIT_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15 * custom,\\n      opacity: { delay: 0.1 * custom },\\n    },\\n  }),\\n};\\n\\nconst FolderGitIcon = forwardRef<FolderGitIconHandle, FolderGitIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.circle\\n            animate={controls}\\n            custom={1}\\n            cx=\\\"12\\\"\\n            cy=\\\"13\\\"\\n            r=\\\"2\\\"\\n            variants={COMMIT_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M14 13h3\\\"\\n            variants={COMMIT_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M7 13h3\\\"\\n            variants={COMMIT_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderGitIcon.displayName = \\\"FolderGitIcon\\\";\\n\\nexport { FolderGitIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-heart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-heart\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-heart.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderHeartIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderHeartIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HEART_VARIANTS: Variants = {\\n  normal: { scale: 1, opacity: 0.9 },\\n  animate: {\\n    scale: [1, 1.12, 1.04, 1.12, 1],\\n    opacity: [0.9, 1, 0.85, 1, 0.9],\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst FolderHeartIcon = forwardRef<FolderHeartIconHandle, FolderHeartIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10.638 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.417\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14.62 18.8A2.25 2.25 0 1 1 18 15.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a.998.998 0 0 1-1.507 0z\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"18px 18px\\\" }}\\n            variants={HEART_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderHeartIcon.displayName = \\\"FolderHeartIcon\\\";\\n\\nexport { FolderHeartIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-input.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-input\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-input.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderInputIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderInputIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { x: 0 },\\n  animate: { x: [0, 2, 0] },\\n};\\n\\nconst ARROW_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst FolderInputIcon = forwardRef<FolderInputIconHandle, FolderInputIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={ARROW_TRANSITION}\\n            variants={ARROW_VARIANTS}\\n          >\\n            <path d=\\\"M2 13h10\\\" />\\n            <path d=\\\"m9 16 3-3-3-3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderInputIcon.displayName = \\\"FolderInputIcon\\\";\\n\\nexport { FolderInputIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-kanban.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-kanban\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-kanban.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderKanbanIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderKanbanIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst COLUMNS_VARIANTS: Variants = {\\n  animate: {\\n    transition: {\\n      staggerChildren: 0.2,\\n    },\\n  },\\n};\\n\\nconst COLUMN_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0.2, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst FolderKanbanIcon = forwardRef<\\n  FolderKanbanIconHandle,\\n  FolderKanbanIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\\\" />\\n        <motion.g\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          variants={COLUMNS_VARIANTS}\\n        >\\n          <motion.path d=\\\"M8 10v4\\\" variants={COLUMN_VARIANTS} />\\n          <motion.path d=\\\"M12 10v2\\\" variants={COLUMN_VARIANTS} />\\n          <motion.path d=\\\"M16 10v6\\\" variants={COLUMN_VARIANTS} />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nFolderKanbanIcon.displayName = \\\"FolderKanbanIcon\\\";\\n\\nexport { FolderKanbanIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-key.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-key\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-key.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderKeyIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderKeyIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KEY_VARIANTS: Variants = {\\n  normal: { rotate: 0, x: 0 },\\n  animate: {\\n    rotate: [0, -15, 8, -5, 0],\\n    x: [0, 0.5, 0],\\n    transition: {\\n      duration: 0.9,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst FolderKeyIcon = forwardRef<FolderKeyIconHandle, FolderKeyIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"16px 18px\\\" }}\\n            variants={KEY_VARIANTS}\\n          >\\n            <circle cx=\\\"16\\\" cy=\\\"20\\\" r=\\\"2\\\" />\\n            <path d=\\\"m22 14-4.5 4.5\\\" />\\n            <path d=\\\"m21 15 1 1\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderKeyIcon.displayName = \\\"FolderKeyIcon\\\";\\n\\nexport { FolderKeyIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-lock.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-lock\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-lock.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderLockIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderLockIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LOCK_VARIANTS: Variants = {\\n  normal: { y: 0, rotate: 0 },\\n  animate: {\\n    y: [0, -1.6, 0],\\n    rotate: [0, -3, 2, 0],\\n    transition: {\\n      duration: 0.7,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst FolderLockIcon = forwardRef<FolderLockIconHandle, FolderLockIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"18px 19px\\\" }}\\n            variants={LOCK_VARIANTS}\\n          >\\n            <rect height=\\\"5\\\" rx=\\\"1\\\" width=\\\"8\\\" x=\\\"14\\\" y=\\\"17\\\" />\\n            <path d=\\\"M20 17v-2a2 2 0 1 0-4 0v2\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderLockIcon.displayName = \\\"FolderLockIcon\\\";\\n\\nexport { FolderLockIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-minus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-minus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-minus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderMinusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderMinusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n  },\\n};\\n\\nconst FolderMinusIcon = forwardRef<FolderMinusIconHandle, FolderMinusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 13h6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderMinusIcon.displayName = \\\"FolderMinusIcon\\\";\\n\\nexport { FolderMinusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-open.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-open\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-open.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderOpenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderOpenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, -8, 6, -4, 0],\\n    transition: {\\n      ease: \\\"easeInOut\\\",\\n      rotate: {\\n        duration: 0.6,\\n      },\\n    },\\n  },\\n};\\n\\nconst FolderOpenIcon = forwardRef<FolderOpenIconHandle, FolderOpenIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"12px 12px\\\" }}\\n            variants={VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderOpenIcon.displayName = \\\"FolderOpenIcon\\\";\\n\\nexport { FolderOpenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-output.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-output\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-output.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderOutputIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderOutputIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { x: 0 },\\n  animate: { x: [0, -2, 0] },\\n};\\n\\nconst ARROW_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst FolderOutputIcon = forwardRef<\\n  FolderOutputIconHandle,\\n  FolderOutputIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2 7.5V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-1.5\\\" />\\n        <motion.g\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          transition={ARROW_TRANSITION}\\n          variants={ARROW_VARIANTS}\\n        >\\n          <path d=\\\"M2 13h10\\\" />\\n          <path d=\\\"m5 10-3 3 3 3\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nFolderOutputIcon.displayName = \\\"FolderOutputIcon\\\";\\n\\nexport { FolderOutputIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderPlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderPlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom * 0.1,\\n      opacity: { delay: custom * 0.1 },\\n    },\\n  }),\\n};\\n\\nconst FolderPlusIcon = forwardRef<FolderPlusIconHandle, FolderPlusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M12 10v6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M9 13h6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderPlusIcon.displayName = \\\"FolderPlusIcon\\\";\\n\\nexport { FolderPlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-root.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-root\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-root.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderRootIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderRootIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ROOT_VARIANTS: Variants = {\\n  normal: { opacity: 0.6 },\\n  animate: {\\n    opacity: [0.6, 1, 0.3, 0.6],\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst FolderRootIcon = forwardRef<FolderRootIconHandle, FolderRootIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\\\" />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"13\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"2\\\"\\n            variants={ROOT_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 15v5\\\"\\n            initial=\\\"normal\\\"\\n            variants={ROOT_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderRootIcon.displayName = \\\"FolderRootIcon\\\";\\n\\nexport { FolderRootIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-sync.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-sync\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-sync.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderSyncIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderSyncIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SYNC_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: { rotate: -360 },\\n};\\n\\nconst SYNC_TRANSITION: Transition = {\\n  duration: 1.2,\\n  ease: \\\"easeInOut\\\",\\n};\\n\\nconst FolderSyncIcon = forwardRef<FolderSyncIconHandle, FolderSyncIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={SYNC_TRANSITION}\\n            variants={SYNC_VARIANTS}\\n          >\\n            <path d=\\\"M12 10v4h4\\\" />\\n            <path d=\\\"m12 14 1.535-1.605a5 5 0 0 1 8 1.5\\\" />\\n            <path d=\\\"M22 22v-4h-4\\\" />\\n            <path d=\\\"m22 18-1.535 1.605a5 5 0 0 1-8-1.5\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderSyncIcon.displayName = \\\"FolderSyncIcon\\\";\\n\\nexport { FolderSyncIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-tree.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-tree\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-tree.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes, MouseEvent } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderTreeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderTreeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.35;\\n\\nconst BRANCH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst PANEL_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n  },\\n};\\n\\nconst CALCULATE_DELAY = (index: number) => index * DURATION + 0.1;\\n\\nconst FolderTreeIcon = forwardRef<FolderTreeIconHandle, FolderTreeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(event);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (event: MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(event);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={PANEL_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={PANEL_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 5a2 2 0 0 0 2 2h3\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={BRANCH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 3v13a2 2 0 0 0 2 2h3\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(3),\\n              opacity: { delay: CALCULATE_DELAY(3) },\\n            }}\\n            variants={BRANCH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderTreeIcon.displayName = \\\"FolderTreeIcon\\\";\\n\\nexport { FolderTreeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: { y: [0, -2, 0] },\\n};\\n\\nconst ARROW_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst FolderUpIcon = forwardRef<FolderUpIconHandle, FolderUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={ARROW_TRANSITION}\\n            variants={ARROW_VARIANTS}\\n          >\\n            <path d=\\\"M12 10v6\\\" />\\n            <path d=\\\"m9 13 3-3 3 3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderUpIcon.displayName = \\\"FolderUpIcon\\\";\\n\\nexport { FolderUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folder-x.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folder-x\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folder-x.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FolderXIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FolderXIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n  },\\n};\\n\\nconst FolderXIcon = forwardRef<FolderXIconHandle, FolderXIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9.5 10.5 5 5\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14.5 10.5-5 5\\\"\\n            initial=\\\"normal\\\"\\n            transition={{ delay: 0.2 }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFolderXIcon.displayName = \\\"FolderXIcon\\\";\\n\\nexport { FolderXIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/folders.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"folders\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"folders.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FoldersIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FoldersIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FoldersIcon = forwardRef<FoldersIconHandle, FoldersIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 17a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3.9a2 2 0 0 1-1.69-.9l-.81-1.2a2 2 0 0 0-1.67-.9H8a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2Z\\\"\\n            transition={{\\n              type: \\\"spring\\\",\\n              stiffness: 250,\\n              damping: 25,\\n            }}\\n            variants={{\\n              normal: {\\n                translateX: 0,\\n                translateY: 0,\\n              },\\n              animate: {\\n                translateX: -2,\\n                translateY: 2,\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 8v11a2 2 0 0 0 2 2h14\\\"\\n            transition={{\\n              type: \\\"spring\\\",\\n              stiffness: 250,\\n              damping: 25,\\n            }}\\n            variants={{\\n              normal: {\\n                translateX: 0,\\n                translateY: 0,\\n                opacity: 1,\\n                scale: 1,\\n              },\\n              animate: {\\n                translateX: 2,\\n                translateY: -2,\\n                opacity: 0,\\n                scale: 0.9,\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFoldersIcon.displayName = \\\"FoldersIcon\\\";\\n\\nexport { FoldersIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/frame.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"frame\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"frame.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FrameIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FrameIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 160,\\n  damping: 17,\\n  mass: 1,\\n};\\n\\nconst FrameIcon = forwardRef<FrameIconHandle, FrameIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              animate: { translateY: -4 },\\n              normal: {\\n                translateX: 0,\\n                rotate: 0,\\n                translateY: 0,\\n              },\\n            }}\\n            x1={22}\\n            x2={2}\\n            y1={6}\\n            y2={6}\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              animate: { translateY: 4 },\\n              normal: {\\n                translateX: 0,\\n                rotate: 0,\\n                translateY: 0,\\n              },\\n            }}\\n            x1={22}\\n            x2={2}\\n            y1={18}\\n            y2={18}\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              animate: { translateX: -4 },\\n              normal: {\\n                translateX: 0,\\n                rotate: 0,\\n                translateY: 0,\\n              },\\n            }}\\n            x1={6}\\n            x2={6}\\n            y1={2}\\n            y2={22}\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              animate: { translateX: 4 },\\n              normal: {\\n                translateX: 0,\\n                rotate: 0,\\n                translateY: 0,\\n              },\\n            }}\\n            x1={18}\\n            x2={18}\\n            y1={2}\\n            y2={22}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFrameIcon.displayName = \\\"FrameIcon\\\";\\n\\nexport { FrameIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/frown.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"frown\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"frown.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface FrownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface FrownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FrownIcon = forwardRef<FrownIconHandle, FrownIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        rotate: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.15, 1.05, 1.08],\\n        rotate: [0, -2, 2, 0],\\n        transition: {\\n          duration: 0.8,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      normal: {\\n        d: \\\"M16 16s-1.5-2-4-2-4 2-4 2\\\",\\n        pathLength: 1,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        d: \\\"M16 17s-1.5-2.5-4-2.5-4 2.5-4 2.5\\\",\\n        pathLength: [0.3, 1, 1],\\n        transition: {\\n          d: { duration: 0.5, ease: \\\"easeOut\\\" },\\n          pathLength: {\\n            duration: 0.5,\\n            times: [0, 0.5, 1],\\n            ease: \\\"easeInOut\\\",\\n          },\\n          delay: 0.1,\\n        },\\n      },\\n    };\\n\\n    const leftEyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        y: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.3, 0.9, 1.1],\\n        y: [0, -0.5, 0.3, 0],\\n        transition: {\\n          duration: 0.6,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const rightEyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        y: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 0.9, 1.3, 1.1],\\n        y: [0, -0.5, 0.3, 0],\\n        transition: {\\n          duration: 0.6,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"\\n            initial=\\\"normal\\\"\\n            variants={mouthVariants}\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={leftEyeVariants}\\n            x1=\\\"9\\\"\\n            x2=\\\"9.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={rightEyeVariants}\\n            x1=\\\"15\\\"\\n            x2=\\\"15.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nFrownIcon.displayName = \\\"FrownIcon\\\";\\n\\nexport { FrownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gallery-horizontal-end.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gallery-horizontal-end\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gallery-horizontal-end.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GalleryHorizontalEndIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GalleryHorizontalEndIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    translateX: 0,\\n    opacity: 1,\\n    transition: {\\n      type: \\\"tween\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  },\\n  animate: (i: number) => ({\\n    translateX: [2 * i, 0],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.25 * (2 - i),\\n      type: \\\"tween\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  }),\\n};\\n\\nconst GalleryHorizontalEndIcon = forwardRef<\\n  GalleryHorizontalEndIconHandle,\\n  GalleryHorizontalEndIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M6 5v14\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M2 7v10\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"12\\\" x=\\\"10\\\" y=\\\"3\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGalleryHorizontalEndIcon.displayName = \\\"GalleryHorizontalEndIcon\\\";\\n\\nexport { GalleryHorizontalEndIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gallery-thumbnails.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gallery-thumbnails\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gallery-thumbnails.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GalleryThumbnailsIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GalleryThumbnailsIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.15, duration: 0.2 },\\n  }),\\n};\\n\\nconst GalleryThumbnailsIcon = forwardRef<\\n  GalleryThumbnailsIconHandle,\\n  GalleryThumbnailsIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"14\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        {[\\\"M4 21h1\\\", \\\"M9 21h1\\\", \\\"M14 21h1\\\", \\\"M19 21h1\\\"].map((d, index) => (\\n          <motion.path\\n            animate={controls}\\n            custom={index + 1}\\n            d={d}\\n            key={d}\\n            variants={PATH_VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGalleryThumbnailsIcon.displayName = \\\"GalleryThumbnailsIcon\\\";\\n\\nexport { GalleryThumbnailsIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gallery-vertical-end.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gallery-vertical-end\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gallery-vertical-end.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GalleryVerticalEndIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GalleryVerticalEndIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n    opacity: 1,\\n    transition: {\\n      type: \\\"tween\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  },\\n  animate: (i: number) => ({\\n    translateY: [2 * i, 0],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.25 * (2 - i),\\n      type: \\\"tween\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  }),\\n};\\n\\nconst GalleryVerticalEndIcon = forwardRef<\\n  GalleryVerticalEndIconHandle,\\n  GalleryVerticalEndIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M7 2h10\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M5 6h14\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"10\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGalleryVerticalEndIcon.displayName = \\\"GalleryVerticalEndIcon\\\";\\n\\nexport { GalleryVerticalEndIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gauge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gauge\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gauge.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GaugeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GaugeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 160,\\n  damping: 17,\\n  mass: 1,\\n};\\n\\nconst GaugeIcon = forwardRef<GaugeIconHandle, GaugeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 14 4-4\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              animate: { translateX: 0.5, translateY: 3, rotate: 72 },\\n              normal: {\\n                translateX: 0,\\n                rotate: 0,\\n                translateY: 0,\\n              },\\n            }}\\n          />\\n          <path d=\\\"M3.34 19a10 10 0 1 1 17.32 0\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGaugeIcon.displayName = \\\"GaugeIcon\\\";\\n\\nexport { GaugeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gavel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gavel\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gavel.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GavelIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GavelIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst GAVEL_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    rotate: [0, -20, 25, 0],\\n    transition: {\\n      duration: 0.8,\\n      times: [0, 0.6, 0.8, 1],\\n      ease: [\\\"easeInOut\\\", \\\"easeOut\\\", \\\"easeOut\\\"],\\n    },\\n  },\\n};\\n\\nconst GavelIcon = forwardRef<GavelIconHandle, GavelIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"0% 100%\\\", transformBox: \\\"fill-box\\\" }}\\n          variants={GAVEL_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m14 13-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381\\\" />\\n          <path d=\\\"m16 16 6-6\\\" />\\n          <path d=\\\"m21.5 10.5-8-8\\\" />\\n          <path d=\\\"m8 8 6-6\\\" />\\n          <path d=\\\"m8.5 7.5 8 8\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGavelIcon.displayName = \\\"GavelIcon\\\";\\n\\nexport { GavelIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/georgian-lari.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"georgian-lari\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"georgian-lari.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GeorgianLariIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GeorgianLariIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LARI_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LARI_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst GeorgianLariIcon = forwardRef<\\n  GeorgianLariIconHandle,\\n  GeorgianLariIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M11.5 21a7.5 7.5 0 1 1 7.35-9\\\"\\n          initial=\\\"normal\\\"\\n          variants={LARI_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M4 21h16\\\"\\n          initial=\\\"normal\\\"\\n          variants={LARI_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 12V3\\\"\\n          initial=\\\"normal\\\"\\n          variants={LARI_SECONDARY_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M13 12V3\\\"\\n          initial=\\\"normal\\\"\\n          variants={LARI_SECONDARY_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGeorgianLariIcon.displayName = \\\"GeorgianLariIcon\\\";\\n\\nexport { GeorgianLariIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-branch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-branch\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-branch.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitBranchIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitBranchIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitBranchIcon = forwardRef<GitBranchIconHandle, GitBranchIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"18\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.line\\n            animate={controls}\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n            x1=\\\"6\\\"\\n            x2=\\\"6\\\"\\n            y1=\\\"3\\\"\\n            y2=\\\"15\\\"\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"18\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 9a9 9 0 0 1-9 9\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitBranchIcon.displayName = \\\"GitBranchIcon\\\";\\n\\nexport { GitBranchIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-commit-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-commit-horizontal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-commit-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitCommitHorizontalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitCommitHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15 * custom,\\n      opacity: { delay: 0.1 * custom },\\n    },\\n  }),\\n};\\n\\nconst GitCommitHorizontalIcon = forwardRef<\\n  GitCommitHorizontalIconHandle,\\n  GitCommitHorizontalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          custom={1}\\n          cx=\\\"12\\\"\\n          cy=\\\"12\\\"\\n          r=\\\"3\\\"\\n          variants={VARIANTS}\\n        />\\n        <motion.line\\n          animate={controls}\\n          custom={0}\\n          variants={VARIANTS}\\n          x1=\\\"3\\\"\\n          x2=\\\"9\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          custom={2}\\n          variants={VARIANTS}\\n          x1=\\\"15\\\"\\n          x2=\\\"21\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitCommitHorizontalIcon.displayName = \\\"GitCommitHorizontalIcon\\\";\\n\\nexport { GitCommitHorizontalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-commit-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-commit-vertical\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-commit-vertical.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitCommitVerticalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitCommitVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15 * custom,\\n      opacity: { delay: 0.1 * custom },\\n    },\\n  }),\\n};\\n\\nconst GitCommitVerticalIcon = forwardRef<\\n  GitCommitVerticalIconHandle,\\n  GitCommitVerticalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M12 3v6\\\"\\n          variants={VARIANTS}\\n        />\\n        <motion.circle\\n          animate={controls}\\n          custom={1}\\n          cx=\\\"12\\\"\\n          cy=\\\"12\\\"\\n          r=\\\"3\\\"\\n          variants={VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M12 15v6\\\"\\n          variants={VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitCommitVerticalIcon.displayName = \\\"GitCommitVerticalIcon\\\";\\n\\nexport { GitCommitVerticalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-compare-arrows.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-compare-arrows\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-compare-arrows.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitCompareArrowsIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitCompareArrowsIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitCompareArrowsIcon = forwardRef<\\n  GitCompareArrowsIconHandle,\\n  GitCompareArrowsIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"5\\\"\\n          cy=\\\"6\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(0),\\n            opacity: { delay: CALCULATE_DELAY(0) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 6h5a2 2 0 0 1 2 2v7\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m15 9-3-3 3-3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1 },\\n            animate: { opacity: [0, 1] },\\n          }}\\n        />\\n\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"19\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 18H7a2 2 0 0 1-2-2V9\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 15 3 3-3 3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1 },\\n            animate: { opacity: [0, 1] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitCompareArrowsIcon.displayName = \\\"GitCompareArrowsIcon\\\";\\n\\nexport { GitCompareArrowsIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-compare.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-compare\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-compare.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitCompareIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitCompareIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitCompareIcon = forwardRef<GitCompareIconHandle, GitCompareIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"18\\\"\\n            cy=\\\"18\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M11 18H8a2 2 0 0 1-2-2V9\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitCompareIcon.displayName = \\\"GitCompareIcon\\\";\\n\\nexport { GitCompareIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-fork.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-fork\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-fork.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitForkIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitForkIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitForkIcon = forwardRef<GitForkIconHandle, GitForkIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"18\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"18\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 12v3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitForkIcon.displayName = \\\"GitForkIcon\\\";\\n\\nexport { GitForkIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-graph.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-graph\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-graph.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitGraphIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitGraphIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitGraphIcon = forwardRef<GitGraphIconHandle, GitGraphIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"5\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 9v6\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"5\\\"\\n            cy=\\\"18\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 3v18\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"19\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 15.7A9 9 0 0 0 19 9\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitGraphIcon.displayName = \\\"GitGraphIcon\\\";\\n\\nexport { GitGraphIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-merge.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-merge\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-merge.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitMergeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitMergeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitMergeIcon = forwardRef<GitMergeIconHandle, GitMergeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"18\\\"\\n            cy=\\\"18\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"6\\\"\\n            r=\\\"3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitMergeIcon.displayName = \\\"GitMergeIcon\\\";\\n\\nexport { GitMergeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-pull-request-closed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-pull-request-closed\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-pull-request-closed.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitPullRequestClosedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitPullRequestClosedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitPullRequestClosedIcon = forwardRef<\\n  GitPullRequestClosedIconHandle,\\n  GitPullRequestClosedIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"6\\\"\\n          cy=\\\"6\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(0),\\n            opacity: { delay: CALCULATE_DELAY(0) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M6 9v12\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m21 3-6 6\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1, transition: { delay: 0 } },\\n            animate: { opacity: [0, 1] },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m21 9-6-6\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1, transition: { delay: 0 } },\\n            animate: { opacity: [0, 1] },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 11.5V15\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(3),\\n            opacity: { delay: CALCULATE_DELAY(3) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"18\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(4),\\n            opacity: { delay: CALCULATE_DELAY(4) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitPullRequestClosedIcon.displayName = \\\"GitPullRequestClosedIcon\\\";\\n\\nexport { GitPullRequestClosedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-pull-request-create.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-pull-request-create\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-pull-request-create.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitPullRequestCreateIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitPullRequestCreateIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitPullRequestCreateIcon = forwardRef<\\n  GitPullRequestCreateIconHandle,\\n  GitPullRequestCreateIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"6\\\"\\n          cy=\\\"6\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(0),\\n            opacity: { delay: CALCULATE_DELAY(0) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M6 9v12\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M13 6h3a2 2 0 0 1 2 2v3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 15v6\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M21 18h-6\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(3),\\n            opacity: { delay: CALCULATE_DELAY(3) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1, transition: { delay: 0 } },\\n            animate: { opacity: [0, 1] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitPullRequestCreateIcon.displayName = \\\"GitPullRequestCreateIcon\\\";\\n\\nexport { GitPullRequestCreateIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/git-pull-request.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"git-pull-request\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"git-pull-request.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitPullRequestIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitPullRequestIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.3;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitPullRequestIcon = forwardRef<\\n  GitPullRequestIconHandle,\\n  GitPullRequestIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"18\\\"\\n          cy=\\\"18\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(0),\\n            opacity: { delay: CALCULATE_DELAY(0) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n        <motion.circle\\n          animate={controls}\\n          cx=\\\"6\\\"\\n          cy=\\\"6\\\"\\n          r=\\\"3\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(2),\\n            opacity: { delay: CALCULATE_DELAY(2) },\\n          }}\\n          variants={{\\n            normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n            },\\n          }}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(1),\\n            opacity: { delay: CALCULATE_DELAY(1) },\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 1,\\n              pathOffset: 0,\\n              opacity: 1,\\n              transition: { delay: 0 },\\n            },\\n            animate: {\\n              pathLength: [0, 1],\\n              opacity: [0, 1],\\n              pathOffset: [1, 0],\\n            },\\n          }}\\n        />\\n        <motion.line\\n          animate={controls}\\n          transition={{\\n            duration: DURATION,\\n            delay: CALCULATE_DELAY(3),\\n            opacity: { delay: CALCULATE_DELAY(3) },\\n          }}\\n          variants={{\\n            normal: { opacity: 1, pathLength: 1, transition: { delay: 0 } },\\n            animate: {\\n              opacity: [0, 1],\\n              pathLength: [0, 1],\\n            },\\n          }}\\n          x1=\\\"6\\\"\\n          x2=\\\"6\\\"\\n          y1=\\\"9\\\"\\n          y2=\\\"21\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGitPullRequestIcon.displayName = \\\"GitPullRequestIcon\\\";\\n\\nexport { GitPullRequestIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/github.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"github\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"github.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GithubIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GithubIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BODY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    scale: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    scale: [0.9, 1],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst TAIL_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    rotate: 0,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  draw: {\\n    pathLength: [0, 1],\\n    rotate: 0,\\n    transition: {\\n      duration: 0.5,\\n    },\\n  },\\n  wag: {\\n    pathLength: 1,\\n    rotate: [0, -15, 15, -10, 10, -5, 5],\\n    transition: {\\n      duration: 2.5,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst GithubIcon = forwardRef<GithubIconHandle, GithubIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const bodyControls = useAnimation();\\n    const tailControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          bodyControls.start(\\\"animate\\\");\\n          await tailControls.start(\\\"draw\\\");\\n          tailControls.start(\\\"wag\\\");\\n        },\\n        stopAnimation: () => {\\n          bodyControls.start(\\\"normal\\\");\\n          tailControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          bodyControls.start(\\\"animate\\\");\\n          await tailControls.start(\\\"draw\\\");\\n          tailControls.start(\\\"wag\\\");\\n        }\\n      },\\n      [bodyControls, onMouseEnter, tailControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          bodyControls.start(\\\"normal\\\");\\n          tailControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [bodyControls, tailControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={bodyControls}\\n            d=\\\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\\\"\\n            initial=\\\"normal\\\"\\n            variants={BODY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={tailControls}\\n            d=\\\"M9 18c-4.51 2-5-2-7-2\\\"\\n            initial=\\\"normal\\\"\\n            variants={TAIL_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGithubIcon.displayName = \\\"GithubIcon\\\";\\n\\nexport { GithubIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/gitlab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"gitlab\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"gitlab.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GitlabIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GitlabIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.7;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  if (i === 0) return 0.1;\\n\\n  return i * DURATION + 0.1;\\n};\\n\\nconst GitlabIcon = forwardRef<GitlabIconHandle, GitlabIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m22 13.29-3.33-10a.42.42 0 0 0-.14-.18.38.38 0 0 0-.22-.11.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18l-2.26 6.67H8.32L6.1 3.26a.42.42 0 0 0-.1-.18.38.38 0 0 0-.26-.08.39.39 0 0 0-.23.07.42.42 0 0 0-.14.18L2 13.29a.74.74 0 0 0 .27.83L12 21l9.69-6.88a.71.71 0 0 0 .31-.83Z\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGitlabIcon.displayName = \\\"GitlabIcon\\\";\\n\\nexport { GitlabIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/graduation-cap.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"graduation-cap\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"graduation-cap.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GraduationCapIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GraduationCapIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CAP_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    y: [0, -2, 0],\\n    rotate: [0, -2, 2, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst TASSEL_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [0, 15, -10, 5, 0],\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n      delay: 0.1,\\n    },\\n  },\\n};\\n\\nconst GraduationCapIcon = forwardRef<\\n  GraduationCapIconHandle,\\n  GraduationCapIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.g\\n          animate={controls}\\n          style={{ transformOrigin: \\\"12px 12px\\\" }}\\n          variants={CAP_VARIANTS}\\n        >\\n          <path d=\\\"M2 10l10-5 10 5-10 5z\\\" />\\n          <path d=\\\"M6 12v5c3 3 9 3 12 0v-5\\\" />\\n\\n          {/* Tassel now inherits cap movement */}\\n          <motion.path\\n            d=\\\"M22 10v6\\\"\\n            style={{\\n              transformBox: \\\"fill-box\\\",\\n              transformOrigin: \\\"top center\\\",\\n            }}\\n            variants={TASSEL_VARIANTS}\\n          />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGraduationCapIcon.displayName = \\\"GraduationCapIcon\\\";\\n\\nexport { GraduationCapIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/grip-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"grip-horizontal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"grip-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GripHorizontalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GripHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLES = [\\n  { cx: 5, cy: 9 },\\n  { cx: 12, cy: 9 },\\n  { cx: 19, cy: 9 },\\n  { cx: 5, cy: 15 },\\n  { cx: 12, cy: 15 },\\n  { cx: 19, cy: 15 },\\n];\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    scale: 1,\\n    transition: { duration: 0.25, ease: \\\"easeOut\\\" },\\n  },\\n  animate: (index: number) => {\\n    const row = Math.floor(index / 3);\\n    const col = index % 3;\\n\\n    const delay = col * 0.15 + row * 0.25;\\n\\n    return {\\n      opacity: [1, 0.4, 1],\\n      scale: [1, 0.85, 1],\\n      transition: {\\n        delay,\\n        duration: 1,\\n        ease: \\\"easeInOut\\\",\\n      },\\n    };\\n  },\\n};\\n\\nconst GripHorizontalIcon = forwardRef<\\n  GripHorizontalIconHandle,\\n  GripHorizontalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n  const isAnimatingRef = useRef(false);\\n\\n  const startAnimation = useCallback(async () => {\\n    if (isAnimatingRef.current) return;\\n    isAnimatingRef.current = true;\\n    await controls.start(\\\"animate\\\");\\n    await controls.start(\\\"normal\\\");\\n    isAnimatingRef.current = false;\\n  }, [controls]);\\n\\n  const stopAnimation = useCallback(async () => {\\n    if (!isAnimatingRef.current) return;\\n    await controls.start(\\\"normal\\\");\\n    isAnimatingRef.current = false;\\n  }, [controls]);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return { startAnimation, stopAnimation };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) startAnimation();\\n      onMouseEnter?.(e);\\n    },\\n    [startAnimation, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) stopAnimation();\\n      onMouseLeave?.(e);\\n    },\\n    [stopAnimation, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(\\\"inline-flex items-center justify-center\\\", className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        {CIRCLES.map((circle, index) => (\\n          <motion.circle\\n            animate={controls}\\n            custom={index}\\n            cx={circle.cx}\\n            cy={circle.cy}\\n            initial=\\\"normal\\\"\\n            key={`${circle.cx}-${circle.cy}`}\\n            r=\\\"1\\\"\\n            variants={VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGripHorizontalIcon.displayName = \\\"GripHorizontalIcon\\\";\\nexport { GripHorizontalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/grip-vertical.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"grip-vertical\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"grip-vertical.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GripVerticalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GripVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLES = [\\n  { cx: 9, cy: 5 },\\n  { cx: 9, cy: 12 },\\n  { cx: 9, cy: 19 },\\n  { cx: 15, cy: 5 },\\n  { cx: 15, cy: 12 },\\n  { cx: 15, cy: 19 },\\n];\\n\\nconst ROWS = 3;\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    scale: 1,\\n    transition: { duration: 0.25, ease: \\\"easeOut\\\" },\\n  },\\n  animate: (data: { index: number }) => {\\n    const row = data.index % ROWS;\\n    const col = Math.floor(data.index / ROWS);\\n    const delay = row * 0.15 + col * (ROWS * 0.15 - 0.2);\\n\\n    return {\\n      opacity: [1, 0.4, 1],\\n      scale: [1, 0.85, 1],\\n      transition: { delay, duration: 1, ease: \\\"easeInOut\\\" },\\n    };\\n  },\\n};\\n\\nconst GripVerticalIcon = forwardRef<\\n  GripVerticalIconHandle,\\n  GripVerticalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n  const isAnimatingRef = useRef(false);\\n\\n  const startAnimation = useCallback(async () => {\\n    if (isAnimatingRef.current) return;\\n    isAnimatingRef.current = true;\\n    await controls.start(\\\"animate\\\");\\n    await controls.start(\\\"normal\\\");\\n    isAnimatingRef.current = false;\\n  }, [controls]);\\n\\n  const stopAnimation = useCallback(async () => {\\n    if (!isAnimatingRef.current) return;\\n    await controls.start(\\\"normal\\\");\\n    isAnimatingRef.current = false;\\n  }, [controls]);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return { startAnimation, stopAnimation };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) startAnimation();\\n      onMouseEnter?.(e);\\n    },\\n    [startAnimation, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) stopAnimation();\\n      onMouseLeave?.(e);\\n    },\\n    [stopAnimation, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(\\\"inline-flex items-center justify-center\\\", className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        {CIRCLES.map((circle, index) => (\\n          <motion.circle\\n            animate={controls}\\n            custom={{ index }}\\n            cx={circle.cx}\\n            cy={circle.cy}\\n            initial=\\\"normal\\\"\\n            key={`${circle.cx}-${circle.cy}`}\\n            r=\\\"1\\\"\\n            variants={VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nGripVerticalIcon.displayName = \\\"GripVerticalIcon\\\";\\nexport { GripVerticalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/grip.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"grip\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"grip.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface GripIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface GripProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLES = [\\n  { cx: 19, cy: 5 },\\n  { cx: 19, cy: 12 },\\n  { cx: 12, cy: 5 },\\n  { cx: 19, cy: 19 },\\n  { cx: 12, cy: 12 },\\n  { cx: 5, cy: 5 },\\n  { cx: 12, cy: 19 },\\n  { cx: 5, cy: 12 },\\n  { cx: 5, cy: 19 },\\n];\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: { duration: 0.25 },\\n  },\\n  animate: (index: number) => ({\\n    opacity: [1, 0.3, 0.3, 1],\\n    transition: {\\n      delay: index * 0.07,\\n      duration: 1.1,\\n      times: [0, 0.2, 0.8, 1],\\n    },\\n  }),\\n};\\n\\nconst GripIcon = forwardRef<GripIconHandle, GripProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n    const isAnimatingRef = useRef(false);\\n\\n    const startAnimation = useCallback(async () => {\\n      if (isAnimatingRef.current) return;\\n      isAnimatingRef.current = true;\\n      await controls.start(\\\"animate\\\");\\n      await controls.start(\\\"normal\\\");\\n      isAnimatingRef.current = false;\\n    }, [controls]);\\n\\n    const stopAnimation = useCallback(async () => {\\n      if (!isAnimatingRef.current) return;\\n      await controls.start(\\\"normal\\\");\\n      isAnimatingRef.current = false;\\n    }, [controls]);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return { startAnimation, stopAnimation };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          startAnimation();\\n        }\\n      },\\n      [startAnimation, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          stopAnimation();\\n        }\\n      },\\n      [stopAnimation, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(\\\"inline-flex items-center justify-center\\\", className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {CIRCLES.map((circle, index) => (\\n            <motion.circle\\n              animate={controls}\\n              custom={index}\\n              cx={circle.cx}\\n              cy={circle.cy}\\n              initial=\\\"normal\\\"\\n              key={`${circle.cx}-${circle.cy}`}\\n              r=\\\"1\\\"\\n              variants={VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nGripIcon.displayName = \\\"GripIcon\\\";\\nexport { GripIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hammer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hammer\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hammer.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HammerIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HammerIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HAMMER_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    rotate: [0, -20, 25, 0],\\n    transition: {\\n      duration: 0.8,\\n      times: [0, 0.6, 0.8, 1],\\n      ease: [\\\"easeInOut\\\", \\\"easeOut\\\", \\\"easeOut\\\"],\\n    },\\n  },\\n};\\n\\nconst HammerIcon = forwardRef<HammerIconHandle, HammerIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"0% 100%\\\", transformBox: \\\"fill-box\\\" }}\\n          variants={HAMMER_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\\\" />\\n          <path d=\\\"m18 15 4-4\\\" />\\n          <path d=\\\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHammerIcon.displayName = \\\"HammerIcon\\\";\\n\\nexport { HammerIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-coins.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-coins\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-coins.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandCoinsIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandCoinsIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n    opacity: 1,\\n    transition: {\\n      opacity: { duration: 0.2 },\\n      type: \\\"spring\\\",\\n      stiffness: 150,\\n      damping: 15,\\n      bounce: 0.8,\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    translateY: [-20, 0],\\n    transition: {\\n      opacity: { duration: 0.2 },\\n      type: \\\"spring\\\",\\n      stiffness: 150,\\n      damping: 15,\\n      bounce: 0.8,\\n    },\\n  },\\n};\\n\\nconst SECOND_CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n    opacity: 1,\\n    transition: {\\n      opacity: { duration: 0.2 },\\n      delay: 0.15,\\n      type: \\\"spring\\\",\\n      stiffness: 150,\\n      damping: 15,\\n      bounce: 0.8,\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    translateY: [-20, 0],\\n    transition: {\\n      opacity: { duration: 0.2 },\\n      delay: 0.15,\\n      type: \\\"spring\\\",\\n      stiffness: 150,\\n      damping: 15,\\n      bounce: 0.8,\\n    },\\n  },\\n};\\n\\nconst HandCoinsIcon = forwardRef<HandCoinsIconHandle, HandCoinsIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17\\\" />\\n          <path d=\\\"m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\\\" />\\n          <path d=\\\"m2 16 6 6\\\" />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"16\\\"\\n            cy=\\\"9\\\"\\n            r=\\\"2.9\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"5\\\"\\n            r=\\\"3\\\"\\n            variants={SECOND_CIRCLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandCoinsIcon.displayName = \\\"HandCoinsIcon\\\";\\n\\nexport { HandCoinsIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-fist.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-fist\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-fist.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandFistIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandFistIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HandFistIcon = forwardRef<HandFistIconHandle, HandFistIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            normal: { y: 0, scale: 1 },\\n            animate: {\\n              y: [0, -4, 0],\\n              scale: [1, 1.1, 1],\\n              transition: {\\n                duration: 0.4,\\n                ease: \\\"easeInOut\\\",\\n                repeat: 1,\\n                repeatType: \\\"reverse\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.035 17.012a3 3 0 0 0-3-3l-.311-.002a.72.72 0 0 1-.505-1.229l1.195-1.195A2 2 0 0 1 10.828 11H12a2 2 0 0 0 0-4H9.243a3 3 0 0 0-2.122.879l-2.707 2.707A4.83 4.83 0 0 0 3 14a8 8 0 0 0 8 8h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0\\\" />\\n          <path d=\\\"M13.888 9.662A2 2 0 0 0 17 8V5A2 2 0 1 0 13 5\\\" />\\n          <path d=\\\"M9 5A2 2 0 1 0 5 5V10\\\" />\\n          <path d=\\\"M9 7V4A2 2 0 1 1 13 4V7.268\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandFistIcon.displayName = \\\"HandFistIcon\\\";\\n\\nexport { HandFistIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-grab.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-grab\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-grab.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandGrabIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandGrabIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HandGrabIcon = forwardRef<HandGrabIconHandle, HandGrabIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            normal: { scale: 1 },\\n            animate: {\\n              scale: [1, 0.9, 1],\\n              transition: {\\n                duration: 0.4,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18 11.5V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4\\\" />\\n          <path d=\\\"M14 10V8a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\\\" />\\n          <path d=\\\"M10 9.9V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v5\\\" />\\n          <path d=\\\"M6 14a2 2 0 0 0-2-2a2 2 0 0 0-2 2\\\" />\\n          <path d=\\\"M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-4a8 8 0 0 1-8-8 2 2 0 1 1 4 0\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandGrabIcon.displayName = \\\"HandGrabIcon\\\";\\n\\nexport { HandGrabIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-heart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-heart\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-heart.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandHeartIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandHeartIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\nconst HEART_VARIANTS: Variants = {\\n  normal: {\\n    translateY: 0,\\n    scale: 1,\\n    transition: {\\n      delay: 0.1,\\n      scale: { duration: 0.2 },\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n  animate: {\\n    translateY: [0, -2],\\n    scale: [1, 1.1],\\n    transition: {\\n      delay: 0.1,\\n      scale: { duration: 0.2 },\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 25,\\n    },\\n  },\\n};\\n\\nconst HandHeartIcon = forwardRef<HandHeartIconHandle, HandHeartIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M11 14h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16\\\" />\\n          <path d=\\\"m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\\\" />\\n          <path d=\\\"m2 15 6 6\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19.5 8.5c.7-.7 1.5-1.6 1.5-2.7A2.73 2.73 0 0 0 16 4a2.78 2.78 0 0 0-5 1.8c0 1.2.8 2 1.5 2.8L16 12Z\\\"\\n            variants={HEART_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandHeartIcon.displayName = \\\"HandHeartIcon\\\";\\n\\nexport { HandHeartIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-helping.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-helping\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-helping.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandHelpingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandHelpingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HandHelpingIcon = forwardRef<HandHelpingIconHandle, HandHelpingIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            normal: { x: 0, y: 0 },\\n            animate: {\\n              x: [0, 2, 0],\\n              y: [0, -2, 0],\\n              transition: {\\n                duration: 0.5,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M11 12h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 14\\\" />\\n          <path d=\\\"m7 18 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\\\" />\\n          <path d=\\\"m2 13 6 6\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandHelpingIcon.displayName = \\\"HandHelpingIcon\\\";\\n\\nexport { HandHelpingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand-metal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand-metal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand-metal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandMetalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandMetalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HandMetalIcon = forwardRef<HandMetalIconHandle, HandMetalIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ originX: \\\"50%\\\", originY: \\\"90%\\\" }}\\n          variants={{\\n            normal: { rotate: 0 },\\n            animate: {\\n              rotate: [0, -15, 15, -10, 10, 0],\\n              transition: {\\n                duration: 0.6,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18 12.5V10a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1.4\\\" />\\n          <path d=\\\"M14 11V9a2 2 0 1 0-4 0v2\\\" />\\n          <path d=\\\"M10 10.5V5a2 2 0 1 0-4 0v9\\\" />\\n          <path d=\\\"m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandMetalIcon.displayName = \\\"HandMetalIcon\\\";\\n\\nexport { HandMetalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hand.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hand\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hand.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HandIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HandIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HandIcon = forwardRef<HandIconHandle, HandIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={{\\n            normal: { rotate: 0, originX: \\\"50%\\\", originY: \\\"90%\\\" },\\n            animate: {\\n              rotate: [0, -15, 10, -5, 0],\\n              transition: {\\n                duration: 0.8,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2\\\" />\\n          <path d=\\\"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\\\" />\\n          <path d=\\\"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8\\\" />\\n          <path d=\\\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHandIcon.displayName = \\\"HandIcon\\\";\\n\\nexport { HandIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hard-drive-download.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hard-drive-download\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hard-drive-download.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HardDriveDownloadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HardDriveDownloadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: -1 },\\n  animate: {\\n    y: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 10,\\n      mass: 1,\\n    },\\n  },\\n};\\n\\nconst HardDriveDownloadIcon = forwardRef<\\n  HardDriveDownloadIconHandle,\\n  HardDriveDownloadIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"8\\\" rx=\\\"2\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"14\\\" />\\n        <path d=\\\"M6 18h.01\\\" />\\n        <path d=\\\"M10 18h.01\\\" />\\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n          <path d=\\\"M12 2v8\\\" />\\n          <path d=\\\"m16 6-4 4-4-4\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nHardDriveDownloadIcon.displayName = \\\"HardDriveDownloadIcon\\\";\\n\\nexport { HardDriveDownloadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hard-drive-upload.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hard-drive-upload\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hard-drive-upload.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HardDriveUploadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HardDriveUploadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: {\\n    y: -1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 10,\\n      mass: 1,\\n    },\\n  },\\n};\\n\\nconst HardDriveUploadIcon = forwardRef<\\n  HardDriveUploadIconHandle,\\n  HardDriveUploadIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"8\\\" rx=\\\"2\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"14\\\" />\\n        <path d=\\\"M6 18h.01\\\" />\\n        <path d=\\\"M10 18h.01\\\" />\\n        <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n          <path d=\\\"m16 6-4-4-4 4\\\" />\\n          <path d=\\\"M12 2v8\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nHardDriveUploadIcon.displayName = \\\"HardDriveUploadIcon\\\";\\n\\nexport { HardDriveUploadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/heart-handshake.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"heart-handshake\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"heart-handshake.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HeartHandshakeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HeartHandshakeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HeartHandshakeIcon = forwardRef<\\n  HeartHandshakeIconHandle,\\n  HeartHandshakeIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        style={{ originX: \\\"50%\\\", originY: \\\"50%\\\" }}\\n        variants={{\\n          normal: { scale: 1, rotate: 0 },\\n          animate: {\\n            scale: [1, 0.9, 1, 1, 1, 1, 1],\\n            rotate: [0, 0, 0, -7, 7, -3, 0],\\n            transition: {\\n              duration: 0.7,\\n\\n              times: [0, 0.15, 0.3, 0.4, 0.55, 0.75, 1],\\n              ease: \\\"easeInOut\\\",\\n            },\\n          },\\n        }}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M19.414 14.414C21 12.828 22 11.5 22 9.5a5.5 5.5 0 0 0-9.591-3.676.6.6 0 0 1-.818.001A5.5 5.5 0 0 0 2 9.5c0 2.3 1.5 4 3 5.5l5.535 5.362a2 2 0 0 0 2.879.052 2.12 2.12 0 0 0-.004-3 2.124 2.124 0 1 0 3-3 2.124 2.124 0 0 0 3.004 0 2 2 0 0 0 0-2.828l-1.881-1.882a2.41 2.41 0 0 0-3.409 0l-1.71 1.71a2 2 0 0 1-2.828 0 2 2 0 0 1 0-2.828l2.823-2.762\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nHeartHandshakeIcon.displayName = \\\"HeartHandshakeIcon\\\";\\n\\nexport { HeartHandshakeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/heart-pulse.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"heart-pulse\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"heart-pulse.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HeartPulseIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HeartPulseIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HEART_DRAW_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n  draw: { pathLength: [0, 1], opacity: [0, 1] },\\n};\\n\\nconst HEART_PULSE_VARIANTS: Variants = {\\n  normal: { scale: 1 },\\n  pulse: { scale: [1, 1.08, 1] },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: { pathLength: 1, pathOffset: 0, opacity: 1 },\\n  animate: { pathLength: [0, 1], pathOffset: [1, 0], opacity: [0, 1] },\\n};\\n\\nconst HeartPulseIcon = forwardRef<HeartPulseIconHandle, HeartPulseIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const heartDrawControls = useAnimation();\\n    const heartPulseControls = useAnimation();\\n    const lineControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    const startAnimation = useCallback(async () => {\\n      heartDrawControls.start(\\\"hidden\\\", { duration: 0 });\\n      await lineControls.start(\\\"animate\\\", {\\n        duration: 0.6,\\n        ease: \\\"linear\\\",\\n        opacity: { duration: 0.1 },\\n      });\\n      await heartDrawControls.start(\\\"draw\\\", {\\n        duration: 0.5,\\n        ease: \\\"easeOut\\\",\\n        opacity: { duration: 0.1 },\\n      });\\n      heartPulseControls.start(\\\"pulse\\\", {\\n        duration: 0.9,\\n        repeat: 1,\\n        ease: \\\"easeInOut\\\",\\n      });\\n    }, [heartDrawControls, heartPulseControls, lineControls]);\\n\\n    const stopAnimation = useCallback(() => {\\n      heartDrawControls.start(\\\"normal\\\", { duration: 0.3 });\\n      heartPulseControls.start(\\\"normal\\\", { duration: 0.3 });\\n      lineControls.start(\\\"normal\\\", { duration: 0.3 });\\n    }, [heartDrawControls, heartPulseControls, lineControls]);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return { startAnimation, stopAnimation };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          startAnimation();\\n        }\\n      },\\n      [startAnimation, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          stopAnimation();\\n        }\\n      },\\n      [stopAnimation, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={heartPulseControls}\\n            style={{ originX: \\\"12px\\\", originY: \\\"12px\\\" }}\\n            variants={HEART_PULSE_VARIANTS}\\n          >\\n            <motion.path\\n              animate={heartDrawControls}\\n              d=\\\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\\\"\\n              variants={HEART_DRAW_VARIANTS}\\n            />\\n          </motion.g>\\n          <motion.path\\n            animate={lineControls}\\n            d=\\\"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHeartPulseIcon.displayName = \\\"HeartPulseIcon\\\";\\n\\nexport { HeartPulseIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/heart.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"heart\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"heart.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HeartIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HeartIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HeartIcon = forwardRef<HeartIconHandle, HeartIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 0.45,\\n            repeat: 2,\\n          }}\\n          variants={{\\n            normal: { scale: 1 },\\n            animate: { scale: [1, 1.08, 1] },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHeartIcon.displayName = \\\"HeartIcon\\\";\\n\\nexport { HeartIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/history.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"history\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"history.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HistoryIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HistoryIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    rotate: \\\"0deg\\\",\\n  },\\n  animate: {\\n    rotate: \\\"-50deg\\\",\\n  },\\n};\\n\\nconst HAND_TRANSITION: Transition = {\\n  duration: 0.6,\\n  ease: [0.4, 0, 0.2, 1],\\n};\\n\\nconst HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n  animate: {\\n    rotate: -360,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n  },\\n};\\n\\nconst MINUTE_HAND_TRANSITION: Transition = {\\n  duration: 0.5,\\n  ease: \\\"easeInOut\\\",\\n};\\n\\nconst MINUTE_HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"0%\\\",\\n  },\\n  animate: {\\n    rotate: -45,\\n    originX: \\\"0%\\\",\\n    originY: \\\"0%\\\",\\n  },\\n};\\n\\nconst HistoryIcon = forwardRef<HistoryIconHandle, HistoryIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            transition={ARROW_TRANSITION}\\n            variants={ARROW_VARIANTS}\\n          >\\n            <path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" />\\n            <path d=\\\"M3 3v5h5\\\" />\\n          </motion.g>\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={HAND_TRANSITION}\\n            variants={HAND_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"12\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"7\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            transition={MINUTE_HAND_TRANSITION}\\n            variants={MINUTE_HAND_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"16\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"14\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHistoryIcon.displayName = \\\"HistoryIcon\\\";\\n\\nexport { HistoryIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/home.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"home\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"home.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HomeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HomeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  duration: 0.6,\\n  opacity: { duration: 0.2 },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n  },\\n};\\n\\nconst HomeIcon = forwardRef<HomeIconHandle, HomeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHomeIcon.displayName = \\\"HomeIcon\\\";\\n\\nexport { HomeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/hourglass.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"hourglass\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"hourglass.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface HourglassIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface HourglassIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HourglassIcon = forwardRef<HourglassIconHandle, HourglassIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            style={{\\n              transformOrigin: \\\"12px 12px\\\",\\n            }}\\n            transition={{\\n              type: \\\"spring\\\",\\n              stiffness: 100,\\n              damping: 15,\\n              mass: 1,\\n            }}\\n            variants={{\\n              normal: {\\n                rotate: 0,\\n              },\\n              animate: {\\n                rotate: 180,\\n              },\\n            }}\\n          >\\n            <path d=\\\"M5 22h14\\\" />\\n            <path d=\\\"M5 2h14\\\" />\\n            <path d=\\\"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\\\" />\\n            <path d=\\\"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nHourglassIcon.displayName = \\\"HourglassIcon\\\";\\n\\nexport { HourglassIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/id-card.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"id-card\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"id-card.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface IdCardIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface IdCardIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: 0.3,\\n      delay: custom * 0.1,\\n    },\\n  }),\\n};\\n\\nconst IdCardIcon = forwardRef<IdCardIconHandle, IdCardIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M16 10h2\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M16 14h2\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M6.17 15a3 3 0 0 1 5.66 0\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            custom={1}\\n            cx=\\\"9\\\"\\n            cy=\\\"11\\\"\\n            r=\\\"2\\\"\\n            variants={VARIANTS}\\n          />\\n          <rect height=\\\"14\\\" rx=\\\"2\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"5\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nIdCardIcon.displayName = \\\"IdCardIcon\\\";\\n\\nexport { IdCardIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/indian-rupee.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"indian-rupee\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"indian-rupee.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface IndianRupeeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface IndianRupeeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst INDIAN_RUPEE_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst INDIAN_RUPEE_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst IndianRupeeIcon = forwardRef<IndianRupeeIconHandle, IndianRupeeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 3c6.667 0 6.667 10 0 10\\\"\\n            initial=\\\"normal\\\"\\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 13h-3\\\"\\n            initial=\\\"normal\\\"\\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14.5 21 l-8.5 -8\\\"\\n            initial=\\\"normal\\\"\\n            variants={INDIAN_RUPEE_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 3h-12\\\"\\n            initial=\\\"normal\\\"\\n            variants={INDIAN_RUPEE_SECONDARY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 8h-12\\\"\\n            initial=\\\"normal\\\"\\n            variants={INDIAN_RUPEE_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nIndianRupeeIcon.displayName = \\\"IndianRupeeIcon\\\";\\n\\nexport { IndianRupeeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/instagram.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"instagram\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"instagram.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface InstagramIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface InstagramIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RECT_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst InstagramIcon = forwardRef<InstagramIconHandle, InstagramIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const rectControls = useAnimation();\\n    const pathControls = useAnimation();\\n    const lineControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          rectControls.start(\\\"animate\\\");\\n          pathControls.start(\\\"animate\\\");\\n          lineControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          rectControls.start(\\\"normal\\\");\\n          pathControls.start(\\\"normal\\\");\\n          lineControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          rectControls.start(\\\"animate\\\");\\n          pathControls.start(\\\"animate\\\");\\n          lineControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [lineControls, onMouseEnter, pathControls, rectControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          rectControls.start(\\\"normal\\\");\\n          pathControls.start(\\\"normal\\\");\\n          lineControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [rectControls, pathControls, lineControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={rectControls}\\n            height=\\\"20\\\"\\n            initial=\\\"normal\\\"\\n            rx=\\\"5\\\"\\n            ry=\\\"5\\\"\\n            variants={RECT_VARIANTS}\\n            width=\\\"20\\\"\\n            x=\\\"2\\\"\\n            y=\\\"2\\\"\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.line\\n            animate={lineControls}\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"17.5\\\"\\n            x2=\\\"17.51\\\"\\n            y1=\\\"6.5\\\"\\n            y2=\\\"6.5\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nInstagramIcon.displayName = \\\"InstagramIcon\\\";\\n\\nexport { InstagramIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/italic.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"italic\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"italic.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ItalicIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ItalicIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst ItalicIcon = forwardRef<ItalicIconHandle, ItalicIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            transition={{ duration: 0.2 }}\\n            variants={LINE_VARIANTS}\\n            x1=\\\"19\\\"\\n            x2=\\\"10\\\"\\n            y1=\\\"4\\\"\\n            y2=\\\"4\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={{ duration: 0.2 }}\\n            variants={LINE_VARIANTS}\\n            x1=\\\"14\\\"\\n            x2=\\\"5\\\"\\n            y1=\\\"20\\\"\\n            y2=\\\"20\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={{\\n              delay: 0.1,\\n              duration: 0.4,\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, pathOffset: 0 },\\n              animate: {\\n                pathLength: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n            x1=\\\"15\\\"\\n            x2=\\\"9\\\"\\n            y1=\\\"4\\\"\\n            y2=\\\"20\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nItalicIcon.displayName = \\\"ItalicIcon\\\";\\n\\nexport { ItalicIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/japanese-yen.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"japanese-yen\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"japanese-yen.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface JapaneseYenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface JapaneseYenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst JAPANESE_YEN_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst JAPANESE_YEN_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst JapaneseYenIcon = forwardRef<JapaneseYenIconHandle, JapaneseYenIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M12 9.5V21m0-11.5L6 3m6 6.5L18 3\\\"\\n            initial=\\\"normal\\\"\\n            variants={JAPANESE_YEN_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 11h-12\\\"\\n            initial=\\\"normal\\\"\\n            variants={JAPANESE_YEN_SECONDARY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 15h-12\\\"\\n            initial=\\\"normal\\\"\\n            variants={JAPANESE_YEN_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nJapaneseYenIcon.displayName = \\\"JapaneseYenIcon\\\";\\n\\nexport { JapaneseYenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/key-circle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"key-circle\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"key-circle.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface KeyIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KeyCircleIcon = forwardRef<KeyIconHandle, KeyIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 0.9,\\n            bounce: 0.5,\\n          }}\\n          variants={{\\n            normal: { y: 0, rotate: 0 },\\n            animate: {\\n              y: [0, -3, 0, -2, 0],\\n              rotate: [0, 3, -3, 0],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\\\" />\\n          <circle cx=\\\"16.5\\\" cy=\\\"7.5\\\" fill=\\\"currentColor\\\" r=\\\".5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nKeyCircleIcon.displayName = \\\"KeyCircleIcon\\\";\\n\\nexport { KeyCircleIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/key-square.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"key-square\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"key-square.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface KeyIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KeySquareIcon = forwardRef<KeyIconHandle, KeyIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 0.6,\\n            bounce: 0.4,\\n          }}\\n          variants={{\\n            normal: { rotate: 0, scale: 1 },\\n            animate: {\\n              rotate: [0, 15, -15, 0],\\n              scale: [1, 1.05, 1, 1],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z\\\" />\\n          <path d=\\\"m14 7 3 3\\\" />\\n          <path d=\\\"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nKeySquareIcon.displayName = \\\"KeySquareIcon\\\";\\n\\nexport { KeySquareIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/key.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"key\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"key.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface KeyIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KeyIcon = forwardRef<KeyIconHandle, KeyIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ originX: 0.3, originY: 0.7 }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n              transition: {\\n                type: \\\"spring\\\",\\n                stiffness: 120,\\n                damping: 14,\\n                duration: 0.8,\\n              },\\n            },\\n            animate: {\\n              rotate: [-3, -33, -25, -28],\\n              transition: {\\n                duration: 0.6,\\n                times: [0, 0.6, 0.8, 1],\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\\\" />\\n          <path d=\\\"m21 2-9.6 9.6\\\" />\\n          <circle cx=\\\"7.5\\\" cy=\\\"15.5\\\" r=\\\"5.5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nKeyIcon.displayName = \\\"KeyIcon\\\";\\n\\nexport { KeyIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/keyboard.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"keyboard\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"keyboard.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { AnimatePresence, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport {\\n  forwardRef,\\n  useCallback,\\n  useEffect,\\n  useImperativeHandle,\\n  useRef,\\n  useState,\\n} from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface KeyboardIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface KeyboardIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst KEYBOARD_PATHS = [\\n  { id: \\\"key1\\\", d: \\\"M10 8h.01\\\" },\\n  { id: \\\"key2\\\", d: \\\"M12 12h.01\\\" },\\n  { id: \\\"key3\\\", d: \\\"M14 8h.01\\\" },\\n  { id: \\\"key4\\\", d: \\\"M16 12h.01\\\" },\\n  { id: \\\"key5\\\", d: \\\"M18 8h.01\\\" },\\n  { id: \\\"key6\\\", d: \\\"M6 8h.01\\\" },\\n  { id: \\\"key7\\\", d: \\\"M7 16h10\\\" },\\n  { id: \\\"key8\\\", d: \\\"M8 12h.01\\\" },\\n];\\n\\nconst KeyboardIcon = forwardRef<KeyboardIconHandle, KeyboardIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const [isHovered, setIsHovered] = useState(false);\\n    const controls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => setIsHovered(true),\\n        stopAnimation: () => setIsHovered(false),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          setIsHovered(true);\\n        }\\n      },\\n      [onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          setIsHovered(false);\\n        }\\n      },\\n      [onMouseLeave]\\n    );\\n\\n    useEffect(() => {\\n      const animateKeys = async () => {\\n        if (isHovered) {\\n          await controls.start((i) => ({\\n            opacity: [1, 0.2, 1],\\n            transition: {\\n              duration: 1.5,\\n              times: [0, 0.5, 1],\\n              delay: i * 0.2 * Math.random(),\\n              repeat: 1,\\n              repeatType: \\\"reverse\\\",\\n            },\\n          }));\\n        } else {\\n          controls.stop();\\n          controls.set({ opacity: 1 });\\n        }\\n      };\\n\\n      animateKeys();\\n    }, [isHovered, controls]);\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"16\\\" rx=\\\"2\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"4\\\" />\\n          <AnimatePresence>\\n            {KEYBOARD_PATHS.map((path, index) => (\\n              <motion.path\\n                animate={controls}\\n                custom={index}\\n                d={path.d}\\n                initial={{ opacity: 1 }}\\n                key={path.id}\\n              />\\n            ))}\\n          </AnimatePresence>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nKeyboardIcon.displayName = \\\"KeyboardIcon\\\";\\n\\nexport { KeyboardIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/languages.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"languages\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"languages.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LanguagesIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LanguagesIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1, pathLength: 1, pathOffset: 0 },\\n  animate: (custom: number) => ({\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      opacity: { duration: 0.01, delay: custom * 0.1 },\\n      pathLength: {\\n        type: \\\"spring\\\",\\n        duration: 0.5,\\n        bounce: 0,\\n        delay: custom * 0.1,\\n      },\\n    },\\n  }),\\n};\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: 1,\\n    transition: {\\n      staggerChildren: 0.1,\\n      delayChildren: 0.2,\\n    },\\n  },\\n};\\n\\nconst LanguagesIcon = forwardRef<LanguagesIconHandle, LanguagesIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const svgControls = useAnimation();\\n    const pathControls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          svgControls.start(\\\"animate\\\");\\n          pathControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          svgControls.start(\\\"normal\\\");\\n          pathControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          svgControls.start(\\\"animate\\\");\\n          pathControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [onMouseEnter, pathControls, svgControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          svgControls.start(\\\"normal\\\");\\n          pathControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [svgControls, pathControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={svgControls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={pathControls}\\n            custom={3}\\n            d=\\\"m5 8 6 6\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            custom={2}\\n            d=\\\"m4 14 6-6 3-3\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            custom={1}\\n            d=\\\"M2 5h12\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            custom={0}\\n            d=\\\"M7 2h1\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            custom={3}\\n            d=\\\"m22 22-5-10-5 10\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={pathControls}\\n            custom={3}\\n            d=\\\"M14 18h6\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLanguagesIcon.displayName = \\\"LanguagesIcon\\\";\\n\\nexport { LanguagesIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/laptop-minimal-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"laptop-minimal-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"laptop-minimal-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LaptopMinimalCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LaptopMinimalCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst LaptopMinimalCheckIcon = forwardRef<\\n  LaptopMinimalCheckIconHandle,\\n  LaptopMinimalCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2 20h20\\\" />\\n        <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"4\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 10 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nLaptopMinimalCheckIcon.displayName = \\\"LaptopMinimalCheckIcon\\\";\\n\\nexport { LaptopMinimalCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/laugh.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"laugh\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"laugh.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LaughIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LaughIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LaughIcon = forwardRef<LaughIconHandle, LaughIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        rotate: 0,\\n        strokeWidth: 2,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.15, 1, 1.1, 1.05],\\n        rotate: [0, 3, -2, 3, 0],\\n        strokeWidth: [2, 2.5, 2.5, 2.5, 2],\\n        transition: {\\n          duration: 1.2,\\n          times: [0, 0.2, 0.4, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n          repeat: 0,\\n          repeatType: \\\"reverse\\\",\\n        },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      normal: {\\n        d: \\\"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\\\",\\n        pathLength: 1,\\n        strokeWidth: 2,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        d: \\\"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\\\",\\n        pathLength: [0.7, 1, 1],\\n        strokeWidth: 2.5,\\n        scaleY: [1, 1.2, 1.1],\\n        y: [0, 0.5, 0.3],\\n        transition: {\\n          duration: 0.6,\\n          times: [0, 0.5, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const eyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        opacity: 1,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.3, 1, 1.7],\\n        opacity: [1, 1, 1, 1],\\n        transition: {\\n          duration: 0.6,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={mouthVariants}\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={eyeVariants}\\n            x1=\\\"9\\\"\\n            x2=\\\"9.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={eyeVariants}\\n            x1=\\\"15\\\"\\n            x2=\\\"15.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLaughIcon.displayName = \\\"LaughIcon\\\";\\n\\nexport { LaughIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/layers.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"layers\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"layers.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LayersIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LayersIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 100,\\n  damping: 14,\\n  mass: 1,\\n};\\n\\nconst LayersIcon = forwardRef<LayersIconHandle, LayersIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"firstState\\\");\\n          await controls.start(\\\"secondState\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"firstState\\\");\\n          await controls.start(\\\"secondState\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { y: 0 },\\n              firstState: { y: -9 },\\n              secondState: { y: 0 },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { y: 0 },\\n              firstState: { y: -5 },\\n              secondState: { y: 0 },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLayersIcon.displayName = \\\"LayersIcon\\\";\\n\\nexport { LayersIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/layout-panel-top.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"layout-panel-top\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"layout-panel-top.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LayoutPanelTopIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LayoutPanelTopIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LayoutPanelTopIcon = forwardRef<\\n  LayoutPanelTopIconHandle,\\n  LayoutPanelTopIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"7\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"1\\\"\\n          variants={{\\n            normal: { opacity: 1, translateY: 0 },\\n            animate: {\\n              opacity: [0, 1],\\n              translateY: [-5, 0],\\n              transition: {\\n                opacity: { duration: 0.5, times: [0.2, 1] },\\n                duration: 0.5,\\n              },\\n            },\\n          }}\\n          width=\\\"18\\\"\\n          x=\\\"3\\\"\\n          y=\\\"3\\\"\\n        />\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"7\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"1\\\"\\n          variants={{\\n            normal: { opacity: 1, translateX: 0 },\\n            animate: {\\n              opacity: [0, 1],\\n              translateX: [-10, 0],\\n              transition: {\\n                opacity: { duration: 0.7, times: [0.5, 1] },\\n                translateX: { delay: 0.3 },\\n                duration: 0.5,\\n              },\\n            },\\n          }}\\n          width=\\\"7\\\"\\n          x=\\\"3\\\"\\n          y=\\\"14\\\"\\n        />\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"7\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"1\\\"\\n          variants={{\\n            normal: { opacity: 1, translateX: 0 },\\n            animate: {\\n              opacity: [0, 1],\\n              translateX: [10, 0],\\n              transition: {\\n                opacity: { duration: 0.8, times: [0.5, 1] },\\n                translateX: { delay: 0.4 },\\n                duration: 0.5,\\n              },\\n            },\\n          }}\\n          width=\\\"7\\\"\\n          x=\\\"14\\\"\\n          y=\\\"14\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nLayoutPanelTopIcon.displayName = \\\"LayoutPanelTopIcon\\\";\\n\\nexport { LayoutPanelTopIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/link.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"link\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"link.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LinkIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LinkIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  initial: { pathLength: 1, pathOffset: 0, rotate: 0 },\\n  animate: {\\n    pathLength: [1, 0.97, 1, 0.97, 1],\\n    pathOffset: [0, 0.05, 0, 0.05, 0],\\n    rotate: [0, -5, 0],\\n    transition: {\\n      rotate: {\\n        duration: 0.5,\\n      },\\n      duration: 1,\\n      times: [0, 0.2, 0.4, 0.6, 1],\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst LinkIcon = forwardRef<LinkIconHandle, LinkIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLinkIcon.displayName = \\\"LinkIcon\\\";\\n\\nexport { LinkIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/linkedin.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"linkedin\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"linkedin.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LinkedinIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LinkedinIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst RECT_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LinkedinIcon = forwardRef<LinkedinIconHandle, LinkedinIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const pathControls = useAnimation();\\n    const rectControls = useAnimation();\\n    const circleControls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          pathControls.start(\\\"animate\\\");\\n          rectControls.start(\\\"animate\\\");\\n          circleControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          pathControls.start(\\\"normal\\\");\\n          rectControls.start(\\\"normal\\\");\\n          circleControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          pathControls.start(\\\"animate\\\");\\n          rectControls.start(\\\"animate\\\");\\n          circleControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [circleControls, onMouseEnter, pathControls, rectControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          pathControls.start(\\\"normal\\\");\\n          rectControls.start(\\\"normal\\\");\\n          circleControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [pathControls, rectControls, circleControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={pathControls}\\n            d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.rect\\n            animate={rectControls}\\n            height=\\\"12\\\"\\n            initial=\\\"normal\\\"\\n            variants={RECT_VARIANTS}\\n            width=\\\"4\\\"\\n            x=\\\"2\\\"\\n            y=\\\"9\\\"\\n          />\\n          <motion.circle\\n            animate={circleControls}\\n            cx=\\\"4\\\"\\n            cy=\\\"4\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"2\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLinkedinIcon.displayName = \\\"LinkedinIcon\\\";\\n\\nexport { LinkedinIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/loader-pinwheel.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"loader-pinwheel\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"loader-pinwheel.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LoaderPinwheelIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LoaderPinwheelIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: 360,\\n    transition: {\\n      repeat: Number.POSITIVE_INFINITY,\\n      duration: 1,\\n      ease: \\\"linear\\\",\\n    },\\n  },\\n};\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 50,\\n  damping: 10,\\n};\\n\\nconst LoaderPinwheelIcon = forwardRef<\\n  LoaderPinwheelIconHandle,\\n  LoaderPinwheelIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.g\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={G_VARIANTS}\\n        >\\n          <path d=\\\"M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0\\\" />\\n          <path d=\\\"M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6\\\" />\\n          <path d=\\\"M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6\\\" />\\n        </motion.g>\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nLoaderPinwheelIcon.displayName = \\\"LoaderPinwheelIcon\\\";\\n\\nexport { LoaderPinwheelIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/lock-keyhole-open.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"lock-keyhole-open\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"lock-keyhole-open.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LockKeyholeOpenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LockKeyholeOpenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LockKeyholeOpenIcon = forwardRef<\\n  LockKeyholeOpenIconHandle,\\n  LockKeyholeOpenIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        transition={{\\n          duration: 1,\\n          ease: [0.4, 0, 0.2, 1],\\n        }}\\n        variants={{\\n          normal: {\\n            rotate: 0,\\n            scale: 1,\\n          },\\n          animate: {\\n            rotate: [2, 4, -2, 0],\\n            scale: [1.05, 0.95, 1.02, 1],\\n          },\\n        }}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <circle cx=\\\"12\\\" cy=\\\"16\\\" r=\\\"1\\\" />\\n        <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"10\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M7 10V7a5 5 0 0 1 10 0v3\\\"\\n          initial=\\\"normal\\\"\\n          transition={{\\n            duration: 0.3,\\n            ease: [0.4, 0, 0.2, 1],\\n          }}\\n          variants={{\\n            normal: {\\n              pathLength: 0.8,\\n            },\\n            animate: {\\n              pathLength: 1,\\n            },\\n          }}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nLockKeyholeOpenIcon.displayName = \\\"LockKeyholeOpenIcon\\\";\\n\\nexport { LockKeyholeOpenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/lock-keyhole.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"lock-keyhole\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"lock-keyhole.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LockKeyholeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LockKeyholeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LockKeyholeIcon = forwardRef<LockKeyholeIconHandle, LockKeyholeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 1,\\n            ease: [0.4, 0, 0.2, 1],\\n          }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n              scale: 1,\\n            },\\n            animate: {\\n              rotate: [-3, 1, -2, 0],\\n              scale: [0.95, 1.05, 0.98, 1],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"16\\\" r=\\\"1\\\" />\\n          <rect height=\\\"12\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 10V7a5 5 0 0 1 10 0v3\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: 0.3,\\n              ease: [0.4, 0, 0.2, 1],\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n              },\\n              animate: {\\n                pathLength: 0.7,\\n              },\\n            }}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLockKeyholeIcon.displayName = \\\"LockKeyholeIcon\\\";\\n\\nexport { LockKeyholeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/lock-open.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"lock-open\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"lock-open.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LockOpenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LockOpenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LockOpenIcon = forwardRef<LockOpenIconHandle, LockOpenIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 1,\\n            ease: [0.4, 0, 0.2, 1],\\n          }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n              scale: 1,\\n            },\\n            animate: {\\n              rotate: [2, 4, -2, 0],\\n              scale: [1.05, 0.95, 1.02, 1],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"11\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: 0.3,\\n              ease: [0.4, 0, 0.2, 1],\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 0.8,\\n              },\\n              animate: {\\n                pathLength: 1,\\n              },\\n            }}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLockOpenIcon.displayName = \\\"LockOpenIcon\\\";\\n\\nexport { LockOpenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/lock.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"lock\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"lock.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LockIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LockIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LockIcon = forwardRef<LockIconHandle, LockIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 1,\\n            ease: [0.4, 0, 0.2, 1],\\n          }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n              scale: 1,\\n            },\\n            animate: {\\n              rotate: [-3, 1, -2, 0],\\n              scale: [0.95, 1.05, 0.98, 1],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <rect height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"11\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"\\n            initial=\\\"normal\\\"\\n            transition={{\\n              duration: 0.3,\\n              ease: [0.4, 0, 0.2, 1],\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n              },\\n              animate: {\\n                pathLength: 0.7,\\n              },\\n            }}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLockIcon.displayName = \\\"LockIcon\\\";\\n\\nexport { LockIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/logout.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"logout\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"logout.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface LogoutIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface LogoutIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  animate: {\\n    x: 2,\\n    translateX: [0, -3, 0],\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n};\\n\\nconst LogoutIcon = forwardRef<LogoutIconHandle, LogoutIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\" />\\n          <motion.polyline\\n            animate={controls}\\n            points=\\\"16 17 21 12 16 7\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.line\\n            animate={controls}\\n            variants={PATH_VARIANTS}\\n            x1=\\\"21\\\"\\n            x2=\\\"9\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"12\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nLogoutIcon.displayName = \\\"LogoutIcon\\\";\\n\\nexport { LogoutIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/mail-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mail-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"mail-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MailCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MailCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst MailCheckIcon = forwardRef<MailCheckIconHandle, MailCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8\\\" />\\n          <path d=\\\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m16 19 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={CHECK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMailCheckIcon.displayName = \\\"MailCheckIcon\\\";\\n\\nexport { MailCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/mailbox.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mailbox\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"mailbox.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MailboxIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MailboxIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FLAG_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 300,\\n      damping: 18,\\n    },\\n  },\\n  animate: {\\n    rotate: -90,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 280,\\n      damping: 12,\\n      mass: 1,\\n    },\\n  },\\n};\\n\\nconst MailboxIcon = forwardRef<MailboxIconHandle, MailboxIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          className=\\\"overflow-visible\\\"\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M22 17a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9.5C2 7 4 5 6.5 5H18c2.2 0 4 1.8 4 4v8Z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 11V9H15\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"18px 11px\\\" }}\\n            variants={FLAG_VARIANTS}\\n          />\\n          <path d=\\\"M6.5 5C9 5 11 7 11 9.5V17a2 2 0 0 1-2 2\\\" />\\n          <line x1=\\\"6\\\" x2=\\\"7\\\" y1=\\\"10\\\" y2=\\\"10\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMailboxIcon.displayName = \\\"MailboxIcon\\\";\\n\\nexport { MailboxIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-check-inside.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-check-inside\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-check-inside.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinCheckInsideIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinCheckInsideIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinCheckInsideIcon = forwardRef<\\n  MapPinCheckInsideIconHandle,\\n  MapPinCheckInsideIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 10 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          variants={CHECK_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMapPinCheckInsideIcon.displayName = \\\"MapPinCheckInsideIcon\\\";\\n\\nexport { MapPinCheckInsideIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinCheckIcon = forwardRef<MapPinCheckIconHandle, MapPinCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M19.43 12.935c.357-.967.57-1.955.57-2.935a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32.197 32.197 0 0 0 .813-.728\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m16 18 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            variants={CHECK_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinCheckIcon.displayName = \\\"MapPinCheckIcon\\\";\\n\\nexport { MapPinCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-house.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-house\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-house.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinHouseIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinHouseIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst HOUSE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinHouseIcon = forwardRef<MapPinHouseIconHandle, MapPinHouseIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 .601.2\\\" />\\n          <circle cx=\\\"10\\\" cy=\\\"10\\\" r=\\\"3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 22a1 1 0 0 1-1-1v-4a1 1 0 0 1 .445-.832l3-2a1 1 0 0 1 1.11 0l3 2A1 1 0 0 1 22 17v4a1 1 0 0 1-1 1z M18 22v-3\\\"\\n            initial=\\\"normal\\\"\\n            variants={HOUSE_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinHouseIcon.displayName = \\\"MapPinHouseIcon\\\";\\n\\nexport { MapPinHouseIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-minus-inside.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-minus-inside\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-minus-inside.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinMinusInsideIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinMinusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst MINUS_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinMinusInsideIcon = forwardRef<\\n  MapPinMinusInsideIconHandle,\\n  MapPinMinusInsideIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 10h6\\\"\\n          initial=\\\"normal\\\"\\n          variants={MINUS_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMapPinMinusInsideIcon.displayName = \\\"MapPinMinusInsideIcon\\\";\\n\\nexport { MapPinMinusInsideIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-minus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-minus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-minus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinMinusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinMinusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst MINUS_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinMinusIcon = forwardRef<MapPinMinusIconHandle, MapPinMinusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18.977 14C19.6 12.701 20 11.343 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 18h6\\\"\\n            initial=\\\"normal\\\"\\n            variants={MINUS_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinMinusIcon.displayName = \\\"MapPinMinusIcon\\\";\\n\\nexport { MapPinMinusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinOffIcon = forwardRef<MapPinOffIconHandle, MapPinOffIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.75 7.09a3 3 0 0 1 2.16 2.16\\\" />\\n          <path d=\\\"M17.072 17.072c-1.634 2.17-3.527 3.912-4.471 4.727a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 1.432-4.568\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 2 20 20\\\"\\n            initial=\\\"normal\\\"\\n            variants={BAR_VARIANTS}\\n          />\\n          <path d=\\\"M8.475 2.818A8 8 0 0 1 20 10c0 1.183-.31 2.377-.81 3.533\\\" />\\n          <path d=\\\"M9.13 9.13a3 3 0 0 0 3.74 3.74\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinOffIcon.displayName = \\\"MapPinOffIcon\\\";\\n\\nexport { MapPinOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-plus-inside.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-plus-inside\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-plus-inside.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinPlusInsideIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinPlusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst VERTICAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.6,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.6 },\\n    },\\n  },\\n};\\n\\nconst MapPinPlusInsideIcon = forwardRef<\\n  MapPinPlusInsideIconHandle,\\n  MapPinPlusInsideIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 7v6\\\"\\n          initial=\\\"normal\\\"\\n          variants={HORIZONTAL_BAR_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 10h6\\\"\\n          initial=\\\"normal\\\"\\n          variants={VERTICAL_BAR_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMapPinPlusInsideIcon.displayName = \\\"MapPinPlusInsideIcon\\\";\\n\\nexport { MapPinPlusInsideIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinPlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinPlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst VERTICAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.6,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.6 },\\n    },\\n  },\\n};\\n\\nconst MapPinPlusIcon = forwardRef<MapPinPlusIconHandle, MapPinPlusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M19.914 11.105A7.298 7.298 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 18h6\\\"\\n            initial=\\\"normal\\\"\\n            variants={HORIZONTAL_BAR_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M19 15v6\\\"\\n            initial=\\\"normal\\\"\\n            variants={VERTICAL_BAR_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinPlusIcon.displayName = \\\"MapPinPlusIcon\\\";\\n\\nexport { MapPinPlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin-x-inside.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin-x-inside\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin-x-inside.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinXInsideIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinXInsideIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst FIRST_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst SECOND_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.6,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.6 },\\n    },\\n  },\\n};\\n\\nconst MapPinXInsideIcon = forwardRef<\\n  MapPinXInsideIconHandle,\\n  MapPinXInsideIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m14.5 7.5-5 5\\\"\\n          initial=\\\"normal\\\"\\n          variants={FIRST_BAR_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9.5 7.5 5 5\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_BAR_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMapPinXInsideIcon.displayName = \\\"MapPinXInsideIcon\\\";\\n\\nexport { MapPinXInsideIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/map-pin.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"map-pin\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"map-pin.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MapPinIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MapPinIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, -5, -3],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.6, 1],\\n    },\\n  },\\n};\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [0.5, 0],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.5,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst MapPinIcon = forwardRef<MapPinIconHandle, MapPinIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\\\" />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"10\\\"\\n            initial=\\\"normal\\\"\\n            r=\\\"3\\\"\\n            variants={CIRCLE_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMapPinIcon.displayName = \\\"MapPinIcon\\\";\\n\\nexport { MapPinIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/maximize-2.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"maximize-2\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"maximize-2.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface Maximize2IconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface Maximize2IconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst Maximize2Icon = forwardRef<Maximize2IconHandle, Maximize2IconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 16.2V21m0 0h4.8M3 21l6-6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 7.8V3m0 0h-4.8M21 3l-6 6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMaximize2Icon.displayName = \\\" Maximize2Icon\\\";\\n\\nexport { Maximize2Icon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/maximize.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"maximize\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"maximize.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MaximizeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\ninterface MaximizeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst MaximizeIcon = forwardRef<MaximizeIconHandle, MaximizeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 3H5a2 2 0 0 0-2 2v3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 8V5a2 2 0 0 0-2-2h-3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 16v3a2 2 0 0 0 2 2h3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 21h3a2 2 0 0 0 2-2v-3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMaximizeIcon.displayName = \\\"MaximizeIcon\\\";\\n\\nexport { MaximizeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/meh.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"meh\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"meh.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MehIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MehIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst MehIcon = forwardRef<MehIconHandle, MehIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        rotate: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.05, 0.98, 1.02],\\n        rotate: [0, 1, -1, 0],\\n        transition: {\\n          duration: 0.7,\\n          times: [0, 0.4, 0.7, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      normal: {\\n        scaleX: 1,\\n        y: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scaleX: [1, 1.2, 0.9, 1.1],\\n        y: [0, 0.5, -0.5, 0],\\n        transition: {\\n          duration: 0.6,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n          delay: 0.1,\\n        },\\n      },\\n    };\\n\\n    const leftEyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        x: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.3, 1, 1.2],\\n        x: [0, -0.3, 0.3, 0],\\n        transition: {\\n          duration: 0.5,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const rightEyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        x: 0,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.3, 1, 1.2],\\n        x: [0, 0.3, -0.3, 0],\\n        transition: {\\n          duration: 0.5,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={mouthVariants}\\n            x1=\\\"8\\\"\\n            x2=\\\"16\\\"\\n            y1=\\\"15\\\"\\n            y2=\\\"15\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={leftEyeVariants}\\n            x1=\\\"9\\\"\\n            x2=\\\"9.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={rightEyeVariants}\\n            x1=\\\"15\\\"\\n            x2=\\\"15.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMehIcon.displayName = \\\"MehIcon\\\";\\n\\nexport { MehIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/menu.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"menu\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"menu.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MenuIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MenuIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    y: 0,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    rotate: custom === 1 ? 45 : custom === 3 ? -45 : 0,\\n    y: custom === 1 ? 6 : custom === 3 ? -6 : 0,\\n    opacity: custom === 2 ? 0 : 1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 260,\\n      damping: 20,\\n    },\\n  }),\\n};\\n\\nconst MenuIcon = forwardRef<MenuIconHandle, MenuIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            custom={1}\\n            variants={LINE_VARIANTS}\\n            x1=\\\"4\\\"\\n            x2=\\\"20\\\"\\n            y1=\\\"6\\\"\\n            y2=\\\"6\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={2}\\n            variants={LINE_VARIANTS}\\n            x1=\\\"4\\\"\\n            x2=\\\"20\\\"\\n            y1=\\\"12\\\"\\n            y2=\\\"12\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            custom={3}\\n            variants={LINE_VARIANTS}\\n            x1=\\\"4\\\"\\n            x2=\\\"20\\\"\\n            y1=\\\"18\\\"\\n            y2=\\\"18\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMenuIcon.displayName = \\\"MenuIcon\\\";\\n\\nexport { MenuIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCircleCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCircleCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst MessageCircleCheckIcon = forwardRef<\\n  MessageCircleCheckIconHandle,\\n  MessageCircleCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 12 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageCircleCheckIcon.displayName = \\\"MessageCircleCheckIcon\\\";\\n\\nexport { MessageCircleCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle-dashed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle-dashed\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle-dashed.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCircleDashedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst MessageCircleDashedIcon = forwardRef<\\n  MessageCircleDashedIconHandle,\\n  MessageCircleDashedIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        {[\\n          \\\"M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1\\\",\\n          \\\"M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1\\\",\\n          \\\"M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5\\\",\\n          \\\"M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1\\\",\\n          \\\"M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1\\\",\\n          \\\"M3.5 17.5 2 22l4.5-1.5\\\",\\n          \\\"M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5\\\",\\n          \\\"M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1\\\",\\n        ].map((d, index) => (\\n          <motion.path\\n            animate={controls}\\n            custom={index + 1}\\n            d={d}\\n            key={d}\\n            variants={PATH_VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageCircleDashedIcon.displayName = \\\"MessageCircleDashedIcon\\\";\\n\\nexport { MessageCircleDashedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle-more.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle-more\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle-more.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCircleMoreIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCircleMoreIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOT_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    opacity: [1, 0, 0, 1, 1, 0, 0, 1],\\n    transition: {\\n      opacity: {\\n        times: [\\n          0,\\n          0.1,\\n          0.1 + custom * 0.1,\\n          0.1 + custom * 0.1 + 0.1,\\n          0.5,\\n          0.6,\\n          0.6 + custom * 0.1,\\n          0.6 + custom * 0.1 + 0.1,\\n        ],\\n        duration: 1.5,\\n      },\\n    },\\n  }),\\n};\\n\\nconst MessageCircleMoreIcon = forwardRef<\\n  MessageCircleMoreIconHandle,\\n  MessageCircleMoreIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M8 12h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M12 12h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M16 12h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageCircleMoreIcon.displayName = \\\"MessageCircleMoreIcon\\\";\\n\\nexport { MessageCircleMoreIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCirclePlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCirclePlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PLUS_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst PLUS_HORIZONTAL_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n    },\\n  },\\n};\\n\\nconst MessageCirclePlusIcon = forwardRef<\\n  MessageCirclePlusIconHandle,\\n  MessageCirclePlusIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 8v8\\\"\\n          initial=\\\"normal\\\"\\n          variants={PLUS_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M8 12h8\\\"\\n          initial=\\\"normal\\\"\\n          variants={PLUS_HORIZONTAL_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageCirclePlusIcon.displayName = \\\"MessageCirclePlusIcon\\\";\\n\\nexport { MessageCirclePlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle-x.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle-x\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle-x.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCircleXIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCircleXIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FIRST_LINE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst SECOND_LINE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n    },\\n  },\\n};\\n\\nconst MessageCircleXIcon = forwardRef<\\n  MessageCircleXIconHandle,\\n  MessageCircleXIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m15 9-6 6\\\"\\n          initial=\\\"normal\\\"\\n          variants={FIRST_LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 9 6 6\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageCircleXIcon.displayName = \\\"MessageCircleXIcon\\\";\\n\\nexport { MessageCircleXIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-circle.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-circle\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-circle.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageCircleIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageCircleIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ICON_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    rotate: 0,\\n  },\\n  animate: {\\n    scale: 1.05,\\n    rotate: [0, -7, 7, 0],\\n    transition: {\\n      rotate: {\\n        duration: 0.5,\\n        ease: \\\"easeInOut\\\",\\n      },\\n      scale: {\\n        type: \\\"spring\\\",\\n        stiffness: 400,\\n        damping: 10,\\n      },\\n    },\\n  },\\n};\\n\\nconst MessageCircleIcon = forwardRef<\\n  MessageCircleIconHandle,\\n  MessageCircleIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={ICON_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMessageCircleIcon.displayName = \\\"MessageCircleIcon\\\";\\n\\nexport { MessageCircleIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquareCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquareCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst MessageSquareCheckIcon = forwardRef<\\n  MessageSquareCheckIconHandle,\\n  MessageSquareCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.7.7 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 11 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquareCheckIcon.displayName = \\\"MessageSquareCheckIcon\\\";\\n\\nexport { MessageSquareCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square-dashed.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square-dashed\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square-dashed.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquareDashedIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquareDashedIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst MessageSquareDashedIcon = forwardRef<\\n  MessageSquareDashedIconHandle,\\n  MessageSquareDashedIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        {[\\n          \\\"M14 3h1\\\",\\n          \\\"M14 17h1\\\",\\n          \\\"M10 17H7l-4 4v-7\\\",\\n          \\\"M9 3h1\\\",\\n          \\\"M19 3a2 2 0 0 1 2 2\\\",\\n          \\\"M3 9v1\\\",\\n          \\\"M21 9v1\\\",\\n          \\\"M21 14v1a2 2 0 0 1-2 2\\\",\\n          \\\"M5 3a2 2 0 0 0-2 2\\\",\\n        ].map((d, index) => (\\n          <motion.path\\n            animate={controls}\\n            custom={index + 1}\\n            d={d}\\n            key={d}\\n            variants={PATH_VARIANTS}\\n          />\\n        ))}\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquareDashedIcon.displayName = \\\"MessageSquareDashedIcon\\\";\\n\\nexport { MessageSquareDashedIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square-more.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square-more\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square-more.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquareMoreIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquareMoreIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DOT_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    opacity: [1, 0, 0, 1, 1, 0, 0, 1],\\n    transition: {\\n      opacity: {\\n        times: [\\n          0,\\n          0.1,\\n          0.1 + custom * 0.1,\\n          0.1 + custom * 0.1 + 0.1,\\n          0.5,\\n          0.6,\\n          0.6 + custom * 0.1,\\n          0.6 + custom * 0.1 + 0.1,\\n        ],\\n        duration: 1.5,\\n      },\\n    },\\n  }),\\n};\\n\\nconst MessageSquareMoreIcon = forwardRef<\\n  MessageSquareMoreIconHandle,\\n  MessageSquareMoreIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M8 10h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M12 10h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M16 10h.01\\\"\\n          variants={DOT_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquareMoreIcon.displayName = \\\"MessageSquareMoreIcon\\\";\\n\\nexport { MessageSquareMoreIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquarePlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquarePlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PLUS_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst PLUS_HORIZONTAL_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n    },\\n  },\\n};\\n\\nconst MessageSquarePlusIcon = forwardRef<\\n  MessageSquarePlusIconHandle,\\n  MessageSquarePlusIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 8v6\\\"\\n          initial=\\\"normal\\\"\\n          variants={PLUS_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M9 11h6\\\"\\n          initial=\\\"normal\\\"\\n          variants={PLUS_HORIZONTAL_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquarePlusIcon.displayName = \\\"MessageSquarePlusIcon\\\";\\n\\nexport { MessageSquarePlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square-x.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square-x\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square-x.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquareXIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquareXIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FIRST_LINE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst SECOND_LINE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\", delay: 0.2 },\\n    },\\n  },\\n};\\n\\nconst MessageSquareXIcon = forwardRef<\\n  MessageSquareXIconHandle,\\n  MessageSquareXIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m14.5 8.5-5 5\\\"\\n          initial=\\\"normal\\\"\\n          variants={FIRST_LINE_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9.5 8.5 5 5\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_LINE_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquareXIcon.displayName = \\\"MessageSquareXIcon\\\";\\n\\nexport { MessageSquareXIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/message-square.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"message-square\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"message-square.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MessageSquareIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MessageSquareIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ICON_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    rotate: 0,\\n  },\\n  animate: {\\n    scale: 1.05,\\n    rotate: [0, -7, 7, 0],\\n    transition: {\\n      rotate: {\\n        duration: 0.5,\\n        ease: \\\"easeInOut\\\",\\n      },\\n      scale: {\\n        type: \\\"spring\\\",\\n        stiffness: 400,\\n        damping: 10,\\n      },\\n    },\\n  },\\n};\\n\\nconst MessageSquareIcon = forwardRef<\\n  MessageSquareIconHandle,\\n  MessageSquareIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={ICON_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nMessageSquareIcon.displayName = \\\"MessageSquareIcon\\\";\\n\\nexport { MessageSquareIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/mic-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mic-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"mic-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MicOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MicOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: 0.4,\\n      delay: 0.15,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst MicOffIcon = forwardRef<MicOffIconHandle, MicOffIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 19v3\\\" />\\n          <path d=\\\"M15 9.34V5a3 3 0 0 0-5.68-1.33\\\" />\\n          <path d=\\\"M16.95 16.95A7 7 0 0 1 5 12v-2\\\" />\\n          <path d=\\\"M18.89 13.23A7 7 0 0 0 19 12v-2\\\" />\\n          <path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2 2 20 20\\\"\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMicOffIcon.displayName = \\\"MicOffIcon\\\";\\n\\nexport { MicOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/mic.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"mic\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"mic.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MicIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MicIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CAPSULE_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: {\\n    y: [0, -3, 0, -2, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst MicIcon = forwardRef<MicIconHandle, MicIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          overflow=\\\"visible\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 19v3\\\" />\\n          <path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\" />\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"13\\\"\\n            rx=\\\"3\\\"\\n            variants={CAPSULE_VARIANTS}\\n            width=\\\"6\\\"\\n            x=\\\"9\\\"\\n            y=\\\"2\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMicIcon.displayName = \\\"MicIcon\\\";\\n\\nexport { MicIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/minimize.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"minimize\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"minimize.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MinimizeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MinimizeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst MinimizeIcon = forwardRef<MinimizeIconHandle, MinimizeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 3v3a2 2 0 0 1-2 2H3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 8h-3a2 2 0 0 1-2-2V3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 16h3a2 2 0 0 1 2 2v3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 21v-3a2 2 0 0 1 2-2h3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-2px\\\", translateY: \\\"-2px\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMinimizeIcon.displayName = \\\"MinimizeIcon\\\";\\n\\nexport { MinimizeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/monitor-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"monitor-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"monitor-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MonitorCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MonitorCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst MonitorCheckIcon = forwardRef<\\n  MonitorCheckIconHandle,\\n  MonitorCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"14\\\" rx=\\\"2\\\" width=\\\"20\\\" x=\\\"2\\\" y=\\\"3\\\" />\\n        <path d=\\\"M12 17v4\\\" />\\n        <path d=\\\"M8 21h8\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m9 10 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nMonitorCheckIcon.displayName = \\\"MonitorCheckIcon\\\";\\n\\nexport { MonitorCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/moon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"moon\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"moon.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface MoonIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface MoonIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, -10, 10, -5, 5, 0],\\n  },\\n};\\n\\nconst SVG_TRANSITION: Transition = {\\n  duration: 1.2,\\n  ease: \\\"easeInOut\\\",\\n};\\n\\nconst MoonIcon = forwardRef<MoonIconHandle, MoonIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={SVG_TRANSITION}\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nMoonIcon.displayName = \\\"MoonIcon\\\";\\n\\nexport { MoonIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/nfc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"nfc\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"nfc.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface NfcIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface NfcIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: { duration: 0.3 },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 300,\\n      damping: 20,\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst NfcIcon = forwardRef<NfcIconHandle, NfcIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M6 8.32a7.43 7.43 0 0 1 0 7.36\\\"\\n            initial={{ opacity: 1 }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M9.46 6.21a11.76 11.76 0 0 1 0 11.58\\\"\\n            initial={{ opacity: 1 }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M12.91 4.1a15.91 15.91 0 0 1 .01 15.8\\\"\\n            initial={{ opacity: 1 }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={3}\\n            d=\\\"M16.37 2a20.16 20.16 0 0 1 0 20\\\"\\n            initial={{ opacity: 1 }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nNfcIcon.displayName = \\\"NfcIcon\\\";\\n\\nexport { NfcIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/panel-left-close.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"panel-left-close\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"panel-left-close.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PanelLeftCloseIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PanelLeftCloseIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { x: 0 },\\n  animate: { x: [0, -1.5, 0] },\\n};\\n\\nconst PanelLeftCloseIcon = forwardRef<\\n  PanelLeftCloseIconHandle,\\n  PanelLeftCloseIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <path d=\\\"M9 3v18\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 15-3-3 3-3\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nPanelLeftCloseIcon.displayName = \\\"PanelLeftCloseIcon\\\";\\n\\nexport { PanelLeftCloseIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/panel-left-open.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"panel-left-open\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"panel-left-open.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PanelLeftOpenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PanelLeftOpenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { x: 0 },\\n  animate: { x: [0, 1.5, 0] },\\n};\\n\\nconst PanelLeftOpenIcon = forwardRef<\\n  PanelLeftOpenIconHandle,\\n  PanelLeftOpenIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <path d=\\\"M9 3v18\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m14 9 3 3-3 3\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nPanelLeftOpenIcon.displayName = \\\"PanelLeftOpenIcon\\\";\\n\\nexport { PanelLeftOpenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/panel-right-open.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"panel-right-open\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"panel-right-open.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PanelRightOpenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PanelRightOpenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { x: 0 },\\n  animate: { x: [0, -1.5, 0] },\\n};\\n\\nconst PanelRightOpenIcon = forwardRef<\\n  PanelRightOpenIconHandle,\\n  PanelRightOpenIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <path d=\\\"M15 3v18\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m10 15-3-3 3-3\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nPanelRightOpenIcon.displayName = \\\"PanelRightOpenIcon\\\";\\n\\nexport { PanelRightOpenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/party-popper.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"party-popper\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"party-popper.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PartyPopperIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PartyPopperIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINES_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    scale: 1,\\n    translateX: 0,\\n    translateY: 0,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    scale: [0.3, 0.8, 1, 1.1, 1],\\n    pathLength: [0, 0.5, 1],\\n    translateX: [-5, 0],\\n    translateY: [5, 0],\\n    transition: {\\n      duration: 0.7,\\n      velocity: 0.3,\\n    },\\n  },\\n};\\n\\nconst DOTS_VARIANTS: Variants = {\\n  normal: { opacity: 1, scale: 1, translateX: 0, translateY: 0 },\\n  animate: {\\n    opacity: [0, 1],\\n    translateX: [-5, 0],\\n    translateY: [5, 0],\\n    scale: [0.5, 0.8, 1, 1.1, 1],\\n    transition: {\\n      duration: 0.7,\\n    },\\n  },\\n};\\n\\nconst POPPER_VARIANTS: Variants = {\\n  normal: { translateX: 0, translateY: 0 },\\n  animate: {\\n    translateX: [-1.5, 0],\\n    translateY: [1.5, 0],\\n    transition: {\\n      velocity: 0.3,\\n    },\\n  },\\n};\\n\\nconst PartyPopperIcon = forwardRef<PartyPopperIconHandle, PartyPopperIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5.8 11.3 2 22l10.7-3.79\\\"\\n            variants={POPPER_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\\\"\\n            variants={POPPER_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 3h.01\\\"\\n            variants={DOTS_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M22 8h.01\\\"\\n            variants={DOTS_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 2h.01\\\"\\n            variants={DOTS_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M22 20h.01\\\"\\n            variants={DOTS_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m14 10 1.21-1.06c0.16-0.84 0.9-1.44 1.76-1.44h0.38c0.88 0 1.55-0.77 1.45-1.63a2.9 2.9 0 0 1 1.96-3.12L22 2\\\"\\n            variants={LINES_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 15h0.77c0.71 0 1.32-0.52 1.43-1.22c0.16-0.91 1.12-1.45 1.98-1.11L22 13\\\"\\n            variants={LINES_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 7V6.23c0-0.71 0.52-1.33 1.22-1.43c0.91-0.16 1.45-1.12 1.11-1.98L11 2\\\"\\n            variants={LINES_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPartyPopperIcon.displayName = \\\"PartyPopperIcon\\\";\\n\\nexport { PartyPopperIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/pause.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pause\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"pause.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PauseIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PauseIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst BASE_RECT_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n};\\n\\nconst BASE_RECT_TRANSITION = {\\n  transition: {\\n    times: [0, 0.2, 0.5, 1],\\n    duration: 0.5,\\n    stiffness: 260,\\n    damping: 20,\\n  },\\n};\\n\\nconst LEFT_RECT_VARIANTS: Variants = {\\n  ...BASE_RECT_VARIANTS,\\n  animate: {\\n    y: [0, 2, 0, 0],\\n    ...BASE_RECT_TRANSITION,\\n  },\\n};\\n\\nconst RIGHT_RECT_VARIANTS: Variants = {\\n  ...BASE_RECT_VARIANTS,\\n  animate: {\\n    y: [0, 0, 2, 0],\\n    ...BASE_RECT_TRANSITION,\\n  },\\n};\\n\\nconst PauseIcon = forwardRef<PauseIconHandle, PauseIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"16\\\"\\n            rx=\\\"1\\\"\\n            variants={LEFT_RECT_VARIANTS}\\n            width=\\\"4\\\"\\n            x=\\\"6\\\"\\n            y=\\\"4\\\"\\n          />\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"16\\\"\\n            rx=\\\"1\\\"\\n            variants={RIGHT_RECT_VARIANTS}\\n            width=\\\"4\\\"\\n            x=\\\"14\\\"\\n            y=\\\"4\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPauseIcon.displayName = \\\"PauseIcon\\\";\\n\\nexport { PauseIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/pen-tool.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pen-tool\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"pen-tool.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PenToolIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PenToolIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  normal: { rotate: 0, translateX: 0, translateY: 0 },\\n  animate: {\\n    rotate: [0, 0, 8, -3, 8, 0],\\n    translateY: [0, 2, 0, -1, 0],\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [0, 1, 0],\\n  },\\n};\\n\\nconst PenToolIcon = forwardRef<PenToolIconHandle, PenToolIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 1,\\n          }}\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z\\\" />\\n          <path d=\\\"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2.3 2.3 7.286 7.286\\\"\\n            transition={{\\n              duration: 0.8,\\n            }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPenToolIcon.displayName = \\\"PenToolIcon\\\";\\n\\nexport { PenToolIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/philippine-peso.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"philippine-peso\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"philippine-peso.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PhilippinePesoIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PhilippinePesoIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PESO_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst PESO_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst PhilippinePesoIcon = forwardRef<\\n  PhilippinePesoIconHandle,\\n  PhilippinePesoIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M7 21V4a1 1 0 0 1 1-1h4a1 1 0 0 1 0 12H7\\\"\\n          initial=\\\"normal\\\"\\n          variants={PESO_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M20 7H4\\\"\\n          initial=\\\"normal\\\"\\n          variants={PESO_SECONDARY_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M20 11H4\\\"\\n          initial=\\\"normal\\\"\\n          variants={PESO_SECONDARY_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nPhilippinePesoIcon.displayName = \\\"PhilippinePesoIcon\\\";\\n\\nexport { PhilippinePesoIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/pickaxe.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pickaxe\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"pickaxe.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PickaxeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PickaxeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PICKAXE_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeOut\\\",\\n    },\\n  },\\n  animate: {\\n    rotate: [0, -20, 25, 0],\\n    transition: {\\n      duration: 0.8,\\n      times: [0, 0.6, 0.8, 1],\\n      ease: [\\\"easeInOut\\\", \\\"easeOut\\\", \\\"easeOut\\\"],\\n    },\\n  },\\n};\\n\\nconst PickaxeIcon = forwardRef<PickaxeIconHandle, PickaxeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"0% 100%\\\", transformBox: \\\"fill-box\\\" }}\\n          variants={PICKAXE_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m14 13-8.381 8.38a1 1 0 0 1-3.001-3L11 9.999\\\" />\\n          <path d=\\\"M15.973 4.027A13 13 0 0 0 5.902 2.373c-1.398.342-1.092 2.158.277 2.601a19.9 19.9 0 0 1 5.822 3.024\\\" />\\n          <path d=\\\"M16.001 11.999a19.9 19.9 0 0 1 3.024 5.824c.444 1.369 2.26 1.676 2.603.278A13 13 0 0 0 20 8.069\\\" />\\n          <path d=\\\"M18.352 3.352a1.205 1.205 0 0 0-1.704 0l-5.296 5.296a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l5.296-5.296a1.205 1.205 0 0 0 0-1.704z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPickaxeIcon.displayName = \\\"PickaxeIcon\\\";\\n\\nexport { PickaxeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/play.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"play\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"play.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PlayIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PlayIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    rotate: 0,\\n  },\\n  animate: {\\n    x: [0, -1, 2, 0],\\n    rotate: [0, -10, 0, 0],\\n    transition: {\\n      duration: 0.5,\\n      times: [0, 0.2, 0.5, 1],\\n      stiffness: 260,\\n      damping: 20,\\n    },\\n  },\\n};\\n\\nconst PlayIcon = forwardRef<PlayIconHandle, PlayIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.polygon\\n            animate={controls}\\n            points=\\\"6 3 20 12 6 21 6 3\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPlayIcon.displayName = \\\"PlayIcon\\\";\\n\\nexport { PlayIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/plug-zap.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"plug-zap\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"plug-zap.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PlugZapIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PlugZapIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ZAP_VARIANT: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0.4, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst PlugZapIcon = forwardRef<PlugZapIconHandle, PlugZapIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\\\" />\\n          <path d=\\\"m2 22 3-3\\\" />\\n          <path d=\\\"M7.5 13.5 10 11\\\" />\\n          <path d=\\\"M10.5 16.5 13 14\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m18 3-4 4h6l-4 4\\\"\\n            initial=\\\"normal\\\"\\n            variants={ZAP_VARIANT}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPlugZapIcon.displayName = \\\"PlugZapIcon\\\";\\n\\nexport { PlugZapIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PlusIcon = forwardRef<PlusIconHandle, PlusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 100, damping: 15 }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n            },\\n            animate: {\\n              rotate: 180,\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M5 12h14\\\" />\\n          <path d=\\\"M12 5v14\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nPlusIcon.displayName = \\\"PlusIcon\\\";\\n\\nexport { PlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/pound-sterling.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"pound-sterling\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"pound-sterling.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface PoundSterlingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface PoundSterlingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst POUND_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst POUND_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst PoundSterlingIcon = forwardRef<\\n  PoundSterlingIconHandle,\\n  PoundSterlingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 7c0-5.333-8-5.333-8 0\\\"\\n          initial=\\\"normal\\\"\\n          variants={POUND_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M10 7v14\\\"\\n          initial=\\\"normal\\\"\\n          variants={POUND_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M18 21h-12\\\"\\n          initial=\\\"normal\\\"\\n          variants={POUND_SECONDARY_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M16 13h-10\\\"\\n          initial=\\\"normal\\\"\\n          variants={POUND_SECONDARY_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nPoundSterlingIcon.displayName = \\\"PoundSterlingIcon\\\";\\n\\nexport { PoundSterlingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/rabbit.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"rabbit\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"rabbit.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RabbitIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RabbitIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.6,\\n  ease: [0.42, 0, 0.58, 1],\\n};\\n\\nconst SPEED_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    rotate: [0, 5, -5, 3, -3, 0],\\n    x: [0, 3, -3, 2, -2, 0],\\n    y: [0, 1.5, -1.5, 1, -1, 0],\\n    transition: TRANSITION,\\n  },\\n};\\n\\nconst RabbitIcon = forwardRef<RabbitIconHandle, RabbitIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SPEED_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3\\\" />\\n          <path d=\\\"M13 16a3 3 0 0 1 2.24 5\\\" />\\n          <path d=\\\"M18 12h.01\\\" />\\n          <path d=\\\"M20 8.54V4a2 2 0 1 0-4 0v3\\\" />\\n          <path d=\\\"M7.612 12.524a3 3 0 1 0-1.6 4.3\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRabbitIcon.displayName = \\\"RabbitIcon\\\";\\n\\nexport { RabbitIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/radio-tower.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio-tower\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"radio-tower.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RadioTowerIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RadioTowerIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: { duration: 0.3 },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 300,\\n      damping: 20,\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst RadioTowerIcon = forwardRef<RadioTowerIconHandle, RadioTowerIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M4.9 16.1C1 12.2 1 5.8 4.9 1.9\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <circle cx=\\\"12\\\" cy=\\\"9\\\" r=\\\"2\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M16.2 4.8c2 2 2.26 5.11.8 7.47\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M19.1 1.9a9.96 9.96 0 0 1 0 14.1\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <path d=\\\"M9.5 18h5\\\" />\\n          <path d=\\\"m8 22 4-11 4 11\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRadioTowerIcon.displayName = \\\"RadioTowerIcon\\\";\\n\\nexport { RadioTowerIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/radio.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"radio\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"radio.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RadioIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RadioIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: { duration: 0.3 },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 300,\\n      damping: 20,\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst RadioIcon = forwardRef<RadioIconHandle, RadioIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M4.9 19.1C1 15.2 1 8.8 4.9 4.9\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M19.1 4.9C23 8.8 23 15.1 19.1 19\\\"\\n            initial={{ opacity: 1 }}\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRadioIcon.displayName = \\\"RadioIcon\\\";\\n\\nexport { RadioIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/redo-dot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"redo-dot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"redo-dot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { cubicBezier, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RedoDotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RedoDotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\\n\\nconst RedoDotIcon = forwardRef<RedoDotIconHandle, RedoDotIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 7v6h-6\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\\n              animate: {\\n                translateX: [0, -2.1, 0],\\n                translateY: [0, -1.4, 0],\\n                rotate: [0, -12, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: { pathLength: [1, 0.8, 1] },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"17\\\"\\n            r=\\\"1\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { scale: 1 },\\n              animate: { scale: [1, 1.2, 1] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRedoDotIcon.displayName = \\\"RedoDotIcon\\\";\\n\\nexport { RedoDotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/redo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"redo\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"redo.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { cubicBezier, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RedoIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RedoIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\\n\\nconst RedoIcon = forwardRef<RedoIconHandle, RedoIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 7v6h-6\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\\n              animate: {\\n                translateX: [0, -2.1, 0],\\n                translateY: [0, -1.4, 0],\\n                rotate: [0, -12, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: { pathLength: [1, 0.8, 1] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRedoIcon.displayName = \\\"RedoIcon\\\";\\n\\nexport { RedoIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/refresh-ccw-dot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"refresh-ccw-dot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"refresh-ccw-dot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RefreshCCWDotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RefreshCCWDotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RefreshCCWDotIcon = forwardRef<\\n  RefreshCCWDotIconHandle,\\n  RefreshCCWDotIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.g\\n          animate={controls}\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: { rotate: \\\"0deg\\\" },\\n            animate: { rotate: \\\"-50deg\\\" },\\n          }}\\n        >\\n          <path d=\\\"M3 2v6h6\\\" />\\n          <path d=\\\"M21 12A9 9 0 0 0 6 5.3L3 8\\\" />\\n          <path d=\\\"M21 22v-6h-6\\\" />\\n          <path d=\\\"M3 12a9 9 0 0 0 15 6.7l3-2.7\\\" />\\n        </motion.g>\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nRefreshCCWDotIcon.displayName = \\\"RefreshCCWDotIcon\\\";\\n\\nexport { RefreshCCWDotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/refresh-ccw.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"refresh-ccw\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"refresh-ccw.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RefreshCCWIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RefreshCCWIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RefreshCCWIcon = forwardRef<RefreshCCWIconHandle, RefreshCCWIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseEnter?.(e);\\n        else controls.start(\\\"animate\\\");\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseLeave?.(e);\\n        else controls.start(\\\"normal\\\");\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n            variants={{\\n              normal: { rotate: \\\"0deg\\\" },\\n              animate: { rotate: \\\"-50deg\\\" },\\n            }}\\n          >\\n            <path d=\\\"M3 2v6h6\\\" />\\n            <path d=\\\"M21 12A9 9 0 0 0 6 5.3L3 8\\\" />\\n            <path d=\\\"M21 22v-6h-6\\\" />\\n            <path d=\\\"M3 12a9 9 0 0 0 15 6.7l3-2.7\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRefreshCCWIcon.displayName = \\\"RefreshCCWIcon\\\";\\n\\nexport { RefreshCCWIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/refresh-cw-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"refresh-cw-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"refresh-cw-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RefreshCWOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RefreshCWOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RefreshCWOffIcon = forwardRef<\\n  RefreshCWOffIconHandle,\\n  RefreshCWOffIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        transition={{ type: \\\"spring\\\", stiffness: 500, damping: 20 }}\\n        variants={{\\n          normal: { x: 0 },\\n          animate: {\\n            x: [-3, 3, -3, 3, 0],\\n            transition: { duration: 0.4 },\\n          },\\n        }}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47\\\" />\\n        <path d=\\\"M8 16H3v5\\\" />\\n        <path d=\\\"M3 12C3 9.51 4 7.26 5.64 5.64\\\" />\\n        <path d=\\\"m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64\\\" />\\n        <path d=\\\"M21 12c0 1-.16 1.97-.47 2.87\\\" />\\n        <path d=\\\"M21 3v5h-5\\\" />\\n        <path d=\\\"M22 22 2 2\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nRefreshCWOffIcon.displayName = \\\"RefreshCWOffIcon\\\";\\n\\nexport { RefreshCWOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/refresh-cw.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"refresh-cw\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"refresh-cw.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RefreshCCWIconWIcon {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RefreshCCWIcoWIcon extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RefreshCWIcon = forwardRef<RefreshCCWIconWIcon, RefreshCCWIcoWIcon>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseEnter?.(e);\\n        else controls.start(\\\"animate\\\");\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseLeave?.(e);\\n        else controls.start(\\\"normal\\\");\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: { rotate: \\\"0deg\\\" },\\n            animate: { rotate: \\\"50deg\\\" },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\\\" />\\n          <path d=\\\"M21 3v5h-5\\\" />\\n          <path d=\\\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\\\" />\\n          <path d=\\\"M8 16H3v5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRefreshCWIcon.displayName = \\\"RefreshCWIcon\\\";\\n\\nexport { RefreshCWIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/registry.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"lucide-animated\",\n  \"homepage\": \"https://lucide-animated.com\",\n  \"items\": [\n    {\n      \"name\": \"a-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"a-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"a-arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"a-arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"accessibility\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"accessibility.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"activity\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"activity.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"air-vent\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"air-vent.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"airplane\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"airplane.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alarm-clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"alarm-clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-center\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-center.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ambulance\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ambulance.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"angry\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"angry.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"annoyed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"annoyed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"archive\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"archive.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-down-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-down-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-left-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-left-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-right-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-right-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-up-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-up-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-0-1\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-0-1.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-1-0\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-1-0.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-a-z\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-a-z.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-z-a\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-z-a.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"at-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"at-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"attach-file\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"attach-file.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"audio-lines\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"audio-lines.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-alert\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"badge-alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-percent\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"badge-percent.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ban\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ban.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"banana\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"banana.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-full\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-full.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-low\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-low.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-medium\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-medium.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bell\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bell.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"blocks\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"blocks.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-connected\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-connected.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-searching\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-searching.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bold\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bold.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bone\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bone.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"book-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"book-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bot-message-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bot-message-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"boxes\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"boxes.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"brain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"brain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-check-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-check-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-days\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-days.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cast\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cast.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cctv\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cctv.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-bar-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-bar-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-column-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-column-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-column-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-column-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-no-axes-column-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-no-axes-column-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-no-axes-column-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-no-axes-column-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-pie\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-pie.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-scatter\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-scatter.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-spline\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-spline.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"check-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"check-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-first\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-first.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-down-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-down-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-left-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-left-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-right-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-right-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-up-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-up-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chrome\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chrome.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-dollar-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-dollar-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-help\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-help.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clipboard-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clipboard-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-lightning\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-lightning.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-rain-wind\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-rain-wind.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-rain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-rain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-snow\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-snow.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-sun\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-sun.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"coffee\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"coffee.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cup-soda\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cup-soda.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"compass\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"compass.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"connect\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"connect.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"construction\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"construction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"contrast\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"contrast.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"copy\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"copy.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cpu\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cpu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cursor-click\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cursor-click.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"delete\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"delete.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"discord\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"discord.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dollar-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"dollar-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"downvote\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"downvote.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dribbble\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"dribbble.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"droplet\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"droplet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drum\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"drum.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"earth\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"earth.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"euro\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"euro.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ev-charger\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ev-charger.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"expand\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"expand.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"eye-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"eye-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"facebook\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"facebook.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"figma\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"figma.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-chart-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-chart-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-check-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-check-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-pen-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-pen-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-stack\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-stack.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"fingerprint\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"fingerprint.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"fish-symbol\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"fish-symbol.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"flame\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"flame.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"flask\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"flask.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folders\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folders.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"frame\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"frame.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"frown\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"frown.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-horizontal-end\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-horizontal-end.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-thumbnails\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-thumbnails.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-vertical-end\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-vertical-end.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gauge\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gauge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"georgian-lari\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"georgian-lari.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-commit-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-commit-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-commit-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-commit-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-merge\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-merge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"github\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"github.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-coins\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-coins.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hard-drive-download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hard-drive-download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hard-drive-upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hard-drive-upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"history\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"history.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"home\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"home.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"id-card\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"id-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"indian-rupee\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"indian-rupee.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"instagram\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"instagram.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"italic\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"italic.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"japanese-yen\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"japanese-yen.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key-circle\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key-circle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"keyboard\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"keyboard.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"languages\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"languages.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"laptop-minimal-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"laptop-minimal-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"laugh\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"laugh.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"layers\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"layers.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"layout-panel-top\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"layout-panel-top.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"link\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"link.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"linkedin\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"linkedin.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"loader-pinwheel\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"loader-pinwheel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-keyhole-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-keyhole-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-keyhole\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-keyhole.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"logout\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"logout.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mail-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mail-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-check-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-check-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-house\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-house.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-minus-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-minus-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-plus-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-plus-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-x-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-x-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"maximize-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"maximize-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"maximize\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"maximize.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meh\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"meh.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menu\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-more\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-more.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-more\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-more.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"minimize\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"minimize.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"monitor-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"monitor-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"moon\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"moon.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"nfc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"nfc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-left-close\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-left-close.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-left-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-left-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-right-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-right-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"party-popper\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"party-popper.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pause\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pause.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pen-tool\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pen-tool.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"philippine-peso\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"philippine-peso.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"play\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"play.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"plug-zap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"plug-zap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pound-sterling\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pound-sterling.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rabbit\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rabbit.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-tower\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"radio-tower.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"radio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"redo-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"redo-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"redo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"redo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-ccw-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-ccw-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-ccw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-ccw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-cw-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-cw-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-cw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-cw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rocket\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rocket.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rocking-chair\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rocking-chair.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"roller-coaster\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"roller-coaster.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rotate-ccw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rotate-ccw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rotate-cw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rotate-cw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"route\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"route.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"russian-ruble\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"russian-ruble.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"saudi-riyal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"saudi-riyal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scan-face\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"scan-face.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scan-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"scan-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"search\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"search.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"settings\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"settings.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sliders-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sliders-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shield-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shield-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ship\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ship.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shower-head\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shower-head.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shrink\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shrink.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smartphone-charging\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smartphone-charging.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smartphone-nfc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smartphone-nfc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smile-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smile-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smile\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smile.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"snowflake\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"snowflake.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sparkles\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sparkles.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-activity\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-activity.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-pen\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-pen.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-stack\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-stack.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"stethoscope\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"stethoscope.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-dim\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-dim.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-medium\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-medium.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-moon\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-moon.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sunset\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sunset.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"swiss-franc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"swiss-franc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"syringe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"syringe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"telescope\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"telescope.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"terminal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"terminal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"thermometer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"thermometer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"timer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"timer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tornado\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"tornado.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"train-track\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"train-track.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-up-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-up-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"turkish-lira\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"turkish-lira.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"twitch\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"twitch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"twitter\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"twitter.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"underline\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"underline.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"undo-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"undo-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"undo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"undo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"upvote\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"upvote.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-round-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-round-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-round-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-round-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"users\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"users.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"vibrate\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"vibrate.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"volume\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"volume.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"washing-machine\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"washing-machine.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waves-ladder\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waves-ladder.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waves\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waves.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waypoints\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waypoints.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"webhook\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"webhook.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wifi\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wifi.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wind-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wind-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wind\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wind.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"workflow\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"workflow.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"youtube\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"youtube.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hourglass\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hourglass.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-branch\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-branch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-compare-arrows\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-compare-arrows.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-compare\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-compare.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-fork\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-fork.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-graph\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-graph.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-closed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request-closed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-create\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request-create.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gitlab\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gitlab.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"feather\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"feather.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-down-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-down-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-down-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-down-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-left-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-left-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-left-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-left-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-right-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-right-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-right-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-right-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-up-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-up-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-up-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-up-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bell-electric\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bell-electric.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"airplay\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"airplay.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"atom\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"atom.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"zap-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"zap-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"zap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"zap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-archive\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-archive.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-code\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-code.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-git-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-git-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-git\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-git.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-input\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-kanban\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-kanban.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-key\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-key.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-lock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-lock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-output\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-output.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-root\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-root.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-sync\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-sync.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-tree\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-tree.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-charging\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-charging.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-warning\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-warning.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"eye\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"eye.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"box\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"box.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cooking-pot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cooking-pot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wrench\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wrench.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-fist\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-fist.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-grab\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-grab.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-helping\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-helping.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-metal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-metal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart-handshake\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart-handshake.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mic-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mic-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mic\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mic.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mailbox\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mailbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"truck\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"truck.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"graduation-cap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"graduation-cap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wifi-low\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wifi-low.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-bishop\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-bishop.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-king\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-king.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-knight\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-knight.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-pawn\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-pawn.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-bishop\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-bishop.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"send\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"send.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart-pulse\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart-pulse.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gavel\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gavel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hammer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hammer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"axe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"axe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pickaxe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pickaxe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"disc-3\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"disc-3.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"database-backup\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"database-backup.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/rocket.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"rocket\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"rocket.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RocketIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RocketIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    x: [0, 0, -3, 2, -2, 1, -1, 0],\\n    y: [0, -3, 0, -2, -3, -1, -2, 0],\\n    transition: {\\n      duration: 6,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"reverse\\\",\\n      times: [0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1],\\n    },\\n  },\\n};\\n\\nconst FIRE_VARIANTS: Variants = {\\n  normal: {\\n    d: \\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n  },\\n  animate: {\\n    d: [\\n      \\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n      \\\"M4.5 16.5c-1.5 1.26-3 5.5-3 5.5s4.74-1 6-2.5c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n      \\\"M4.5 16.5c-1.5 1.26-2.2 4.8-2.2 4.8s3.94-0.3 5.2-1.8c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n      \\\"M4.5 16.5c-1.5 1.26-2.8 5.2-2.8 5.2s4.54-0.7 5.8-2.2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n      \\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\",\\n    ],\\n    transition: {\\n      duration: 2,\\n      ease: [0.4, 0, 0.2, 1],\\n      repeat: Number.POSITIVE_INFINITY,\\n      times: [0, 0.2, 0.5, 0.8, 1],\\n    },\\n  },\\n};\\n\\nconst RocketIcon = forwardRef<RocketIconHandle, RocketIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\\\"\\n            variants={FIRE_VARIANTS}\\n          />\\n          <path d=\\\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\\\" />\\n          <path d=\\\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\\\" />\\n          <path d=\\\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRocketIcon.displayName = \\\"RocketIcon\\\";\\n\\nexport { RocketIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/rocking-chair.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"rocking-chair\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"rocking-chair.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RockingChairIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RockingChairIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 100,\\n  damping: 12,\\n  mass: 0.4,\\n};\\n\\nconst ROCKING_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [-5, 5, -5],\\n    transition: {\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\" as const,\\n      duration: 1.2,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst RockingChairIcon = forwardRef<\\n  RockingChairIconHandle,\\n  RockingChairIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        style={{ originX: \\\"10%\\\", originY: \\\"90%\\\" }}\\n        variants={ROCKING_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.polyline\\n          animate={controls}\\n          points=\\\"3.5 2 6.5 12.5 18 12.5\\\"\\n          transition={DEFAULT_TRANSITION}\\n        />\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          x1=\\\"9.5\\\"\\n          x2=\\\"5.5\\\"\\n          y1=\\\"12.5\\\"\\n          y2=\\\"20\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          x1=\\\"15\\\"\\n          x2=\\\"18.5\\\"\\n          y1=\\\"12.5\\\"\\n          y2=\\\"20\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M2.75 18a13 13 0 0 0 18.5 0\\\"\\n          transition={DEFAULT_TRANSITION}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nRockingChairIcon.displayName = \\\"RockingChairIcon\\\";\\n\\nexport { RockingChairIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/roller-coaster.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"roller-coaster\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"roller-coaster.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RollerCoasterIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RollerCoasterIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.1 * custom,\\n      opacity: { delay: 0.1 * custom },\\n    },\\n  }),\\n};\\n\\nconst RollerCoasterIcon = forwardRef<\\n  RollerCoasterIconHandle,\\n  RollerCoasterIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path animate={controls} d=\\\"M6 19V5\\\" variants={VARIANTS} />\\n        <motion.path animate={controls} d=\\\"M10 19V6.8\\\" variants={VARIANTS} />\\n        <motion.path animate={controls} d=\\\"M14 19v-7.8\\\" variants={VARIANTS} />\\n        <motion.path animate={controls} d=\\\"M18 5v4\\\" variants={VARIANTS} />\\n        <motion.path animate={controls} d=\\\"M18 19v-6\\\" variants={VARIANTS} />\\n        <motion.path animate={controls} d=\\\"M22 19V9\\\" variants={VARIANTS} />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65\\\"\\n          variants={VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nRollerCoasterIcon.displayName = \\\"RollerCoasterIcon\\\";\\n\\nexport { RollerCoasterIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/rotate-ccw.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"rotate-ccw\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"rotate-ccw.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RotateCCWIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RotateCCWIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RotateCCWIcon = forwardRef<RotateCCWIconHandle, RotateCCWIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseEnter?.(e);\\n        else controls.start(\\\"animate\\\");\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseLeave?.(e);\\n        else controls.start(\\\"normal\\\");\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: { rotate: \\\"0deg\\\" },\\n            animate: { rotate: \\\"-50deg\\\" },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" />\\n          <path d=\\\"M3 3v5h5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRotateCCWIcon.displayName = \\\"RotateCCWIcon\\\";\\n\\nexport { RotateCCWIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/rotate-cw.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"rotate-cw\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"rotate-cw.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RotateCWIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RotateCWIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RotateCWIcon = forwardRef<RotateCWIconHandle, RotateCWIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseEnter?.(e);\\n        else controls.start(\\\"animate\\\");\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseLeave?.(e);\\n        else controls.start(\\\"normal\\\");\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: { rotate: \\\"0deg\\\" },\\n            animate: { rotate: \\\"50deg\\\" },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\\\" />\\n          <path d=\\\"M21 3v5h-5\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRotateCWIcon.displayName = \\\"RotateCWIcon\\\";\\n\\nexport { RotateCWIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/route.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"route\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"route.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RouteIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RouteIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CIRCLE_TRANSITION: Transition = {\\n  duration: 0.3,\\n  delay: 0.1,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst CIRCLE_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n  },\\n};\\n\\nconst RouteIcon = forwardRef<RouteIconHandle, RouteIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"6\\\"\\n            cy=\\\"19\\\"\\n            r=\\\"3\\\"\\n            transition={CIRCLE_TRANSITION}\\n            variants={CIRCLE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\\\"\\n            transition={{ duration: 0.7, delay: 0.5, opacity: { delay: 0.5 } }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                opacity: 1,\\n                pathOffset: 0,\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n                pathOffset: [1, 0],\\n              },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"18\\\"\\n            cy=\\\"5\\\"\\n            r=\\\"3\\\"\\n            transition={CIRCLE_TRANSITION}\\n            variants={CIRCLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nRouteIcon.displayName = \\\"RouteIcon\\\";\\n\\nexport { RouteIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/russian-ruble.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"russian-ruble\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"russian-ruble.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface RussianRubleIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface RussianRubleIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RUSSIAN_RUBLE_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst RUSSIAN_RUBLE_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst RussianRubleIcon = forwardRef<\\n  RussianRubleIconHandle,\\n  RussianRubleIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M6 11h8a4 4 0 0 0 0-8H9v18\\\"\\n          initial=\\\"normal\\\"\\n          variants={RUSSIAN_RUBLE_MAIN_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M6 15h8\\\"\\n          initial=\\\"normal\\\"\\n          variants={RUSSIAN_RUBLE_SECONDARY_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nRussianRubleIcon.displayName = \\\"RussianRubleIcon\\\";\\n\\nexport { RussianRubleIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/saudi-riyal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"saudi-riyal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"saudi-riyal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SaudiRiyalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SaudiRiyalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SAUDI_RIYAL_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst SaudiRiyalIcon = forwardRef<SaudiRiyalIconHandle, SaudiRiyalIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m20 19.5-5.5 1.2\\\"\\n            initial=\\\"normal\\\"\\n            variants={SAUDI_RIYAL_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14.5 4v11.22a1 1 0 0 0 1.242.97L20 15.2\\\"\\n            initial=\\\"normal\\\"\\n            variants={SAUDI_RIYAL_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m2.978 19.351 5.549-1.363A2 2 0 0 0 10 16V2\\\"\\n            initial=\\\"normal\\\"\\n            variants={SAUDI_RIYAL_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 10 4 13.5\\\"\\n            initial=\\\"normal\\\"\\n            variants={SAUDI_RIYAL_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSaudiRiyalIcon.displayName = \\\"SaudiRiyalIcon\\\";\\n\\nexport { SaudiRiyalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/scan-face.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scan-face\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"scan-face.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ScanFaceIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ScanFaceIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ScanFaceIcon = forwardRef<ScanFaceIconHandle, ScanFaceIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"hidden\\\");\\n          await controls.start(\\\"visible\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"visible\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"hidden\\\");\\n          await controls.start(\\\"visible\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"visible\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      visible: { scale: 1 },\\n      hidden: {\\n        scale: 0.9,\\n        transition: { type: \\\"spring\\\", stiffness: 200, damping: 20 },\\n      },\\n    };\\n\\n    const cornerVariants: Variants = {\\n      visible: { scale: 1, rotate: 0, opacity: 1 },\\n      hidden: {\\n        scale: 1.2,\\n        rotate: 45,\\n        opacity: 0,\\n        transition: { type: \\\"spring\\\", stiffness: 200, damping: 20 },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      visible: { scale: 1, opacity: 1 },\\n      hidden: {\\n        scale: 0.8,\\n        opacity: 0,\\n        transition: { duration: 0.3, delay: 0.1 },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 7V5a2 2 0 0 1 2-2h2\\\"\\n            initial=\\\"visible\\\"\\n            variants={cornerVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 3h2a2 2 0 0 1 2 2v2\\\"\\n            initial=\\\"visible\\\"\\n            variants={cornerVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 17v2a2 2 0 0 1-2 2h-2\\\"\\n            initial=\\\"visible\\\"\\n            variants={cornerVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M7 21H5a2 2 0 0 1-2-2v-2\\\"\\n            initial=\\\"visible\\\"\\n            variants={cornerVariants}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"\\n            initial=\\\"visible\\\"\\n            variants={mouthVariants}\\n          />\\n          <line x1=\\\"9\\\" x2=\\\"9.01\\\" y1=\\\"9\\\" y2=\\\"9\\\" />\\n          <line x1=\\\"15\\\" x2=\\\"15.01\\\" y1=\\\"9\\\" y2=\\\"9\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nScanFaceIcon.displayName = \\\"ScanFaceIcon\\\";\\n\\nexport { ScanFaceIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/scan-text.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"scan-text\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"scan-text.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ScanTextIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ScanTextIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FRAME_VARIANTS: Variants = {\\n  visible: { opacity: 1 },\\n  hidden: { opacity: 1 },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  visible: { pathLength: 1, opacity: 1 },\\n  hidden: { pathLength: 0, opacity: 0 },\\n};\\n\\nconst ScanTextIcon = forwardRef<ScanTextIconHandle, ScanTextIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start((i) => ({\\n            pathLength: 0,\\n            opacity: 0,\\n            transition: { delay: i * 0.1, duration: 0.3 },\\n          }));\\n          await controls.start((i) => ({\\n            pathLength: 1,\\n            opacity: 1,\\n            transition: { delay: i * 0.1, duration: 0.3 },\\n          }));\\n        },\\n        stopAnimation: () => controls.start(\\\"visible\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start((i) => ({\\n            pathLength: 0,\\n            opacity: 0,\\n            transition: { delay: i * 0.1, duration: 0.3 },\\n          }));\\n          await controls.start((i) => ({\\n            pathLength: 1,\\n            opacity: 1,\\n            transition: { delay: i * 0.1, duration: 0.3 },\\n          }));\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"visible\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path d=\\\"M3 7V5a2 2 0 0 1 2-2h2\\\" variants={FRAME_VARIANTS} />\\n          <motion.path d=\\\"M17 3h2a2 2 0 0 1 2 2v2\\\" variants={FRAME_VARIANTS} />\\n          <motion.path\\n            d=\\\"M21 17v2a2 2 0 0 1-2 2h-2\\\"\\n            variants={FRAME_VARIANTS}\\n          />\\n          <motion.path d=\\\"M7 21H5a2 2 0 0 1-2-2v-2\\\" variants={FRAME_VARIANTS} />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M7 8h8\\\"\\n            initial=\\\"visible\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M7 12h10\\\"\\n            initial=\\\"visible\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M7 16h6\\\"\\n            initial=\\\"visible\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nScanTextIcon.displayName = \\\"ScanTextIcon\\\";\\n\\nexport { ScanTextIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/search.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"search\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"search.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SearchIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SearchIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SearchIcon = forwardRef<SearchIconHandle, SearchIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{\\n            duration: 1,\\n            bounce: 0.3,\\n          }}\\n          variants={{\\n            normal: { x: 0, y: 0 },\\n            animate: {\\n              x: [0, 0, -3, 0],\\n              y: [0, -4, 0, 0],\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" />\\n          <path d=\\\"m21 21-4.3-4.3\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSearchIcon.displayName = \\\"SearchIcon\\\";\\n\\nexport { SearchIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/send.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"send\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"send.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SendIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SendIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SendIcon = forwardRef<SendIconHandle, SendIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          className=\\\"overflow-visible\\\"\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            transition={{ duration: 0.5 }}\\n            variants={{\\n              normal: { x: 0, y: 0, scale: 1 },\\n              animate: {\\n                x: 3,\\n                y: -3,\\n                scale: 0.8,\\n              },\\n            }}\\n          >\\n            <path d=\\\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\\\" />\\n            <path d=\\\"m21.854 2.147-10.94 10.939\\\" />\\n          </motion.g>\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M -3 28 C -0.5 26.8 1.6 24.6 3.3 22 C 4.8 19.7 5.2 17.6 4.2 16.1 C 3.2 14.7 1.4 14.5 0.3 15.8 C -0.9 17.2 -0.6 19.4 1.2 20.4 C 3.4 21.5 6.4 19.4 9 15.8\\\"\\n            fill=\\\"none\\\"\\n            initial={{ opacity: 0, pathLength: 0 }}\\n            stroke=\\\"currentColor\\\"\\n            strokeDasharray=\\\"2 2\\\"\\n            strokeWidth=\\\"1\\\"\\n            transition={{ duration: 0.55, delay: 0.1 }}\\n            variants={{\\n              normal: {\\n                pathLength: 0,\\n                opacity: 0,\\n                translateX: -3,\\n                translateY: 3,\\n                transition: { duration: 0.3 },\\n              },\\n              animate: {\\n                pathLength: 1,\\n                opacity: 1,\\n                translateX: 0,\\n                translateY: 0,\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSendIcon.displayName = \\\"SendIcon\\\";\\n\\nexport { SendIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/settings-gear.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"settings-gear\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"settings-gear.tsx\",\n      \"content\": \"'use client';\\n\\nimport type { HTMLAttributes } from 'react';\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\\nimport { motion, useAnimation } from 'motion/react';\\n\\nimport { cn } from '@/lib/utils';\\n\\nexport interface SettingsGearIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SettingsGearIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SettingsGearIcon = forwardRef<\\n  SettingsGearIconHandle,\\n  SettingsGearIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start('animate'),\\n      stopAnimation: () => controls.start('normal'),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) {\\n        controls.start('animate');\\n      } else {\\n        onMouseEnter?.(e);\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (!isControlledRef.current) {\\n        controls.start('normal');\\n      } else {\\n        onMouseLeave?.(e);\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        width={size}\\n        height={size}\\n        viewBox=\\\"0 0 24 24\\\"\\n        fill=\\\"none\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeWidth=\\\"2\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        transition={{ type: 'spring', stiffness: 50, damping: 10 }}\\n        variants={{\\n          normal: {\\n            rotate: 0,\\n          },\\n          animate: {\\n            rotate: 180,\\n          },\\n        }}\\n        animate={controls}\\n      >\\n        <path d=\\\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\\\" />\\n        <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nSettingsGearIcon.displayName = 'SettingsGearIcon';\\n\\nexport { SettingsGearIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/settings.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"settings\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"settings.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SettingsIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SettingsIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SettingsIcon = forwardRef<SettingsIconHandle, SettingsIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 50, damping: 10 }}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n            },\\n            animate: {\\n              rotate: 180,\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSettingsIcon.displayName = \\\"SettingsIcon\\\";\\n\\nexport { SettingsIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/shield-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"shield-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"shield-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ShieldCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ShieldCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    scale: 1,\\n    transition: {\\n      duration: 0.3,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    scale: [0.5, 1],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ShieldCheckIcon = forwardRef<ShieldCheckIconHandle, ShieldCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m9 12 2 2 4-4\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nShieldCheckIcon.displayName = \\\"ShieldCheckIcon\\\";\\n\\nexport { ShieldCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/ship.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"ship\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"ship.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ShipIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ShipIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15,\\n      opacity: { delay: 0.1 },\\n    },\\n  },\\n};\\n\\nconst G_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: [-3, 3, -3],\\n    transition: {\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"mirror\\\" as const,\\n      duration: 1.2,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst ShipIcon = forwardRef<ShipIconHandle, ShipIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1 .6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.g animate={controls} variants={G_VARIANTS}>\\n            <path d=\\\"M19.38 20A11.6 11.6 0 0 0 21 14l-9-4-9 4c0 2.9.94 5.34 2.81 7.76\\\" />\\n            <path d=\\\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\\\" />\\n            <path d=\\\"M12 10v4\\\" />\\n            <path d=\\\"M12 2v3\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nShipIcon.displayName = \\\"ShipIcon\\\";\\n\\nexport { ShipIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/shower-head.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"shower-head\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"shower-head.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ShowerHeadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ShowerHeadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DROP_VARIANTS: Variants = {\\n  animate: {\\n    transition: {\\n      staggerChildren: 0.2,\\n    },\\n  },\\n};\\n\\nconst DROP_CHILD_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [1, 0.2, 1],\\n    transition: {\\n      duration: 1,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst DROP_PATH = [\\n  { id: \\\"drop1\\\", d: \\\"M14 17v.01\\\" },\\n  { id: \\\"drop2\\\", d: \\\"M10 16v.01\\\" },\\n  { id: \\\"drop3\\\", d: \\\"M13 13v.01\\\" },\\n  { id: \\\"drop4\\\", d: \\\"M16 10v.01\\\" },\\n  { id: \\\"drop5\\\", d: \\\"M11 20v.01\\\" },\\n  { id: \\\"drop6\\\", d: \\\"M17 14v.01\\\" },\\n  { id: \\\"drop7\\\", d: \\\"M20 11v.01\\\" },\\n];\\n\\nconst ShowerHeadIcon = forwardRef<ShowerHeadIconHandle, ShowerHeadIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m4 4 2.5 2.5\\\" />\\n          <path d=\\\"M13.5 6.5a4.95 4.95 0 0 0-7 7\\\" />\\n          <path d=\\\"M15 5 5 15\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={DROP_VARIANTS}\\n          >\\n            {DROP_PATH.map((path) => (\\n              <motion.path\\n                d={path.d}\\n                key={path.id}\\n                variants={DROP_CHILD_VARIANTS}\\n              />\\n            ))}\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nShowerHeadIcon.displayName = \\\"ShowerHeadIcon\\\";\\n\\nexport { ShowerHeadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/shrink.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"shrink\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"shrink.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ShrinkIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ShrinkIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 250,\\n  damping: 25,\\n};\\n\\nconst ShrinkIcon = forwardRef<ShrinkIconHandle, ShrinkIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 4.2V9m0 0H4.2M9 9 3 3\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"1px\\\", translateY: \\\"1px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 4.2V9m0 0h4.8M15 9l6-6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-1px\\\", translateY: \\\"1px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M9 19.8V15m0 0H4.2M9 15l-6 6\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"1px\\\", translateY: \\\"-1px\\\" },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m15 15 6 6m-6-6v4.8m0-4.8h4.8\\\"\\n            transition={DEFAULT_TRANSITION}\\n            variants={{\\n              normal: { translateX: \\\"0%\\\", translateY: \\\"0%\\\" },\\n              animate: { translateX: \\\"-1px\\\", translateY: \\\"-1px\\\" },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nShrinkIcon.displayName = \\\"ShrinkIcon\\\";\\n\\nexport { ShrinkIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sliders-horizontal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sliders-horizontal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sliders-horizontal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SlidersHorizontalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SlidersHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  type: \\\"spring\\\",\\n  stiffness: 100,\\n  damping: 12,\\n  mass: 0.4,\\n};\\n\\nconst SlidersHorizontalIcon = forwardRef<\\n  SlidersHorizontalIconHandle,\\n  SlidersHorizontalIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.line\\n          animate={controls}\\n          initial={false}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x2: 14,\\n            },\\n            animate: {\\n              x2: 10,\\n            },\\n          }}\\n          x1=\\\"21\\\"\\n          x2=\\\"14\\\"\\n          y1=\\\"4\\\"\\n          y2=\\\"4\\\"\\n        />\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 10,\\n            },\\n            animate: {\\n              x1: 5,\\n            },\\n          }}\\n          x1=\\\"10\\\"\\n          x2=\\\"3\\\"\\n          y1=\\\"4\\\"\\n          y2=\\\"4\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x2: 12,\\n            },\\n            animate: {\\n              x2: 18,\\n            },\\n          }}\\n          x1=\\\"21\\\"\\n          x2=\\\"12\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 8,\\n            },\\n            animate: {\\n              x1: 13,\\n            },\\n          }}\\n          x1=\\\"8\\\"\\n          x2=\\\"3\\\"\\n          y1=\\\"12\\\"\\n          y2=\\\"12\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x2: 12,\\n            },\\n            animate: {\\n              x2: 4,\\n            },\\n          }}\\n          x1=\\\"3\\\"\\n          x2=\\\"12\\\"\\n          y1=\\\"20\\\"\\n          y2=\\\"20\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 16,\\n            },\\n            animate: {\\n              x1: 8,\\n            },\\n          }}\\n          x1=\\\"16\\\"\\n          x2=\\\"21\\\"\\n          y1=\\\"20\\\"\\n          y2=\\\"20\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 14,\\n              x2: 14,\\n            },\\n            animate: {\\n              x1: 9,\\n              x2: 9,\\n            },\\n          }}\\n          x1=\\\"14\\\"\\n          x2=\\\"14\\\"\\n          y1=\\\"2\\\"\\n          y2=\\\"6\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 8,\\n              x2: 8,\\n            },\\n            animate: {\\n              x1: 14,\\n              x2: 14,\\n            },\\n          }}\\n          x1=\\\"8\\\"\\n          x2=\\\"8\\\"\\n          y1=\\\"10\\\"\\n          y2=\\\"14\\\"\\n        />\\n\\n        <motion.line\\n          animate={controls}\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: {\\n              x1: 16,\\n              x2: 16,\\n            },\\n            animate: {\\n              x1: 8,\\n              x2: 8,\\n            },\\n          }}\\n          x1=\\\"16\\\"\\n          x2=\\\"16\\\"\\n          y1=\\\"18\\\"\\n          y2=\\\"22\\\"\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSlidersHorizontalIcon.displayName = \\\"SlidersHorizontalIcon\\\";\\n\\nexport { SlidersHorizontalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/smartphone-charging.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"smartphone-charging\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"smartphone-charging.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SmartphoneChargingIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SmartphoneChargingIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SmartphoneChargingIcon = forwardRef<\\n  SmartphoneChargingIconHandle,\\n  SmartphoneChargingIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\" width=\\\"14\\\" x=\\\"5\\\" y=\\\"2\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12.667 8 10 12h4l-2.667 4\\\"\\n          initial=\\\"normal\\\"\\n          variants={{\\n            normal: { opacity: 1 },\\n            animate: {\\n              opacity: [1, 0.4, 1],\\n              transition: {\\n                duration: 1,\\n                repeat: Number.POSITIVE_INFINITY,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSmartphoneChargingIcon.displayName = \\\"SmartphoneChargingIcon\\\";\\n\\nexport { SmartphoneChargingIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/smartphone-nfc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"smartphone-nfc\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"smartphone-nfc.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SmartphoneNfcIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SmartphoneNfcIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n  fadeOut: {\\n    opacity: 0,\\n    transition: { duration: 0.3 },\\n  },\\n  fadeIn: (i: number) => ({\\n    opacity: 1,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 300,\\n      damping: 20,\\n      delay: i * 0.1,\\n    },\\n  }),\\n};\\n\\nconst SmartphoneNfcIcon = forwardRef<\\n  SmartphoneNfcIconHandle,\\n  SmartphoneNfcIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: async () => {\\n        await controls.start(\\\"fadeOut\\\");\\n        controls.start(\\\"fadeIn\\\");\\n      },\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    async (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        await controls.start(\\\"fadeOut\\\");\\n        controls.start(\\\"fadeIn\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"12\\\" rx=\\\"1\\\" width=\\\"7\\\" x=\\\"2\\\" y=\\\"6\\\" />\\n        <motion.path\\n          animate={controls}\\n          custom={0}\\n          d=\\\"M13 8.32a7.43 7.43 0 0 1 0 7.36\\\"\\n          initial={{ opacity: 1 }}\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={1}\\n          d=\\\"M16.46 6.21a11.76 11.76 0 0 1 0 11.58\\\"\\n          initial={{ opacity: 1 }}\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={2}\\n          d=\\\"M19.91 4.1a15.91 15.91 0 0 1 .01 15.8\\\"\\n          initial={{ opacity: 1 }}\\n          variants={PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSmartphoneNfcIcon.displayName = \\\"SmartphoneNfcIcon\\\";\\n\\nexport { SmartphoneNfcIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/smile-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"smile-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"smile-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SmilePlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SmilePlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SmilePlusIcon = forwardRef<SmilePlusIconHandle, SmilePlusIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseEnter?.(e);\\n        else controls.start(\\\"animate\\\");\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) onMouseLeave?.(e);\\n        else controls.start(\\\"normal\\\");\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: { scale: 1 },\\n      animate: {\\n        scale: 1.1,\\n        transition: { type: \\\"spring\\\", stiffness: 200, damping: 20 },\\n      },\\n    };\\n\\n    const plusVariants: Variants = {\\n      normal: { rotate: 0, scale: 1 },\\n      animate: {\\n        rotate: 90,\\n        scale: 1.2,\\n        transition: { type: \\\"spring\\\", stiffness: 200, damping: 20, delay: 0.1 },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M22 11v1a10 10 0 1 1-9-10\\\" />\\n          <path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\" />\\n          <line x1=\\\"9\\\" x2=\\\"9.01\\\" y1=\\\"9\\\" y2=\\\"9\\\" />\\n          <line x1=\\\"15\\\" x2=\\\"15.01\\\" y1=\\\"9\\\" y2=\\\"9\\\" />\\n          <motion.path animate={controls} d=\\\"M16 5h6\\\" variants={plusVariants} />\\n          <motion.path animate={controls} d=\\\"M19 2v6\\\" variants={plusVariants} />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSmilePlusIcon.displayName = \\\"SmilePlusIcon\\\";\\n\\nexport { SmilePlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/smile.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"smile\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"smile.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SmileIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SmileIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SmileIcon = forwardRef<SmileIconHandle, SmileIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const faceVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        rotate: 0,\\n        strokeWidth: 2,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.15, 1.05, 1.1],\\n        rotate: [0, -3, 3, 0],\\n        strokeWidth: [2, 2.5, 2.5, 2.5],\\n        transition: {\\n          duration: 0.8,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    const mouthVariants: Variants = {\\n      normal: {\\n        d: \\\"M8 14s1.5 2 4 2 4-2 4-2\\\",\\n        pathLength: 1,\\n        pathOffset: 0,\\n        strokeWidth: 2,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        d: \\\"M7 13.5s2.5 3.5 5 3.5 5-3.5 5-3.5\\\",\\n        pathLength: [0.3, 1, 1],\\n        pathOffset: [0, 0, 0],\\n        strokeWidth: 2.5,\\n        transition: {\\n          d: { duration: 0.4, ease: \\\"easeOut\\\" },\\n          pathLength: {\\n            duration: 0.5,\\n            times: [0, 0.5, 1],\\n            ease: \\\"easeInOut\\\",\\n          },\\n          delay: 0.1,\\n        },\\n      },\\n    };\\n\\n    const eyeVariants: Variants = {\\n      normal: {\\n        scale: 1,\\n        opacity: 1,\\n        transition: { duration: 0.3, ease: \\\"easeOut\\\" },\\n      },\\n      animate: {\\n        scale: [1, 1.5, 0.8, 1.2],\\n        opacity: [1, 1, 1, 1],\\n        transition: {\\n          duration: 0.5,\\n          times: [0, 0.3, 0.6, 1],\\n          ease: \\\"easeInOut\\\",\\n        },\\n      },\\n    };\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={faceVariants}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"\\n            initial=\\\"normal\\\"\\n            variants={mouthVariants}\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={eyeVariants}\\n            x1=\\\"9\\\"\\n            x2=\\\"9.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={eyeVariants}\\n            x1=\\\"15\\\"\\n            x2=\\\"15.01\\\"\\n            y1=\\\"9\\\"\\n            y2=\\\"9\\\"\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSmileIcon.displayName = \\\"SmileIcon\\\";\\n\\nexport { SmileIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/snowflake.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"snowflake\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"snowflake.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, -5, 5, -5, 5, 0],\\n    transition: {\\n      duration: 0.4,\\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\\n    },\\n  },\\n};\\n\\nexport interface SnowflakeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SnowflakeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SnowflakeIcon = forwardRef<SnowflakeIconHandle, SnowflakeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={PATH_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m10 20-1.25-2.5L6 18\\\" />\\n          <path d=\\\"M10 4 8.75 6.5 6 6\\\" />\\n          <path d=\\\"m14 20 1.25-2.5L18 18\\\" />\\n          <path d=\\\"m14 4 1.25 2.5L18 6\\\" />\\n          <path d=\\\"m17 21-3-6h-4\\\" />\\n          <path d=\\\"m17 3-3 6 1.5 3\\\" />\\n          <path d=\\\"M2 12h6.5L10 9\\\" />\\n          <path d=\\\"m20 10-1.5 2 1.5 2\\\" />\\n          <path d=\\\"M22 12h-6.5L14 15\\\" />\\n          <path d=\\\"m4 10 1.5 2L4 14\\\" />\\n          <path d=\\\"m7 21 3-6-1.5-3\\\" />\\n          <path d=\\\"m7 3 3 6h4\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSnowflakeIcon.displayName = \\\"SnowflakeIcon\\\";\\n\\nexport { SnowflakeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sparkles.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sparkles\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sparkles.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SparklesIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SparklesIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SPARKLE_VARIANTS: Variants = {\\n  initial: {\\n    y: 0,\\n    fill: \\\"none\\\",\\n  },\\n  hover: {\\n    y: [0, -1, 0, 0],\\n    fill: \\\"currentColor\\\",\\n    transition: {\\n      duration: 1,\\n      bounce: 0.3,\\n    },\\n  },\\n};\\n\\nconst STAR_VARIANTS: Variants = {\\n  initial: {\\n    opacity: 1,\\n    x: 0,\\n    y: 0,\\n  },\\n  blink: () => ({\\n    opacity: [0, 1, 0, 0, 0, 0, 1],\\n    transition: {\\n      duration: 2,\\n      type: \\\"spring\\\",\\n      stiffness: 70,\\n      damping: 10,\\n      mass: 0.4,\\n    },\\n  }),\\n};\\n\\nconst SparklesIcon = forwardRef<SparklesIconHandle, SparklesIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const starControls = useAnimation();\\n    const sparkleControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          sparkleControls.start(\\\"hover\\\");\\n          starControls.start(\\\"blink\\\", { delay: 1 });\\n        },\\n        stopAnimation: () => {\\n          sparkleControls.start(\\\"initial\\\");\\n          starControls.start(\\\"initial\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          sparkleControls.start(\\\"hover\\\");\\n          starControls.start(\\\"blink\\\", { delay: 1 });\\n        }\\n      },\\n      [onMouseEnter, sparkleControls, starControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          sparkleControls.start(\\\"initial\\\");\\n          starControls.start(\\\"initial\\\");\\n        }\\n      },\\n      [sparkleControls, starControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={sparkleControls}\\n            d=\\\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\\\"\\n            variants={SPARKLE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={starControls}\\n            d=\\\"M20 3v4\\\"\\n            variants={STAR_VARIANTS}\\n          />\\n          <motion.path\\n            animate={starControls}\\n            d=\\\"M22 5h-4\\\"\\n            variants={STAR_VARIANTS}\\n          />\\n          <motion.path\\n            animate={starControls}\\n            d=\\\"M4 17v2\\\"\\n            variants={STAR_VARIANTS}\\n          />\\n          <motion.path\\n            animate={starControls}\\n            d=\\\"M5 18H3\\\"\\n            variants={STAR_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSparklesIcon.displayName = \\\"SparklesIcon\\\";\\n\\nexport { SparklesIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-activity.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-activity\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-activity.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ActivityIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst SQUARE_VARIANTS: Variants = {\\n  normal: {\\n    transition: {\\n      duration: 0.4,\\n    },\\n  },\\n  animate: {\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst SquareActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"18\\\"\\n            initial=\\\"normal\\\"\\n            rx=\\\"2\\\"\\n            variants={SQUARE_VARIANTS}\\n            width=\\\"18\\\"\\n            x=\\\"3\\\"\\n            y=\\\"3\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M17 12h-2l-2 5-2-10-2 5H7\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSquareActivityIcon.displayName = \\\"SquareActivityIcon\\\";\\n\\nexport { SquareActivityIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-arrow-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-arrow-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-arrow-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareArrowDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SQUARE_VARIANTS: Variants = {\\n  normal: { transition: { duration: 0.4 } },\\n  animate: { transition: { duration: 0.6, ease: \\\"easeInOut\\\" } },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m8 12 4 4 4-4\\\", translateY: 0, opacity: 1 },\\n  animate: {\\n    d: \\\"m8 12 4 4 4-4\\\",\\n    translateY: [0, -3, 0],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M12 8v8\\\", opacity: 1 },\\n  animate: {\\n    d: [\\\"M12 8v8\\\", \\\"M12 8v5\\\", \\\"M12 8v8\\\"],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SquareArrowDownIcon = forwardRef<\\n  SquareArrowDownIconHandle,\\n  SquareArrowDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"18\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"2\\\"\\n          variants={SQUARE_VARIANTS}\\n          width=\\\"18\\\"\\n          x=\\\"3\\\"\\n          y=\\\"3\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m8 12 4 4 4-4\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 8v8\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareArrowDownIcon.displayName = \\\"SquareArrowDownIcon\\\";\\n\\nexport { SquareArrowDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-arrow-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-arrow-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-arrow-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareArrowLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SQUARE_VARIANTS: Variants = {\\n  normal: { transition: { duration: 0.4 } },\\n  animate: { transition: { duration: 0.6, ease: \\\"easeInOut\\\" } },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m12 8-4 4 4 4\\\", translateX: 0, opacity: 1 },\\n  animate: {\\n    d: \\\"m12 8-4 4 4 4\\\",\\n    translateX: [0, 3, 0],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M16 12H8\\\", opacity: 1 },\\n  animate: {\\n    d: [\\\"M16 12H8\\\", \\\"M16 12H13\\\", \\\"M16 12H8\\\"],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SquareArrowLeftIcon = forwardRef<\\n  SquareArrowLeftIconHandle,\\n  SquareArrowLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"18\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"2\\\"\\n          variants={SQUARE_VARIANTS}\\n          width=\\\"18\\\"\\n          x=\\\"3\\\"\\n          y=\\\"3\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m12 8-4 4 4 4\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M16 12H8\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareArrowLeftIcon.displayName = \\\"SquareArrowLeftIcon\\\";\\n\\nexport { SquareArrowLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-arrow-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-arrow-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-arrow-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareArrowRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SQUARE_VARIANTS: Variants = {\\n  normal: { transition: { duration: 0.4 } },\\n  animate: { transition: { duration: 0.6, ease: \\\"easeInOut\\\" } },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M8 12h8\\\", opacity: 1 },\\n  animate: {\\n    d: [\\\"M8 12h8\\\", \\\"M8 12h5\\\", \\\"M8 12h8\\\"],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m12 8 4 4-4 4\\\", translateX: 0, opacity: 1 },\\n  animate: {\\n    d: \\\"m12 8 4 4-4 4\\\",\\n    translateX: [0, -3, 0],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SquareArrowRightIcon = forwardRef<\\n  SquareArrowRightIconHandle,\\n  SquareArrowRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"18\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"2\\\"\\n          variants={SQUARE_VARIANTS}\\n          width=\\\"18\\\"\\n          x=\\\"3\\\"\\n          y=\\\"3\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M8 12h8\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m12 8 4 4-4 4\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareArrowRightIcon.displayName = \\\"SquareArrowRightIcon\\\";\\n\\nexport { SquareArrowRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-arrow-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-arrow-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-arrow-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareArrowUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SQUARE_VARIANTS: Variants = {\\n  normal: { transition: { duration: 0.4 } },\\n  animate: { transition: { duration: 0.6, ease: \\\"easeInOut\\\" } },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"m16 12-4-4-4 4\\\", translateY: 0, opacity: 1 },\\n  animate: {\\n    d: \\\"m16 12-4-4-4 4\\\",\\n    translateY: [0, 3, 0],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SECOND_PATH_VARIANTS: Variants = {\\n  normal: { d: \\\"M12 16V8\\\", opacity: 1 },\\n  animate: {\\n    d: [\\\"M12 16V8\\\", \\\"M12 16V13\\\", \\\"M12 16V8\\\"],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst SquareArrowUpIcon = forwardRef<\\n  SquareArrowUpIconHandle,\\n  SquareArrowUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseEnter?.(e);\\n      else controls.start(\\\"animate\\\");\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) onMouseLeave?.(e);\\n      else controls.start(\\\"normal\\\");\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.rect\\n          animate={controls}\\n          height=\\\"18\\\"\\n          initial=\\\"normal\\\"\\n          rx=\\\"2\\\"\\n          variants={SQUARE_VARIANTS}\\n          width=\\\"18\\\"\\n          x=\\\"3\\\"\\n          y=\\\"3\\\"\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 12-4-4-4 4\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M12 16V8\\\"\\n          initial=\\\"normal\\\"\\n          variants={SECOND_PATH_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareArrowUpIcon.displayName = \\\"SquareArrowUpIcon\\\";\\n\\nexport { SquareArrowUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-chevron-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-chevron-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-chevron-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareChevronDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst SquareChevronDownIcon = forwardRef<\\n  SquareChevronDownIconHandle,\\n  SquareChevronDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 10-4 4-4-4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { y: 0 },\\n            animate: { y: [0, 2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareChevronDownIcon.displayName = \\\"SquareChevronDownIcon\\\";\\n\\nexport { SquareChevronDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-chevron-left.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-chevron-left\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-chevron-left.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareChevronLeftIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst SquareChevronLeftIcon = forwardRef<\\n  SquareChevronLeftIconHandle,\\n  SquareChevronLeftIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m14 16-4-4 4-4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { x: 0 },\\n            animate: { x: [0, -2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareChevronLeftIcon.displayName = \\\"SquareChevronLeftIcon\\\";\\n\\nexport { SquareChevronLeftIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-chevron-right.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-chevron-right\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-chevron-right.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareChevronRightIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst SquareChevronRightIcon = forwardRef<\\n  SquareChevronRightIconHandle,\\n  SquareChevronRightIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m10 8 4 4-4 4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { x: 0 },\\n            animate: { x: [0, 2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareChevronRightIcon.displayName = \\\"SquareChevronRightIcon\\\";\\n\\nexport { SquareChevronRightIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-chevron-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-chevron-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-chevron-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareChevronUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DEFAULT_TRANSITION: Transition = {\\n  times: [0, 0.4, 1],\\n  duration: 0.5,\\n};\\n\\nconst SquareChevronUpIcon = forwardRef<\\n  SquareChevronUpIconHandle,\\n  SquareChevronUpIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <rect height=\\\"18\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m8 14 4-4 4 4\\\"\\n          transition={DEFAULT_TRANSITION}\\n          variants={{\\n            normal: { y: 0 },\\n            animate: { y: [0, -2, 0] },\\n          }}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nSquareChevronUpIcon.displayName = \\\"SquareChevronUpIcon\\\";\\n\\nexport { SquareChevronUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-pen.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-pen\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-pen.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquarePenIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquarePenIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PEN_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    x: 0,\\n    y: 0,\\n  },\\n  animate: {\\n    rotate: [-0.5, 0.5, -0.5],\\n    x: [0, -1, 1.5, 0],\\n    y: [0, 1.5, -1, 0],\\n  },\\n};\\n\\nconst SquarePenIcon = forwardRef<SquarePenIconHandle, SquarePenIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ overflow: \\\"visible\\\" }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\\\"\\n            variants={PEN_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSquarePenIcon.displayName = \\\"SquarePenIcon\\\";\\n\\nexport { SquarePenIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/square-stack.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"square-stack\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"square-stack.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SquareStackIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SquareStackIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RECT_VARIANTS: Variants = {\\n  normal: { scale: 1 },\\n  animate: {\\n    scale: [1, 0.8, 1],\\n    transition: { duration: 0.4 },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { scale: 1 },\\n  animate: {\\n    scale: [1, 0.9, 1],\\n  },\\n};\\n\\nconst SquareStackIcon = forwardRef<SquareStackIconHandle, SquareStackIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\\\"\\n            transition={{\\n              delay: 0.3,\\n              duration: 0.4,\\n            }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\\\"\\n            transition={{\\n              delay: 0.2,\\n              duration: 0.2,\\n            }}\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"8\\\"\\n            rx=\\\"2\\\"\\n            variants={RECT_VARIANTS}\\n            width=\\\"8\\\"\\n            x=\\\"14\\\"\\n            y=\\\"14\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSquareStackIcon.displayName = \\\"SquareStackIcon\\\";\\n\\nexport { SquareStackIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/stethoscope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"stethoscope\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"stethoscope.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface StethoscopeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface StethoscopeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst DURATION = 0.25;\\n\\nconst CALCULATE_DELAY = (i: number) => {\\n  return i === 0 ? 0.1 : i * DURATION + 0.1;\\n};\\n\\nconst StethoscopeIcon = forwardRef<StethoscopeIconHandle, StethoscopeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M11 2v2\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathOffset: [1, 0],\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 2v2\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathOffset: [1, 0],\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(2),\\n              opacity: { delay: CALCULATE_DELAY(2) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathLength: [0, 1],\\n                pathOffset: [1, 0],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M8 15a6 6 0 0 0 12 0v-3\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(1),\\n              opacity: { delay: CALCULATE_DELAY(1) },\\n            }}\\n            variants={{\\n              normal: {\\n                pathLength: 1,\\n                pathOffset: 0,\\n                opacity: 1,\\n                transition: { delay: 0 },\\n              },\\n              animate: {\\n                pathOffset: [1, 0],\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"20\\\"\\n            cy=\\\"10\\\"\\n            r=\\\"2\\\"\\n            transition={{\\n              duration: DURATION,\\n              delay: CALCULATE_DELAY(0),\\n              opacity: { delay: CALCULATE_DELAY(0) },\\n            }}\\n            variants={{\\n              normal: { pathLength: 1, opacity: 1, transition: { delay: 0 } },\\n              animate: {\\n                pathLength: [0, 1],\\n                opacity: [0, 1],\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nStethoscopeIcon.displayName = \\\"StethoscopeIcon\\\";\\n\\nexport { StethoscopeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sun-dim.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sun-dim\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sun-dim.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SunDimIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SunDimIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst SunDimIcon = forwardRef<SunDimIconHandle, SunDimIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" />\\n          {[\\n            \\\"M12 4h.01\\\",\\n            \\\"M20 12h.01\\\",\\n            \\\"M12 20h.01\\\",\\n            \\\"M4 12h.01\\\",\\n            \\\"M17.657 6.343h.01\\\",\\n            \\\"M17.657 17.657h.01\\\",\\n            \\\"M6.343 17.657h.01\\\",\\n            \\\"M6.343 6.343h.01\\\",\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={controls}\\n              custom={index + 1}\\n              d={d}\\n              key={d}\\n              variants={PATH_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSunDimIcon.displayName = \\\"SunDimIcon\\\";\\n\\nexport { SunDimIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sun-medium.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sun-medium\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sun-medium.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SunMediumIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SunMediumIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst SunMediumIcon = forwardRef<SunMediumIconHandle, SunMediumIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" />\\n          {[\\n            \\\"M12 3v1\\\",\\n            \\\"M12 20v1\\\",\\n            \\\"M3 12h1\\\",\\n            \\\"M20 12h1\\\",\\n            \\\"m18.364 5.636-.707.707\\\",\\n            \\\"m6.343 17.657-.707.707\\\",\\n            \\\"m5.636 5.636.707.707\\\",\\n            \\\"m17.657 17.657.707.707\\\",\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={controls}\\n              custom={index + 1}\\n              d={d}\\n              key={d}\\n              variants={PATH_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSunMediumIcon.displayName = \\\"SunMediumIcon\\\";\\n\\nexport { SunMediumIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sun-moon.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sun-moon\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sun-moon.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SunMoonIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SunMoonIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SUN_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, -5, 5, -2, 2, 0],\\n    transition: {\\n      duration: 1.5,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst MOON_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst SunMoonIcon = forwardRef<SunMoonIconHandle, SunMoonIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const sunControls = useAnimation();\\n    const moonControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          sunControls.start(\\\"animate\\\");\\n          moonControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          sunControls.start(\\\"normal\\\");\\n          moonControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          sunControls.start(\\\"animate\\\");\\n          moonControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [sunControls, moonControls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          sunControls.start(\\\"normal\\\");\\n          moonControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [sunControls, moonControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={sunControls}\\n            initial=\\\"normal\\\"\\n            variants={SUN_VARIANTS}\\n          >\\n            <path d=\\\"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4\\\" />\\n          </motion.g>\\n          {[\\n            \\\"M12 2v2\\\",\\n            \\\"M12 20v2\\\",\\n            \\\"m4.9 4.9 1.4 1.4\\\",\\n            \\\"m17.7 17.7 1.4 1.4\\\",\\n            \\\"M2 12h2\\\",\\n            \\\"M20 12h2\\\",\\n            \\\"m6.3 17.7-1.4 1.4\\\",\\n            \\\"m19.1 4.9-1.4 1.4\\\",\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={moonControls}\\n              custom={index + 1}\\n              d={d}\\n              initial=\\\"normal\\\"\\n              key={d}\\n              variants={MOON_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSunMoonIcon.displayName = \\\"SunMoonIcon\\\";\\n\\nexport { SunMoonIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sun.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sun\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sun.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SunIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SunIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst SunIcon = forwardRef<SunIconHandle, SunIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" />\\n          {[\\n            \\\"M12 2v2\\\",\\n            \\\"m19.07 4.93-1.41 1.41\\\",\\n            \\\"M20 12h2\\\",\\n            \\\"m17.66 17.66 1.41 1.41\\\",\\n            \\\"M12 20v2\\\",\\n            \\\"m6.34 17.66-1.41 1.41\\\",\\n            \\\"M2 12h2\\\",\\n            \\\"m4.93 4.93 1.41 1.41\\\",\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={controls}\\n              custom={index + 1}\\n              d={d}\\n              key={d}\\n              variants={PATH_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSunIcon.displayName = \\\"SunIcon\\\";\\n\\nexport { SunIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/sunset.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"sunset\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"sunset.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SunsetIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SunsetIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n  },\\n  animate: {\\n    y: [0, 1, 0],\\n  },\\n};\\nconst RAYS_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: (i: number) => ({\\n    opacity: [0, 1],\\n    transition: { delay: i * 0.1, duration: 0.3 },\\n  }),\\n};\\n\\nconst SunsetIcon = forwardRef<SunsetIconHandle, SunsetIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const arrowControls = useAnimation();\\n    const raysControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          arrowControls.start(\\\"animate\\\");\\n          raysControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          arrowControls.start(\\\"normal\\\");\\n          raysControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          arrowControls.start(\\\"animate\\\");\\n          raysControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [arrowControls, raysControls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          arrowControls.start(\\\"normal\\\");\\n          raysControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [arrowControls, raysControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={arrowControls}\\n            initial=\\\"normal\\\"\\n            variants={ARROW_VARIANTS}\\n          >\\n            <path d=\\\"M12 10V2\\\" />\\n            <path d=\\\"m16 6-4 4-4-4\\\" />\\n          </motion.g>\\n\\n          {[\\n            \\\"m4.93 10.93 1.41 1.41\\\",\\n            \\\"M2 18h2\\\",\\n            \\\"M20 18h2\\\",\\n            \\\"m19.07 10.93-1.41 1.41\\\",\\n            \\\"M22 22H2\\\",\\n            ,\\n          ].map((d, index) => (\\n            <motion.path\\n              animate={raysControls}\\n              custom={index + 1}\\n              d={d}\\n              initial=\\\"normal\\\"\\n              key={d}\\n              variants={RAYS_VARIANTS}\\n            />\\n          ))}\\n          <path d=\\\"M16 18a4 4 0 0 0-8 0\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSunsetIcon.displayName = \\\"SunsetIcon\\\";\\n\\nexport { SunsetIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/swiss-franc.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"swiss-franc\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"swiss-franc.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SwissFrancIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SwissFrancIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst FRANC_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst FRANC_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst SwissFrancIcon = forwardRef<SwissFrancIconHandle, SwissFrancIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 21V3h8\\\"\\n            initial=\\\"normal\\\"\\n            variants={FRANC_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 16h9\\\"\\n            initial=\\\"normal\\\"\\n            variants={FRANC_SECONDARY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M10 9.5h7\\\"\\n            initial=\\\"normal\\\"\\n            variants={FRANC_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSwissFrancIcon.displayName = \\\"SwissFrancIcon\\\";\\n\\nexport { SwissFrancIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/syringe.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"syringe\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"syringe.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface SyringeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface SyringeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SyringeIcon = forwardRef<SyringeIconHandle, SyringeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          className=\\\"icon\\\"\\n          fill=\\\"currentColor\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"5.632\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: {\\n              translateX: 0,\\n              translateY: 0,\\n              rotate: \\\"0deg\\\",\\n            },\\n            animate: {\\n              translateX: -3,\\n              translateY: 3,\\n              rotate: \\\"1deg\\\",\\n            },\\n          }}\\n          viewBox=\\\"0 0 512 512\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M450.327,224.582l-46.545-46.545c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l15.127,15.127L205.964,406.109c-4.655,4.655-11.636,4.655-16.291,0l-18.618-18.618c-4.655-4.655-11.636-4.655-16.291,0l-18.618,18.618c-4.655,4.655-11.636,4.655-16.291,0l-13.964-13.964c-2.327-2.327-3.491-4.655-3.491-8.145s1.164-5.818,3.491-8.145l18.618-18.618c4.655-4.655,4.655-11.636,0-16.291l-18.618-18.618c-2.327-2.327-3.491-4.655-3.491-8.145c0-3.491,1.164-5.818,3.491-8.146l169.891-169.891c4.655-4.655,4.655-11.636,0-16.291s-11.636-4.655-16.291,0L89.6,289.745c-6.982,6.982-10.473,15.127-10.473,24.436S82.618,332.8,89.6,338.618l10.473,10.473L89.6,359.564c-6.982,6.982-10.473,15.127-10.473,24.436c0,8.145,3.491,16.291,9.309,23.273L3.491,492.218c-4.655,4.655-4.655,11.636,0,16.291C5.818,510.836,8.145,512,11.636,512s5.818-1.164,8.145-3.491l84.945-84.945c13.964,11.636,34.909,11.636,47.709-1.164l10.473-10.473l10.473,10.473c6.982,6.982,16.291,10.473,24.436,10.473c9.309,0,17.455-3.491,24.436-10.473l196.655-196.655l15.127,15.127c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C454.982,236.218,454.982,229.236,450.327,224.582z\\\" />\\n          <path d=\\\"M508.509,119.855L392.145,3.491c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l39.564,39.564c2.327,2.327,3.491,6.982,3.491,10.473s-1.164,8.145-4.655,10.473l-53.527,54.691l-73.309-73.309c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l73.309,73.309L244.364,251.345L217.6,224.582c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l69.818,69.818c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491c4.655-4.655,4.655-11.636,0-16.291l-26.764-26.764L431.709,97.745c6.982-5.818,15.127-5.818,22.109,0l38.4,38.4c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C513.164,131.491,513.164,124.509,508.509,119.855z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nSyringeIcon.displayName = \\\"SyringeIcon\\\";\\n\\nexport { SyringeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/telescope.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"telescope\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"telescope.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TelescopeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TelescopeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SCOPE_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  animate: {\\n    rotate: -15,\\n    transition: {\\n      duration: 0.8,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n};\\n\\nconst TelescopeIcon = forwardRef<TelescopeIconHandle, TelescopeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.g\\n            animate={controls}\\n            style={{ transformOrigin: \\\"12px 13px\\\" }}\\n            variants={SCOPE_VARIANTS}\\n          >\\n            <path d=\\\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\\\" />\\n            <path d=\\\"m13.56 11.747 4.332-.924\\\" />\\n            <path d=\\\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\\\" />\\n            <path d=\\\"m13.56 11.747 4.332-.924\\\" />\\n            <path d=\\\"M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z\\\" />\\n            <path d=\\\"m6.158 8.633 1.114 4.456\\\" />\\n          </motion.g>\\n          <path d=\\\"m16 21-3.105-6.21\\\" />\\n          <path d=\\\"m8 21 3.105-6.21\\\" />\\n          <circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"2\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTelescopeIcon.displayName = \\\"TelescopeIcon\\\";\\n\\nexport { TelescopeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/terminal.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"terminal\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"terminal.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TerminalIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TerminalIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: { opacity: 1 },\\n  animate: {\\n    opacity: [1, 0, 1],\\n    transition: {\\n      duration: 0.8,\\n      repeat: Number.POSITIVE_INFINITY,\\n      ease: \\\"linear\\\",\\n    },\\n  },\\n};\\n\\nconst TerminalIcon = forwardRef<TerminalIconHandle, TerminalIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <polyline points=\\\"4 17 10 11 4 5\\\" />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"20\\\"\\n            y1=\\\"19\\\"\\n            y2=\\\"19\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTerminalIcon.displayName = \\\"TerminalIcon\\\";\\n\\nexport { TerminalIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/thermometer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"thermometer\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"thermometer.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, -5, 5, -5, 5, 0],\\n    transition: {\\n      duration: 0.4,\\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\\n    },\\n  },\\n};\\n\\nexport interface ThermometerIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ThermometerIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ThermometerIcon = forwardRef<ThermometerIconHandle, ThermometerIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nThermometerIcon.displayName = \\\"ThermometerIcon\\\";\\n\\nexport { ThermometerIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/timer.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"timer\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"timer.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TimerIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TimerIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst HAND_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n    transition: {\\n      duration: 0.6,\\n      ease: [0.4, 0, 0.2, 1],\\n    },\\n  },\\n  animate: {\\n    rotate: 300,\\n    originX: \\\"0%\\\",\\n    originY: \\\"100%\\\",\\n    transition: {\\n      delay: 0.1,\\n      duration: 0.6,\\n      ease: [0.4, 0, 0.2, 1],\\n    },\\n  },\\n};\\n\\nconst BUTTON_VARIANTS: Variants = {\\n  normal: {\\n    scale: 1,\\n    y: 0,\\n  },\\n  animate: {\\n    scale: [0.9, 1],\\n    y: [0, 1, 0],\\n    transition: {\\n      duration: 0.3,\\n      ease: [0.4, 0, 0.2, 1],\\n    },\\n  },\\n};\\n\\nconst TimerIcon = forwardRef<TimerIconHandle, TimerIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.line\\n            animate={controls}\\n            variants={BUTTON_VARIANTS}\\n            x1=\\\"10\\\"\\n            x2=\\\"14\\\"\\n            y1=\\\"2\\\"\\n            y2=\\\"2\\\"\\n          />\\n          <motion.line\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={HAND_VARIANTS}\\n            x1=\\\"12\\\"\\n            x2=\\\"15\\\"\\n            y1=\\\"14\\\"\\n            y2=\\\"11\\\"\\n          />\\n          <circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"8\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTimerIcon.displayName = \\\"TimerIcon\\\";\\n\\nexport { TimerIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/tornado.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"tornado\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"tornado.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TornadoIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TornadoIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    x: 0,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  animate: (custom: number) => ({\\n    x: [0, custom * 1, 0],\\n    opacity: 1,\\n    transition: {\\n      x: {\\n        duration: 0.6,\\n        repeat: 1,\\n        ease: \\\"easeInOut\\\",\\n        delay: custom * 0.1,\\n      },\\n    },\\n  }),\\n};\\n\\nconst TornadoIcon = forwardRef<TornadoIconHandle, TornadoIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"M21 4H3\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M18 8H6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={3}\\n            d=\\\"M19 12H9\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={4}\\n            d=\\\"M16 16h-6\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={5}\\n            d=\\\"M11 20H9\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTornadoIcon.displayName = \\\"TornadoIcon\\\";\\n\\nexport { TornadoIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/train-track.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"train-track\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"train-track.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TrainTrackIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TrainTrackIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.3,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      ...TRANSITION,\\n      delay: 0.1 * custom,\\n    },\\n  }),\\n};\\n\\nconst TrainTrackIcon = forwardRef<TrainTrackIconHandle, TrainTrackIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2 17 17 2\\\" />\\n          <motion.path\\n            animate={controls}\\n            custom={4}\\n            d=\\\"m2 14 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={3}\\n            d=\\\"m5 11 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"m8 8 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"m11 5 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"m14 2 8 8\\\"\\n            variants={VARIANTS}\\n          />\\n          <path d=\\\"M7 22 22 7\\\" />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTrainTrackIcon.displayName = \\\"TrainTrackIcon\\\";\\n\\nexport { TrainTrackIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/trending-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"trending-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"trending-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TrendingDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TrendingDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  animate: {\\n    x: 0,\\n    y: 0,\\n    translateX: [0, 2, 0],\\n    translateY: [0, 2, 0],\\n    transition: {\\n      duration: 0.5,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [0.5, 0],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst TrendingDownIcon = forwardRef<\\n  TrendingDownIconHandle,\\n  TrendingDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.polyline\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          points=\\\"22 17 13.5 8.5 8.5 13.5 2 7\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.polyline\\n          animate={controls}\\n          initial=\\\"normal\\\"\\n          points=\\\"16 17 22 17 22 11\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nTrendingDownIcon.displayName = \\\"TrendingDownIcon\\\";\\n\\nexport { TrendingDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/trending-up-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"trending-up-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"trending-up-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TrendingUpDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TrendingUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  animate: {\\n    x: 0,\\n    y: 0,\\n    translateX: [0, 2, 0],\\n    transition: {\\n      duration: 0.5,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [0.5, 0],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst TrendingUpDownIcon = forwardRef<\\n  TrendingUpDownIconHandle,\\n  TrendingUpDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        animate={controls}\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        variants={SVG_VARIANTS}\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M21 21 14.828 14.828\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M21 16v5h-5\\\"\\n          initial=\\\"normal\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m21 3-9 9-4-4-6 6\\\"\\n          initial=\\\"normal\\\"\\n          variants={PATH_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M21 8V3h-5\\\"\\n          initial=\\\"normal\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nTrendingUpDownIcon.displayName = \\\"TrendingUpDownIcon\\\";\\n\\nexport { TrendingUpDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/trending-up.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"trending-up\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"trending-up.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TrendingUpIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TrendingUpIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst SVG_VARIANTS: Variants = {\\n  animate: {\\n    x: 0,\\n    y: 0,\\n    translateX: [0, 2, 0],\\n    translateY: [0, -2, 0],\\n    transition: {\\n      duration: 0.5,\\n    },\\n  },\\n};\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [0.5, 0],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst TrendingUpIcon = forwardRef<TrendingUpIconHandle, TrendingUpIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          variants={SVG_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.polyline\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            points=\\\"22 7 13.5 15.5 8.5 10.5 2 17\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.polyline\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            points=\\\"16 7 22 7 22 13\\\"\\n            variants={ARROW_VARIANTS}\\n          />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTrendingUpIcon.displayName = \\\"TrendingUpIcon\\\";\\n\\nexport { TrendingUpIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/truck.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"truck\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"truck.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nexport interface TruckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TruckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRUCK_VARIANTS: Variants = {\\n  normal: { x: 0, y: 0 },\\n  animate: {\\n    y: [0, -1, 0, -0.5, 0],\\n    transition: {\\n      duration: 0.4,\\n      ease: \\\"easeInOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n      repeatType: \\\"loop\\\",\\n    },\\n  },\\n};\\n\\nconst WHEEL_VARIANTS: Variants = {\\n  normal: { rotate: 0 },\\n  animate: {\\n    rotate: 360,\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"linear\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n    },\\n  },\\n};\\n\\nconst SPEED_LINE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 0,\\n    x: 0,\\n    scaleX: 0,\\n  },\\n  animate: (custom: number) => ({\\n    opacity: [0, 0.7, 0.5, 0],\\n    x: [0, -4, -10, -16],\\n    scaleX: [0.2, 1, 0.8, 0.3],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeOut\\\",\\n      repeat: Number.POSITIVE_INFINITY,\\n      delay: custom * 0.08,\\n      times: [0, 0.2, 0.6, 1],\\n    },\\n  }),\\n};\\n\\nconst TruckIcon = forwardRef<TruckIconHandle, TruckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"animate\\\");\\n        }\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"normal\\\");\\n        }\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={className}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          className=\\\"overflow-visible\\\"\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {[\\n            { y: 8, width: 5, x: 0 },\\n            { y: 11, width: 7, x: -1 },\\n            { y: 14, width: 4, x: 0 },\\n          ].map((line, i) => (\\n            <motion.line\\n              animate={controls}\\n              custom={i}\\n              initial=\\\"normal\\\"\\n              key={`speed-${i}`}\\n              strokeLinecap=\\\"round\\\"\\n              strokeWidth=\\\"2\\\"\\n              variants={SPEED_LINE_VARIANTS}\\n              x1={line.x}\\n              x2={line.x + line.width}\\n              y1={line.y}\\n              y2={line.y}\\n            />\\n          ))}\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={TRUCK_VARIANTS}\\n          >\\n            <path d=\\\"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2\\\" />\\n            <path d=\\\"M15 18H9\\\" />\\n            <path d=\\\"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14\\\" />\\n          </motion.g>\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={TRUCK_VARIANTS}\\n          >\\n            <motion.g\\n              animate={controls}\\n              initial=\\\"normal\\\"\\n              style={{ transformOrigin: \\\"7px 18px\\\" }}\\n              variants={WHEEL_VARIANTS}\\n            >\\n              <circle cx=\\\"7\\\" cy=\\\"18\\\" r=\\\"2\\\" />\\n              <line strokeWidth=\\\"1.5\\\" x1=\\\"7\\\" x2=\\\"7\\\" y1=\\\"16.5\\\" y2=\\\"19.5\\\" />\\n              <line strokeWidth=\\\"1.5\\\" x1=\\\"5.5\\\" x2=\\\"8.5\\\" y1=\\\"18\\\" y2=\\\"18\\\" />\\n            </motion.g>\\n          </motion.g>\\n\\n          <motion.g\\n            animate={controls}\\n            initial=\\\"normal\\\"\\n            variants={TRUCK_VARIANTS}\\n          >\\n            <motion.g\\n              animate={controls}\\n              initial=\\\"normal\\\"\\n              style={{ transformOrigin: \\\"17px 18px\\\" }}\\n              variants={WHEEL_VARIANTS}\\n            >\\n              <circle cx=\\\"17\\\" cy=\\\"18\\\" r=\\\"2\\\" />\\n              <line strokeWidth=\\\"1.5\\\" x1=\\\"17\\\" x2=\\\"17\\\" y1=\\\"16.5\\\" y2=\\\"19.5\\\" />\\n              <line strokeWidth=\\\"1.5\\\" x1=\\\"15.5\\\" x2=\\\"18.5\\\" y1=\\\"18\\\" y2=\\\"18\\\" />\\n            </motion.g>\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTruckIcon.displayName = \\\"TruckIcon\\\";\\n\\nexport { TruckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/turkish-lira.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"turkish-lira\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"turkish-lira.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TurkishLiraIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TurkishLiraIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst LIRA_MAIN_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LIRA_SECONDARY_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.3,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      delay: 0.5,\\n      duration: 0.4,\\n      opacity: { duration: 0.1, delay: 0.5 },\\n    },\\n  },\\n};\\n\\nconst TurkishLiraIcon = forwardRef<TurkishLiraIconHandle, TurkishLiraIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 12a9 9 0 0 1-9 9V3\\\"\\n            initial=\\\"normal\\\"\\n            variants={LIRA_MAIN_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M15 4 5 9\\\"\\n            initial=\\\"normal\\\"\\n            variants={LIRA_SECONDARY_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m15 8.5-10 5\\\"\\n            initial=\\\"normal\\\"\\n            variants={LIRA_SECONDARY_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTurkishLiraIcon.displayName = \\\"TurkishLiraIcon\\\";\\n\\nexport { TurkishLiraIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/twitch.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"twitch\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"twitch.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TwitchIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TwitchIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst LINE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst TwitchIcon = forwardRef<TwitchIconHandle, TwitchIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const pathControls = useAnimation();\\n    const line1Controls = useAnimation();\\n    const line2Controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          pathControls.start(\\\"animate\\\");\\n          line1Controls.start(\\\"animate\\\");\\n          line2Controls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          pathControls.start(\\\"normal\\\");\\n          line1Controls.start(\\\"normal\\\");\\n          line2Controls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          pathControls.start(\\\"animate\\\");\\n          line1Controls.start(\\\"animate\\\");\\n          line2Controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [line1Controls, line2Controls, onMouseEnter, pathControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          pathControls.start(\\\"normal\\\");\\n          line1Controls.start(\\\"normal\\\");\\n          line2Controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [pathControls, line1Controls, line2Controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={pathControls}\\n            d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={line1Controls}\\n            d=\\\"M11 11V7\\\"\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n          <motion.path\\n            animate={line2Controls}\\n            d=\\\"M16 11V7\\\"\\n            initial=\\\"normal\\\"\\n            variants={LINE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTwitchIcon.displayName = \\\"TwitchIcon\\\";\\n\\nexport { TwitchIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/twitter.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"twitter\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"twitter.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface TwitterIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface TwitterIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst TwitterIcon = forwardRef<TwitterIconHandle, TwitterIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nTwitterIcon.displayName = \\\"TwitterIcon\\\";\\n\\nexport { TwitterIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/underline.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"underline\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"underline.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UnderlineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UnderlineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst UnderlineIcon = forwardRef<UnderlineIconHandle, UnderlineIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M6 4v6a6 6 0 0 0 12 0V4\\\"\\n            transition={{ duration: 0.3 }}\\n            variants={VARIANTS}\\n          />\\n          <motion.line\\n            animate={controls}\\n            transition={{\\n              delay: 0.2,\\n              duration: 0.4,\\n            }}\\n            variants={VARIANTS}\\n            x1=\\\"4\\\"\\n            x2=\\\"20\\\"\\n            y1=\\\"20\\\"\\n            y2=\\\"20\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUnderlineIcon.displayName = \\\"UnderlineIcon\\\";\\n\\nexport { UnderlineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/undo-dot.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"undo-dot\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"undo-dot.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { cubicBezier, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UndoDotIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UndoDotIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\\n\\nconst UndoDotIcon = forwardRef<UndoDotIconHandle, UndoDotIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 7v6h6\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\\n              animate: {\\n                translateX: [0, 2.1, 0],\\n                translateY: [0, -1.4, 0],\\n                rotate: [0, 12, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 17a9 9 0 0 0-15-6.7L3 13\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: { pathLength: [1, 0.8, 1] },\\n            }}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"17\\\"\\n            r=\\\"1\\\"\\n            transition={{ duration: 0.6, ease: CUSTOM_EASING }}\\n            variants={{\\n              normal: { scale: 1 },\\n              animate: { scale: [1, 1.2, 1] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUndoDotIcon.displayName = \\\"UndoDotIcon\\\";\\n\\nexport { UndoDotIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/undo.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"undo\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"undo.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { cubicBezier, motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UndoIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UndoIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CUSTOM_EASING = cubicBezier(0.25, 0.1, 0.25, 1);\\n\\nconst UndoIcon = forwardRef<UndoIconHandle, UndoIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M3 7v6h6\\\"\\n            transition={{\\n              duration: 0.6,\\n              ease: CUSTOM_EASING,\\n            }}\\n            variants={{\\n              normal: { translateX: 0, translateY: 0, rotate: 0 },\\n              animate: {\\n                translateX: [0, 2.1, 0],\\n                translateY: [0, -1.4, 0],\\n                rotate: [0, 12, 0],\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\\\"\\n            transition={{\\n              duration: 0.6,\\n              ease: CUSTOM_EASING,\\n            }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: { pathLength: [1, 0.8, 1] },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUndoIcon.displayName = \\\"UndoIcon\\\";\\n\\nexport { UndoIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/upload.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"upload\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"upload.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UploadIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UploadIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: { y: 0 },\\n  animate: {\\n    y: -2,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 10,\\n      mass: 1,\\n    },\\n  },\\n};\\n\\nconst UploadIcon = forwardRef<UploadIconHandle, UploadIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" />\\n          <motion.g animate={controls} variants={ARROW_VARIANTS}>\\n            <polyline points=\\\"17 8 12 3 7 8\\\" />\\n            <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"3\\\" y2=\\\"15\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUploadIcon.displayName = \\\"UploadIcon\\\";\\n\\nexport { UploadIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/upvote.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"upvote\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"upvote.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UpvoteIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UpvoteIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst UpvoteIcon = forwardRef<UpvoteIconHandle, UpvoteIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          transition={{ type: \\\"spring\\\", stiffness: 250, damping: 25 }}\\n          variants={{\\n            normal: {\\n              translateX: \\\"0px\\\",\\n              translateY: \\\"0px\\\",\\n              rotate: \\\"0deg\\\",\\n            },\\n            animate: {\\n              translateX: \\\"-1px\\\",\\n              translateY: \\\"-2px\\\",\\n              rotate: \\\"-12deg\\\",\\n            },\\n          }}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M7 10v12\\\" />\\n          <path d=\\\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUpvoteIcon.displayName = \\\"UpvoteIcon\\\";\\n\\nexport { UpvoteIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/user-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"user-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"user-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UserCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UserCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst UserCheckIcon = forwardRef<UserCheckIconHandle, UserCheckIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\\\" />\\n          <circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 11L18 13L22 9\\\"\\n            initial=\\\"normal\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={CHECK_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUserCheckIcon.displayName = \\\"UserCheckIcon\\\";\\n\\nexport { UserCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/user-round-check.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"user-round-check\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"user-round-check.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UserRoundCheckIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UserRoundCheckIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst CHECK_VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n    },\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      pathLength: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n      opacity: { duration: 0.4, ease: \\\"easeInOut\\\" },\\n    },\\n  },\\n};\\n\\nconst UserRoundCheckIcon = forwardRef<\\n  UserRoundCheckIconHandle,\\n  UserRoundCheckIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" />\\n        <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m16 19 2 2 4-4\\\"\\n          initial=\\\"normal\\\"\\n          style={{ transformOrigin: \\\"center\\\" }}\\n          variants={CHECK_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nUserRoundCheckIcon.displayName = \\\"UserRoundCheckIcon\\\";\\n\\nexport { UserRoundCheckIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/user-round-plus.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"user-round-plus\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"user-round-plus.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UserRoundPlusIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UserRoundPlusIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VERTICAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.3,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.3 },\\n    },\\n  },\\n};\\n\\nconst HORIZONTAL_BAR_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      delay: 0.6,\\n      duration: 0.2,\\n      opacity: { duration: 0.1, delay: 0.6 },\\n    },\\n  },\\n};\\n\\nconst UserRoundPlusIcon = forwardRef<\\n  UserRoundPlusIconHandle,\\n  UserRoundPlusIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <motion.svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        initial=\\\"normal\\\"\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" />\\n        <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M19 16v6\\\"\\n          initial=\\\"normal\\\"\\n          variants={VERTICAL_BAR_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M22 19h-6\\\"\\n          initial=\\\"normal\\\"\\n          variants={HORIZONTAL_BAR_VARIANTS}\\n        />\\n      </motion.svg>\\n    </div>\\n  );\\n});\\n\\nUserRoundPlusIcon.displayName = \\\"UserRoundPlusIcon\\\";\\n\\nexport { UserRoundPlusIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/user.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"user\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"user.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UserIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UserIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANT: Variants = {\\n  normal: { pathLength: 1, opacity: 1, pathOffset: 0 },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n  },\\n};\\n\\nconst CIRCLE_VARIANT: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    pathOffset: 0,\\n    scale: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    scale: [0.5, 1],\\n  },\\n};\\n\\nconst UserIcon = forwardRef<UserIconHandle, UserIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            cx=\\\"12\\\"\\n            cy=\\\"8\\\"\\n            r=\\\"5\\\"\\n            variants={CIRCLE_VARIANT}\\n          />\\n\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M20 21a8 8 0 0 0-16 0\\\"\\n            transition={{\\n              delay: 0.2,\\n              duration: 0.4,\\n            }}\\n            variants={PATH_VARIANT}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUserIcon.displayName = \\\"UserIcon\\\";\\n\\nexport { UserIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/users.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"users\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"users.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface UsersIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface UsersIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    translateX: 0,\\n    transition: {\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  },\\n  animate: {\\n    translateX: [-6, 0],\\n    transition: {\\n      delay: 0.1,\\n      type: \\\"spring\\\",\\n      stiffness: 200,\\n      damping: 13,\\n    },\\n  },\\n};\\n\\nconst UsersIcon = forwardRef<UsersIconHandle, UsersIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\\\" />\\n          <circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\" />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M22 21v-2a4 4 0 0 0-3-3.87\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nUsersIcon.displayName = \\\"UsersIcon\\\";\\n\\nexport { UsersIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/vibrate.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"vibrate\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"vibrate.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface VibrateIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface VibrateIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst RECT_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n  },\\n  animate: {\\n    rotate: [0, -5, 5, -5, 5, 0],\\n    transition: {\\n      duration: 0.4,\\n      times: [0, 0.2, 0.4, 0.6, 0.8, 1],\\n    },\\n  },\\n};\\n\\nconst VibrateIcon = forwardRef<VibrateIconHandle, VibrateIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"m2 8 2 2-2 2 2 2-2 2\\\" />\\n          <path d=\\\"m22 8-2 2 2 2-2 2 2 2\\\" />\\n          <motion.rect\\n            animate={controls}\\n            height=\\\"14\\\"\\n            rx=\\\"1\\\"\\n            style={{ transformOrigin: \\\"center\\\" }}\\n            variants={RECT_VARIANTS}\\n            width=\\\"8\\\"\\n            x=\\\"8\\\"\\n            y=\\\"5\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nVibrateIcon.displayName = \\\"VibrateIcon\\\";\\n\\nexport { VibrateIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/volume.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"volume\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"volume.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { AnimatePresence, motion } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport {\\n  Fragment,\\n  forwardRef,\\n  useCallback,\\n  useImperativeHandle,\\n  useRef,\\n  useState,\\n} from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface VolumeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface VolumeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VolumeIcon = forwardRef<VolumeIconHandle, VolumeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const [isHovered, setIsHovered] = useState(false);\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => setIsHovered(true),\\n        stopAnimation: () => setIsHovered(false),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          setIsHovered(true);\\n        }\\n      },\\n      [onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          setIsHovered(false);\\n        }\\n      },\\n      [onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\\\" />\\n          <AnimatePresence initial={false} mode=\\\"wait\\\">\\n            {isHovered ? (\\n              <Fragment key=\\\"volume-icon-active\\\">\\n                <motion.path\\n                  animate={{ opacity: 1, transition: { delay: 0.1 } }}\\n                  d=\\\"M16 9a5 5 0 0 1 0 6\\\"\\n                  exit={{ opacity: 0 }}\\n                  initial={{ opacity: 0 }}\\n                />\\n                <motion.path\\n                  animate={{ opacity: 1, transition: { delay: 0.2 } }}\\n                  d=\\\"M19.364 18.364a9 9 0 0 0 0-12.728\\\"\\n                  exit={{ opacity: 0 }}\\n                  initial={{ opacity: 0 }}\\n                />\\n              </Fragment>\\n            ) : (\\n              <Fragment key=\\\"volume-icon-inactive\\\">\\n                <motion.line\\n                  animate={{\\n                    pathLength: [0, 1],\\n                    opacity: [0, 1],\\n                    transition: { delay: 0.1 },\\n                  }}\\n                  exit={{ pathLength: 1, opacity: 1 }}\\n                  initial={{ pathLength: 1, opacity: 1 }}\\n                  x1=\\\"22\\\"\\n                  x2=\\\"16\\\"\\n                  y1=\\\"9\\\"\\n                  y2=\\\"15\\\"\\n                />\\n                <motion.line\\n                  animate={{\\n                    pathLength: [0, 1],\\n                    opacity: [0, 1],\\n                    transition: { delay: 0.2 },\\n                  }}\\n                  exit={{ pathLength: 1, opacity: 1 }}\\n                  initial={{ pathLength: 1, opacity: 1 }}\\n                  x1=\\\"16\\\"\\n                  x2=\\\"22\\\"\\n                  y1=\\\"9\\\"\\n                  y2=\\\"15\\\"\\n                />\\n              </Fragment>\\n            )}\\n          </AnimatePresence>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nVolumeIcon.displayName = \\\"VolumeIcon\\\";\\n\\nexport { VolumeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/washing-machine.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"washing-machine\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"washing-machine.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WashingMachineIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WashingMachineIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WashingMachineIcon = forwardRef<\\n  WashingMachineIconHandle,\\n  WashingMachineIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.g\\n          animate={controls}\\n          variants={{\\n            normal: {\\n              x: 0,\\n            },\\n            animate: {\\n              x: [0, 0.5, -0.5, 0.3, -0.3, 0],\\n              transition: {\\n                duration: 0.8,\\n                repeat: Number.POSITIVE_INFINITY,\\n                ease: \\\"easeInOut\\\",\\n              },\\n            },\\n          }}\\n        >\\n          <path d=\\\"M3 6h3\\\" />\\n          <path d=\\\"M17 6h.01\\\" />\\n          <rect height=\\\"20\\\" rx=\\\"2\\\" width=\\\"18\\\" x=\\\"3\\\" y=\\\"2\\\" />\\n        </motion.g>\\n        <motion.g\\n          animate={controls}\\n          variants={{\\n            normal: {\\n              rotate: 0,\\n              y: 0,\\n              transition: {\\n                duration: 0.5,\\n                ease: \\\"linear\\\",\\n              },\\n            },\\n            animate: {\\n              rotate: 360,\\n              y: [0, -0.3, 0, 0.3, 0],\\n              transition: {\\n                rotate: {\\n                  duration: 1,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                  ease: \\\"linear\\\",\\n                },\\n                y: {\\n                  duration: 0.3,\\n                  repeat: Number.POSITIVE_INFINITY,\\n                  ease: \\\"easeInOut\\\",\\n                },\\n              },\\n            },\\n          }}\\n        >\\n          <circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"5\\\" />\\n          <path d=\\\"M12 18a2.5 2.5 0 0 0 0-5 2.5 2.5 0 0 1 0-5\\\" />\\n        </motion.g>\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nWashingMachineIcon.displayName = \\\"WashingMachineIcon\\\";\\n\\nexport { WashingMachineIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/waves-ladder.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"waves-ladder\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"waves-ladder.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WavesLadderIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WavesLadderIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WavesLadderIcon = forwardRef<WavesLadderIconHandle, WavesLadderIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"animate\\\");\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) controls.start(\\\"normal\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\\\" />\\n          <motion.g\\n            animate={controls}\\n            initial={{ y: 0, opacity: 1 }}\\n            variants={{\\n              normal: { y: 0, opacity: 1 },\\n              animate: {\\n                y: [13, 0],\\n                opacity: [0, 0, 1],\\n                transition: { duration: 1, times: [0, 0.5, 1], repeat: 0 },\\n              },\\n            }}\\n          >\\n            <path d=\\\"M19 5a2 2 0 0 0-2 2v11\\\" />\\n            <path d=\\\"M7 13h10\\\" />\\n            <path d=\\\"M7 9h10\\\" />\\n            <path d=\\\"M9 5a2 2 0 0 0-2 2v11\\\" />\\n          </motion.g>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWavesLadderIcon.displayName = \\\"WavesLadderIcon\\\";\\nexport { WavesLadderIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/waves.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"waves\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"waves.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WavesIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WavesIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WavesIcon = forwardRef<WavesIconHandle, WavesIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"animate\\\");\\n        }\\n        onMouseEnter?.(e);\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (!isControlledRef.current) {\\n          controls.start(\\\"normal\\\");\\n        }\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\\\"\\n            initial={{ pathLength: 1 }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: {\\n                pathLength: [0, 1],\\n                transition: { duration: 0.4, ease: \\\"linear\\\" },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 12c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\\\"\\n            initial={{ pathLength: 1 }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: {\\n                pathLength: [0, 1],\\n                transition: { duration: 0.4, ease: \\\"linear\\\" },\\n              },\\n            }}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M2 18c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\\\"\\n            initial={{ pathLength: 1 }}\\n            variants={{\\n              normal: { pathLength: 1 },\\n              animate: {\\n                pathLength: [0, 1],\\n                transition: { duration: 0.4, ease: \\\"linear\\\" },\\n              },\\n            }}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWavesIcon.displayName = \\\"WavesIcon\\\";\\nexport { WavesIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/waypoints.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"waypoints\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"waypoints.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WaypointsIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WaypointsIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      delay: 0.15 * custom,\\n      opacity: { delay: 0.1 * custom },\\n    },\\n  }),\\n};\\n\\nconst WaypointsIcon = forwardRef<WaypointsIconHandle, WaypointsIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"12\\\"\\n            cy=\\\"4.5\\\"\\n            r=\\\"2.5\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={1}\\n            d=\\\"m10.2 6.3-3.9 3.9\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"4.5\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"2.5\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={2}\\n            d=\\\"M7 12h10\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"19.5\\\"\\n            cy=\\\"12\\\"\\n            r=\\\"2.5\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={3}\\n            d=\\\"m13.8 17.7 3.9-3.9\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.circle\\n            animate={controls}\\n            custom={0}\\n            cx=\\\"12\\\"\\n            cy=\\\"19.5\\\"\\n            r=\\\"2.5\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWaypointsIcon.displayName = \\\"WaypointsIcon\\\";\\n\\nexport { WaypointsIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/webhook.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"webhook\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"webhook.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WebhookIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WebhookIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.3,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: {\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      ...TRANSITION,\\n      delay: 0.1,\\n    },\\n  },\\n};\\n\\nconst WebhookIcon = forwardRef<WebhookIconHandle, WebhookIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\\\"\\n            variants={VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWebhookIcon.displayName = \\\"WebhookIcon\\\";\\n\\nexport { WebhookIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/wifi-low.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"wifi-low\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"wifi-low.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport {\\n  forwardRef,\\n  useCallback,\\n  useEffect,\\n  useImperativeHandle,\\n  useRef,\\n} from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WifiLowIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WifiLowIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WIFI_LEVELS = [\\n  { d: \\\"M12 20h.01\\\", initialOpacity: 1, delay: 0 },\\n  { d: \\\"M8.5 16.429a5 5 0 0 1 7 0\\\", initialOpacity: 1, delay: 0.1 },\\n];\\n\\nconst WifiLowIcon = forwardRef<WifiLowIconHandle, WifiLowIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const questionControls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n    const hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\\n\\n    const scheduleHide = useCallback(() => {\\n      if (hideTimerRef.current) clearTimeout(hideTimerRef.current);\\n      hideTimerRef.current = setTimeout(() => {\\n        questionControls.start(\\\"hide\\\");\\n      }, 1500);\\n    }, [questionControls]);\\n\\n    const cancelHide = useCallback(() => {\\n      if (hideTimerRef.current) {\\n        clearTimeout(hideTimerRef.current);\\n        hideTimerRef.current = null;\\n      }\\n    }, []);\\n\\n    useEffect(() => () => cancelHide(), [cancelHide]);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n          questionControls.start(\\\"show\\\");\\n          scheduleHide();\\n        },\\n        stopAnimation: () => {\\n          cancelHide();\\n          controls.start(\\\"fadeIn\\\");\\n          questionControls.start(\\\"hide\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          cancelHide();\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n          questionControls.start(\\\"show\\\");\\n          scheduleHide();\\n        }\\n      },\\n      [controls, questionControls, onMouseEnter, scheduleHide, cancelHide]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        cancelHide();\\n        controls.start(\\\"fadeIn\\\");\\n        questionControls.start(\\\"hide\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, questionControls, onMouseLeave, cancelHide]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {WIFI_LEVELS.map((level, index) => (\\n            <motion.path\\n              animate={controls}\\n              d={level.d}\\n              initial={{ opacity: level.initialOpacity }}\\n              key={level.d}\\n              variants={{\\n                fadeOut: {\\n                  opacity: index === 0 ? 1 : 0,\\n                  transition: { duration: 0.2 },\\n                },\\n                fadeIn: {\\n                  opacity: 1,\\n                  transition: {\\n                    type: \\\"spring\\\",\\n                    stiffness: 300,\\n                    damping: 20,\\n                    delay: level.delay,\\n                  },\\n                },\\n              }}\\n            />\\n          ))}\\n          <motion.text\\n            animate={questionControls}\\n            dominantBaseline=\\\"central\\\"\\n            fill=\\\"currentColor\\\"\\n            fontSize=\\\"8\\\"\\n            fontWeight=\\\"bold\\\"\\n            initial={{ opacity: 0, scale: 0 }}\\n            stroke=\\\"none\\\"\\n            style={{ transformOrigin: \\\"12px 8px\\\" }}\\n            textAnchor=\\\"middle\\\"\\n            variants={{\\n              hide: {\\n                opacity: 0,\\n                scale: 0,\\n                transition: { duration: 0.15 },\\n              },\\n              show: {\\n                opacity: 1,\\n                scale: 1,\\n                transition: {\\n                  type: \\\"spring\\\",\\n                  stiffness: 400,\\n                  damping: 18,\\n                  delay: 0.1,\\n                },\\n              },\\n            }}\\n            x=\\\"12\\\"\\n            y=\\\"8\\\"\\n          >\\n            ?\\n          </motion.text>\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWifiLowIcon.displayName = \\\"WifiLowIcon\\\";\\n\\nexport { WifiLowIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/wifi.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"wifi\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"wifi.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WifiIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WifiIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WIFI_LEVELS = [\\n  { d: \\\"M12 20h.01\\\", initialOpacity: 1, delay: 0 },\\n  { d: \\\"M8.5 16.429a5 5 0 0 1 7 0\\\", initialOpacity: 1, delay: 0.1 },\\n  { d: \\\"M5 12.859a10 10 0 0 1 14 0\\\", initialOpacity: 1, delay: 0.2 },\\n  { d: \\\"M2 8.82a15 15 0 0 1 20 0\\\", initialOpacity: 1, delay: 0.3 },\\n];\\n\\nconst WifiIcon = forwardRef<WifiIconHandle, WifiIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: async () => {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        },\\n        stopAnimation: () => controls.start(\\\"fadeIn\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      async (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          await controls.start(\\\"fadeOut\\\");\\n          controls.start(\\\"fadeIn\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        controls.start(\\\"fadeIn\\\");\\n        onMouseLeave?.(e);\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {WIFI_LEVELS.map((level, index) => (\\n            <motion.path\\n              animate={controls}\\n              d={level.d}\\n              initial={{ opacity: level.initialOpacity }}\\n              key={index}\\n              variants={{\\n                fadeOut: {\\n                  opacity: index === 0 ? 1 : 0,\\n                  transition: { duration: 0.2 },\\n                },\\n                fadeIn: {\\n                  opacity: 1,\\n                  transition: {\\n                    type: \\\"spring\\\",\\n                    stiffness: 300,\\n                    damping: 20,\\n                    delay: level.delay,\\n                  },\\n                },\\n              }}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWifiIcon.displayName = \\\"WifiIcon\\\";\\n\\nexport { WifiIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/wind-arrow-down.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"wind-arrow-down\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"wind-arrow-down.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WindArrowDownIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WindArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst WIND_VARIANTS: Variants = {\\n  normal: (custom: number) => ({\\n    pathLength: 1,\\n    opacity: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n};\\n\\nconst ARROW_VARIANTS: Variants = {\\n  normal: {\\n    y: 0,\\n    opacity: 1,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n    },\\n  },\\n  animate: {\\n    y: [-10, 0],\\n    opacity: [0, 1],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n      delay: 0.35,\\n    },\\n  },\\n};\\n\\nconst WindArrowDownIcon = forwardRef<\\n  WindArrowDownIconHandle,\\n  WindArrowDownIconProps\\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n  const controls = useAnimation();\\n  const isControlledRef = useRef(false);\\n\\n  useImperativeHandle(ref, () => {\\n    isControlledRef.current = true;\\n    return {\\n      startAnimation: () => controls.start(\\\"animate\\\"),\\n      stopAnimation: () => controls.start(\\\"normal\\\"),\\n    };\\n  });\\n\\n  const handleMouseEnter = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseEnter?.(e);\\n      } else {\\n        controls.start(\\\"animate\\\");\\n      }\\n    },\\n    [controls, onMouseEnter]\\n  );\\n\\n  const handleMouseLeave = useCallback(\\n    (e: React.MouseEvent<HTMLDivElement>) => {\\n      if (isControlledRef.current) {\\n        onMouseLeave?.(e);\\n      } else {\\n        controls.start(\\\"normal\\\");\\n      }\\n    },\\n    [controls, onMouseLeave]\\n  );\\n\\n  return (\\n    <div\\n      className={cn(className)}\\n      onMouseEnter={handleMouseEnter}\\n      onMouseLeave={handleMouseLeave}\\n      {...props}\\n    >\\n      <svg\\n        fill=\\\"none\\\"\\n        height={size}\\n        stroke=\\\"currentColor\\\"\\n        strokeLinecap=\\\"round\\\"\\n        strokeLinejoin=\\\"round\\\"\\n        strokeWidth=\\\"2\\\"\\n        viewBox=\\\"0 0 24 24\\\"\\n        width={size}\\n        xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n      >\\n        <motion.path\\n          animate={controls}\\n          custom={0.2}\\n          d=\\\"M12.8 21.6A2 2 0 1 0 14 18H2\\\"\\n          initial=\\\"normal\\\"\\n          variants={WIND_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          custom={0.4}\\n          d=\\\"M17.5 10a2.5 2.5 0 1 1 2 4H2\\\"\\n          initial=\\\"normal\\\"\\n          variants={WIND_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"M10 2v8\\\"\\n          initial=\\\"normal\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n        <motion.path\\n          animate={controls}\\n          d=\\\"m6 6 4 4 4-4\\\"\\n          initial=\\\"normal\\\"\\n          variants={ARROW_VARIANTS}\\n        />\\n      </svg>\\n    </div>\\n  );\\n});\\n\\nWindArrowDownIcon.displayName = \\\"WindArrowDownIcon\\\";\\n\\nexport { WindArrowDownIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/wind.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"wind\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"wind.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WindIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WindIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: (custom: number) => ({\\n    pathLength: 1,\\n    opacity: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.3,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.5,\\n      ease: \\\"easeInOut\\\",\\n      delay: custom,\\n    },\\n  }),\\n};\\n\\nconst WindIcon = forwardRef<WindIconHandle, WindIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            custom={0.2}\\n            d=\\\"M12.8 19.6A2 2 0 1 0 14 16H2\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0}\\n            d=\\\"M17.5 8a2.5 2.5 0 1 1 2 4H2\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={0.4}\\n            d=\\\"M9.8 4.4A2 2 0 1 1 11 8H2\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWindIcon.displayName = \\\"WindIcon\\\";\\n\\nexport { WindIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/workflow.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"workflow\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"workflow.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Transition, Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WorkflowIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WorkflowIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst TRANSITION: Transition = {\\n  duration: 0.3,\\n  opacity: { delay: 0.15 },\\n};\\n\\nconst VARIANTS: Variants = {\\n  normal: {\\n    pathLength: 1,\\n    opacity: 1,\\n  },\\n  animate: (custom: number) => ({\\n    pathLength: [0, 1],\\n    opacity: [0, 1],\\n    transition: {\\n      ...TRANSITION,\\n      delay: 0.1 * custom,\\n    },\\n  }),\\n};\\n\\nconst WorkflowIcon = forwardRef<WorkflowIconHandle, WorkflowIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.rect\\n            animate={controls}\\n            custom={0}\\n            height=\\\"8\\\"\\n            rx=\\\"2\\\"\\n            variants={VARIANTS}\\n            width=\\\"8\\\"\\n            x=\\\"3\\\"\\n            y=\\\"3\\\"\\n          />\\n          <motion.path\\n            animate={controls}\\n            custom={3}\\n            d=\\\"M7 11v4a2 2 0 0 0 2 2h4\\\"\\n            variants={VARIANTS}\\n          />\\n          <motion.rect\\n            animate={controls}\\n            custom={0}\\n            height=\\\"8\\\"\\n            rx=\\\"2\\\"\\n            variants={VARIANTS}\\n            width=\\\"8\\\"\\n            x=\\\"13\\\"\\n            y=\\\"13\\\"\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWorkflowIcon.displayName = \\\"WorkflowIcon\\\";\\n\\nexport { WorkflowIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/wrench.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"wrench\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"wrench.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface WrenchIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface WrenchIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst ICON_VARIANTS: Variants = {\\n  normal: {\\n    rotate: 0,\\n    transition: { duration: 0.25, ease: \\\"easeOut\\\" },\\n  },\\n  animate: {\\n    rotate: [0, 12, -14, 4, 0],\\n    transition: {\\n      duration: 1.05,\\n      times: [0, 0.42, 0.68, 0.88, 1],\\n      ease: [\\\"easeInOut\\\", \\\"easeInOut\\\", \\\"easeOut\\\", \\\"easeOut\\\"],\\n    },\\n  },\\n};\\n\\nconst WrenchIcon = forwardRef<WrenchIconHandle, WrenchIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <motion.svg\\n          animate={controls}\\n          fill=\\\"none\\\"\\n          height={size}\\n          initial=\\\"normal\\\"\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          style={{ transformOrigin: \\\"90% 10%\\\", transformBox: \\\"fill-box\\\" }}\\n          variants={ICON_VARIANTS}\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <path d=\\\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\\\" />\\n        </motion.svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nWrenchIcon.displayName = \\\"WrenchIcon\\\";\\n\\nexport { WrenchIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/x.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"x\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"x.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface XIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface XIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n  },\\n};\\n\\nconst XIcon = forwardRef<XIconHandle, XIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M18 6 6 18\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={controls}\\n            d=\\\"m6 6 12 12\\\"\\n            transition={{ delay: 0.2 }}\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nXIcon.displayName = \\\"XIcon\\\";\\n\\nexport { XIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/youtube.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"youtube\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"youtube.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface YoutubeIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface YoutubeIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst TRIANGLE_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    pathOffset: 0,\\n    transition: {\\n      duration: 0.4,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    pathOffset: [1, 0],\\n    transition: {\\n      duration: 0.6,\\n      ease: \\\"linear\\\",\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst YoutubeIcon = forwardRef<YoutubeIconHandle, YoutubeIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const pathControls = useAnimation();\\n    const triangleControls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => {\\n          pathControls.start(\\\"animate\\\");\\n          triangleControls.start(\\\"animate\\\");\\n        },\\n        stopAnimation: () => {\\n          pathControls.start(\\\"normal\\\");\\n          triangleControls.start(\\\"normal\\\");\\n        },\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          pathControls.start(\\\"animate\\\");\\n          triangleControls.start(\\\"animate\\\");\\n        }\\n      },\\n      [onMouseEnter, pathControls, triangleControls]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          pathControls.start(\\\"normal\\\");\\n          triangleControls.start(\\\"normal\\\");\\n        }\\n      },\\n      [pathControls, triangleControls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={pathControls}\\n            d=\\\"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17\\\"\\n            initial=\\\"normal\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n          <motion.path\\n            animate={triangleControls}\\n            d=\\\"M10 15l5-3-5-3z\\\"\\n            initial=\\\"normal\\\"\\n            variants={TRIANGLE_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nYoutubeIcon.displayName = \\\"YoutubeIcon\\\";\\n\\nexport { YoutubeIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/zap-off.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"zap-off\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"zap-off.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ZapOffIconHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ZapOffIconProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ZapOffIcon = forwardRef<ZapOffIconHandle, ZapOffIconProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    const PATHS = [\\n      \\\"M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317\\\",\\n      \\\"M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773\\\",\\n      \\\"M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643\\\",\\n      \\\"m2 2 20 20\\\",\\n    ];\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          {PATHS.map((d, i) => (\\n            <motion.path\\n              animate={controls}\\n              custom={i * 0.15}\\n              d={d}\\n              key={i}\\n              variants={PATH_VARIANTS}\\n            />\\n          ))}\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nZapOffIcon.displayName = \\\"ZapOffIcon\\\";\\n\\nexport { ZapOffIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "public/r/zap.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry-item.json\",\n  \"name\": \"zap\",\n  \"type\": \"registry:ui\",\n  \"registryDependencies\": [],\n  \"dependencies\": [\"motion\"],\n  \"devDependencies\": [],\n  \"files\": [\n    {\n      \"path\": \"zap.tsx\",\n      \"content\": \"\\\"use client\\\";\\n\\nimport type { Variants } from \\\"motion/react\\\";\\nimport { motion, useAnimation } from \\\"motion/react\\\";\\nimport type { HTMLAttributes } from \\\"react\\\";\\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \\\"react\\\";\\n\\nimport { cn } from \\\"@/lib/utils\\\";\\n\\nexport interface ZapHandle {\\n  startAnimation: () => void;\\n  stopAnimation: () => void;\\n}\\n\\ninterface ZapProps extends HTMLAttributes<HTMLDivElement> {\\n  size?: number;\\n}\\n\\nconst PATH_VARIANTS: Variants = {\\n  normal: {\\n    opacity: 1,\\n    pathLength: 1,\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n  animate: {\\n    opacity: [0, 1],\\n    pathLength: [0, 1],\\n    transition: {\\n      duration: 0.6,\\n      opacity: { duration: 0.1 },\\n    },\\n  },\\n};\\n\\nconst ZapIcon = forwardRef<ZapHandle, ZapProps>(\\n  ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\\n    const controls = useAnimation();\\n    const isControlledRef = useRef(false);\\n\\n    useImperativeHandle(ref, () => {\\n      isControlledRef.current = true;\\n\\n      return {\\n        startAnimation: () => controls.start(\\\"animate\\\"),\\n        stopAnimation: () => controls.start(\\\"normal\\\"),\\n      };\\n    });\\n\\n    const handleMouseEnter = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseEnter?.(e);\\n        } else {\\n          controls.start(\\\"animate\\\");\\n        }\\n      },\\n      [controls, onMouseEnter]\\n    );\\n\\n    const handleMouseLeave = useCallback(\\n      (e: React.MouseEvent<HTMLDivElement>) => {\\n        if (isControlledRef.current) {\\n          onMouseLeave?.(e);\\n        } else {\\n          controls.start(\\\"normal\\\");\\n        }\\n      },\\n      [controls, onMouseLeave]\\n    );\\n\\n    return (\\n      <div\\n        className={cn(className)}\\n        onMouseEnter={handleMouseEnter}\\n        onMouseLeave={handleMouseLeave}\\n        {...props}\\n      >\\n        <svg\\n          fill=\\\"none\\\"\\n          height={size}\\n          stroke=\\\"currentColor\\\"\\n          strokeLinecap=\\\"round\\\"\\n          strokeLinejoin=\\\"round\\\"\\n          strokeWidth=\\\"2\\\"\\n          viewBox=\\\"0 0 24 24\\\"\\n          width={size}\\n          xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n        >\\n          <motion.path\\n            animate={controls}\\n            d=\\\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\\\"\\n            variants={PATH_VARIANTS}\\n          />\\n        </svg>\\n      </div>\\n    );\\n  }\\n);\\n\\nZapIcon.displayName = \\\"ZapIcon\\\";\\n\\nexport { ZapIcon };\\n\",\n      \"type\": \"registry:ui\"\n    }\n  ]\n}\n"
  },
  {
    "path": "registry.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema/registry.json\",\n  \"name\": \"lucide-animated\",\n  \"homepage\": \"https://lucide-animated.com\",\n  \"items\": [\n    {\n      \"name\": \"a-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"a-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"a-arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"a-arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"accessibility\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"accessibility.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"activity\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"activity.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"air-vent\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"air-vent.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"airplane\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"airplane.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"alarm-clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"alarm-clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-center\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-center.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ambulance\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ambulance.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"angry\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"angry.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"annoyed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"annoyed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"archive\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"archive.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-down-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-down-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-left-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-left-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-right-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-right-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-up-dash\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-up-dash.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-big-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-big-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-0-1\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-0-1.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-1-0\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-1-0.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-a-z\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-a-z.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down-z-a\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down-z-a.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"at-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"at-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"attach-file\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"attach-file.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"audio-lines\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"audio-lines.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-alert\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"badge-alert.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"badge-percent\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"badge-percent.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ban\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ban.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"banana\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"banana.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-full\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-full.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-low\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-low.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-medium\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-medium.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bell\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bell.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"blocks\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"blocks.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-connected\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-connected.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth-searching\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth-searching.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bluetooth\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bluetooth.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bold\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bold.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bone\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bone.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"book-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"book-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bookmark\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bookmark.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bot-message-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bot-message-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"boxes\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"boxes.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"brain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"brain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-check-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-check-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"calendar-days\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"calendar-days.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cast\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cast.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cctv\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cctv.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-bar-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-bar-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-bar-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-column-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-column-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-column-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-column-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-no-axes-column-decreasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-no-axes-column-decreasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-no-axes-column-increasing\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-no-axes-column-increasing.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-pie\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-pie.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-scatter\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-scatter.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chart-spline\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chart-spline.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"check-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"check-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-first\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-first.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-down-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-down-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-left-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-left-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-right-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-right-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chevrons-up-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chevrons-up-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chrome\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chrome.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-dollar-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-dollar-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"circle-help\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"circle-help.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clipboard-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clipboard-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-lightning\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-lightning.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-rain-wind\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-rain-wind.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-rain\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-rain.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-snow\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-snow.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-sun\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-sun.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cloud-upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cloud-upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"coffee\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"coffee.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cup-soda\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cup-soda.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"compass\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"compass.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"connect\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"connect.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"construction\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"construction.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"contrast\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"contrast.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"copy\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"copy.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cpu\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cpu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cursor-click\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cursor-click.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"delete\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"delete.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"discord\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"discord.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dollar-sign\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"dollar-sign.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"downvote\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"downvote.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"dribbble\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"dribbble.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"droplet\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"droplet.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"drum\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"drum.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"earth\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"earth.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"euro\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"euro.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ev-charger\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ev-charger.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"expand\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"expand.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"eye-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"eye-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"facebook\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"facebook.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"figma\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"figma.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-chart-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-chart-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-check-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-check-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-pen-line\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-pen-line.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-stack\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-stack.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"file-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"file-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"fingerprint\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"fingerprint.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"fish-symbol\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"fish-symbol.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"flame\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"flame.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"flask\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"flask.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folders\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folders.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"frame\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"frame.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"frown\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"frown.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-horizontal-end\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-horizontal-end.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-thumbnails\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-thumbnails.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gallery-vertical-end\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gallery-vertical-end.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gauge\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gauge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"georgian-lari\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"georgian-lari.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-commit-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-commit-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-commit-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-commit-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-merge\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-merge.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"github\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"github.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip-vertical\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip-vertical.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"grip\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"grip.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-coins\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-coins.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hard-drive-download\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hard-drive-download.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hard-drive-upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hard-drive-upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"history\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"history.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"home\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"home.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"id-card\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"id-card.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"indian-rupee\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"indian-rupee.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"instagram\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"instagram.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"italic\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"italic.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"japanese-yen\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"japanese-yen.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key-circle\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key-circle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"key\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"key.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"keyboard\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"keyboard.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"languages\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"languages.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"laptop-minimal-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"laptop-minimal-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"laugh\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"laugh.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"layers\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"layers.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"layout-panel-top\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"layout-panel-top.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"link\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"link.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"linkedin\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"linkedin.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"loader-pinwheel\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"loader-pinwheel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-keyhole-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-keyhole-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-keyhole\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-keyhole.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"lock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"lock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"logout\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"logout.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mail-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mail-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-check-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-check-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-house\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-house.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-minus-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-minus-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-plus-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-plus-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin-x-inside\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin-x-inside.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"map-pin\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"map-pin.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"maximize-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"maximize-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"maximize\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"maximize.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meh\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"meh.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"menu\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"menu.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-more\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-more.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-circle-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-circle-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-dashed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-dashed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-more\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-more.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"minimize\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"minimize.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"monitor-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"monitor-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"moon\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"moon.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"nfc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"nfc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-left-close\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-left-close.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-left-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-left-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"panel-right-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"panel-right-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"party-popper\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"party-popper.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pause\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pause.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pen-tool\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pen-tool.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"philippine-peso\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"philippine-peso.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"play\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"play.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"plug-zap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"plug-zap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pound-sterling\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pound-sterling.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rabbit\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rabbit.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio-tower\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"radio-tower.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"radio\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"radio.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"redo-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"redo-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"redo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"redo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-ccw-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-ccw-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-ccw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-ccw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-cw-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-cw-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"refresh-cw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"refresh-cw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rocket\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rocket.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rocking-chair\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rocking-chair.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"roller-coaster\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"roller-coaster.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rotate-ccw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rotate-ccw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"rotate-cw\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"rotate-cw.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"route\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"route.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"russian-ruble\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"russian-ruble.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"saudi-riyal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"saudi-riyal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scan-face\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"scan-face.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"scan-text\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"scan-text.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"search\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"search.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"settings\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"settings.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sliders-horizontal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sliders-horizontal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shield-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shield-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"ship\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"ship.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shower-head\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shower-head.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"shrink\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"shrink.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smartphone-charging\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smartphone-charging.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smartphone-nfc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smartphone-nfc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smile-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smile-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"smile\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"smile.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"snowflake\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"snowflake.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sparkles\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sparkles.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-activity\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-activity.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-arrow-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-arrow-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-chevron-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-chevron-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-pen\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-pen.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"square-stack\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"square-stack.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"stethoscope\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"stethoscope.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-dim\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-dim.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-medium\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-medium.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun-moon\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun-moon.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sun\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sun.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"sunset\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"sunset.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"swiss-franc\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"swiss-franc.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"syringe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"syringe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"telescope\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"telescope.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"terminal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"terminal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"thermometer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"thermometer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"timer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"timer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"tornado\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"tornado.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"train-track\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"train-track.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-up-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-up-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"trending-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"trending-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"turkish-lira\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"turkish-lira.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"twitch\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"twitch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"twitter\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"twitter.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"underline\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"underline.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"undo-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"undo-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"undo\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"undo.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"upload\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"upload.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"upvote\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"upvote.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-round-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-round-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user-round-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user-round-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"user\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"user.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"users\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"users.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"vibrate\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"vibrate.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"volume\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"volume.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"washing-machine\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"washing-machine.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waves-ladder\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waves-ladder.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waves\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waves.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"waypoints\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"waypoints.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"webhook\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"webhook.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wifi\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wifi.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wind-arrow-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wind-arrow-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wind\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wind.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"workflow\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"workflow.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"youtube\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"youtube.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hourglass\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hourglass.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-branch\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-branch.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-compare-arrows\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-compare-arrows.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-compare\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-compare.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-fork\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-fork.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-graph\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-graph.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-closed\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request-closed.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-create\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"git-pull-request-create.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gitlab\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gitlab.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"feather\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"feather.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-down-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-down-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-down-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-down-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-left-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-left-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-left-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-left-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-right-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-right-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-right-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-right-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-up-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-up-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"corner-up-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"corner-up-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"bell-electric\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"bell-electric.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"airplay\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"airplay.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"atom\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"atom.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"zap-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"zap-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"zap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"zap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-archive\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-archive.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-clock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-clock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-code\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-code.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-cog\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-cog.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-dot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-dot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-down\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-down.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-git-2\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-git-2.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-git\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-git.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-heart\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-heart.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-input\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-input.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-kanban\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-kanban.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-key\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-key.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-lock\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-lock.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-minus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-minus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-open\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-open.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-output\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-output.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-root\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-root.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-sync\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-sync.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-tree\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-tree.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-up\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-up.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"folder-x\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"folder-x.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-charging\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-charging.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-plus\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-plus.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"battery-warning\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"battery-warning.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-left\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-left.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"align-right\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"align-right.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"eye\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"eye.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"box\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"box.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"cooking-pot\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"cooking-pot.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wrench\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wrench.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-fist\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-fist.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-grab\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-grab.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-helping\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-helping.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand-metal\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand-metal.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hand\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hand.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart-handshake\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart-handshake.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mic-off\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mic-off.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mic\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mic.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"mailbox\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"mailbox.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"truck\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"truck.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"graduation-cap\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"graduation-cap.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"wifi-low\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"wifi-low.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-bishop\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-bishop.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-king\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-king.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-knight\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-knight.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-pawn\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-pawn.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"chess-bishop\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"chess-bishop.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"send\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"send.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"heart-pulse\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"heart-pulse.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"message-square-check\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"message-square-check.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"gavel\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"gavel.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"hammer\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"hammer.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"axe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"axe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"pickaxe\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"pickaxe.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"disc-3\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"disc-3.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    },\n    {\n      \"name\": \"database-backup\",\n      \"type\": \"registry:ui\",\n      \"registryDependencies\": [],\n      \"dependencies\": [\"motion\"],\n      \"devDependencies\": [],\n      \"files\": [\n        {\n          \"path\": \"database-backup.tsx\",\n          \"type\": \"registry:ui\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "scripts/check-duplicates.ts",
    "content": "import { ICON_LIST } from \"@/icons\";\n\ntype DuplicateEntry = {\n  name: string;\n  indexes: number[];\n};\n\ntype DuplicateReport = {\n  duplicateNames: DuplicateEntry[];\n  totalDuplicates: number;\n};\n\nconst checkDuplicates = (): DuplicateReport => {\n  const nameIndexes = new Map<string, number[]>();\n\n  for (let i = 0; i < ICON_LIST.length; i++) {\n    const item = ICON_LIST[i];\n\n    const indexes = nameIndexes.get(item.name) || [];\n    indexes.push(i);\n    nameIndexes.set(item.name, indexes);\n  }\n\n  const duplicateNames: DuplicateEntry[] = [];\n  for (const [name, indexes] of nameIndexes) {\n    if (indexes.length > 1) {\n      duplicateNames.push({ name, indexes });\n    }\n  }\n\n  return {\n    duplicateNames,\n    totalDuplicates: duplicateNames.length,\n  };\n};\n\nconst printReport = () => {\n  console.log(\"🔍 Checking for duplicates in ICON_LIST...\");\n  console.log(`   Total icons: ${ICON_LIST.length}`);\n\n  const report = checkDuplicates();\n\n  if (report.duplicateNames.length > 0) {\n    console.log(\"❌ DUPLICATE NAMES FOUND:\");\n    for (const { name, indexes } of report.duplicateNames) {\n      console.log(`   name: \"${name}\" - appears ${indexes.length} times`);\n    }\n    console.log(\"\");\n    process.exit(1);\n  } else {\n    console.log(\"✅ No duplicate names found\\n\");\n  }\n};\n\nprintReport();\n"
  },
  {
    "path": "scripts/check-icon-style.ts",
    "content": "import { readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\ninterface Issue {\n  file: string;\n  line: number;\n  name: string;\n  suggestion: string;\n}\n\nconst UPPER_CASE_RE = /^[A-Z][A-Z0-9_]*$/;\nconst ICON_COMPONENT_RE = /Icon$/;\nconst ICON_HANDLE_RE = /IconHandle$/;\nconst ICON_PROPS_RE = /IconProps$/;\n\nconst toUpperSnakeCase = (name: string): string =>\n  name\n    .replace(/([a-z])([A-Z])/g, \"$1_$2\")\n    .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1_$2\")\n    .toUpperCase();\n\nconst isExempt = (name: string): boolean =>\n  ICON_COMPONENT_RE.test(name) ||\n  ICON_HANDLE_RE.test(name) ||\n  ICON_PROPS_RE.test(name);\n\nconst findConstDeclarations = (\n  content: string\n): Array<{ name: string; line: number }> => {\n  const results: Array<{ name: string; line: number }> = [];\n  const lines = content.split(\"\\n\");\n\n  for (let i = 0; i < lines.length; i++) {\n    const line = lines[i];\n\n    const constMatch = line.match(\n      // biome-ignore lint/performance/useTopLevelRegex: ignore\n      /^(?:export\\s+)?const\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?::\\s*[^=]+)?\\s*=/\n    );\n\n    if (constMatch) {\n      results.push({ name: constMatch[1], line: i + 1 });\n    }\n  }\n\n  return results;\n};\n\nconst checkFile = (filePath: string, fileName: string): Issue[] => {\n  const content = readFileSync(filePath, \"utf-8\");\n  const issues: Issue[] = [];\n\n  const declarations = findConstDeclarations(content);\n\n  for (const { name, line } of declarations) {\n    if (isExempt(name)) continue;\n    if (UPPER_CASE_RE.test(name)) continue;\n\n    issues.push({\n      file: fileName,\n      line,\n      name,\n      suggestion: toUpperSnakeCase(name),\n    });\n  }\n\n  return issues;\n};\n\nconst fixFile = (filePath: string, issues: Issue[]): boolean => {\n  if (issues.length === 0) return false;\n\n  let content = readFileSync(filePath, \"utf-8\");\n\n  for (const issue of issues) {\n    const wordBoundaryRe = new RegExp(`\\\\b${issue.name}\\\\b`, \"g\");\n    content = content.replace(wordBoundaryRe, issue.suggestion);\n  }\n\n  writeFileSync(filePath, content, \"utf-8\");\n  return true;\n};\n\nconst run = () => {\n  const shouldFix = process.argv.includes(\"--fix\");\n  const iconsDir = join(process.cwd(), \"icons\");\n  const files = readdirSync(iconsDir).filter((f) => f.endsWith(\".tsx\"));\n\n  console.log(\"🔍 Checking icon style (UPPER_CASE constants)...\\n\");\n\n  const allIssues: Issue[] = [];\n\n  for (const file of files) {\n    const filePath = join(iconsDir, file);\n    const issues = checkFile(filePath, file);\n\n    if (issues.length > 0) {\n      if (shouldFix) {\n        fixFile(filePath, issues);\n        console.log(`  ✅ Fixed: icons/${file}`);\n        for (const issue of issues) {\n          console.log(`     ${issue.name} → ${issue.suggestion}`);\n        }\n      } else {\n        allIssues.push(...issues);\n      }\n    }\n  }\n\n  if (!shouldFix && allIssues.length > 0) {\n    console.log(\"❌ Found non-UPPER_CASE constants:\\n\");\n    for (const issue of allIssues) {\n      console.log(\n        `  icons/${issue.file}:${issue.line} - \"${issue.name}\" should be \"${issue.suggestion}\"`\n      );\n    }\n    console.log(\"\\n💡 Run with --fix to auto-fix these issues.\\n\");\n    process.exit(1);\n  }\n\n  if (shouldFix) {\n    console.log(\"\\n✅ Fixed all files.\");\n  } else {\n    console.log(\"✅ All constants are UPPER_CASE.\\n\");\n  }\n};\n\nrun();\n"
  },
  {
    "path": "scripts/check-imports.ts",
    "content": "import { readdirSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\ninterface CheckResult {\n  missingImports: string[];\n  missingInList: string[];\n  totalIconFiles: number;\n  totalImports: number;\n}\n\nconst getAllIconFiles = (): string[] => {\n  const iconsDir = join(process.cwd(), \"icons\");\n  const files = readdirSync(iconsDir);\n\n  return files\n    .filter((file) => file.endsWith(\".tsx\"))\n    .map((file) => file.replace(\".tsx\", \"\"))\n    .sort();\n};\n\nconst getImportsFromIndex = (): Set<string> => {\n  const indexPath = join(process.cwd(), \"icons\", \"index.ts\");\n  const content = readFileSync(indexPath, \"utf-8\");\n\n  const imports = new Set<string>();\n\n  const importRegex =\n    /import\\s+{\\s*(\\w+)\\s*}\\s+from\\s+['\"](?:@\\/icons\\/|\\.\\/)([^'\"]+)['\"]/g;\n\n  let match: RegExpExecArray | null = null;\n  // biome-ignore lint/suspicious/noAssignInExpressions: ignore\n  while ((match = importRegex.exec(content)) !== null) {\n    const fileName = match[2];\n    imports.add(fileName);\n  }\n\n  return imports;\n};\n\nconst getIconsUsedInList = (): Set<string> => {\n  const indexPath = join(process.cwd(), \"icons\", \"index.ts\");\n  const content = readFileSync(indexPath, \"utf-8\");\n\n  const iconsInList = new Set<string>();\n\n  const nameRegex = /name:\\s*['\"]([^'\"]+)['\"]/g;\n\n  let match: RegExpExecArray | null = null;\n  // biome-ignore lint/suspicious/noAssignInExpressions: ignore\n  while ((match = nameRegex.exec(content)) !== null) {\n    const name = match[1];\n    iconsInList.add(name);\n  }\n\n  return iconsInList;\n};\n\nconst checkImports = (): CheckResult => {\n  const iconFiles = getAllIconFiles();\n  const imports = getImportsFromIndex();\n  const iconsInList = getIconsUsedInList();\n\n  const missingImports = iconFiles.filter((file) => !imports.has(file));\n\n  const missingInList: string[] = [];\n  for (const importedFile of imports) {\n    if (!iconsInList.has(importedFile)) {\n      missingInList.push(importedFile);\n    }\n  }\n\n  return {\n    missingImports,\n    missingInList,\n    totalIconFiles: iconFiles.length,\n    totalImports: imports.size,\n  };\n};\n\nconst printReport = () => {\n  console.log(\"🔍 Checking icon imports...\");\n\n  const result = checkImports();\n\n  console.log(`   Total icon files (.tsx): ${result.totalIconFiles}`);\n  console.log(`   Total imports in index.ts: ${result.totalImports}`);\n\n  if (result.missingImports.length > 0) {\n    console.log(\"❌ MISSING IMPORTS:\");\n    result.missingImports.forEach((file) => {\n      console.log(`  - icons/${file}.tsx`);\n    });\n    console.log(\"\");\n    process.exit(1);\n  } else {\n    console.log(\"✅ All icon files are imported\");\n  }\n};\n\nprintReport();\n"
  },
  {
    "path": "scripts/download-fonts.js",
    "content": "#!/usr/bin/env node\n\n/**\n * Downloads proprietary fonts from Vercel Blob Storage during build time.\n * This keeps font files out of the public repository while using them in production.\n */\n\nconst https = require(\"node:https\");\nconst http = require(\"node:http\");\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\n\nconst fontsDir = path.join(__dirname, \"..\", \"fonts\");\n\n// Ensure fonts directory exists\nif (!fs.existsSync(fontsDir)) {\n  fs.mkdirSync(fontsDir, { recursive: true });\n}\n\nconst fonts = [\n  {\n    url: process.env.FONT_DOWNLOAD_URL_GT_CINETYPE,\n    filename: \"GT-Cinetype-Regular.woff\",\n    name: \"GT Cinetype Regular\",\n  },\n  {\n    url: process.env.FONT_DOWNLOAD_URL_ANDALE_MONO,\n    filename: \"ANDALEMO.woff\",\n    name: \"Andale Mono\",\n  },\n];\n\nfunction downloadFont(url, filepath, name) {\n  return new Promise((resolve, reject) => {\n    // Skip if no URL provided\n    if (!url) {\n      console.log(\n        `⚠️  No download URL for ${name}, checking if file exists locally...`\n      );\n\n      if (fs.existsSync(filepath)) {\n        console.log(`✓ ${name} found locally`);\n        return resolve();\n      }\n\n      console.log(`⚠️  ${name} not found, build will use fallback fonts`);\n      return resolve();\n    }\n\n    // Check if file already exists\n    if (fs.existsSync(filepath)) {\n      console.log(`✓ ${name} already exists locally, skipping download`);\n      return resolve();\n    }\n\n    console.log(`⬇️  Downloading ${name} from Vercel Blob...`);\n\n    const client = url.startsWith(\"https\") ? https : http;\n\n    client\n      .get(url, (response) => {\n        // Handle redirects\n        if (response.statusCode === 302 || response.statusCode === 301) {\n          return downloadFont(response.headers.location, filepath, name)\n            .then(resolve)\n            .catch(reject);\n        }\n\n        if (response.statusCode !== 200) {\n          console.log(\n            `⚠️  Failed to download ${name} (${response.statusCode}), continuing with local version if available`\n          );\n          return resolve();\n        }\n\n        const fileStream = fs.createWriteStream(filepath);\n        response.pipe(fileStream);\n\n        fileStream.on(\"finish\", () => {\n          fileStream.close();\n          console.log(`✓ ${name} downloaded successfully`);\n          resolve();\n        });\n\n        fileStream.on(\"error\", (err) => {\n          fs.unlink(filepath);\n          console.log(`⚠️  Error downloading ${name}:`, err.message);\n          resolve(); // Don't fail the build\n        });\n      })\n      .on(\"error\", (err) => {\n        console.log(`⚠️  Network error downloading ${name}:`, err.message);\n        resolve(); // Don't fail the build\n      });\n  });\n}\n\nasync function downloadAllFonts() {\n  console.log(\"\\n🔤 Checking fonts...\\n\");\n\n  try {\n    await Promise.all(\n      fonts.map((font) =>\n        downloadFont(font.url, path.join(fontsDir, font.filename), font.name)\n      )\n    );\n\n    console.log(\"\\n✅ Font setup complete!\\n\");\n  } catch (error) {\n    console.error(\"\\n⚠️  Font download encountered issues:\", error.message);\n    console.log(\"Build will continue with available fonts\\n\");\n  }\n}\n\ndownloadAllFonts();\n"
  },
  {
    "path": "scripts/registry-build.ts",
    "content": "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { SITE } from \"../constants\";\nimport { components } from \"./registry-components\";\nimport type { Schema } from \"./registry-schema\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst registryComponents = path.join(__dirname, \"../public/r\");\nconst registryIndexPath = path.join(__dirname, \"../public/r/registry.json\");\nconst registryRootPath = path.join(__dirname, \"../registry.json\");\n\nif (!fs.existsSync(registryComponents)) {\n  fs.mkdirSync(registryComponents, { recursive: true });\n}\n\nconsole.log(\"\\n🔨 Building registry components...\\n\");\n\nconst registryItems: Schema[] = [];\n\nfor (const component of components) {\n  const content = fs.readFileSync(component.path, \"utf8\");\n\n  const schema: Schema = {\n    $schema: \"https://ui.shadcn.com/schema/registry-item.json\",\n    name: component.name,\n    type: \"registry:ui\",\n    registryDependencies: component.registryDependencies || [],\n    dependencies: component.dependencies || [],\n    devDependencies: component.devDependencies || [],\n    files: [\n      {\n        path: `${component.name}.tsx`,\n        content,\n        type: \"registry:ui\",\n      },\n    ],\n  };\n\n  if (component.title) schema.title = component.title;\n  if (component.description) schema.description = component.description;\n  if (component.author) schema.author = component.author;\n  if (component.tailwind) schema.tailwind = component.tailwind;\n  if (component.cssVars) schema.cssVars = component.cssVars;\n  if (component.css) schema.css = component.css;\n  if (component.envVars) schema.envVars = component.envVars;\n  if (component.docs) schema.docs = component.docs;\n  if (component.categories) schema.categories = component.categories;\n  if (component.meta) schema.meta = component.meta;\n\n  fs.writeFileSync(\n    path.join(registryComponents, `${component.name}.json`),\n    JSON.stringify(schema, null, 2)\n  );\n\n  const { files, $schema: _itemSchema, ...schemaWithoutContent } = schema;\n  registryItems.push({\n    ...schemaWithoutContent,\n    files: files.map((file) => {\n      const { content, ...fileWithoutContent } = file;\n      return fileWithoutContent;\n    }),\n  });\n}\n\nconst registryIndex = {\n  $schema: \"https://ui.shadcn.com/schema/registry.json\",\n  name: SITE.NAME,\n  homepage: SITE.URL,\n  items: registryItems,\n};\n\nconst registryIndexJson = JSON.stringify(registryIndex, null, 2);\nfs.writeFileSync(registryIndexPath, registryIndexJson);\nfs.writeFileSync(registryRootPath, registryIndexJson);\n\nconsole.log(`✅ Built ${components.length} registry components`);\nconsole.log(\"✅ Updated registry.json\\n\");\n"
  },
  {
    "path": "scripts/registry-components.ts",
    "content": "import path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { Schema } from \"./registry-schema\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\ntype ComponentDefinition = Partial<\n  Pick<\n    Schema,\n    | \"dependencies\"\n    | \"devDependencies\"\n    | \"registryDependencies\"\n    | \"cssVars\"\n    | \"tailwind\"\n    | \"title\"\n    | \"description\"\n    | \"author\"\n    | \"css\"\n    | \"envVars\"\n    | \"docs\"\n    | \"categories\"\n    | \"meta\"\n  >\n> & {\n  name: string;\n  path: string;\n};\n\nexport const components: ComponentDefinition[] = [\n  {\n    name: \"a-arrow-down\",\n    path: path.join(__dirname, \"../icons/a-arrow-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"a-arrow-up\",\n    path: path.join(__dirname, \"../icons/a-arrow-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"accessibility\",\n    path: path.join(__dirname, \"../icons/accessibility.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"activity\",\n    path: path.join(__dirname, \"../icons/activity.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"air-vent\",\n    path: path.join(__dirname, \"../icons/air-vent.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"airplane\",\n    path: path.join(__dirname, \"../icons/airplane.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"alarm-clock\",\n    path: path.join(__dirname, \"../icons/alarm-clock.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"align-center\",\n    path: path.join(__dirname, \"../icons/align-center.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"align-horizontal\",\n    path: path.join(__dirname, \"../icons/align-horizontal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"align-vertical\",\n    path: path.join(__dirname, \"../icons/align-vertical.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"ambulance\",\n    path: path.join(__dirname, \"../icons/ambulance.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"angry\",\n    path: path.join(__dirname, \"../icons/angry.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"annoyed\",\n    path: path.join(__dirname, \"../icons/annoyed.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"archive\",\n    path: path.join(__dirname, \"../icons/archive.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-down-dash\",\n    path: path.join(__dirname, \"../icons/arrow-big-down-dash.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-down\",\n    path: path.join(__dirname, \"../icons/arrow-big-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-left-dash\",\n    path: path.join(__dirname, \"../icons/arrow-big-left-dash.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-left\",\n    path: path.join(__dirname, \"../icons/arrow-big-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-right-dash\",\n    path: path.join(__dirname, \"../icons/arrow-big-right-dash.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-right\",\n    path: path.join(__dirname, \"../icons/arrow-big-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-up-dash\",\n    path: path.join(__dirname, \"../icons/arrow-big-up-dash.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-big-up\",\n    path: path.join(__dirname, \"../icons/arrow-big-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-0-1\",\n    path: path.join(__dirname, \"../icons/arrow-down-0-1.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-1-0\",\n    path: path.join(__dirname, \"../icons/arrow-down-1-0.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-a-z\",\n    path: path.join(__dirname, \"../icons/arrow-down-a-z.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-left\",\n    path: path.join(__dirname, \"../icons/arrow-down-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-right\",\n    path: path.join(__dirname, \"../icons/arrow-down-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-up-left\",\n    path: path.join(__dirname, \"../icons/arrow-up-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-up-right\",\n    path: path.join(__dirname, \"../icons/arrow-up-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down-z-a\",\n    path: path.join(__dirname, \"../icons/arrow-down-z-a.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-down\",\n    path: path.join(__dirname, \"../icons/arrow-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-left\",\n    path: path.join(__dirname, \"../icons/arrow-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-right\",\n    path: path.join(__dirname, \"../icons/arrow-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"arrow-up\",\n    path: path.join(__dirname, \"../icons/arrow-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"at-sign\",\n    path: path.join(__dirname, \"../icons/at-sign.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"attach-file\",\n    path: path.join(__dirname, \"../icons/attach-file.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"audio-lines\",\n    path: path.join(__dirname, \"../icons/audio-lines.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"badge-alert\",\n    path: path.join(__dirname, \"../icons/badge-alert.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"badge-percent\",\n    path: path.join(__dirname, \"../icons/badge-percent.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"ban\",\n    path: path.join(__dirname, \"../icons/ban.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"banana\",\n    path: path.join(__dirname, \"../icons/banana.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-full\",\n    path: path.join(__dirname, \"../icons/battery-full.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-low\",\n    path: path.join(__dirname, \"../icons/battery-low.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-medium\",\n    path: path.join(__dirname, \"../icons/battery-medium.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bell\",\n    path: path.join(__dirname, \"../icons/bell.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"blocks\",\n    path: path.join(__dirname, \"../icons/blocks.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bluetooth-connected\",\n    path: path.join(__dirname, \"../icons/bluetooth-connected.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bluetooth-off\",\n    path: path.join(__dirname, \"../icons/bluetooth-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bluetooth-searching\",\n    path: path.join(__dirname, \"../icons/bluetooth-searching.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bluetooth\",\n    path: path.join(__dirname, \"../icons/bluetooth.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bold\",\n    path: path.join(__dirname, \"../icons/bold.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bone\",\n    path: path.join(__dirname, \"../icons/bone.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"book-text\",\n    path: path.join(__dirname, \"../icons/book-text.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bookmark-check\",\n    path: path.join(__dirname, \"../icons/bookmark-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bookmark-minus\",\n    path: path.join(__dirname, \"../icons/bookmark-minus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bookmark-plus\",\n    path: path.join(__dirname, \"../icons/bookmark-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bookmark-x\",\n    path: path.join(__dirname, \"../icons/bookmark-x.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bookmark\",\n    path: path.join(__dirname, \"../icons/bookmark.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bot-message-square\",\n    path: path.join(__dirname, \"../icons/bot-message-square.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bot\",\n    path: path.join(__dirname, \"../icons/bot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"boxes\",\n    path: path.join(__dirname, \"../icons/boxes.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"brain\",\n    path: path.join(__dirname, \"../icons/brain.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"calendar-check-2\",\n    path: path.join(__dirname, \"../icons/calendar-check-2.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"calendar-check\",\n    path: path.join(__dirname, \"../icons/calendar-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"calendar-cog\",\n    path: path.join(__dirname, \"../icons/calendar-cog.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"calendar-days\",\n    path: path.join(__dirname, \"../icons/calendar-days.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cart\",\n    path: path.join(__dirname, \"../icons/cart.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cast\",\n    path: path.join(__dirname, \"../icons/cast.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cctv\",\n    path: path.join(__dirname, \"../icons/cctv.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-bar-decreasing\",\n    path: path.join(__dirname, \"../icons/chart-bar-decreasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-bar-increasing\",\n    path: path.join(__dirname, \"../icons/chart-bar-increasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-column-decreasing\",\n    path: path.join(__dirname, \"../icons/chart-column-decreasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-column-increasing\",\n    path: path.join(__dirname, \"../icons/chart-column-increasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-line\",\n    path: path.join(__dirname, \"../icons/chart-line.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-no-axes-column-decreasing\",\n    path: path.join(__dirname, \"../icons/chart-no-axes-column-decreasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-no-axes-column-increasing\",\n    path: path.join(__dirname, \"../icons/chart-no-axes-column-increasing.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-pie\",\n    path: path.join(__dirname, \"../icons/chart-pie.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-scatter\",\n    path: path.join(__dirname, \"../icons/chart-scatter.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chart-spline\",\n    path: path.join(__dirname, \"../icons/chart-spline.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"check-check\",\n    path: path.join(__dirname, \"../icons/check-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"check\",\n    path: path.join(__dirname, \"../icons/check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevron-down\",\n    path: path.join(__dirname, \"../icons/chevron-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevron-first\",\n    path: path.join(__dirname, \"../icons/chevron-first.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevron-left\",\n    path: path.join(__dirname, \"../icons/chevron-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevron-right\",\n    path: path.join(__dirname, \"../icons/chevron-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevron-up\",\n    path: path.join(__dirname, \"../icons/chevron-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevrons-down-up\",\n    path: path.join(__dirname, \"../icons/chevrons-down-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevrons-left-right\",\n    path: path.join(__dirname, \"../icons/chevrons-left-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevrons-right-left\",\n    path: path.join(__dirname, \"../icons/chevrons-right-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chevrons-up-down\",\n    path: path.join(__dirname, \"../icons/chevrons-up-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chrome\",\n    path: path.join(__dirname, \"../icons/chrome.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-check\",\n    path: path.join(__dirname, \"../icons/circle-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-chevron-down\",\n    path: path.join(__dirname, \"../icons/circle-chevron-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-chevron-left\",\n    path: path.join(__dirname, \"../icons/circle-chevron-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-chevron-right\",\n    path: path.join(__dirname, \"../icons/circle-chevron-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-chevron-up\",\n    path: path.join(__dirname, \"../icons/circle-chevron-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-dashed\",\n    path: path.join(__dirname, \"../icons/circle-dashed.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-dollar-sign\",\n    path: path.join(__dirname, \"../icons/circle-dollar-sign.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"circle-help\",\n    path: path.join(__dirname, \"../icons/circle-help.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"clap\",\n    path: path.join(__dirname, \"../icons/clap.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"clipboard-check\",\n    path: path.join(__dirname, \"../icons/clipboard-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"clock\",\n    path: path.join(__dirname, \"../icons/clock.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-cog\",\n    path: path.join(__dirname, \"../icons/cloud-cog.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-download\",\n    path: path.join(__dirname, \"../icons/cloud-download.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-lightning\",\n    path: path.join(__dirname, \"../icons/cloud-lightning.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-rain-wind\",\n    path: path.join(__dirname, \"../icons/cloud-rain-wind.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-rain\",\n    path: path.join(__dirname, \"../icons/cloud-rain.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-snow\",\n    path: path.join(__dirname, \"../icons/cloud-snow.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-sun\",\n    path: path.join(__dirname, \"../icons/cloud-sun.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cloud-upload\",\n    path: path.join(__dirname, \"../icons/cloud-upload.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"coffee\",\n    path: path.join(__dirname, \"../icons/coffee.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cup-soda\",\n    path: path.join(__dirname, \"../icons/cup-soda.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cog\",\n    path: path.join(__dirname, \"../icons/cog.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"compass\",\n    path: path.join(__dirname, \"../icons/compass.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"connect\",\n    path: path.join(__dirname, \"../icons/connect.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"construction\",\n    path: path.join(__dirname, \"../icons/construction.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"contrast\",\n    path: path.join(__dirname, \"../icons/contrast.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"copy\",\n    path: path.join(__dirname, \"../icons/copy.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cpu\",\n    path: path.join(__dirname, \"../icons/cpu.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cursor-click\",\n    path: path.join(__dirname, \"../icons/cursor-click.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"delete\",\n    path: path.join(__dirname, \"../icons/delete.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"discord\",\n    path: path.join(__dirname, \"../icons/discord.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"dollar-sign\",\n    path: path.join(__dirname, \"../icons/dollar-sign.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"download\",\n    path: path.join(__dirname, \"../icons/download.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"downvote\",\n    path: path.join(__dirname, \"../icons/downvote.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"dribbble\",\n    path: path.join(__dirname, \"../icons/dribbble.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"droplet\",\n    path: path.join(__dirname, \"../icons/droplet.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"drum\",\n    path: path.join(__dirname, \"../icons/drum.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"earth\",\n    path: path.join(__dirname, \"../icons/earth.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"euro\",\n    path: path.join(__dirname, \"../icons/euro.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"ev-charger\",\n    path: path.join(__dirname, \"../icons/ev-charger.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"expand\",\n    path: path.join(__dirname, \"../icons/expand.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"eye-off\",\n    path: path.join(__dirname, \"../icons/eye-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"facebook\",\n    path: path.join(__dirname, \"../icons/facebook.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"figma\",\n    path: path.join(__dirname, \"../icons/figma.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-chart-line\",\n    path: path.join(__dirname, \"../icons/file-chart-line.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-check-2\",\n    path: path.join(__dirname, \"../icons/file-check-2.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-check\",\n    path: path.join(__dirname, \"../icons/file-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-cog\",\n    path: path.join(__dirname, \"../icons/file-cog.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-pen-line\",\n    path: path.join(__dirname, \"../icons/file-pen-line.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-stack\",\n    path: path.join(__dirname, \"../icons/file-stack.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"file-text\",\n    path: path.join(__dirname, \"../icons/file-text.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"fingerprint\",\n    path: path.join(__dirname, \"../icons/fingerprint.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"fish-symbol\",\n    path: path.join(__dirname, \"../icons/fish-symbol.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"flame\",\n    path: path.join(__dirname, \"../icons/flame.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"flask\",\n    path: path.join(__dirname, \"../icons/flask.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folders\",\n    path: path.join(__dirname, \"../icons/folders.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"frame\",\n    path: path.join(__dirname, \"../icons/frame.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"frown\",\n    path: path.join(__dirname, \"../icons/frown.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gallery-horizontal-end\",\n    path: path.join(__dirname, \"../icons/gallery-horizontal-end.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gallery-thumbnails\",\n    path: path.join(__dirname, \"../icons/gallery-thumbnails.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gallery-vertical-end\",\n    path: path.join(__dirname, \"../icons/gallery-vertical-end.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gauge\",\n    path: path.join(__dirname, \"../icons/gauge.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"georgian-lari\",\n    path: path.join(__dirname, \"../icons/georgian-lari.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-commit-horizontal\",\n    path: path.join(__dirname, \"../icons/git-commit-horizontal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-commit-vertical\",\n    path: path.join(__dirname, \"../icons/git-commit-vertical.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-merge\",\n    path: path.join(__dirname, \"../icons/git-merge.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-pull-request\",\n    path: path.join(__dirname, \"../icons/git-pull-request.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"github\",\n    path: path.join(__dirname, \"../icons/github.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"grip-horizontal\",\n    path: path.join(__dirname, \"../icons/grip-horizontal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"grip-vertical\",\n    path: path.join(__dirname, \"../icons/grip-vertical.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"grip\",\n    path: path.join(__dirname, \"../icons/grip.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-coins\",\n    path: path.join(__dirname, \"../icons/hand-coins.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-heart\",\n    path: path.join(__dirname, \"../icons/hand-heart.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hard-drive-download\",\n    path: path.join(__dirname, \"../icons/hard-drive-download.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hard-drive-upload\",\n    path: path.join(__dirname, \"../icons/hard-drive-upload.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"heart\",\n    path: path.join(__dirname, \"../icons/heart.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"history\",\n    path: path.join(__dirname, \"../icons/history.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"home\",\n    path: path.join(__dirname, \"../icons/home.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"id-card\",\n    path: path.join(__dirname, \"../icons/id-card.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"indian-rupee\",\n    path: path.join(__dirname, \"../icons/indian-rupee.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"instagram\",\n    path: path.join(__dirname, \"../icons/instagram.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"italic\",\n    path: path.join(__dirname, \"../icons/italic.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"japanese-yen\",\n    path: path.join(__dirname, \"../icons/japanese-yen.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"key-circle\",\n    path: path.join(__dirname, \"../icons/key-circle.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"key-square\",\n    path: path.join(__dirname, \"../icons/key-square.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"key\",\n    path: path.join(__dirname, \"../icons/key.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"keyboard\",\n    path: path.join(__dirname, \"../icons/keyboard.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"languages\",\n    path: path.join(__dirname, \"../icons/languages.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"laptop-minimal-check\",\n    path: path.join(__dirname, \"../icons/laptop-minimal-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"laugh\",\n    path: path.join(__dirname, \"../icons/laugh.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"layers\",\n    path: path.join(__dirname, \"../icons/layers.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"layout-panel-top\",\n    path: path.join(__dirname, \"../icons/layout-panel-top.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"link\",\n    path: path.join(__dirname, \"../icons/link.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"linkedin\",\n    path: path.join(__dirname, \"../icons/linkedin.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"loader-pinwheel\",\n    path: path.join(__dirname, \"../icons/loader-pinwheel.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"lock-keyhole-open\",\n    path: path.join(__dirname, \"../icons/lock-keyhole-open.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"lock-keyhole\",\n    path: path.join(__dirname, \"../icons/lock-keyhole.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"lock-open\",\n    path: path.join(__dirname, \"../icons/lock-open.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"lock\",\n    path: path.join(__dirname, \"../icons/lock.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"logout\",\n    path: path.join(__dirname, \"../icons/logout.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"mail-check\",\n    path: path.join(__dirname, \"../icons/mail-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-check-inside\",\n    path: path.join(__dirname, \"../icons/map-pin-check-inside.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-check\",\n    path: path.join(__dirname, \"../icons/map-pin-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-house\",\n    path: path.join(__dirname, \"../icons/map-pin-house.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-minus-inside\",\n    path: path.join(__dirname, \"../icons/map-pin-minus-inside.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-minus\",\n    path: path.join(__dirname, \"../icons/map-pin-minus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-off\",\n    path: path.join(__dirname, \"../icons/map-pin-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-plus-inside\",\n    path: path.join(__dirname, \"../icons/map-pin-plus-inside.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-plus\",\n    path: path.join(__dirname, \"../icons/map-pin-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin-x-inside\",\n    path: path.join(__dirname, \"../icons/map-pin-x-inside.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"map-pin\",\n    path: path.join(__dirname, \"../icons/map-pin.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"maximize-2\",\n    path: path.join(__dirname, \"../icons/maximize-2.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"maximize\",\n    path: path.join(__dirname, \"../icons/maximize.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"meh\",\n    path: path.join(__dirname, \"../icons/meh.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"menu\",\n    path: path.join(__dirname, \"../icons/menu.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle-dashed\",\n    path: path.join(__dirname, \"../icons/message-circle-dashed.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle-more\",\n    path: path.join(__dirname, \"../icons/message-circle-more.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle\",\n    path: path.join(__dirname, \"../icons/message-circle.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle-check\",\n    path: path.join(__dirname, \"../icons/message-circle-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle-plus\",\n    path: path.join(__dirname, \"../icons/message-circle-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-circle-x\",\n    path: path.join(__dirname, \"../icons/message-circle-x.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square-dashed\",\n    path: path.join(__dirname, \"../icons/message-square-dashed.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square-more\",\n    path: path.join(__dirname, \"../icons/message-square-more.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square-plus\",\n    path: path.join(__dirname, \"../icons/message-square-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square-x\",\n    path: path.join(__dirname, \"../icons/message-square-x.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square\",\n    path: path.join(__dirname, \"../icons/message-square.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"minimize\",\n    path: path.join(__dirname, \"../icons/minimize.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"monitor-check\",\n    path: path.join(__dirname, \"../icons/monitor-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"moon\",\n    path: path.join(__dirname, \"../icons/moon.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"nfc\",\n    path: path.join(__dirname, \"../icons/nfc.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"panel-left-close\",\n    path: path.join(__dirname, \"../icons/panel-left-close.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"panel-left-open\",\n    path: path.join(__dirname, \"../icons/panel-left-open.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"panel-right-open\",\n    path: path.join(__dirname, \"../icons/panel-right-open.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"party-popper\",\n    path: path.join(__dirname, \"../icons/party-popper.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"pause\",\n    path: path.join(__dirname, \"../icons/pause.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"pen-tool\",\n    path: path.join(__dirname, \"../icons/pen-tool.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"philippine-peso\",\n    path: path.join(__dirname, \"../icons/philippine-peso.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"play\",\n    path: path.join(__dirname, \"../icons/play.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"plug-zap\",\n    path: path.join(__dirname, \"../icons/plug-zap.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"plus\",\n    path: path.join(__dirname, \"../icons/plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"pound-sterling\",\n    path: path.join(__dirname, \"../icons/pound-sterling.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"rabbit\",\n    path: path.join(__dirname, \"../icons/rabbit.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"radio-tower\",\n    path: path.join(__dirname, \"../icons/radio-tower.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"radio\",\n    path: path.join(__dirname, \"../icons/radio.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"redo-dot\",\n    path: path.join(__dirname, \"../icons/redo-dot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"redo\",\n    path: path.join(__dirname, \"../icons/redo.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"refresh-ccw-dot\",\n    path: path.join(__dirname, \"../icons/refresh-ccw-dot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"refresh-ccw\",\n    path: path.join(__dirname, \"../icons/refresh-ccw.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"refresh-cw-off\",\n    path: path.join(__dirname, \"../icons/refresh-cw-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"refresh-cw\",\n    path: path.join(__dirname, \"../icons/refresh-cw.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"rocket\",\n    path: path.join(__dirname, \"../icons/rocket.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"rocking-chair\",\n    path: path.join(__dirname, \"../icons/rocking-chair.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"roller-coaster\",\n    path: path.join(__dirname, \"../icons/roller-coaster.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"rotate-ccw\",\n    path: path.join(__dirname, \"../icons/rotate-ccw.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"rotate-cw\",\n    path: path.join(__dirname, \"../icons/rotate-cw.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"route\",\n    path: path.join(__dirname, \"../icons/route.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"russian-ruble\",\n    path: path.join(__dirname, \"../icons/russian-ruble.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"saudi-riyal\",\n    path: path.join(__dirname, \"../icons/saudi-riyal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"scan-face\",\n    path: path.join(__dirname, \"../icons/scan-face.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"scan-text\",\n    path: path.join(__dirname, \"../icons/scan-text.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"search\",\n    path: path.join(__dirname, \"../icons/search.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"settings\",\n    path: path.join(__dirname, \"../icons/settings.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sliders-horizontal\",\n    path: path.join(__dirname, \"../icons/sliders-horizontal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"shield-check\",\n    path: path.join(__dirname, \"../icons/shield-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"ship\",\n    path: path.join(__dirname, \"../icons/ship.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"shower-head\",\n    path: path.join(__dirname, \"../icons/shower-head.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"shrink\",\n    path: path.join(__dirname, \"../icons/shrink.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"smartphone-charging\",\n    path: path.join(__dirname, \"../icons/smartphone-charging.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"smartphone-nfc\",\n    path: path.join(__dirname, \"../icons/smartphone-nfc.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"smile-plus\",\n    path: path.join(__dirname, \"../icons/smile-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"smile\",\n    path: path.join(__dirname, \"../icons/smile.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"snowflake\",\n    path: path.join(__dirname, \"../icons/snowflake.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sparkles\",\n    path: path.join(__dirname, \"../icons/sparkles.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-activity\",\n    path: path.join(__dirname, \"../icons/square-activity.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-arrow-down\",\n    path: path.join(__dirname, \"../icons/square-arrow-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-arrow-left\",\n    path: path.join(__dirname, \"../icons/square-arrow-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-arrow-right\",\n    path: path.join(__dirname, \"../icons/square-arrow-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-arrow-up\",\n    path: path.join(__dirname, \"../icons/square-arrow-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-chevron-down\",\n    path: path.join(__dirname, \"../icons/square-chevron-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-chevron-left\",\n    path: path.join(__dirname, \"../icons/square-chevron-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-chevron-right\",\n    path: path.join(__dirname, \"../icons/square-chevron-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-chevron-up\",\n    path: path.join(__dirname, \"../icons/square-chevron-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-pen\",\n    path: path.join(__dirname, \"../icons/square-pen.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"square-stack\",\n    path: path.join(__dirname, \"../icons/square-stack.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"stethoscope\",\n    path: path.join(__dirname, \"../icons/stethoscope.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sun-dim\",\n    path: path.join(__dirname, \"../icons/sun-dim.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sun-medium\",\n    path: path.join(__dirname, \"../icons/sun-medium.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sun-moon\",\n    path: path.join(__dirname, \"../icons/sun-moon.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sun\",\n    path: path.join(__dirname, \"../icons/sun.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"sunset\",\n    path: path.join(__dirname, \"../icons/sunset.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"swiss-franc\",\n    path: path.join(__dirname, \"../icons/swiss-franc.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"syringe\",\n    path: path.join(__dirname, \"../icons/syringe.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"telescope\",\n    path: path.join(__dirname, \"../icons/telescope.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"terminal\",\n    path: path.join(__dirname, \"../icons/terminal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"thermometer\",\n    path: path.join(__dirname, \"../icons/thermometer.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"timer\",\n    path: path.join(__dirname, \"../icons/timer.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"tornado\",\n    path: path.join(__dirname, \"../icons/tornado.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"train-track\",\n    path: path.join(__dirname, \"../icons/train-track.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"trending-down\",\n    path: path.join(__dirname, \"../icons/trending-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"trending-up-down\",\n    path: path.join(__dirname, \"../icons/trending-up-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"trending-up\",\n    path: path.join(__dirname, \"../icons/trending-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"turkish-lira\",\n    path: path.join(__dirname, \"../icons/turkish-lira.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"twitch\",\n    path: path.join(__dirname, \"../icons/twitch.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"twitter\",\n    path: path.join(__dirname, \"../icons/twitter.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"underline\",\n    path: path.join(__dirname, \"../icons/underline.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"undo-dot\",\n    path: path.join(__dirname, \"../icons/undo-dot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"undo\",\n    path: path.join(__dirname, \"../icons/undo.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"upload\",\n    path: path.join(__dirname, \"../icons/upload.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"upvote\",\n    path: path.join(__dirname, \"../icons/upvote.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"user-check\",\n    path: path.join(__dirname, \"../icons/user-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"user-round-check\",\n    path: path.join(__dirname, \"../icons/user-round-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"user-round-plus\",\n    path: path.join(__dirname, \"../icons/user-round-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"user\",\n    path: path.join(__dirname, \"../icons/user.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"users\",\n    path: path.join(__dirname, \"../icons/users.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"vibrate\",\n    path: path.join(__dirname, \"../icons/vibrate.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"volume\",\n    path: path.join(__dirname, \"../icons/volume.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"washing-machine\",\n    path: path.join(__dirname, \"../icons/washing-machine.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"waves-ladder\",\n    path: path.join(__dirname, \"../icons/waves-ladder.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"waves\",\n    path: path.join(__dirname, \"../icons/waves.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"waypoints\",\n    path: path.join(__dirname, \"../icons/waypoints.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"webhook\",\n    path: path.join(__dirname, \"../icons/webhook.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"wifi\",\n    path: path.join(__dirname, \"../icons/wifi.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"wind-arrow-down\",\n    path: path.join(__dirname, \"../icons/wind-arrow-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"wind\",\n    path: path.join(__dirname, \"../icons/wind.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"workflow\",\n    path: path.join(__dirname, \"../icons/workflow.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"x\",\n    path: path.join(__dirname, \"../icons/x.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"youtube\",\n    path: path.join(__dirname, \"../icons/youtube.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hourglass\",\n    path: path.join(__dirname, \"../icons/hourglass.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-branch\",\n    path: path.join(__dirname, \"../icons/git-branch.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-compare-arrows\",\n    path: path.join(__dirname, \"../icons/git-compare-arrows.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-compare\",\n    path: path.join(__dirname, \"../icons/git-compare.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-fork\",\n    path: path.join(__dirname, \"../icons/git-fork.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-graph\",\n    path: path.join(__dirname, \"../icons/git-graph.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-pull-request-closed\",\n    path: path.join(__dirname, \"../icons/git-pull-request-closed.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"git-pull-request-create\",\n    path: path.join(__dirname, \"../icons/git-pull-request-create.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gitlab\",\n    path: path.join(__dirname, \"../icons/gitlab.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"feather\",\n    path: path.join(__dirname, \"../icons/feather.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-down-left\",\n    path: path.join(__dirname, \"../icons/corner-down-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-down-right\",\n    path: path.join(__dirname, \"../icons/corner-down-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-left-down\",\n    path: path.join(__dirname, \"../icons/corner-left-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-left-up\",\n    path: path.join(__dirname, \"../icons/corner-left-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-right-down\",\n    path: path.join(__dirname, \"../icons/corner-right-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-right-up\",\n    path: path.join(__dirname, \"../icons/corner-right-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-up-left\",\n    path: path.join(__dirname, \"../icons/corner-up-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"corner-up-right\",\n    path: path.join(__dirname, \"../icons/corner-up-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"bell-electric\",\n    path: path.join(__dirname, \"../icons/bell-electric.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"airplay\",\n    path: path.join(__dirname, \"../icons/airplay.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"atom\",\n    path: path.join(__dirname, \"../icons/atom.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"zap-off\",\n    path: path.join(__dirname, \"../icons/zap-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"zap\",\n    path: path.join(__dirname, \"../icons/zap.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-archive\",\n    path: path.join(__dirname, \"../icons/folder-archive.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-check\",\n    path: path.join(__dirname, \"../icons/folder-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-clock\",\n    path: path.join(__dirname, \"../icons/folder-clock.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-code\",\n    path: path.join(__dirname, \"../icons/folder-code.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-cog\",\n    path: path.join(__dirname, \"../icons/folder-cog.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-dot\",\n    path: path.join(__dirname, \"../icons/folder-dot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-down\",\n    path: path.join(__dirname, \"../icons/folder-down.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-git-2\",\n    path: path.join(__dirname, \"../icons/folder-git-2.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-git\",\n    path: path.join(__dirname, \"../icons/folder-git.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-heart\",\n    path: path.join(__dirname, \"../icons/folder-heart.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-input\",\n    path: path.join(__dirname, \"../icons/folder-input.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-kanban\",\n    path: path.join(__dirname, \"../icons/folder-kanban.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-key\",\n    path: path.join(__dirname, \"../icons/folder-key.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-lock\",\n    path: path.join(__dirname, \"../icons/folder-lock.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-minus\",\n    path: path.join(__dirname, \"../icons/folder-minus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-open\",\n    path: path.join(__dirname, \"../icons/folder-open.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-output\",\n    path: path.join(__dirname, \"../icons/folder-output.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-plus\",\n    path: path.join(__dirname, \"../icons/folder-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-root\",\n    path: path.join(__dirname, \"../icons/folder-root.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-sync\",\n    path: path.join(__dirname, \"../icons/folder-sync.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-tree\",\n    path: path.join(__dirname, \"../icons/folder-tree.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-up\",\n    path: path.join(__dirname, \"../icons/folder-up.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"folder-x\",\n    path: path.join(__dirname, \"../icons/folder-x.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-charging\",\n    path: path.join(__dirname, \"../icons/battery-charging.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery\",\n    path: path.join(__dirname, \"../icons/battery.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-plus\",\n    path: path.join(__dirname, \"../icons/battery-plus.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"battery-warning\",\n    path: path.join(__dirname, \"../icons/battery-warning.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"align-left\",\n    path: path.join(__dirname, \"../icons/align-left.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"align-right\",\n    path: path.join(__dirname, \"../icons/align-right.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"eye\",\n    path: path.join(__dirname, \"../icons/eye.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"box\",\n    path: path.join(__dirname, \"../icons/box.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"cooking-pot\",\n    path: path.join(__dirname, \"../icons/cooking-pot.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"wrench\",\n    path: path.join(__dirname, \"../icons/wrench.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-fist\",\n    path: path.join(__dirname, \"../icons/hand-fist.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-grab\",\n    path: path.join(__dirname, \"../icons/hand-grab.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-helping\",\n    path: path.join(__dirname, \"../icons/hand-helping.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand-metal\",\n    path: path.join(__dirname, \"../icons/hand-metal.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hand\",\n    path: path.join(__dirname, \"../icons/hand.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"heart-handshake\",\n    path: path.join(__dirname, \"../icons/heart-handshake.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"mic-off\",\n    path: path.join(__dirname, \"../icons/mic-off.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"mic\",\n    path: path.join(__dirname, \"../icons/mic.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"mailbox\",\n    path: path.join(__dirname, \"../icons/mailbox.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"truck\",\n    path: path.join(__dirname, \"../icons/truck.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"graduation-cap\",\n    path: path.join(__dirname, \"../icons/graduation-cap.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"wifi-low\",\n    path: path.join(__dirname, \"../icons/wifi-low.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chess-bishop\",\n    path: path.join(__dirname, \"../icons/chess-bishop.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chess-king\",\n    path: path.join(__dirname, \"../icons/chess-king.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chess-knight\",\n    path: path.join(__dirname, \"../icons/chess-knight.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chess-pawn\",\n    path: path.join(__dirname, \"../icons/chess-pawn.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"chess-bishop\",\n    path: path.join(__dirname, \"../icons/chess-bishop.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"send\",\n    path: path.join(__dirname, \"../icons/send.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"heart-pulse\",\n    path: path.join(__dirname, \"../icons/heart-pulse.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"message-square-check\",\n    path: path.join(__dirname, \"../icons/message-square-check.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"gavel\",\n    path: path.join(__dirname, \"../icons/gavel.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"hammer\",\n    path: path.join(__dirname, \"../icons/hammer.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"axe\",\n    path: path.join(__dirname, \"../icons/axe.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"pickaxe\",\n    path: path.join(__dirname, \"../icons/pickaxe.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"disc-3\",\n    path: path.join(__dirname, \"../icons/disc-3.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n  {\n    name: \"database-backup\",\n    path: path.join(__dirname, \"../icons/database-backup.tsx\"),\n    registryDependencies: [],\n    dependencies: [\"motion\"],\n  },\n];\n"
  },
  {
    "path": "scripts/registry-schema.ts",
    "content": "export type RegistryType =\n  | \"registry:block\"\n  | \"registry:component\"\n  | \"registry:lib\"\n  | \"registry:hook\"\n  | \"registry:ui\"\n  | \"registry:page\"\n  | \"registry:file\"\n  | \"registry:style\"\n  | \"registry:theme\"\n  | \"registry:item\";\n\nexport interface RegistryFile {\n  path: string;\n  content?: string;\n  type: RegistryType;\n  target?: string;\n}\n\nexport interface TailwindConfig {\n  config?: Record<string, object>;\n}\n\nexport interface CssVars {\n  theme?: Record<string, string>;\n  light?: Record<string, string>;\n  dark?: Record<string, string>;\n}\n\nexport interface Schema {\n  $schema?: string;\n  name: string;\n  type: RegistryType;\n  title?: string;\n  description?: string;\n  author?: string;\n  registryDependencies?: string[];\n  dependencies?: string[];\n  devDependencies?: string[];\n  files: RegistryFile[];\n  tailwind?: TailwindConfig;\n  cssVars?: CssVars;\n  css?: Record<string, object>;\n  envVars?: Record<string, string>;\n  docs?: string;\n  categories?: string[];\n  meta?: Record<string, unknown>;\n}\n"
  },
  {
    "path": "scripts/sync-registry.ts",
    "content": "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { components } from \"./registry-components\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nfunction updateRegistryComponents() {\n  const iconsDir = path.join(process.cwd(), \"icons\");\n  const existingComponents = new Map(\n    components.map((c) => [path.basename(c.path.replace(\"../icons/\", \"\")), c])\n  );\n\n  const newComponents: {\n    name: string;\n    path: string;\n    registryDependencies: string[];\n    dependencies: string[];\n  }[] = [];\n\n  const files = fs\n    .readdirSync(iconsDir)\n    .filter((file) => file.endsWith(\".tsx\") && file !== \"index.ts\")\n    .sort();\n\n  for (const file of files) {\n    if (!existingComponents.has(file)) {\n      const name = path.basename(file, \".tsx\");\n      newComponents.push({\n        name,\n        path: path.join(__dirname, \"../icons\", file),\n        registryDependencies: [],\n        dependencies: [\"motion\"],\n      });\n    }\n  }\n\n  if (newComponents.length === 0) {\n    console.log(\"\\n✅ Registry is up to date. No new components to add.\\n\");\n    return;\n  }\n\n  const registryPath = path.join(__dirname, \"registry-components.ts\");\n  const content = fs.readFileSync(registryPath, \"utf8\");\n\n  const lastComponentIndex = content.lastIndexOf(\"}\");\n\n  const newComponentsString = newComponents\n    .map(\n      (comp) => `  {\n    'name': '${comp.name}',\n    'path': path.join(__dirname, '../icons/${path.basename(comp.path)}'),\n    'registryDependencies': [],\n    'dependencies': ['motion'],\n  }`\n    )\n    .join(\",\\n\");\n\n  const updatedContent =\n    content.slice(0, lastComponentIndex + 1) +\n    \",\\n\" +\n    newComponentsString +\n    \",\\n];\";\n\n  fs.writeFileSync(registryPath, updatedContent);\n\n  console.log(\n    `\\n✅ Added ${newComponents.length} new component${newComponents.length > 1 ? \"s\" : \"\"}:`\n  );\n  // biome-ignore lint/suspicious/useIterableCallbackReturn: ignore\n  newComponents.forEach((c) => console.log(`   • ${c.name}`));\n  console.log(\"\");\n}\n\nupdateRegistryComponents();\n"
  },
  {
    "path": "seo/json-ld.tsx",
    "content": "import { getIcons } from \"@/actions/get-icons\";\nimport { LINK, SITE } from \"@/constants\";\n\nconst WebsiteJsonLd = () => {\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"WebSite\",\n    name: SITE.NAME,\n    url: SITE.URL,\n    description: SITE.DESCRIPTION.LONG,\n    inLanguage: \"en-US\",\n    potentialAction: {\n      \"@type\": \"SearchAction\",\n      target: {\n        \"@type\": \"EntryPoint\",\n        urlTemplate: `${SITE.URL}?search={search_term_string}`,\n      },\n      \"query-input\": \"required name=search_term_string\",\n    },\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst SoftwareSourceCodeJsonLd = () => {\n  const icons = getIcons();\n\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"SoftwareSourceCode\",\n    name: SITE.NAME,\n    description: SITE.DESCRIPTION.LONG,\n    url: SITE.URL,\n    codeRepository: LINK.GITHUB,\n    programmingLanguage: [\"TypeScript\", \"React\", \"JavaScript\"],\n    runtimePlatform: \"Node.js\",\n    license: LINK.LICENSE,\n    author: {\n      \"@type\": \"Person\",\n      name: SITE.AUTHOR.NAME,\n      url: LINK.TWITTER,\n    },\n    maintainer: {\n      \"@type\": \"Person\",\n      name: SITE.AUTHOR.NAME,\n      url: LINK.TWITTER,\n    },\n    keywords: SITE.KEYWORDS,\n    offers: {\n      \"@type\": \"Offer\",\n      price: \"0\",\n      priceCurrency: \"USD\",\n      availability: \"https://schema.org/InStock\",\n    },\n    isAccessibleForFree: true,\n    dateModified: new Date().toISOString().split(\"T\")[0],\n    numberOfItems: icons.length,\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst OrganizationJsonLd = () => {\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"Organization\",\n    name: SITE.NAME,\n    url: SITE.URL,\n    logo: `${SITE.URL}${SITE.OG_IMAGE}`,\n    sameAs: [LINK.GITHUB, LINK.TWITTER],\n    founder: {\n      \"@type\": \"Person\",\n      name: SITE.AUTHOR.NAME,\n      url: LINK.TWITTER,\n    },\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst BreadcrumbJsonLd = ({\n  items,\n}: {\n  items: { name: string; url: string }[];\n}) => {\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"BreadcrumbList\",\n    itemListElement: items.map((item, index) => ({\n      \"@type\": \"ListItem\",\n      position: index + 1,\n      name: item.name,\n      item: item.url,\n    })),\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst FAQJsonLd = () => {\n  const faqs = [\n    {\n      question: \"What is lucide-animated?\",\n      answer: `${SITE.NAME} is a free, open-source library of 350+ beautifully crafted animated React icons. Built with Motion library and based on Lucide icons.`,\n    },\n    {\n      question: \"How do I install lucide-animated icons?\",\n      answer: `You can install icons using npx shadcn@latest add \"${SITE.URL}/r/{icon-name}.json\". Replace {icon-name} with the desired icon name in kebab-case.`,\n    },\n    {\n      question: \"Is lucide-animated free to use?\",\n      answer: `Yes! ${SITE.NAME} is completely free and open-source under the MIT license. You can use it for personal and commercial projects.`,\n    },\n    {\n      question: \"What technologies are used in lucide-animated?\",\n      answer:\n        \"lucide-animated icons are React components written in TypeScript. Animations are powered by Motion (formerly Framer Motion), and the icons are based on Lucide.\",\n    },\n  ];\n\n  const jsonLd = {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"FAQPage\",\n    mainEntity: faqs.map((faq) => ({\n      \"@type\": \"Question\",\n      name: faq.question,\n      acceptedAnswer: {\n        \"@type\": \"Answer\",\n        text: faq.answer,\n      },\n    })),\n  };\n\n  return (\n    <script\n      // biome-ignore lint/security/noDangerouslySetInnerHtml: ignore\n      dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}\n      type=\"application/ld+json\"\n    />\n  );\n};\n\nconst JsonLdScripts = () => {\n  return (\n    <>\n      <WebsiteJsonLd />\n      <SoftwareSourceCodeJsonLd />\n      <OrganizationJsonLd />\n      <FAQJsonLd />\n    </>\n  );\n};\n\nexport {\n  JsonLdScripts,\n  WebsiteJsonLd,\n  SoftwareSourceCodeJsonLd,\n  OrganizationJsonLd,\n  BreadcrumbJsonLd,\n  FAQJsonLd,\n};\n"
  },
  {
    "path": "seo/metadata.ts",
    "content": "import type { Metadata } from \"next\";\n\nimport { LINK, SITE } from \"@/constants\";\n\ntype CreateMetadataOptions = {\n  title?: string;\n  description?: string;\n  canonical?: string;\n  ogTitle?: string;\n  ogDescription?: string;\n  noIndex?: boolean;\n};\n\nconst createMetadata = (options: CreateMetadataOptions = {}): Metadata => {\n  const {\n    title,\n    description = SITE.DESCRIPTION.SHORT,\n    canonical,\n    ogTitle,\n    ogDescription,\n    noIndex = false,\n  } = options;\n\n  return {\n    ...(title && { title }),\n    description,\n    ...(canonical && {\n      alternates: {\n        canonical,\n      },\n    }),\n    openGraph: {\n      title: ogTitle || title || SITE.NAME,\n      description: ogDescription || description,\n      url: canonical ? `${SITE.URL}${canonical}` : SITE.URL,\n      type: \"website\",\n    },\n    twitter: {\n      title: ogTitle || title || SITE.NAME,\n      description: ogDescription || description,\n    },\n    ...(noIndex && {\n      robots: {\n        index: false,\n        follow: false,\n      },\n    }),\n  };\n};\n\nconst baseMetadata: Metadata = {\n  metadataBase: new URL(SITE.URL),\n  alternates: {\n    canonical: \"/\",\n  },\n  openGraph: {\n    title: SITE.NAME,\n    description: SITE.DESCRIPTION.SHORT,\n    siteName: SITE.NAME,\n    type: \"website\",\n    locale: \"en_US\",\n    url: SITE.URL,\n    images: [\n      {\n        url: SITE.OG_IMAGE,\n        width: 1200,\n        height: 630,\n        alt: `${SITE.NAME} - Animated React Icons Library`,\n      },\n    ],\n  },\n  applicationName: SITE.NAME,\n  appleWebApp: {\n    title: SITE.NAME,\n    statusBarStyle: \"default\",\n    capable: true,\n  },\n  title: {\n    default: `${SITE.NAME} | Free Animated React Icons Library`,\n    template: `%s | ${SITE.NAME}`,\n  },\n  description: SITE.DESCRIPTION.LONG,\n  keywords: [...SITE.KEYWORDS],\n  authors: [{ name: SITE.AUTHOR.NAME, url: LINK.TWITTER }],\n  creator: SITE.AUTHOR.NAME,\n  publisher: SITE.AUTHOR.NAME,\n  twitter: {\n    card: \"summary_large_image\",\n    title: `${SITE.NAME} | Free Animated React Icons`,\n    description: SITE.DESCRIPTION.SHORT,\n    creator: SITE.AUTHOR.TWITTER,\n    site: SITE.AUTHOR.TWITTER,\n    images: [\n      {\n        url: SITE.OG_IMAGE,\n        width: 1200,\n        height: 630,\n        alt: `${SITE.NAME} - Animated React Icons Library`,\n      },\n    ],\n  },\n  category: \"technology\",\n};\n\nexport { baseMetadata, createMetadata };\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\",\n    \".next/dev/types/**/*.ts\",\n    \".next/dev/dev/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  }
]