{
  "name": "draggable-marquee",
  "type": "registry:component",
  "title": "Draggable Marquee",
  "description": "Infinite horizontal marquee with drag interaction and momentum physics",
  "dependencies": [
    "gsap"
  ],
  "registryDependencies": [],
  "exportName": "DraggableMarquee",
  "exportKind": "default",
  "tier": "pro",
  "version": "1.1.1",
  "changelog": [
    {
      "version": "1.1.1",
      "date": "2026-07-23",
      "summary": "Offscreen pause now detaches only the marquee's own ticker callback instead of sleeping the global gsap.ticker, which froze every other GSAP animation on the page",
      "breaking": false
    },
    {
      "version": "1.1.0",
      "date": "2026-07-21",
      "summary": "Added prefers-reduced-motion support: auto-scroll and post-release throw momentum are disabled, drag remains fully interactive",
      "breaking": false
    }
  ],
  "props": [
    {
      "name": "speed",
      "type": "number",
      "default": 7.2,
      "description": "Autoplay movement speed (px per tick).",
      "remixer": {
        "control": "range",
        "group": "motion",
        "groupTitle": "Motion",
        "min": 0,
        "max": 20,
        "step": 0.1
      }
    },
    {
      "name": "pauseOnHover",
      "type": "boolean",
      "default": false,
      "description": "Pauses autoplay while hovered.",
      "remixer": {
        "control": "checkbox",
        "group": "motion",
        "groupTitle": "Motion"
      }
    },
    {
      "name": "throwMultiplier",
      "type": "number",
      "default": 2.8,
      "description": "Drag-release momentum strength.",
      "remixer": {
        "control": "range",
        "group": "motion",
        "groupTitle": "Motion",
        "min": 0,
        "max": 8,
        "step": 0.1
      }
    },
    {
      "name": "throwFriction",
      "type": "number",
      "default": 0.975,
      "description": "Momentum decay rate per frame after a drag release — closer to 1 coasts longer.",
      "remixer": {
        "control": "range",
        "group": "motion",
        "groupTitle": "Motion",
        "min": 0.8,
        "max": 0.999,
        "step": 0.001
      }
    }
  ],
  "remixer": {
    "enabled": true,
    "defaultOpenGroupId": "motion",
    "layout": {
      "buttonClassName": "right-4! top-25!",
      "panelClassName": "right-0! top-[132px]! h-[calc(100%-132px)]! w-[344px]!"
    },
    "copyCode": {
      "includeOnlyPublicProps": true
    }
  },
  "files": [
    {
      "path": "index.tsx",
      "type": "registry:component",
      "target": "src/components/effects/draggable-marquee/index.tsx"
    },
    {
      "path": "DraggableMarqueeComp.tsx",
      "type": "registry:component",
      "target": "src/components/effects/draggable-marquee/DraggableMarqueeComp.tsx"
    },
    {
      "path": "createSuspendedRaf.ts",
      "type": "registry:component",
      "target": "src/components/effects/draggable-marquee/createSuspendedRaf.ts"
    }
  ]
}