{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "arrow-down-a-z-icon",
  "dependencies": ["motion"],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "icons/arrow-down-a-z-icon.tsx",
      "content": "import { forwardRef, useImperativeHandle } from \"react\";\nimport type { AnimatedIconHandle, AnimatedIconProps } from \"./types\";\nimport { motion, useAnimate } from \"motion/react\";\n\nconst ArrowDownAZIcon = forwardRef<AnimatedIconHandle, AnimatedIconProps>(\n  (\n    { size = 40, className = \"\", color = \"currentColor\", strokeWidth = \"1\" },\n    ref,\n  ) => {\n    const [scope, animate] = useAnimate();\n\n    const swapDistance = 24;\n\n    const start = async () => {\n      animate(\n        \".text-z\",\n        {\n          y: -swapDistance,\n        },\n        {\n          duration: 0.3,\n          ease: \"easeInOut\",\n        },\n      );\n      animate(\n        \".text-a\",\n        {\n          y: swapDistance,\n          scale: 1.05,\n        },\n        {\n          duration: 0.3,\n          ease: \"easeInOut\",\n        },\n      );\n    };\n\n    const stop = async () => {\n      await animate(\n        \".text-z, .text-a\",\n        {\n          y: 0,\n          scale: 1,\n        },\n        {\n          duration: 0.3,\n          ease: \"easeInOut\",\n        },\n      );\n    };\n\n    useImperativeHandle(ref, () => {\n      return {\n        startAnimation: start,\n        stopAnimation: stop,\n      };\n    });\n\n    const handleHoverStart = () => {\n      start();\n    };\n\n    const handleHoverEnd = () => {\n      stop();\n    };\n\n    return (\n      <motion.svg\n        ref={scope}\n        onHoverStart={handleHoverStart}\n        onHoverEnd={handleHoverEnd}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width={size}\n        height={size}\n        viewBox=\"0 0 48 48\"\n        fill=\"currentColor\"\n        stroke=\"currentColor\"\n        strokeWidth={strokeWidth}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        color={color}\n        className={`cursor-pointer ${className}`}\n      >\n        <motion.path className=\"text-line\" d=\"M35.5 3.5V43H32.5V3.5H35.5Z\" />\n\n        <motion.path\n          className=\"text-z\"\n          d=\"M6.5 26H21.5V29.1627L10.4518 41H21.5V44H6.5V40.8373L17.5482 29H6.5V26Z\"\n        />\n\n        <motion.path\n          className=\"text-a\"\n          d=\"M11.7802 4H16.0532L22.5532 22H18.7V20.1625L13.9469 7H13.8865L9.13335 20.1625V22H5.28021L11.7802 4Z\"\n        />\n\n        <motion.path className=\"text-a\" d=\"M19.5 18H8.5V15H19.5V18Z\" />\n\n        <motion.path\n          className=\"text-arrow\"\n          style={{ transformOrigin: \"34px 38px\" }}\n          d=\"M25 31.8787L34 40.8787L43 31.8787L45.1213 34L34 45.1213L22.8787 34L25 31.8787Z\"\n        />\n      </motion.svg>\n    );\n  },\n);\n\nArrowDownAZIcon.displayName = \"ArrowDownAZIcon\";\n\nexport default ArrowDownAZIcon;\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"
}
