{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "brain-circuit-icon",
  "dependencies": ["motion"],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "icons/brain-circuit-icon.tsx",
      "content": "\"use strict\";\n\nimport { forwardRef, useImperativeHandle, useCallback } from \"react\";\nimport type { AnimatedIconHandle, AnimatedIconProps } from \"./types\";\nimport { motion, useAnimate } from \"motion/react\";\n\nconst BrainCircuitIcon = forwardRef<AnimatedIconHandle, AnimatedIconProps>(\n  (\n    { size = 24, color = \"currentColor\", strokeWidth = 2, className = \"\" },\n    ref,\n  ) => {\n    const [scope, animate] = useAnimate();\n\n    const startAnimation = useCallback(() => {\n      // Brain outline subtle pulse\n      animate(\n        \".brain-outline\",\n        { opacity: [1, 0.7, 1] },\n        { duration: 2, repeat: Infinity, ease: \"easeInOut\" },\n      );\n\n      // Circuit lines drawing\n      animate(\n        \".circuit-line\",\n        { pathLength: [0, 1], opacity: [0, 1] },\n        { duration: 0.6, ease: \"easeOut\" },\n      );\n\n      // Synaptic terminals pulsing in sequence\n      const terminals = [\n        \".terminal-1\",\n        \".terminal-2\",\n        \".terminal-3\",\n        \".terminal-4\",\n      ];\n      terminals.forEach((selector, index) => {\n        animate(\n          selector,\n          { scale: [1, 1.5, 1], opacity: [0.5, 1, 0.5] },\n          {\n            duration: 0.8,\n            delay: 0.2 + index * 0.15,\n            repeat: Infinity,\n            repeatDelay: 1,\n            ease: \"easeInOut\",\n          },\n        );\n      });\n    }, [animate]);\n\n    const stopAnimation = useCallback(() => {\n      animate(\".brain-outline\", { opacity: 1 }, { duration: 0.3 });\n      animate(\n        \".circuit-line\",\n        { pathLength: 1, opacity: 1 },\n        { duration: 0.3 },\n      );\n      animate(\".terminal\", { scale: 1, opacity: 1 }, { duration: 0.3 });\n    }, [animate]);\n\n    useImperativeHandle(ref, () => ({\n      startAnimation,\n      stopAnimation,\n    }));\n\n    return (\n      <div\n        className={`relative flex items-center justify-center ${className}`}\n        onMouseEnter={startAnimation}\n        onMouseLeave={stopAnimation}\n      >\n        <motion.svg\n          ref={scope}\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={color}\n          strokeWidth={strokeWidth}\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        >\n          <motion.path\n            className=\"brain-outline\"\n            d=\"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z\"\n          />\n          <motion.path className=\"circuit-line\" d=\"M9 13a4.5 4.5 0 0 0 3-4\" />\n          <motion.path\n            className=\"brain-outline\"\n            d=\"M6.003 5.125A3 3 0 0 0 6.401 6.5\"\n          />\n          <motion.path\n            className=\"brain-outline\"\n            d=\"M3.477 10.896a4 4 0 0 1 .585-.396\"\n          />\n          <motion.path\n            className=\"brain-outline\"\n            d=\"M6 18a4 4 0 0 1-1.967-.516\"\n          />\n          <motion.path className=\"circuit-line\" d=\"M12 13h4\" />\n          <motion.path className=\"circuit-line\" d=\"M12 18h6a2 2 0 0 1 2 2v1\" />\n          <motion.path className=\"circuit-line\" d=\"M12 8h8\" />\n          <motion.path className=\"circuit-line\" d=\"M16 8V5a2 2 0 0 1 2-2\" />\n          <motion.circle\n            className=\"terminal terminal-1\"\n            cx=\"16\"\n            cy=\"13\"\n            r=\".5\"\n          />\n          <motion.circle\n            className=\"terminal terminal-2\"\n            cx=\"18\"\n            cy=\"3\"\n            r=\".5\"\n          />\n          <motion.circle\n            className=\"terminal terminal-3\"\n            cx=\"20\"\n            cy=\"21\"\n            r=\".5\"\n          />\n          <motion.circle\n            className=\"terminal terminal-4\"\n            cx=\"20\"\n            cy=\"8\"\n            r=\".5\"\n          />\n        </motion.svg>\n      </div>\n    );\n  },\n);\n\nBrainCircuitIcon.displayName = \"BrainCircuitIcon\";\n\nexport default BrainCircuitIcon;\n",
      "type": "registry:ui"
    },
    {
      "path": "icons/types.ts",
      "content": "import type { SVGProps } from \"react\";\n\n/** Standard stroke width for 24×24 outline icons */\nexport const DEFAULT_STROKE_WIDTH = 2;\n\n/** Scale stroke to match DEFAULT_STROKE_WIDTH on non-24 viewBoxes */\nexport function scaledStrokeWidth(\n  strokeWidth: number,\n  viewBoxSize: number,\n): number {\n  return strokeWidth * (viewBoxSize / 24);\n}\n\nexport type IconEasing =\n  | \"linear\"\n  | \"easeIn\"\n  | \"easeOut\"\n  | \"easeInOut\"\n  | \"circIn\"\n  | \"circOut\"\n  | \"circInOut\"\n  | \"backIn\"\n  | \"backOut\"\n  | \"backInOut\"\n  | \"anticipate\";\n\nexport interface AnimatedIconProps extends Omit<\n  SVGProps<SVGSVGElement>,\n  | \"ref\"\n  | \"onAnimationStart\"\n  | \"onAnimationEnd\"\n  | \"onAnimationIteration\"\n  | \"onDrag\"\n  | \"onDragEnd\"\n  | \"onDragEnter\"\n  | \"onDragExit\"\n  | \"onDragLeave\"\n  | \"onDragOver\"\n  | \"onDragStart\"\n  | \"onDrop\"\n  | \"values\"\n> {\n  /** Icon size in pixels or CSS string */\n  size?: number | string;\n  /** Icon color (defaults to currentColor) */\n  color?: string;\n  /** SVG stroke width */\n  strokeWidth?: number;\n  /** Additional CSS classes */\n  className?: string;\n}\n\nexport interface AnimatedIconHandle {\n  startAnimation: () => void;\n  stopAnimation: () => void;\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
