{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "cloud-icon",
  "title": "Cloud Icon",
  "description": "An animated cloud icon.",
  "dependencies": [
    "motion"
  ],
  "files": [
    {
      "path": "registry/chamaac/animated-icons/cloud-icon.tsx",
      "content": "\"use client\";\n\nimport { useState } from \"react\";\nimport {\n  m,\n  LazyMotion,\n  domAnimation,\n  SVGMotionProps,\n  Easing,\n} from \"motion/react\";\n\ninterface IconProps extends SVGMotionProps<SVGSVGElement> {\n  size?: number;\n  duration?: number;\n  strokeWidth?: number;\n  isHovered?: boolean;\n  repeatDelay?: number;\n  ease?: Easing;\n}\n\nconst CloudIcon = (props: IconProps) => {\n  const {\n    size = 28,\n    duration = 1.5,\n    strokeWidth = 2,\n    isHovered = false,\n    repeatDelay = 1,\n    ease = \"easeInOut\",\n    className,\n    ...restProps\n  } = props;\n\n  const [isHoveredInternal, setIsHoveredInternal] = useState(false);\n  const shouldAnimate = isHovered ? isHoveredInternal : true;\n\n  const transition = {\n    duration: duration,\n    ease: ease,\n    repeat: isHovered ? 0 : Infinity,\n    repeatDelay: repeatDelay,\n  };\n\n  return (\n    <LazyMotion features={domAnimation}>\n      <m.svg\n        {...restProps}\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={strokeWidth}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className={className}\n        overflow=\"visible\"\n        onMouseEnter={() => isHovered && setIsHoveredInternal(true)}\n        onMouseLeave={() => isHovered && setIsHoveredInternal(false)}\n      >\n        <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n        <m.path\n          d=\"M6.657 18c-2.572 0 -4.657 -2.007 -4.657 -4.483c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 1.927 -1.551 3.487 -3.465 3.487h-11.878\"\n          animate={shouldAnimate ? { x: [0, 2, 0] } : { x: 0 }}\n          transition={transition}\n        />\n      </m.svg>\n    </LazyMotion>\n  );\n};\n\nexport default CloudIcon;\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component"
}