{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "brand-bags-fm-icon",
  "dependencies": ["motion"],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "icons/brand-bags-fm-icon.tsx",
      "content": "import { forwardRef, useImperativeHandle } from \"react\";\nimport type { AnimatedIconHandle, AnimatedIconProps } from \"./types\";\nimport { motion, useAnimate } from \"motion/react\";\n\nconst BrandBagsFmIcon = forwardRef<AnimatedIconHandle, AnimatedIconProps>(\n  (\n    { size = 24, color = \"currentColor\", strokeWidth = 2, className = \"\" },\n    ref,\n  ) => {\n    const [scope, animate] = useAnimate();\n\n    const start = async () => {\n      await animate(\n        \".bag\",\n        {\n          rotate: [0, -8, 8, -6, 6, -3, 3, 0],\n          y: [0, -5, 0, -3, 0, -2, 0],\n        },\n        { duration: 0.6, ease: \"easeInOut\" },\n      );\n    };\n\n    const stop = () => {\n      animate(\".bag\", { rotate: 0, y: 0 }, { duration: 0.2 });\n    };\n\n    useImperativeHandle(ref, () => {\n      return {\n        startAnimation: start,\n        stopAnimation: stop,\n      };\n    });\n\n    return (\n      <motion.svg\n        ref={scope}\n        onHoverStart={start}\n        onHoverEnd={stop}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width={size}\n        height={size}\n        viewBox=\"0 0 1024 1024\"\n        fill=\"none\"\n        stroke={color}\n        strokeWidth={strokeWidth}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        className={`cursor-pointer ${className}`}\n      >\n        <motion.g className=\"bag\" style={{ originX: \"50%\", originY: \"100%\" }}>\n          <motion.path\n            d=\"M 561.64 1018.00 C541.03,1019.15 482.25,1019.09 461.00,1017.88 C428.17,1016.02 384.57,1010.43 359.50,1004.88 C276.24,986.43 221.60,959.81 176.15,915.53 C130.14,870.72 104.87,814.62 98.92,744.08 C97.58,728.12 98.21,685.69 99.98,673.00 C100.56,668.88 101.74,660.33 102.61,654.00 C112.42,582.33 148.13,492.03 190.38,432.09 C218.55,392.11 255.44,354.21 296.61,322.93 C307.25,314.85 311.79,313.00 321.00,313.00 C329.04,313.00 333.32,314.38 342.31,319.88 C359.36,330.32 385.72,341.87 407.76,348.57 C432.77,356.17 453.66,360.10 482.00,362.55 C553.43,368.72 624.89,353.61 682.14,320.22 C693.80,313.42 696.44,312.53 705.00,312.57 C714.85,312.61 718.38,314.30 734.00,326.45 C797.73,376.03 845.64,435.94 877.67,506.14 C903.33,562.37 919.23,617.23 925.67,671.74 C928.13,692.55 928.10,740.24 925.61,758.50 C921.88,785.96 914.99,811.78 905.35,834.43 C891.92,866.01 874.02,892.03 848.86,916.54 C835.25,929.80 824.91,938.14 809.00,948.70 C748.01,989.18 666.12,1012.12 561.64,1018.00 ZM 536.19 826.97 C540.81,825.68 545.00,820.86 545.00,816.82 C545.00,812.50 547.56,807.69 550.92,805.71 C553.43,804.22 557.01,804.00 578.26,804.00 C615.47,804.00 633.30,802.14 651.41,796.38 C673.82,789.25 686.65,776.74 691.55,757.22 C692.87,752.00 693.07,745.89 692.76,721.22 C692.35,689.59 691.82,685.50 686.70,675.01 C681.23,663.80 665.70,653.24 646.15,647.43 C641.39,646.02 631.88,643.14 625.00,641.03 C606.42,635.34 582.75,628.19 572.00,625.02 C547.05,617.65 508.45,605.77 504.70,604.29 C498.82,601.98 493.27,598.38 492.04,596.08 C491.47,595.01 491.00,592.36 491.00,590.20 C491.00,582.30 497.66,577.84 509.50,577.82 C522.74,577.81 528.73,582.58 530.47,594.50 C530.87,597.25 531.71,599.83 532.35,600.23 C532.98,600.64 563.97,600.98 601.21,600.98 C666.27,601.00 669.13,600.92 674.21,599.02 C681.74,596.20 686.42,591.92 690.06,584.53 C693.16,578.23 693.20,577.94 692.85,565.76 C692.51,553.79 692.38,553.15 688.72,545.75 C683.93,536.06 676.81,529.50 664.50,523.44 C645.31,513.99 626.50,511.02 585.20,510.94 C565.67,510.91 555.41,510.51 553.09,509.69 C548.74,508.17 546.24,504.73 545.14,498.78 C544.01,492.65 541.66,489.17 537.45,487.42 C532.52,485.36 487.43,485.38 482.49,487.44 C478.47,489.12 475.01,494.22 475.00,498.50 C474.99,502.15 471.94,507.40 468.80,509.17 C467.11,510.13 457.40,510.64 432.00,511.12 C406.48,511.60 395.22,512.20 388.74,513.42 C358.34,519.14 340.06,529.78 331.91,546.50 L 328.50 553.50 L 328.19 578.78 C327.93,599.97 328.14,604.97 329.53,609.74 C335.16,629.13 346.66,638.38 379.50,649.96 C384.45,651.71 390.75,653.74 393.50,654.47 C396.25,655.20 408.85,658.81 421.50,662.49 C449.39,670.59 469.49,676.41 494.00,683.46 C524.12,692.13 528.85,695.08 531.01,706.53 C531.93,711.45 531.93,714.46 531.00,719.97 C529.70,727.74 527.09,731.84 521.63,734.73 C517.07,737.14 505.64,737.00 500.56,734.46 C494.61,731.49 493.04,728.63 492.03,718.81 C490.65,705.44 486.14,698.82 476.50,696.04 C473.62,695.21 455.29,694.97 411.00,695.19 L 349.50 695.50 L 344.64 697.89 C338.22,701.06 333.29,706.13 330.30,712.66 C327.92,717.87 327.87,718.49 328.18,739.30 L 328.50 760.61 L 332.27 768.24 C342.28,788.48 366.04,799.76 405.50,802.99 C412.10,803.53 428.38,803.98 441.68,803.98 C454.99,803.99 467.02,804.44 468.43,804.98 C471.68,806.21 474.99,811.57 475.00,815.60 C475.00,819.92 478.87,825.26 483.03,826.69 C487.42,828.20 530.93,828.43 536.19,826.97 ZM 538.50 289.97 C496.13,293.54 448.71,287.35 418.42,274.29 C400.92,266.74 395.55,263.15 374.23,244.71 C335.15,210.90 308.78,179.14 298.10,153.00 C294.86,145.06 294.63,143.75 294.57,133.00 C294.51,122.90 294.78,120.98 296.76,117.28 C300.36,110.53 304.53,106.44 318.44,96.01 C343.30,77.37 350.32,70.84 389.50,29.94 C408.14,10.48 415.56,6.96 439.53,6.23 C452.01,5.85 456.43,6.13 465.56,7.87 C476.52,9.97 479.33,10.84 509.50,21.49 C533.06,29.80 540.92,31.28 562.00,31.37 C573.44,31.41 582.10,30.94 587.00,29.99 C597.54,27.96 620.67,28.11 628.72,30.27 C635.91,32.20 646.41,37.33 653.28,42.26 C655.91,44.15 665.14,52.63 673.79,61.10 C693.45,80.36 701.04,86.89 714.89,96.47 C726.70,104.63 730.32,108.22 733.07,114.50 C744.54,140.60 718.47,183.79 657.88,239.05 C629.95,264.53 617.87,271.89 589.75,280.53 C576.65,284.56 554.66,288.61 538.50,289.97 Z\"\n            fill={color}\n          />\n        </motion.g>\n      </motion.svg>\n    );\n  },\n);\n\nBrandBagsFmIcon.displayName = \"BrandBagsFmIcon\";\n\nexport default BrandBagsFmIcon;\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"
}
