{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "pixel-perfect",
  "homepage": "https://www.pixel-perfect.space",
  "items": [
    {
      "name": "3d-button",
      "description": "3D push button with press/hover physics and 8 color variants: amber, emerald, rose, sky, violet, slate, coral, mint.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/3d-button.tsx",
          "target": "components/pixel-perfect/3d-button.tsx"
        }
      ]
    },
    {
      "name": "morph-button",
      "description": "A button that morphs its shape on hover using GSAP.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/morph-button.tsx",
          "target": "components/pixel-perfect/morph-button.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "morph-image-button",
      "description": "A button that morphs an image mask on hover using GSAP.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/morph-image-button.tsx",
          "target": "components/pixel-perfect/morph-image-button.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "shiny-button",
      "description": "A shiny button with hover effects.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/shiny-button.tsx",
          "target": "components/pixel-perfect/shiny-button.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "mouse-follower-button",
      "description": "A button that follows the mouse cursor with hover effects.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/mouse-follower-button.tsx",
          "target": "components/pixel-perfect/mouse-follower-button.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "border-gradient-button",
      "description": "A button with a gradient border effect.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/border-gradient-button.tsx",
          "target": "components/pixel-perfect/border-gradient-button.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "premium-button",
      "description": "Neumorphic premium button with layered shadows and 8 color variants: neutral, dark, gold, mint, rose, sky, lavender, sand.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/premium-button.tsx",
          "target": "components/pixel-perfect/premium-button.tsx"
        }
      ]
    },
    {
      "name": "orange-premium-button",
      "description": "Glossy gradient button with soft glow and 8 color variants: orange, pink, emerald, violet, sky, ocean, gold, magenta.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/orange-premium-button.tsx",
          "target": "components/pixel-perfect/orange-premium-button.tsx"
        }
      ]
    },
    {
      "name": "blue-chrome-button",
      "description": "A chrome-style button with layered glow border and smooth motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/blue-chrome-button.tsx",
          "target": "components/pixel-perfect/blue-chrome-button.tsx"
        }
      ]
    },
    {
      "name": "stripe-button",
      "description": "A Stripe-inspired button with inset shadow effect.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/stripe-button.tsx",
          "target": "components/pixel-perfect/stripe-button.tsx"
        }
      ]
    },
    {
      "name": "learn-more-button",
      "description": "An animated learn more button with hover effects using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/learn-more-buttion.tsx",
          "target": "components/pixel-perfect/learn-more-button.tsx"
        }
      ]
    },
    {
      "name": "visit-button",
      "description": "A compact visit button with label and icon swap on hover.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/visit-button.tsx",
          "target": "components/pixel-perfect/visit-button.tsx"
        }
      ]
    },
    {
      "name": "toggle-button",
      "description": "An animated toggle switch with spring physics using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/toggle-buttion.tsx",
          "target": "components/pixel-perfect/toggle-button.tsx"
        }
      ]
    },
    {
      "name": "abhinav-bento-button",
      "description": "A large bento-style button.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/abhinav-bento-button.tsx",
          "target": "components/pixel-perfect/abhinav-bento-button.tsx"
        }
      ]
    },
    {
      "name": "event-timeline-bento-card",
      "description": "A bento-style event timeline summary card.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/bento-cards/event-timeline-bento-card.tsx",
          "target": "components/pixel-perfect/event-timeline-bento-card.tsx"
        }
      ]
    },
    {
      "name": "goe-button",
      "description": "A gooey SVG filter button effect using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/goe-button.tsx",
          "target": "components/pixel-perfect/goe-button.tsx"
        }
      ]
    },
    {
      "name": "blur-toggle-button",
      "description": "A button with blur transition effect on toggle using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/blur-toggle-button.tsx",
          "target": "components/pixel-perfect/blur-toggle-button.tsx"
        }
      ]
    },
    {
      "name": "matte-shadow-button",
      "description": "A dark matte button with layered depth shadow.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/matte-shadow-button.tsx",
          "target": "components/pixel-perfect/matte-shadow-button.tsx"
        }
      ]
    },
    {
      "name": "matte-dark-button",
      "description": "A matte dark button with #222 base and layered shadow depth.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/matte-dark-button.tsx",
          "target": "components/pixel-perfect/matte-dark-button.tsx"
        }
      ]
    },
    {
      "name": "metal-button",
      "description": "A metallic button with 8 metal variants: silver, chrome, gold, copper, bronze, titanium, rose-gold, gunmetal.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/metal-button.tsx",
          "target": "components/pixel-perfect/metal-button.tsx"
        }
      ]
    },
    {
      "name": "glass-button",
      "description": "A frosted glass button with gradient border and 10 color variants: blue, purple, emerald, rose, amber, cyan, lime, slate, red, indigo.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/glass-button.tsx",
          "target": "components/pixel-perfect/glass-button.tsx"
        }
      ]
    },
    {
      "name": "refraction-glass-button",
      "description": "A real glass button that refracts the content behind it via an feDisplacementMap lens, with chromatic edge fringe and specular sheen.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/refraction-glass-button.tsx",
          "target": "components/pixel-perfect/refraction-glass-button.tsx"
        }
      ]
    },
    {
      "name": "prism-glass-button",
      "description": "A thick domed glass button that refracts the content behind it via an feDisplacementMap lens, with a heavy chromatic-aberration fringe, frost and specular sheen. Draggable.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/prism-glass-button.tsx",
          "target": "components/pixel-perfect/prism-glass-button.tsx"
        }
      ]
    },
    {
      "name": "glass-square-button",
      "description": "A rounded-square frosted glass button with diagonal gradient border and 10 color variants: blue, purple, emerald, rose, amber, cyan, lime, slate, red, indigo.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/glass-square-button.tsx",
          "target": "components/pixel-perfect/glass-square-button.tsx"
        }
      ]
    },
    {
      "name": "glass-circle-button",
      "description": "A circular icon glass button with conic gradient ring and frosted core. 10 color variants and a swappable Lucide icon.",
      "type": "registry:block",
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/glass-circle-button.tsx",
          "target": "components/pixel-perfect/glass-circle-button.tsx"
        }
      ]
    },
    {
      "name": "glass-icon-button",
      "description": "A frosted glass pill button with an embedded icon capsule. 10 color variants and a swappable Lucide icon.",
      "type": "registry:block",
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/glass-icon-button.tsx",
          "target": "components/pixel-perfect/glass-icon-button.tsx"
        }
      ]
    },
    {
      "name": "cyber-button",
      "description": "A cyberpunk-style button with neon borders and glitch effects.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/cyber-button.tsx",
          "target": "components/pixel-perfect/cyber-button.tsx"
        }
      ]
    },
    {
      "name": "pixel-credits-button",
      "description": "A soft keycap-style button for Pixel Credits.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "src/components/pixel-perfect/pixel-credits-button.tsx",
          "target": "components/pixel-perfect/pixel-credits-button.tsx"
        }
      ]
    },
    {
      "name": "border-1",
      "description": "A dashed border design with corner elements.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/border1.tsx",
          "target": "components/pixel-perfect/border1.tsx"
        }
      ]
    },
    {
      "name": "border-2",
      "description": "A solid border design with corner elements.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/border2.tsx",
          "target": "components/pixel-perfect/border2.tsx"
        }
      ]
    },
    {
      "name": "intersection-1",
      "description": "A circular border with gradient intersection lines.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/intersection1.tsx",
          "target": "components/pixel-perfect/intersection1.tsx"
        }
      ]
    },
    {
      "name": "intersection-2",
      "description": "A scoped intersection design with patterned borders.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/intersection2.tsx",
          "target": "components/pixel-perfect/intersection2.tsx"
        }
      ]
    },
    {
      "name": "star-border",
      "description": "Star border decorator with animated corners.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/star-border.tsx",
          "target": "components/pixel-perfect/star-border.tsx"
        }
      ]
    },
    {
      "name": "mouse-follower-1",
      "description": "Image trail mouse follower using GSAP.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mouse-follower1.tsx",
          "target": "components/pixel-perfect/mouse-follower1.tsx"
        }
      ]
    },
    {
      "name": "mouse-follower-2",
      "description": "Mouse follower image trail with pure DOM.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mouse-follower2.tsx",
          "target": "components/pixel-perfect/mouse-follower2.tsx"
        }
      ]
    },
    {
      "name": "text-fade",
      "description": "Text fades in/out on scroll using GSAP.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-fade.tsx",
          "target": "components/pixel-perfect/text-fade.tsx"
        }
      ]
    },
    {
      "name": "text-inertia",
      "description": "Text follows mouse with inertia using GSAP.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-inertia.tsx",
          "target": "components/pixel-perfect/text-inertia.tsx"
        }
      ]
    },
    {
      "name": "text-gradient",
      "description": "Gradient text effect using CSS.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-gradient.tsx",
          "target": "components/pixel-perfect/text-gradient.tsx"
        }
      ]
    },
    {
      "name": "text-x-rotate",
      "description": "3D X-axis rotation effect with stagger.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-x-rotate.tsx",
          "target": "components/pixel-perfect/text-x-rotate.tsx"
        }
      ]
    },
    {
      "name": "text-y-animation",
      "description": "Y-axis slide animation with stagger.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-y-animation.tsx",
          "target": "components/pixel-perfect/text-y-animation.tsx"
        }
      ]
    },
    {
      "name": "text-y-animation2",
      "description": "Variant Y-axis animation effect.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-y-animation2.tsx",
          "target": "components/pixel-perfect/text-y-animation2.tsx"
        }
      ]
    },
    {
      "name": "text-y-animation3",
      "description": "Variant Y-axis animation effect.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-y-animation3.tsx",
          "target": "components/pixel-perfect/text-y-animation3.tsx"
        }
      ]
    },
    {
      "name": "text-y-animation4",
      "description": "Variant Y-axis animation effect.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-y-animation4.tsx",
          "target": "components/pixel-perfect/text-y-animation4.tsx"
        }
      ]
    },
    {
      "name": "text-scatter",
      "description": "Text scatters and assembles with animation.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-scatter.tsx",
          "target": "components/pixel-perfect/text-scatter.tsx"
        }
      ]
    },
    {
      "name": "text-scatter1",
      "description": "Text scatter variant animation.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-scatter1.tsx",
          "target": "components/pixel-perfect/text-scatter1.tsx"
        }
      ]
    },
    {
      "name": "text-z-rotate",
      "description": "Z-axis rotation text animation.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-z-rotate.tsx",
          "target": "components/pixel-perfect/text-z-rotate.tsx"
        }
      ]
    },
    {
      "name": "text-z-rotate2",
      "description": "Z-axis rotation text animation variant.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-z-rotate2.tsx",
          "target": "components/pixel-perfect/text-z-rotate2.tsx"
        }
      ]
    },
    {
      "name": "text-video",
      "description": "Video masked text effect.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-video.tsx",
          "target": "components/pixel-perfect/text-video.tsx"
        }
      ]
    },
    {
      "name": "text-reveal",
      "description": "Text reveal animation effect.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-reveal.tsx",
          "target": "components/pixel-perfect/text-reveal.tsx"
        }
      ]
    },
    {
      "name": "text-reveal2",
      "description": "Text reveal animation variant.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-reveal2.tsx",
          "target": "components/pixel-perfect/text-reveal2.tsx"
        }
      ]
    },
    {
      "name": "text-black-hole",
      "description": "Letters come from center, stretched and sucked outward.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-black-hole.tsx",
          "target": "components/pixel-perfect/text-black-hole.tsx"
        }
      ]
    },
    {
      "name": "text-burn-neon",
      "description": "Random flicker then letters glow red and turn white.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-burn-neon.tsx",
          "target": "components/pixel-perfect/text-burn-neon.tsx"
        }
      ]
    },
    {
      "name": "text-broken-glass",
      "description": "Letters start shattered and rotated then snap into place.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-broken-glass.tsx",
          "target": "components/pixel-perfect/text-broken-glass.tsx"
        }
      ]
    },
    {
      "name": "text-matrix-rain",
      "description": "Columns of random symbols fall then lock into real text.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-matrix-rain.tsx",
          "target": "components/pixel-perfect/text-matrix-rain.tsx"
        }
      ]
    },
    {
      "name": "text-glitch-portal",
      "description": "RGB split plus scale blur then collapse into clean text.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-glitch-portal.tsx",
          "target": "components/pixel-perfect/text-glitch-portal.tsx"
        }
      ]
    },
    {
      "name": "text-typewriter-glitch",
      "description": "Types then deletes then types wrong then finally correct.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-typewriter-glitch.tsx",
          "target": "components/pixel-perfect/text-typewriter-glitch.tsx"
        }
      ]
    },
    {
      "name": "text-x-rotate2",
      "description": "Y-axis text animation with blur using GSAP SplitText.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-x-rotate2.tsx",
          "target": "components/pixel-perfect/text-x-rotate2.tsx"
        }
      ]
    },
    {
      "name": "text-assemble",
      "description": "Text assembles from scattered pieces using GSAP ScrollTrigger.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-assemble.tsx",
          "target": "components/pixel-perfect/text-assemble.tsx"
        }
      ]
    },
    {
      "name": "svg-1",
      "description": "Animated SVG asset with GSAP.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg-1.tsx",
          "target": "components/pixel-perfect/svg-1.tsx"
        }
      ]
    },
    {
      "name": "svg-2",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg-2.tsx",
          "target": "components/pixel-perfect/svg-2.tsx"
        }
      ]
    },
    {
      "name": "svg-4",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg-4.tsx",
          "target": "components/pixel-perfect/svg-4.tsx"
        }
      ]
    },
    {
      "name": "svg-5",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg5.tsx",
          "target": "components/pixel-perfect/svg5.tsx"
        }
      ]
    },
    {
      "name": "svg-6",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg6.tsx",
          "target": "components/pixel-perfect/svg6.tsx"
        }
      ]
    },
    {
      "name": "svg-8",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg8.tsx",
          "target": "components/pixel-perfect/svg8.tsx"
        }
      ]
    },
    {
      "name": "svg-9",
      "description": "Animated SVG asset.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg-9.tsx",
          "target": "components/pixel-perfect/svg-9.tsx"
        }
      ]
    },
    {
      "name": "stagger-1",
      "description": "GSAP stagger animation component.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/stagger1.tsx",
          "target": "components/pixel-perfect/stagger1.tsx"
        }
      ]
    },
    {
      "name": "flip-text-reveal",
      "description": "A GSAP Flip orb transition followed by a staggered word reveal.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/flip-text-reveal.tsx",
          "target": "components/pixel-perfect/flip-text-reveal.tsx"
        },
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/gsap-flip.d.ts",
          "target": "components/pixel-perfect/gsap-flip.d.ts"
        }
      ]
    },
    {
      "name": "card-animation",
      "description": "Framer Motion card animation.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/card-animation.tsx",
          "target": "components/pixel-perfect/card-animation.tsx"
        }
      ],
      "registryDependencies": [
        "button",
        "card"
      ]
    },
    {
      "name": "logo-animation",
      "description": "Logo animation with Framer Motion and custom background.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/logo-animation.tsx",
          "target": "components/pixel-perfect/logo-animation.tsx"
        }
      ]
    },
    {
      "name": "image-hover-animation",
      "description": "An image hover animation with scaling and opacity effects.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/image-hover-animation.tsx",
          "target": "components/pixel-perfect/image-hover-animation.tsx"
        }
      ]
    },
    {
      "name": "tab-background-animation",
      "description": "A tab background animation using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/tab-background-animation.tsx",
          "target": "components/pixel-perfect/tab-background-animation.tsx"
        }
      ]
    },
    {
      "name": "success-ripple-animation",
      "description": "A looping success ripple animation with expanding rings and a checkmark draw.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/success-ripple-animation.tsx",
          "target": "components/pixel-perfect/success-ripple-animation.tsx"
        }
      ]
    },
    {
      "name": "orbit-dot-motion",
      "description": "A 3D orbiting dot animation with perspective and rotateY motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/orbit-dot-motion.tsx",
          "target": "components/pixel-perfect/orbit-dot-motion.tsx"
        }
      ]
    },
    {
      "name": "coin-spin-animation",
      "description": "A 3D spinning coin animation with layered faces and side depth.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/coin-spin-animation.tsx",
          "target": "components/pixel-perfect/coin-spin-animation.tsx"
        }
      ]
    },
    {
      "name": "activity-wheel-motion",
      "description": "Scrollable arc-curved vibe picker with violet active fill and a dark indicator pill.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/activity-wheel-motion.tsx",
          "target": "components/pixel-perfect/activity-wheel-motion.tsx"
        }
      ]
    },
    {
      "name": "car-lock-drive-motion",
      "description": "Side-view car with a clean lock/drive pill switch that springs the car forward on drive.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/car-lock-drive-motion.tsx",
          "target": "components/pixel-perfect/car-lock-drive-motion.tsx"
        }
      ]
    },
    {
      "name": "dial-knob-motion",
      "description": "Tactile rotary knob with layered bevel discs, two tick rings, and an amber dot-arc indicator. Drag or scroll to change value.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/dial-knob-motion.tsx",
          "target": "components/pixel-perfect/dial-knob-motion.tsx"
        }
      ]
    },
    {
      "name": "guitar-svg",
      "description": "Guitar SVG path effect animation.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "@gsap/react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg-path-effects/guitar.tsx",
          "target": "components/pixel-perfect/guitar.tsx"
        }
      ]
    },
    {
      "name": "cd",
      "description": "An animated ASCII CD render with responsive scaling.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/ascii/cd.tsx",
          "target": "components/pixel-perfect/cd.tsx"
        }
      ]
    },
    {
      "name": "book-demo-button",
      "description": "Lime square with animated dotted chevron arrows that expands a dark panel on hover to reveal a label.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/book-demo-button.tsx",
          "target": "components/pixel-perfect/book-demo-button.tsx"
        }
      ]
    },
    {
      "name": "glassy-button",
      "description": "Chunky square glass/metal button with vertical gradient ring, layered floating shadow, and animated press state with icon dimming.",
      "type": "registry:block",
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/glassy-button.tsx",
          "target": "components/pixel-perfect/glassy-button.tsx"
        }
      ]
    },
    {
      "name": "rainbow-glowing-button",
      "description": "Dark pill button with a rainbow glow that auto-cycles through 6 color variants (red, orange, yellow, green, blue, pink) using radial blur and gradient stroke.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/rainbow-glowing-button.tsx",
          "target": "components/pixel-perfect/rainbow-glowing-button.tsx"
        }
      ]
    },
    {
      "name": "bevel-button",
      "description": "Compact dark button with a top-light to bottom-dark gradient stroke and layered inset bevel shadows for a tactile chiseled feel.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/bevel-button.tsx",
          "target": "components/pixel-perfect/bevel-button.tsx"
        }
      ]
    },
    {
      "name": "liquid-button",
      "description": "Frosted-glass pill button with gradient ring and a hover slide that swaps two stacked text labels.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/liquid-button.tsx",
          "target": "components/pixel-perfect/liquid-button.tsx"
        }
      ]
    },
    {
      "name": "soft-pill-button",
      "description": "Frosted-glass pill button with layered highlights, gradient border, and primary/secondary variants.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/soft-pill-button.tsx",
          "target": "components/pixel-perfect/soft-pill-button.tsx"
        }
      ]
    },
    {
      "name": "framer-cta-button",
      "description": "Framer-style CTA pill button with brand icon and dark/light variants.",
      "type": "registry:block",
      "dependencies": [
        "react-icons"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/framer-cta-button.tsx",
          "target": "components/pixel-perfect/framer-cta-button.tsx"
        }
      ]
    },
    {
      "name": "liquid-gradient-button",
      "description": "Premium gradient button with image overlay, loading animation, and 8 color variants: pink, cyan, emerald, amber, crimson, violet, ocean, sunset.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/liquid-gradient-button.tsx",
          "target": "components/pixel-perfect/liquid-gradient-button.tsx"
        }
      ],
      "registryDependencies": [
        "spinner"
      ]
    },
    {
      "name": "radial-gradient-button",
      "description": "Radial gradient button with inset glow and 8 color variants: blue, purple, emerald, crimson, amber, cyan, violet, rose.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/radial-gradient-button.tsx",
          "target": "components/pixel-perfect/radial-gradient-button.tsx"
        }
      ],
      "registryDependencies": [
        "spinner"
      ]
    },
    {
      "name": "barwave-svg-animation",
      "description": "A bar wave SVG animation with interactive hover, using Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/bar-wave-animation.tsx",
          "target": "components/pixel-perfect/bar-wave-animation.tsx"
        }
      ]
    },
    {
      "name": "claude-sidebar",
      "description": "Claude-style sidebar built on shadcn/ui's <Sidebar> primitives. Smooth icon-rail collapse animation, playful icon micro-interactions on hover, starred & recent chat lists, user card with auto-tooltips when collapsed. Customizable via props (navItems, starred, recents, user).",
      "type": "registry:block",
      "dependencies": [],
      "registryDependencies": [
        "sidebar"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/sidebars/claude-sidebar.tsx",
          "target": "components/pixel-perfect/claude-sidebar.tsx"
        }
      ]
    },
    {
      "name": "border1",
      "description": "Border1 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/border1.tsx",
          "target": "components/pixel-perfect/border1.tsx"
        }
      ]
    },
    {
      "name": "border2",
      "description": "Border2 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/border2.tsx",
          "target": "components/pixel-perfect/border2.tsx"
        }
      ]
    },
    {
      "name": "intersection-grid-svg",
      "description": "Intersection Grid Svg component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/intersection-grid-svg.tsx",
          "target": "components/pixel-perfect/intersection-grid-svg.tsx"
        }
      ]
    },
    {
      "name": "intersection1",
      "description": "Intersection1 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/intersection1.tsx",
          "target": "components/pixel-perfect/intersection1.tsx"
        }
      ]
    },
    {
      "name": "intersection2",
      "description": "Intersection2 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/borders/intersection2.tsx",
          "target": "components/pixel-perfect/intersection2.tsx"
        }
      ]
    },
    {
      "name": "learn-more-buttion",
      "description": "Learn More Buttion component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/learn-more-buttion.tsx",
          "target": "components/pixel-perfect/learn-more-buttion.tsx"
        }
      ]
    },
    {
      "name": "liquid-glass-button",
      "description": "Liquid Glass Button component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/liquid-glass-button.tsx",
          "target": "components/pixel-perfect/liquid-glass-button.tsx"
        }
      ]
    },
    {
      "name": "pearl-toggle-button",
      "description": "Pearl Toggle Button component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/pearl-toggle-button.tsx",
          "target": "components/pixel-perfect/pearl-toggle-button.tsx"
        }
      ]
    },
    {
      "name": "recessed-stepper-button",
      "description": "Recessed Stepper Button component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/recessed-stepper-button.tsx",
          "target": "components/pixel-perfect/recessed-stepper-button.tsx"
        }
      ]
    },
    {
      "name": "squircle-counter-button",
      "description": "Squircle Counter Button component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/squircle-counter-button.tsx",
          "target": "components/pixel-perfect/squircle-counter-button.tsx"
        }
      ]
    },
    {
      "name": "toggle-buttion",
      "description": "Toggle Buttion component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/toggle-buttion.tsx",
          "target": "components/pixel-perfect/toggle-buttion.tsx"
        }
      ]
    },
    {
      "name": "gsap-flip.d",
      "description": "Gsap Flip.d component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/gsap-flip.d.ts",
          "target": "components/pixel-perfect/gsap-flip.d.ts"
        }
      ]
    },
    {
      "name": "stagger1",
      "description": "Stagger1 component.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/stagger1.tsx",
          "target": "components/pixel-perfect/stagger1.tsx"
        }
      ]
    },
    {
      "name": "free-premium-toggle",
      "description": "Free Premium Toggle component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/free-premium-toggle.tsx",
          "target": "components/pixel-perfect/free-premium-toggle.tsx"
        }
      ]
    },
    {
      "name": "milestone-odometer",
      "description": "Milestone Odometer component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/milestone-odometer.tsx",
          "target": "components/pixel-perfect/milestone-odometer.tsx"
        }
      ]
    },
    {
      "name": "mouse-follower1",
      "description": "Mouse Follower1 component.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mouse-follower1.tsx",
          "target": "components/pixel-perfect/mouse-follower1.tsx"
        }
      ]
    },
    {
      "name": "mouse-follower2",
      "description": "Mouse Follower2 component.",
      "type": "registry:block",
      "dependencies": [],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mouse-follower2.tsx",
          "target": "components/pixel-perfect/mouse-follower2.tsx"
        }
      ]
    },
    {
      "name": "bar-wave-animation",
      "description": "Bar Wave Animation component.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/bar-wave-animation.tsx",
          "target": "components/pixel-perfect/bar-wave-animation.tsx"
        }
      ]
    },
    {
      "name": "svg5",
      "description": "Svg5 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg5.tsx",
          "target": "components/pixel-perfect/svg5.tsx"
        }
      ]
    },
    {
      "name": "svg6",
      "description": "Svg6 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg6.tsx",
          "target": "components/pixel-perfect/svg6.tsx"
        }
      ]
    },
    {
      "name": "svg8",
      "description": "Svg8 component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/svg8.tsx",
          "target": "components/pixel-perfect/svg8.tsx"
        }
      ]
    },
    {
      "name": "guitar",
      "description": "Guitar component.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg-path-effects/guitar.tsx",
          "target": "components/pixel-perfect/guitar.tsx"
        }
      ]
    },
    {
      "name": "text-editor-italic",
      "description": "Soft cream \"Text Editor\" mock with a neumorphic toolbar. The cursor drifts",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/text-editor-italic.tsx",
          "target": "components/pixel-perfect/text-editor-italic.tsx"
        }
      ]
    },
    {
      "name": "yoga-invite-card",
      "description": "Soft cream invite card with clean subtle micro-animations on mount —",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/yoga-invite-card.tsx",
          "target": "components/pixel-perfect/yoga-invite-card.tsx"
        }
      ]
    },
    {
      "name": "silver-button",
      "description": "Glossy silver pill button with a vertical white-to-gray gradient stroke and embossed letterpress text, in slim steel and chunky pearl variants.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/silver-button.tsx",
          "target": "components/pixel-perfect/silver-button.tsx"
        }
      ]
    },
    {
      "name": "smiley-orb-animation",
      "description": "Smiley Orb Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/smiley-orb-animation.tsx",
          "target": "components/pixel-perfect/smiley-orb-animation.tsx"
        }
      ]
    },
    {
      "name": "orbit-smiley-animation",
      "description": "Orbit Smiley Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/orbit-smiley-animation.tsx",
          "target": "components/pixel-perfect/orbit-smiley-animation.tsx"
        }
      ]
    },
    {
      "name": "glow-card-animation",
      "description": "Glow Card Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/glow-card-animation.tsx",
          "target": "components/pixel-perfect/glow-card-animation.tsx"
        }
      ]
    },
    {
      "name": "liquid-pause-animation",
      "description": "Liquid Pause Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/liquid-pause-animation.tsx",
          "target": "components/pixel-perfect/liquid-pause-animation.tsx"
        }
      ]
    },
    {
      "name": "paper-plane-animation",
      "description": "Paper Plane Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/paper-plane-animation.tsx",
          "target": "components/pixel-perfect/paper-plane-animation.tsx"
        }
      ]
    },
    {
      "name": "bounce-smiley-animation",
      "description": "Bounce Smiley Animation component.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/svg/bounce-smiley-animation.tsx",
          "target": "components/pixel-perfect/bounce-smiley-animation.tsx"
        }
      ]
    },
    {
      "name": "custom",
      "description": "Layout-aware custom renderers from the `animate-text` catalog that cannot be",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/animate-text/custom.tsx",
          "target": "components/pixel-perfect/custom.tsx"
        }
      ]
    },
    {
      "name": "engine",
      "description": "Generic-stagger text animation engine.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/animate-text/engine.tsx",
          "target": "components/pixel-perfect/engine.tsx"
        }
      ]
    },
    {
      "name": "specs",
      "description": "Generic-stagger specs ported verbatim from the `animate-text` catalog.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/animate-text/specs.ts",
          "target": "components/pixel-perfect/specs.ts"
        }
      ]
    },
    {
      "name": "line-hover",
      "description": "Line text hover decode animations — faithful GSAP ports of the four Codrops",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/line-hover/line-hover.tsx",
          "target": "components/pixel-perfect/line-hover.tsx"
        }
      ]
    },
    {
      "name": "effects",
      "description": "Scroll-typography effect builders — faithful GSAP ScrollTrigger ports of the",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/scroll-typography/effects.ts",
          "target": "components/pixel-perfect/effects.ts"
        }
      ]
    },
    {
      "name": "index",
      "description": "Index component.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/scroll-typography/index.ts",
          "target": "components/pixel-perfect/index.ts"
        }
      ]
    },
    {
      "name": "text-block-transitions",
      "description": "Codrops \"Text Block Transitions\" — faithful ports of all 12 demos from",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/text-block-transitions.tsx",
          "target": "components/pixel-perfect/text-block-transitions.tsx"
        }
      ]
    },
    {
      "name": "gooey-text",
      "description": "Gooey text hover morph — faithful GSAP ports of the three Codrops",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/text/gooey-text.tsx",
          "target": "components/pixel-perfect/gooey-text.tsx"
        }
      ]
    },
    {
      "name": "color-flair-button",
      "description": "A pill button with a directional color flair: stacked concentric circles bloom from",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/color-flair-button.tsx",
          "target": "components/pixel-perfect/color-flair-button.tsx"
        }
      ]
    },
    {
      "name": "inertia-arrow-card",
      "description": "A notched card with a magnetic pill button: the pill flings with GSAP inertia in the",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap",
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/inertia-arrow-card.tsx",
          "target": "components/pixel-perfect/inertia-arrow-card.tsx"
        }
      ]
    },
    {
      "name": "infinite-carousel",
      "description": "A seamless infinite carousel where one GSAP timeline powers idle drift, scroll-velocity speed/reverse, hover-slow, and drag-to-scrub — all sharing a single playhead so they never desync.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/infinite-carousel.tsx",
          "target": "components/pixel-perfect/infinite-carousel.tsx"
        }
      ]
    },
    {
      "name": "scroll-direction-carousel",
      "description": "An infinite carousel whose travel direction follows your scroll direction and whose speed ramps with scroll velocity before easing back to a gentle drift — one GSAP timeline with a scroll-signed timeScale.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/scroll-direction-carousel.tsx",
          "target": "components/pixel-perfect/scroll-direction-carousel.tsx"
        }
      ]
    },
    {
      "name": "cards-slider",
      "description": "Cards Slider — an infinite deck of product cards. The active card sits",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/cards-slider.tsx",
          "target": "components/pixel-perfect/cards-slider.tsx"
        }
      ]
    },
    {
      "name": "radial-carousel",
      "description": "A radial arc carousel: cards fan along a circle's top arc and the whole wheel spins around its center as you scroll, carrying velocity momentum — every card shares one far-below transform-origin, so a single rotation value drives them all.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/radial-carousel.tsx",
          "target": "components/pixel-perfect/radial-carousel.tsx"
        }
      ]
    },
    {
      "name": "bend-image-reveal",
      "description": "A pixel-art frame that flies in and warps with an air-friction bend, deformed on a WebGL plane by a GSAP-driven vertex shader.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/fiber",
        "gsap",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/bend-image-reveal.tsx",
          "target": "components/pixel-perfect/bend-image-reveal.tsx"
        }
      ]
    },
    {
      "name": "bend-zoom-reveal",
      "description": "A pixel-art frame that flies in, then zooms to fill the box as you scroll inside it, warping with an air-friction bend on a WebGL plane.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/fiber",
        "gsap",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/bend-zoom-reveal.tsx",
          "target": "components/pixel-perfect/bend-zoom-reveal.tsx"
        }
      ]
    },
    {
      "name": "bend-mouse-follower",
      "description": "A pixel-art frame that smoothly chases the cursor and warps with an air-friction bend on a WebGL plane.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/fiber",
        "gsap",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/bend-mouse-follower.tsx",
          "target": "components/pixel-perfect/bend-mouse-follower.tsx"
        }
      ]
    },
    {
      "name": "bend-button-follower",
      "description": "A rounded pill button with text that smoothly chases the cursor and warps with an air-friction bend on a WebGL plane.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/bend-button-follower.tsx",
          "target": "components/pixel-perfect/bend-button-follower.tsx"
        }
      ]
    },
    {
      "name": "magnetic-button",
      "description": "A magnetic button that eases toward the cursor inside its zone, demonstrating GSAP's overwrite modes (true / false / \"auto\") against an idle CustomWiggle loop.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/buttons/magnetic-button.tsx",
          "target": "components/pixel-perfect/magnetic-button.tsx"
        }
      ]
    },
    {
      "name": "rect-mask-reveal",
      "description": "A rectangular mask reveal — the image stays fixed while a clip-path inset rectangle grows from the center, keeping the video aspect ratio, to uncover the whole frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/rect-mask-reveal.tsx",
          "target": "components/pixel-perfect/rect-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "star-mask-reveal",
      "description": "A star-shaped mask reveal — a sparkle clip-path spins 360° once while scaling up from nothing to uncover the full image.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/star-mask-reveal.tsx",
          "target": "components/pixel-perfect/star-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "directional-mask-reveal",
      "description": "A directional mask reveal — the image wipes in from a chosen edge (top, bottom, left, or right) via an animated clip-path inset.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/directional-mask-reveal.tsx",
          "target": "components/pixel-perfect/directional-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "hero-cover-reveal",
      "description": "A scroll-driven hero cover reveal — the hero pins in place while the next section slides up and covers it, scrubbed by GSAP ScrollTrigger.",
      "type": "registry:block",
      "dependencies": [
        "@gsap/react",
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/scroll/hero-cover-reveal.tsx",
          "target": "components/pixel-perfect/hero-cover-reveal.tsx"
        }
      ]
    },
    {
      "name": "footer-reveal",
      "description": "A scroll-driven footer reveal — the footer sits pinned in place while the content above slides up to uncover it. Pure CSS sticky, no JS.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/scroll/footer-reveal.tsx",
          "target": "components/pixel-perfect/footer-reveal.tsx"
        }
      ]
    },
    {
      "name": "text-along-path",
      "description": "Text that slides around a curved SVG path as you scroll inside the card — a GSAP take on Olivier Larose's text-along-path, with eased catch-up via gsap.quickTo.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/gsap/text-along-path.tsx",
          "target": "components/pixel-perfect/text-along-path.tsx"
        }
      ]
    },
    {
      "name": "stacking-cards-parallax",
      "description": "A scroll-driven stacking card parallax — sticky cards pin and scale down as later cards scroll up over them, building a layered depth stack.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/scroll/stacking-cards-parallax.tsx",
          "target": "components/pixel-perfect/stacking-cards-parallax.tsx"
        }
      ]
    },
    {
      "name": "center-split-reveal",
      "description": "A center-split mask reveal — the image is clipped to a closed vertical seam down the middle, then the clip-path opens left and right to split it apart and uncover the whole frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/center-split-reveal.tsx",
          "target": "components/pixel-perfect/center-split-reveal.tsx"
        }
      ]
    },
    {
      "name": "pixel-cursor-trail",
      "description": "A pixelated cursor trail: hovered grid cells flash and fade, leaving a trail behind the mouse, with blend-mode text on top.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/pixel-cursor-trail.tsx",
          "target": "components/pixel-perfect/pixel-cursor-trail.tsx"
        }
      ]
    },
    {
      "name": "text-clip-mask-reveal",
      "description": "A scroll-driven text-clip mask reveal — a video is clipped to the shape of a word, and as you scroll the text-shaped mask scales up until it opens out and uncovers the full frame.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/scroll/text-clip-mask-reveal.tsx",
          "target": "components/pixel-perfect/text-clip-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "blinds-mask-reveal",
      "description": "A venetian-blinds mask reveal — the image is hidden behind N slats cut from a repeating-linear-gradient CSS mask, then every slat opens at once to uncover the whole frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/blinds-mask-reveal.tsx",
          "target": "components/pixel-perfect/blinds-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "clock-mask-reveal",
      "description": "A radial clock-sweep mask reveal — a conic-gradient CSS mask sweeps a wedge around the center like a clock hand, uncovering the image angle by angle until the full frame shows.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/clock-mask-reveal.tsx",
          "target": "components/pixel-perfect/clock-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "iris-mask-reveal",
      "description": "A camera-iris mask reveal — a circular clip-path opens from wherever you click and expands until it reaches the farthest corner, uncovering the full frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/iris-mask-reveal.tsx",
          "target": "components/pixel-perfect/iris-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "mosaic-mask-reveal",
      "description": "A mosaic mask reveal — the image is rebuilt from a grid of square tiles that pop in with a staggered order (from the center, edges, randomly, or a corner) until the picture is whole.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/mosaic-mask-reveal.tsx",
          "target": "components/pixel-perfect/mosaic-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "brush-mask-reveal",
      "description": "A brush-stroke mask reveal — the image is painted in along a thick snaking brush stroke, using an inline SVG mask whose stroked path animates its stroke-dashoffset from hidden to fully drawn.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/brush-mask-reveal.tsx",
          "target": "components/pixel-perfect/brush-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "pinwheel-mask-reveal",
      "description": "A pinwheel mask reveal — N wedges sweep open around the center like a windmill (or a camera shutter), cut from an animated repeating-conic-gradient mask, until the full frame shows.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/pinwheel-mask-reveal.tsx",
          "target": "components/pixel-perfect/pinwheel-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "sonar-mask-reveal",
      "description": "A sonar mask reveal — concentric rings cut from a repeating-radial-gradient CSS mask thicken outward from the center, filling the gaps between them, until the whole frame is uncovered.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/sonar-mask-reveal.tsx",
          "target": "components/pixel-perfect/sonar-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "spotlight-mask-reveal",
      "description": "A spotlight mask reveal — the image stays dark except for a soft circle that follows your cursor like a flashlight; click to flood the whole frame with light (and click again to dim back to the spotlight).",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/spotlight-mask-reveal.tsx",
          "target": "components/pixel-perfect/spotlight-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "noise-mask-reveal",
      "description": "A fragment-shader noise mask reveal — the image dissolves in through a drifting cloud of fbm noise, with a warm grainy glow riding the dissolve edge. Click to replay.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/noise-mask-reveal.tsx",
          "target": "components/pixel-perfect/noise-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "noise-dissolve-reveal",
      "description": "A fragment-shader noise dissolve reveal — the image materialises in through a drifting cloud of fbm noise, with a warm grainy glow riding the dissolve edge. Click to replay.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/noise-dissolve-reveal.tsx",
          "target": "components/pixel-perfect/noise-dissolve-reveal.tsx"
        }
      ]
    },
    {
      "name": "gravity-image-trail",
      "description": "A GSAP image trail where images cascade from the cursor, fall, and bounce off the bottom edge.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/gravity-image-trail.tsx",
          "target": "components/pixel-perfect/gravity-image-trail.tsx"
        }
      ]
    },
    {
      "name": "scale-image-trail",
      "description": "A GSAP image trail that pops each image in with a bouncy scale, then shrinks it away behind the cursor.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/scale-image-trail.tsx",
          "target": "components/pixel-perfect/scale-image-trail.tsx"
        }
      ]
    },
    {
      "name": "image-trail-effects",
      "description": "A cursor image trail with six switchable reveal effects — flame, venetian, curtain, hexagon, liquid and zoom split.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-effects.tsx",
          "target": "components/pixel-perfect/image-trail-effects.tsx"
        }
      ]
    },
    {
      "name": "image-trail-direction",
      "description": "A GSAP cursor trail where each image slides in from the side the cursor is moving toward, then fades out.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-direction.tsx",
          "target": "components/pixel-perfect/image-trail-direction.tsx"
        }
      ]
    },
    {
      "name": "image-trail-drop",
      "description": "A GSAP cursor trail where images chase the cursor, then fade and fall off the bottom edge.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-drop.tsx",
          "target": "components/pixel-perfect/image-trail-drop.tsx"
        }
      ]
    },
    {
      "name": "image-trail-fade",
      "description": "A GSAP cursor trail where images ease toward the cursor, then fade and shrink away.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-fade.tsx",
          "target": "components/pixel-perfect/image-trail-fade.tsx"
        }
      ]
    },
    {
      "name": "image-trail-scaleup",
      "description": "A GSAP cursor trail where images trail the cursor on a long ease, then fade while scaling up and out.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-scaleup.tsx",
          "target": "components/pixel-perfect/image-trail-scaleup.tsx"
        }
      ]
    },
    {
      "name": "image-trail-slide",
      "description": "A GSAP cursor trail where images follow the cursor, then scatter off in random directions with a spin.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-slide.tsx",
          "target": "components/pixel-perfect/image-trail-slide.tsx"
        }
      ]
    },
    {
      "name": "image-trail-squeeze",
      "description": "A GSAP cursor trail where each image fades, squeezes thin and stretches tall as it drops away.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/image-trail-squeeze.tsx",
          "target": "components/pixel-perfect/image-trail-squeeze.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-classic",
      "description": "A GSAP cursor trail where images appear at the cursor, glide to it, then scale and fade out.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-classic.tsx",
          "target": "components/pixel-perfect/motion-trail-classic.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-exiting",
      "description": "A GSAP cursor trail where each image pops in at the cursor, then exits upward with a random sideways drift.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-exiting.tsx",
          "target": "components/pixel-perfect/motion-trail-exiting.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-flow",
      "description": "A GSAP cursor trail where images flare with brightness/contrast tied to speed, then drift off in the travel direction.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-flow.tsx",
          "target": "components/pixel-perfect/motion-trail-flow.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-innerscape",
      "description": "A GSAP cursor trail where the outer image grows in while its inner layer un-zooms from a bright over-scale.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-innerscape.tsx",
          "target": "components/pixel-perfect/motion-trail-innerscape.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-persistence",
      "description": "A GSAP cursor trail where blend-mode images linger in a stack and the oldest fades out as new ones arrive.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-persistence.tsx",
          "target": "components/pixel-perfect/motion-trail-persistence.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-perspective",
      "description": "A GSAP cursor trail where images tilt in 3D and shift in depth based on the cursor's distance from center.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-perspective.tsx",
          "target": "components/pixel-perfect/motion-trail-perspective.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-spin",
      "description": "A GSAP cursor trail where images rotate to follow the cursor's heading and fling off along its path.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-spin.tsx",
          "target": "components/pixel-perfect/motion-trail-spin.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-tile",
      "description": "A GSAP cursor trail where each image lands as a 3x3 grid of tiles that scatter and fade apart.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-tile.tsx",
          "target": "components/pixel-perfect/motion-trail-tile.tsx"
        }
      ]
    },
    {
      "name": "motion-trail-velocity",
      "description": "A GSAP cursor trail whose images grow, brighten, blur and desaturate in proportion to cursor speed.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/motion-trail-velocity.tsx",
          "target": "components/pixel-perfect/motion-trail-velocity.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-blinds",
      "description": "A cursor trail where each image opens through venetian-blind slats cut from a repeating-linear-gradient mask, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-blinds.tsx",
          "target": "components/pixel-perfect/mask-trail-blinds.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-clock",
      "description": "A cursor trail where each image sweeps in like a clock hand via a conic-gradient mask, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-clock.tsx",
          "target": "components/pixel-perfect/mask-trail-clock.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-iris",
      "description": "A cursor trail where each image irises open from a growing circular clip-path, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-iris.tsx",
          "target": "components/pixel-perfect/mask-trail-iris.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-pinwheel",
      "description": "A cursor trail where each image blooms open through spinning windmill wedges via a conic-gradient mask, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-pinwheel.tsx",
          "target": "components/pixel-perfect/mask-trail-pinwheel.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-rect",
      "description": "A cursor trail where each image grows open from a centered clip-path rectangle, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-rect.tsx",
          "target": "components/pixel-perfect/mask-trail-rect.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-sonar",
      "description": "A cursor trail where each image resolves from the center outward through concentric rings cut from a repeating-radial-gradient mask, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-sonar.tsx",
          "target": "components/pixel-perfect/mask-trail-sonar.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-split",
      "description": "A cursor trail where each image splits open from a centered seam via an animated clip-path inset, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-split.tsx",
          "target": "components/pixel-perfect/mask-trail-split.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-star",
      "description": "A cursor trail where each image bursts open from a growing, spinning sparkle clip-path, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-star.tsx",
          "target": "components/pixel-perfect/mask-trail-star.tsx"
        }
      ]
    },
    {
      "name": "mask-trail-wipe",
      "description": "A cursor trail where each image wipes upward from its bottom edge via an animated clip-path inset, then fades.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mouse-follower/mask-trail-wipe.tsx",
          "target": "components/pixel-perfect/mask-trail-wipe.tsx"
        }
      ]
    },
    {
      "name": "spinning-cube-motion",
      "description": "A 3D cube continuously spinning on its Y axis, built with CSS 3D transforms and driven by Framer Motion.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/spinning-cube-motion.tsx",
          "target": "components/pixel-perfect/spinning-cube-motion.tsx"
        }
      ]
    },
    {
      "name": "fluid-cube-scroll",
      "description": "A scroll-driven 3D cube that slides across the viewport while a GPU fluid simulation masks its colourful faces in under the cursor.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/scroll/fluid-cube-scroll.tsx",
          "target": "components/pixel-perfect/fluid-cube-scroll.tsx"
        }
      ]
    },
    {
      "name": "raycaster-shapes",
      "description": "Geometries on a 3D plane: a raycaster lights up the hovered shape's edges with a Fresnel rim shader, and clicking pops it up and spins it.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/three-js/raycaster-shapes.tsx",
          "target": "components/pixel-perfect/raycaster-shapes.tsx"
        }
      ]
    },
    {
      "name": "floating-logo-intro",
      "description": "A 3D logo that draws itself in (SVG stroke), rises with an easeOutBack overshoot and floats, over a cursor-distorted pixel-text background, with a hover ink-bleed reveal and click \"venom\" takeover shader.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "framer-motion",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/three-js/floating-logo-intro.tsx",
          "target": "components/pixel-perfect/floating-logo-intro.tsx"
        }
      ]
    },
    {
      "name": "perspective-deck-carousel",
      "description": "A row of image cards fanned along a 3D diagonal that recedes up-and-to-the-right; it auto-slides, loops infinitely with no seam, and can be dragged to scrub.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/perspective-deck-carousel.tsx",
          "target": "components/pixel-perfect/perspective-deck-carousel.tsx"
        }
      ]
    },
    {
      "name": "fanned-deck-carousel",
      "description": "A tall row of image cards fanned along a flat diagonal (no depth recede); each card is angled about Y. It auto-slides, loops infinitely with no seam, and can be dragged to scrub.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/fanned-deck-carousel.tsx",
          "target": "components/pixel-perfect/fanned-deck-carousel.tsx"
        }
      ]
    },
    {
      "name": "red-fire",
      "description": "ASCII flame animation rendered in a red terminal style.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/ascii/red-fire.tsx",
          "target": "components/pixel-perfect/red-fire.tsx"
        }
      ]
    },
    {
      "name": "gradient-bottom-bloom",
      "description": "A radial bloom rising from the bottom of the frame.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-bottom-bloom.tsx",
          "target": "components/pixel-perfect/gradient-bottom-bloom.tsx"
        }
      ]
    },
    {
      "name": "gradient-chrome",
      "description": "A chrome metallic reflection built from a multi-stop conic gradient.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-chrome.tsx",
          "target": "components/pixel-perfect/gradient-chrome.tsx"
        }
      ]
    },
    {
      "name": "gradient-conic-sweep",
      "description": "A layered multi-conic sweep blending black and grey.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-conic-sweep.tsx",
          "target": "components/pixel-perfect/gradient-conic-sweep.tsx"
        }
      ]
    },
    {
      "name": "gradient-cool-aurora",
      "description": "A cool aurora of layered blue and cyan radial glows.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-cool-aurora.tsx",
          "target": "components/pixel-perfect/gradient-cool-aurora.tsx"
        }
      ]
    },
    {
      "name": "gradient-coral-blur",
      "description": "A coral linear gradient with a faint backdrop blur.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-coral-blur.tsx",
          "target": "components/pixel-perfect/gradient-coral-blur.tsx"
        }
      ]
    },
    {
      "name": "gradient-diagonal-pattern",
      "description": "A fine diagonal repeating-line micro pattern.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-diagonal-pattern.tsx",
          "target": "components/pixel-perfect/gradient-diagonal-pattern.tsx"
        }
      ]
    },
    {
      "name": "gradient-dot-mesh",
      "description": "A fixed radial dot-mesh texture with a subtle inset ring.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-dot-mesh.tsx",
          "target": "components/pixel-perfect/gradient-dot-mesh.tsx"
        }
      ]
    },
    {
      "name": "gradient-dual-grid",
      "description": "A dual-scale grid system with light and dark variants.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-dual-grid.tsx",
          "target": "components/pixel-perfect/gradient-dual-grid.tsx"
        }
      ]
    },
    {
      "name": "gradient-fiery-aurora",
      "description": "A fiery aurora of layered orange and yellow radial glows.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-fiery-aurora.tsx",
          "target": "components/pixel-perfect/gradient-fiery-aurora.tsx"
        }
      ]
    },
    {
      "name": "gradient-glow-fade",
      "description": "Radial glow that fades from a blue bloom at the top into white.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-glow-fade.tsx",
          "target": "components/pixel-perfect/gradient-glow-fade.tsx"
        }
      ]
    },
    {
      "name": "gradient-gold-sheen",
      "description": "A gold metallic sheen sweeping across the frame.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-gold-sheen.tsx",
          "target": "components/pixel-perfect/gradient-gold-sheen.tsx"
        }
      ]
    },
    {
      "name": "gradient-purple-blue",
      "description": "A purple-to-blue angled linear gradient.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-purple-blue.tsx",
          "target": "components/pixel-perfect/gradient-purple-blue.tsx"
        }
      ]
    },
    {
      "name": "gradient-purple-metal",
      "description": "A purple brushed-metal sheen via hard-light blended gradients.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-purple-metal.tsx",
          "target": "components/pixel-perfect/gradient-purple-metal.tsx"
        }
      ]
    },
    {
      "name": "gradient-steel-metal",
      "description": "A steel brushed-metal sheen via hard-light blended gradients.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-steel-metal.tsx",
          "target": "components/pixel-perfect/gradient-steel-metal.tsx"
        }
      ]
    },
    {
      "name": "gradient-sunset-glow",
      "description": "A warm sunset glow with a soft red inner shadow.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/gradient-sunset-glow.tsx",
          "target": "components/pixel-perfect/gradient-sunset-glow.tsx"
        }
      ]
    },
    {
      "name": "nexvyn-gradient",
      "description": "A soft purple-and-orange radial gradient.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/nexvyn-gradient.tsx",
          "target": "components/pixel-perfect/nexvyn-gradient.tsx"
        }
      ]
    },
    {
      "name": "progressive-blur",
      "description": "A progressive (layered) backdrop-blur fade, stacking eight masked blur layers.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/progressive-blur.tsx",
          "target": "components/pixel-perfect/progressive-blur.tsx"
        }
      ]
    },
    {
      "name": "silver-metallic",
      "description": "A soft silver metallic gradient with a faint backdrop blur.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/backgrounds/silver-metallic.tsx",
          "target": "components/pixel-perfect/silver-metallic.tsx"
        }
      ]
    },
    {
      "name": "aurora-curtain",
      "description": "Drifting ribbons of green and violet light over a deep night sky.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/aurora-curtain.tsx",
          "target": "components/pixel-perfect/aurora-curtain.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "blob-sphere",
      "description": "A sphere displaced by 3D noise in the vertex shader — drag to spin.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/blob-sphere.tsx",
          "target": "components/pixel-perfect/blob-sphere.tsx"
        }
      ]
    },
    {
      "name": "cursor-spotlight",
      "description": "A noise-wobbled glow that tracks your cursor across the dark — hover to move it.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/cursor-spotlight.tsx",
          "target": "components/pixel-perfect/cursor-spotlight.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "day-night-sky",
      "description": "A shader sky that glides from day to night — sun, moon, drifting clouds and stars, with an optional scrub slider.",
      "type": "registry:block",
      "dependencies": [
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/day-night-sky.tsx",
          "target": "components/pixel-perfect/day-night-sky.tsx"
        }
      ]
    },
    {
      "name": "dreamy-clouds",
      "description": "Soft photographic cumulus clouds drifting across a periwinkle-to-pink dream sky — layered for depth, with lit tops and cool shadowed undersides.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/dreamy-clouds.tsx",
          "target": "components/pixel-perfect/dreamy-clouds.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "drifting-clouds",
      "description": "Soft warped fbm clouds rolling across a clear blue sky.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/drifting-clouds.tsx",
          "target": "components/pixel-perfect/drifting-clouds.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "gentle-waves",
      "description": "A calm light-to-blue gradient rolling with slow, soft waves.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/gentle-waves.tsx",
          "target": "components/pixel-perfect/gentle-waves.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "kaleidoscope",
      "description": "Eight-fold mirrored noise that slowly rotates through the spectrum.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/kaleidoscope.tsx",
          "target": "components/pixel-perfect/kaleidoscope.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "liquid-caustics",
      "description": "Sunlight refracting through rippling water onto a pool floor.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/liquid-caustics.tsx",
          "target": "components/pixel-perfect/liquid-caustics.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "liquid-metal",
      "description": "Layered domain warping that pools into a flowing chrome surface.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/liquid-metal.tsx",
          "target": "components/pixel-perfect/liquid-metal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "neon-rings",
      "description": "Pulsing, wobbling concentric rings glowing through a cosine spectrum.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/neon-rings.tsx",
          "target": "components/pixel-perfect/neon-rings.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "plasma-flow",
      "description": "Classic interfering sine fields cycling through a vivid cosine palette.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/plasma-flow.tsx",
          "target": "components/pixel-perfect/plasma-flow.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "seventies-melt",
      "description": "Iterated sine domain-warping melts the plane into a wobbling 70s lava haze.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/seventies-melt.tsx",
          "target": "components/pixel-perfect/seventies-melt.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "shader-canvas",
      "description": "A reusable full-screen fragment-shader canvas powered by Three.js, with shared GLSL helpers (noise/fbm), time/mouse/resolution uniforms and optional GUI controls.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/shader-canvas.tsx",
          "target": "components/pixel-perfect/shader-canvas.tsx"
        }
      ]
    },
    {
      "name": "twisted-blob",
      "description": "A vertex-twisted sphere with domain-warped noise — drag to spin.",
      "type": "registry:block",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/twisted-blob.tsx",
          "target": "components/pixel-perfect/twisted-blob.tsx"
        }
      ]
    },
    {
      "name": "wave-lines",
      "description": "Stacked glowing sine lines drifting at staggered speeds through a cosine palette.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/wave-lines.tsx",
          "target": "components/pixel-perfect/wave-lines.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "animated-texture",
      "description": "Helper that builds an animated (GIF/video-capable) Three.js texture for image shaders.",
      "type": "registry:block",
      "dependencies": [
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/animated-texture.ts",
          "target": "components/pixel-perfect/animated-texture.ts"
        }
      ]
    },
    {
      "name": "before-after",
      "description": "Drag the handle to wipe between two images with a liquid seam.",
      "type": "registry:block",
      "dependencies": [
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/before-after.tsx",
          "target": "components/pixel-perfect/before-after.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "cursor-reveal",
      "description": "Drag to paint colour back into a B&W photo, or scratch off frosted glass — strokes linger.",
      "type": "registry:block",
      "dependencies": [
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/cursor-reveal.tsx",
          "target": "components/pixel-perfect/cursor-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "cursor-trail-smear",
      "description": "Your cursor drags a liquid streak across the image that trails and fades.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/cursor-trail-smear.tsx",
          "target": "components/pixel-perfect/cursor-trail-smear.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "flow-field",
      "description": "Particles stream along curl-noise currents that reform the image.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/flow-field.tsx",
          "target": "components/pixel-perfect/flow-field.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "fluid-image",
      "description": "A real-time GPU fluid simulation — move your cursor to flow one image into another.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/fluid-image.tsx",
          "target": "components/pixel-perfect/fluid-image.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "image-particles",
      "description": "The image is shattered into a drifting grid of particles — move your cursor to disturb them.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/image-particles.tsx",
          "target": "components/pixel-perfect/image-particles.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "image-shader-canvas",
      "description": "A reusable image-shader canvas (Three.js) that loads one or two images, exposes time/mouse/progress uniforms and runs a custom fragment shader with cover-fit sampling.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/image-shader-canvas.tsx",
          "target": "components/pixel-perfect/image-shader-canvas.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json",
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "img-anaglyph",
      "description": "Red/cyan stereo split driven by brightness-as-depth — grab your 3D glasses.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-anaglyph.tsx",
          "target": "components/pixel-perfect/img-anaglyph.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ascii-art",
      "description": "Rebuilds the image from terminal glyphs whose density tracks brightness.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ascii-art.tsx",
          "target": "components/pixel-perfect/img-ascii-art.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ballpoint-drawing",
      "description": "A ballpoint-pen cross-hatch rendering — strokes follow the image's form on grainy paper with a vignette. Adapted (single-pass) from flockaroo, CC BY-NC-SA.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ballpoint-drawing.tsx",
          "target": "components/pixel-perfect/img-ballpoint-drawing.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-blinds-transition",
      "description": "Hover to flip open a stack of horizontal blinds, each strip wiping to the second image.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-blinds-transition.tsx",
          "target": "components/pixel-perfect/img-blinds-transition.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-burn-dissolve",
      "description": "Hover and the first image burns away along a glowing ember edge, revealing the next through the noise.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-burn-dissolve.tsx",
          "target": "components/pixel-perfect/img-burn-dissolve.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-checker-flip",
      "description": "Hover and the image tiles into a checkerboard whose squares flip over, staggered, to the next image.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-checker-flip.tsx",
          "target": "components/pixel-perfect/img-checker-flip.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-chromatic-aberration",
      "description": "Red and blue channels drift apart toward the edges with a slow pulse.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-chromatic-aberration.tsx",
          "target": "components/pixel-perfect/img-chromatic-aberration.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-comic-cel",
      "description": "Posterised flat colours with bold inked outlines — cel-shaded comic look.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-comic-cel.tsx",
          "target": "components/pixel-perfect/img-comic-cel.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-crt-scanlines",
      "description": "Curved tube, scanlines, RGB fringe and a rolling bar — vintage television.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-crt-scanlines.tsx",
          "target": "components/pixel-perfect/img-crt-scanlines.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-crystallize",
      "description": "Shatters the image into flat Voronoi cells with dark stained-glass leading.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-crystallize.tsx",
          "target": "components/pixel-perfect/img-crystallize.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-depth-parallax",
      "description": "Fake 2.5D — brightness becomes depth, so the scene tilts as you move.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-depth-parallax.tsx",
          "target": "components/pixel-perfect/img-depth-parallax.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-dot-matrix-scatter",
      "description": "An LED-style dot grid of the image — move your cursor to scatter the dots into a dispersing cloud.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-dot-matrix-scatter.tsx",
          "target": "components/pixel-perfect/img-dot-matrix-scatter.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-duotone",
      "description": "Maps brightness onto a two-colour gradient that shifts through the spectrum.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-duotone.tsx",
          "target": "components/pixel-perfect/img-duotone.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-edge-sketch",
      "description": "Sobel edge detection lights up the outlines in their own colour on black.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-edge-sketch.tsx",
          "target": "components/pixel-perfect/img-edge-sketch.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-engraving",
      "description": "Renders the image as inked woodcut hatch-lines on warm paper.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-engraving.tsx",
          "target": "components/pixel-perfect/img-engraving.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-gameboy",
      "description": "Four-shade DMG green palette with ordered dithering and chunky pixels.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-gameboy.tsx",
          "target": "components/pixel-perfect/img-gameboy.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-glass-shatter",
      "description": "The image is cracked into Voronoi glass shards — move your cursor to blow them outward, leaving dark leading between the pieces.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-glass-shatter.tsx",
          "target": "components/pixel-perfect/img-glass-shatter.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-glitch",
      "description": "Random horizontal slices tear and shift with bursts of RGB noise.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-glitch.tsx",
          "target": "components/pixel-perfect/img-glitch.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-halftone",
      "description": "Rebuilds the image from ink dots that grow where the picture is darker.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-halftone.tsx",
          "target": "components/pixel-perfect/img-halftone.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-hex-mosaic",
      "description": "Pixelates the image onto a honeycomb grid of hexagons.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-hex-mosaic.tsx",
          "target": "components/pixel-perfect/img-hex-mosaic.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ink-bleed",
      "description": "Colour blooms outward from your cursor like ink dropped into water.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ink-bleed.tsx",
          "target": "components/pixel-perfect/img-ink-bleed.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-kaleidoscope",
      "description": "Folds the image into six-fold mirrored symmetry that slowly rotates.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-kaleidoscope.tsx",
          "target": "components/pixel-perfect/img-kaleidoscope.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-led-dot-matrix",
      "description": "Rebuilds the image from a grid of glowing round LEDs on a black panel.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-led-dot-matrix.tsx",
          "target": "components/pixel-perfect/img-led-dot-matrix.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-liquid-transition",
      "description": "Hover to ripple both frames through a flowing noise warp as one dissolves into the other.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-liquid-transition.tsx",
          "target": "components/pixel-perfect/img-liquid-transition.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-low-poly",
      "description": "Flat-shades the image across a grid split into triangles, geometric-art style.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-low-poly.tsx",
          "target": "components/pixel-perfect/img-low-poly.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-magnifier-lens",
      "description": "A fish-eye loupe follows your cursor, zooming the image right beneath it.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-magnifier-lens.tsx",
          "target": "components/pixel-perfect/img-magnifier-lens.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-oil-paint",
      "description": "Kuwahara filtering smears the image into soft painterly brush strokes.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-oil-paint.tsx",
          "target": "components/pixel-perfect/img-oil-paint.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ordered-dither",
      "description": "Bayer-matrix ordered dithering crunched down to a few colour levels.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ordered-dither.tsx",
          "target": "components/pixel-perfect/img-ordered-dither.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-pixel-dissolve",
      "description": "The image materialises from chunky mosaic blocks into full resolution.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-pixel-dissolve.tsx",
          "target": "components/pixel-perfect/img-pixel-dissolve.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-pixel-distortion",
      "description": "Move your cursor to crunch the image into chunky pixel blocks that jitter, distort and RGB-split around the pointer.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-pixel-distortion.tsx",
          "target": "components/pixel-perfect/img-pixel-distortion.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-pixel-melt-transition",
      "description": "Hover to crunch both images into chunky mosaic blocks that flip over, staggered, into the second.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-pixel-melt-transition.tsx",
          "target": "components/pixel-perfect/img-pixel-melt-transition.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-pixel-rise-reveal",
      "description": "Hover and a ragged wall of pixels climbs from the bottom, dissolving the old image block by block as the new one rises into place.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-pixel-rise-reveal.tsx",
          "target": "components/pixel-perfect/img-pixel-rise-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-pixelate",
      "description": "Snaps the image to a square grid whose resolution breathes over time.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-pixelate.tsx",
          "target": "components/pixel-perfect/img-pixelate.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-posterize",
      "description": "Flattens the image into a handful of colour bands, screen-print style.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-posterize.tsx",
          "target": "components/pixel-perfect/img-posterize.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ripple-reveal",
      "description": "Hover to send a rippling ring out from the centre, warping the first image aside as the next floods in.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ripple-reveal.tsx",
          "target": "components/pixel-perfect/img-ripple-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-ripple",
      "description": "Concentric water ripples radiate from your cursor and warp the image.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-ripple.tsx",
          "target": "components/pixel-perfect/img-ripple.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-shery-cyber-squares",
      "description": "Retro cyber squares pulse across the image and brighten around your cursor. Adapted from Shery.js (style 7), MIT — Sheryians Coding School.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-shery-cyber-squares.tsx",
          "target": "components/pixel-perfect/img-shery-cyber-squares.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-shery-liquid-cursor",
      "description": "A flowing liquid distortion that bends around your cursor. Adapted from Shery.js (style 5), MIT — Sheryians Coding School.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-shery-liquid-cursor.tsx",
          "target": "components/pixel-perfect/img-shery-liquid-cursor.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-shery-liquid",
      "description": "A mesmerising simplex-noise liquid warp drifting across the image. Adapted from Shery.js (style 1), MIT — Sheryians Coding School.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-shery-liquid.tsx",
          "target": "components/pixel-perfect/img-shery-liquid.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-shery-perlin",
      "description": "A pulsing Perlin-noise displacement that breathes the image in and out. Adapted from Shery.js (style 6), MIT — Sheryians Coding School.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-shery-perlin.tsx",
          "target": "components/pixel-perfect/img-shery-perlin.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-shery-wind",
      "description": "A natural simplex-noise sway, like the image fluttering in a breeze. Adapted from Shery.js (style 4), MIT — Sheryians Coding School.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-shery-wind.tsx",
          "target": "components/pixel-perfect/img-shery-wind.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-spotlight-reveal",
      "description": "A flashlight of full colour follows your cursor through a darkened image.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-spotlight-reveal.tsx",
          "target": "components/pixel-perfect/img-spotlight-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-thermal-vision",
      "description": "Maps brightness onto an infrared heat ramp — cold indigo to white-hot.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-thermal-vision.tsx",
          "target": "components/pixel-perfect/img-thermal-vision.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-twirl",
      "description": "Swirls the pixels into a spinning vortex centred on your cursor.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-twirl.tsx",
          "target": "components/pixel-perfect/img-twirl.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-vhs",
      "description": "Tape warble, chroma bleed and a rolling tracking band — worn-out VHS.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-vhs.tsx",
          "target": "components/pixel-perfect/img-vhs.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-wave",
      "description": "Gently ripples the whole image like a flag in a slow breeze.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-wave.tsx",
          "target": "components/pixel-perfect/img-wave.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-wipe-reveal",
      "description": "Hover to sweep a glowing diagonal seam across the frame, wiping one image into the next.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-wipe-reveal.tsx",
          "target": "components/pixel-perfect/img-wipe-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "img-zoom-blur-transition",
      "description": "Hover to punch through a radial zoom-blur — the first image streaks outward as the second rushes in.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/img-zoom-blur-transition.tsx",
          "target": "components/pixel-perfect/img-zoom-blur-transition.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/image-shader-canvas.json"
      ]
    },
    {
      "name": "inertia-particles",
      "description": "Move your cursor to shove the particles aside — a damped spring snaps them back.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/inertia-particles.tsx",
          "target": "components/pixel-perfect/inertia-particles.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "jelly-bulge",
      "description": "A glassy lens of jelly follows your cursor, magnifying the image.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/jelly-bulge.tsx",
          "target": "components/pixel-perfect/jelly-bulge.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "liquid-melt",
      "description": "Hover to heat the image — the columns you linger over sag and melt.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/liquid-melt.tsx",
          "target": "components/pixel-perfect/liquid-melt.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "magnetic-swarm",
      "description": "Particles are sucked into a swirling swarm around your cursor.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/magnetic-swarm.tsx",
          "target": "components/pixel-perfect/magnetic-swarm.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "magnetic-warp",
      "description": "The image gathers toward your cursor like iron filings, then relaxes back.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/magnetic-warp.tsx",
          "target": "components/pixel-perfect/magnetic-warp.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "paint-reveal",
      "description": "A pencil sketch paints itself in with organic, noisy brush edges.",
      "type": "registry:block",
      "dependencies": [
        "gsap",
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/paint-reveal.tsx",
          "target": "components/pixel-perfect/paint-reveal.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "pixel-distortion",
      "description": "Move your cursor to smear the image pixels along a relaxing grid.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/pixel-distortion.tsx",
          "target": "components/pixel-perfect/pixel-distortion.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "ripple-touch",
      "description": "Move or click to drop water ripples that expand and refract the image.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/ripple-touch.tsx",
          "target": "components/pixel-perfect/ripple-touch.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "vortex-pull",
      "description": "A whirlpool chases your cursor with momentum — it lags, then catches up.",
      "type": "registry:block",
      "dependencies": [
        "lil-gui",
        "three"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/vortex-pull.tsx",
          "target": "components/pixel-perfect/vortex-pull.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/animated-texture.json"
      ]
    },
    {
      "name": "chat-ui",
      "description": "A streaming chat UI built on MessageScroller — anchored turns, follow-the-edge auto-scroll, a dot-matrix thinking indicator, and word-by-word reveal.",
      "type": "registry:block",
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "@dotmatrix/dotm-square-11",
        "message-scroller"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/chat/chat-ui.tsx",
          "target": "components/pixel-perfect/chat-ui.tsx"
        }
      ],
      "css": {
        "@utility scrollbar-thin": {
          "scrollbar-width": "thin"
        },
        "@utility scrollbar-none": {
          "scrollbar-width": "none",
          "&::-webkit-scrollbar": {
            "display": "none"
          }
        },
        "@utility scrollbar-gutter-stable": {
          "scrollbar-gutter": "stable"
        },
        "@utility scroll-fade-b": {
          "-webkit-mask-image": "linear-gradient(to bottom, #000 calc(100% - 1.75rem), transparent)",
          "mask-image": "linear-gradient(to bottom, #000 calc(100% - 1.75rem), transparent)"
        }
      }
    },
    {
      "name": "flip-tile-wave",
      "description": "A grid of two-faced tiles flipping in a diagonal 3D wave, revealing their dark side and back again.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/flip-tile-wave.tsx",
          "target": "components/pixel-perfect/flip-tile-wave.tsx"
        }
      ]
    },
    {
      "name": "helix-spinner",
      "description": "A column of bars, each offset a few degrees on the Y axis, spinning together as a twisting 3D helix.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/helix-spinner.tsx",
          "target": "components/pixel-perfect/helix-spinner.tsx"
        }
      ]
    },
    {
      "name": "hover-layer-stack",
      "description": "An isometric stack of UI layers that lifts apart on hover, exploding the interface into its depth layers.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/hover-layer-stack.tsx",
          "target": "components/pixel-perfect/hover-layer-stack.tsx"
        }
      ]
    },
    {
      "name": "rotating-ring-carousel",
      "description": "Numbered panels arranged in a 3D ring, slowly orbiting the Y axis like a cylindrical carousel.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/rotating-ring-carousel.tsx",
          "target": "components/pixel-perfect/rotating-ring-carousel.tsx"
        }
      ]
    },
    {
      "name": "tilt-card-glare",
      "description": "A mouse-tracked 3D tilt card with parallax depth layers and a moving glare highlight.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/tilt-card-glare.tsx",
          "target": "components/pixel-perfect/tilt-card-glare.tsx"
        }
      ]
    },
    {
      "name": "accordion-carousel",
      "description": "An accordion of vertical image panels — the active panel springs wide to reveal its photo and caption while the rest compress into slim slivers with sideways titles. Click a panel to expand it; it auto-advances until hovered.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/accordion-carousel.tsx",
          "target": "components/pixel-perfect/accordion-carousel.tsx"
        }
      ]
    },
    {
      "name": "cover-flow-carousel",
      "description": "A classic cover-flow carousel: the centre cover faces you while the side covers angle inward with depth and a floor reflection. Drag to scrub with snap, click a side cover to bring it front, or let it auto-advance.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/cover-flow-carousel.tsx",
          "target": "components/pixel-perfect/cover-flow-carousel.tsx"
        }
      ]
    },
    {
      "name": "orbit-carousel",
      "description": "Cards orbit an ellipse in faux-3D — swinging to the front they scale up, sharpen and stack forward; passing behind they shrink, dim and blur. Drag to spin with momentum; it drifts on its own when idle.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/orbit-carousel.tsx",
          "target": "components/pixel-perfect/orbit-carousel.tsx"
        }
      ]
    },
    {
      "name": "sliced-reveal-carousel",
      "description": "Slide transitions slice the photo into vertical strips that cascade in one column at a time — the new image sweeps up while the old sweeps away, offset by a per-strip stagger. Auto-advances; arrows and dots take over on click.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/sliced-reveal-carousel.tsx",
          "target": "components/pixel-perfect/sliced-reveal-carousel.tsx"
        }
      ]
    },
    {
      "name": "accordion-fold",
      "description": "A paper map of hinged panels that folds itself up like an accordion and flattens back out.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/accordion-fold.tsx",
          "target": "components/pixel-perfect/accordion-fold.tsx"
        }
      ]
    },
    {
      "name": "depth-tunnel",
      "description": "Concentric frames flying out of the screen toward the viewer in an endless, slowly twisting depth tunnel.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/depth-tunnel.tsx",
          "target": "components/pixel-perfect/depth-tunnel.tsx"
        }
      ]
    },
    {
      "name": "flip-clock-counter",
      "description": "A split-flap clock digit that folds down every tick like a mechanical departure board.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/flip-clock-counter.tsx",
          "target": "components/pixel-perfect/flip-clock-counter.tsx"
        }
      ]
    },
    {
      "name": "gyroscope-rings",
      "description": "Three rings spinning on tilted axes around a pulsing core, forming a 3D gyroscope with orbiting beads.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/gyroscope-rings.tsx",
          "target": "components/pixel-perfect/gyroscope-rings.tsx"
        }
      ]
    },
    {
      "name": "swing-door-reveal",
      "description": "A door that swings open on hover with a springy 3D hinge, revealing a glowing light behind it.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/swing-door-reveal.tsx",
          "target": "components/pixel-perfect/swing-door-reveal.tsx"
        }
      ]
    },
    {
      "name": "page-flip-book",
      "description": "An open book lying in perspective, endlessly turning its pages with a 3D flip around the spine.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/page-flip-book.tsx",
          "target": "components/pixel-perfect/page-flip-book.tsx"
        }
      ]
    },
    {
      "name": "aperture-mask-reveal",
      "description": "A camera-aperture mask reveal — six shutter blades twist open around the center, dilating a hexagonal iris cut from an inline SVG mask.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/aperture-mask-reveal.tsx",
          "target": "components/pixel-perfect/aperture-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "ink-blob-mask-reveal",
      "description": "An ink-blob mask reveal — a drop splats in the middle, then spreads outward as an organic wobbling blob clip-path until it floods the frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/ink-blob-mask-reveal.tsx",
          "target": "components/pixel-perfect/ink-blob-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "keyhole-mask-reveal",
      "description": "A keyhole mask reveal — a keyhole clip-path pops in with a slight tilt, then the view zooms through it until the image fills the frame.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/keyhole-mask-reveal.tsx",
          "target": "components/pixel-perfect/keyhole-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "text-zoom-mask-reveal",
      "description": "A text-zoom mask reveal — the image shows through the giant word \"PIXEL\", which then dives through the X until the whole frame is uncovered.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/text-zoom-mask-reveal.tsx",
          "target": "components/pixel-perfect/text-zoom-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "wave-mask-reveal",
      "description": "A liquid-wave mask reveal — the image fills from the bottom like rising water, with a living sine-wave crest cut from an inline SVG mask.",
      "type": "registry:block",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/mask/wave-mask-reveal.tsx",
          "target": "components/pixel-perfect/wave-mask-reveal.tsx"
        }
      ]
    },
    {
      "name": "cube-carousel",
      "description": "Slides live on the faces of a 3D prism that rotates to advance, dipping back in scale mid-turn like it needs room to swing. Drag to spin it freely with snap, or let it auto-rotate; faces are reassigned on the fly so any number of slides fits on four faces.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/cube-carousel.tsx",
          "target": "components/pixel-perfect/cube-carousel.tsx"
        }
      ]
    },
    {
      "name": "ferris-wheel-carousel",
      "description": "Gondola cards hang from a slowly turning ferris wheel — they stay upright as the wheel rotates and swing like pendulums when it speeds up or brakes. Drag anywhere to spin it with momentum; it settles back into a lazy drift.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/ferris-wheel-carousel.tsx",
          "target": "components/pixel-perfect/ferris-wheel-carousel.tsx"
        }
      ]
    },
    {
      "name": "slat-flip-carousel",
      "description": "The image is split into horizontal louver slats that flip 180° about their own axis in a stagger — the new slide rides in on the back of each slat like rotating window blinds. Auto-advances; arrows flip the louvers in either direction.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/slat-flip-carousel.tsx",
          "target": "components/pixel-perfect/slat-flip-carousel.tsx"
        }
      ]
    },
    {
      "name": "toss-deck-carousel",
      "description": "A messy pile of polaroids — flick the top one away and it flies off with your throw while the pile shuffles up and a new photo slips in underneath. Tosses itself when you leave it alone; the pile never runs out.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/carousel/toss-deck-carousel.tsx",
          "target": "components/pixel-perfect/toss-deck-carousel.tsx"
        }
      ]
    },
    {
      "name": "coverflow-marquee",
      "description": "An endless coverflow: cards glide across the stage, swinging flat as they pass center, with floor reflections.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/coverflow-marquee.tsx",
          "target": "components/pixel-perfect/coverflow-marquee.tsx"
        }
      ]
    },
    {
      "name": "domino-run",
      "description": "A receding row of dominoes toppling toward the camera one by one, then standing back up in a wave.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/domino-run.tsx",
          "target": "components/pixel-perfect/domino-run.tsx"
        }
      ]
    },
    {
      "name": "exploding-dice-cube",
      "description": "A spinning 3D die whose six pip faces fly apart into an exploded view on hover and spring back together.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/exploding-dice-cube.tsx",
          "target": "components/pixel-perfect/exploding-dice-cube.tsx"
        }
      ]
    },
    {
      "name": "orbit-orrery",
      "description": "A miniature orrery: planets circling a pulsing sun on a tilted orbital plane seen in perspective.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/orbit-orrery.tsx",
          "target": "components/pixel-perfect/orbit-orrery.tsx"
        }
      ]
    },
    {
      "name": "perspective-text-crawl",
      "description": "An opening-crawl of text scrolling up a tilted plane and fading into the distance, movie-style.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/perspective-text-crawl.tsx",
          "target": "components/pixel-perfect/perspective-text-crawl.tsx"
        }
      ]
    },
    {
      "name": "swinging-sign",
      "description": "A hanging shop sign swinging toward and away from the camera on its strings like a pendulum.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/perspective/swinging-sign.tsx",
          "target": "components/pixel-perfect/swinging-sign.tsx"
        }
      ]
    },
    {
      "name": "god-rays",
      "description": "Warm volumetric rays streaming from a glowing core, carved from angular value noise.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/god-rays.tsx",
          "target": "components/pixel-perfect/god-rays.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "mesh-gradient",
      "description": "Six color spots drifting on sine paths, blended by inverse-distance weights under a center swirl.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/mesh-gradient.tsx",
          "target": "components/pixel-perfect/mesh-gradient.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "metaballs",
      "description": "Gooey blobs orbiting the center and merging through a classic inverse-square field.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/metaballs.tsx",
          "target": "components/pixel-perfect/metaballs.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "neuro-noise",
      "description": "A glowing neural web woven from fifteen rotated sine layers, after zozuar's algorithm.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/neuro-noise.tsx",
          "target": "components/pixel-perfect/neuro-noise.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "smoke-ring",
      "description": "A wispy torus of smoke — polar fbm streams outward and breathes the ring into drifting tendrils.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/smoke-ring.tsx",
          "target": "components/pixel-perfect/smoke-ring.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "voronoi-glass",
      "description": "Animated stained-glass voronoi cells with dark grout lines and a soft glow at every border.",
      "type": "registry:block",
      "dependencies": [],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/shaders/voronoi-glass.tsx",
          "target": "components/pixel-perfect/voronoi-glass.tsx"
        }
      ],
      "registryDependencies": [
        "https://www.pixel-perfect.space/r/shader-canvas.json"
      ]
    },
    {
      "name": "hover-expand-player",
      "description": "A compact player pill that springs open on hover — the corners morph, the album art grows into place, and the full controls resolve out of blur.",
      "type": "registry:block",
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/hover-expand-player.tsx",
          "target": "components/pixel-perfect/hover-expand-player.tsx"
        }
      ]
    },
    {
      "name": "fisheye-faq",
      "description": "A vertical FAQ list with macOS-Dock fisheye magnification — rows scale by their distance from the cursor and the nearest one springs open, its answer resolving out of blur.",
      "type": "registry:block",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "type": "registry:component",
          "path": "registry/new-york/motion-framer/fisheye-faq.tsx",
          "target": "components/pixel-perfect/fisheye-faq.tsx"
        }
      ]
    }
  ]
}
