{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "reactframe",
  "homepage": "https://reactframe.com",
  "items": [
    {
      "name": "countdown-timer",
      "type": "registry:component",
      "title": "Countdown Timer",
      "description": "A countdown timer that counts down to a duration or an absolute end date, with flip-cell digit transitions, a compact text mode, and an optional loop.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/countdown-timer/countdown-timer.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "toggle-pro",
      "type": "registry:component",
      "title": "Toggle Pro",
      "description": "An accessible switch with a springy squish animation on the thumb, an optional label + helper text, and a focus ring.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/toggle-pro/toggle-pro.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "badges-kit",
      "type": "registry:component",
      "title": "Badges Kit",
      "description": "A status badge with 8 tone presets, light/dark variants, 3 sizes, 6 icon styles (check, cross, minus, dot, spinner, custom), and an optional dismiss button.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/badges-kit/badges-kit.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "rating-stars",
      "type": "registry:component",
      "title": "Rating Stars",
      "description": "An animated star rating input with half-star precision, keyboard support, a dynamic low/mid/high color range, glow effect, and an optional progress bar.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/rating-stars/rating-stars.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "image-deck-3d",
      "type": "registry:component",
      "title": "Image Deck 3D",
      "description": "A single image split into a stacked deck of shape-clipped layers (rectangle, circle, hexagon, star, blob and more) that fans out on hover, with optional 3D cursor tilt, parallax, grayscale grading, and ambient idle rotation.",
      "files": [
        {
          "path": "registry/new-york/image-deck-3d/image-deck-3d.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "glare-card",
      "type": "registry:component",
      "title": "Glare Card",
      "description": "A 3D tilt card that reacts to the cursor with animated conic-gradient reflections, diamond, holographic or aurora reflex styles.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/glare-card/glare-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "infinite-marquee",
      "type": "registry:component",
      "title": "Infinite Marquee",
      "description": "A seamless scrolling text marquee with solid/gradient/outline text styles, a separator, double-row mode, edge fade, and pause-on-hover.",
      "files": [
        {
          "path": "registry/new-york/infinite-marquee/infinite-marquee.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "discord-chat-widget",
      "type": "registry:component",
      "title": "Discord Chat Widget",
      "description": "A Discord-style chat bubble widget with a typing simulation, quick replies, a notification popup, member/online counts, and a launch-invite send flow.",
      "files": [
        {
          "path": "registry/new-york/discord-chat-widget/discord-chat-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "telegram-widget",
      "type": "registry:component",
      "title": "Telegram Widget",
      "description": "A Telegram-style chat bubble widget with a typing simulation, quick replies, a notification popup, availability status, and a launch-in-Telegram send flow.",
      "files": [
        {
          "path": "registry/new-york/telegram-widget/telegram-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "messenger-widget",
      "type": "registry:component",
      "title": "Messenger Widget",
      "description": "A Facebook Messenger-style chat bubble widget with a typing simulation, quick replies, a notification popup, availability status, and a launch-in-Messenger send flow.",
      "files": [
        {
          "path": "registry/new-york/messenger-widget/messenger-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "x-twitter-widget",
      "type": "registry:component",
      "title": "X (Twitter) Widget",
      "description": "An X (Twitter)-style DM chat bubble widget with a typing simulation, quick replies, a follows-you badge, availability status, and a notification popup.",
      "files": [
        {
          "path": "registry/new-york/x-twitter-widget/x-twitter-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "footer-premium",
      "type": "registry:component",
      "title": "Footer Premium",
      "description": "A responsive site footer with a logo, description, social links, multi-column link groups, and a copyright line.",
      "files": [
        {
          "path": "registry/new-york/footer-premium/footer-premium.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "footer-section",
      "type": "registry:component",
      "title": "Footer Section",
      "description": "A minimal site footer with up to 4 link columns, a hover-underline link style, paper/glass/custom theming, and a copyright bar.",
      "files": [
        {
          "path": "registry/new-york/footer-section/footer-section.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "compare-slider",
      "type": "registry:component",
      "title": "Compare Slider",
      "description": "A theme-aware before/after image comparison slider with horizontal or vertical drag direction, keyboard support, and before/after labels.",
      "files": [
        {
          "path": "registry/new-york/compare-slider/compare-slider.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "glow-card",
      "type": "registry:component",
      "title": "Glow Card",
      "description": "A card with an animated rotating conic-gradient glow border, customizable colors, text position, and an optional background image.",
      "files": [
        {
          "path": "registry/new-york/glow-card/glow-card.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "image-showcase",
      "type": "registry:component",
      "title": "Image Showcase",
      "description": "A product-style image viewer, a large main frame with prev/next arrows and an image counter, backed by a click-to-jump thumbnail strip and a reset-to-first button.",
      "files": [
        {
          "path": "registry/new-york/image-showcase/image-showcase.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "eternal-glow-card",
      "type": "registry:component",
      "title": "Eternal Glow Card",
      "description": "A hover-reveal product card with a blurred gradient overlay, staggered title/price/description reveal, a badge, and 5 color themes.",
      "files": [
        {
          "path": "registry/new-york/eternal-glow-card/eternal-glow-card.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "glass-navigation",
      "type": "registry:component",
      "title": "Glass Navigation",
      "description": "A pill navbar that expands into a full panel of large nav links, a tagline, and social links, with a CTA button, badges, active-page highlight, and light/dark theming.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/glass-navigation/glass-navigation.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "header-simple",
      "type": "registry:component",
      "title": "Navbar 01",
      "description": "A responsive site header, centered nav links on desktop, a tablet CTA-only view, and a mobile hamburger dropdown panel, with active-page highlighting and optional sticky positioning.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/header-simple/header-simple.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "testimonial-spotlight",
      "type": "registry:component",
      "title": "Testimonial Spotlight",
      "description": "A full-bleed photo testimonial slider with crossfade, slide or iris transitions, a thumbnail strip, progress lines, star ratings, and autoplay.",
      "files": [
        {
          "path": "registry/new-york/testimonial-spotlight/testimonial-spotlight.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "testimonial-pills",
      "type": "registry:component",
      "title": "Testimonial Pills",
      "description": "Avatar-and-pill testimonial marquee rows with dual-direction scrolling, a depth effect, cursor spotlight glow, and scroll-in reveal.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/testimonial-pills/testimonial-pills.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "profile-flip-card",
      "type": "registry:component",
      "title": "Profile Flip Card",
      "description": "A profile card that flips from a photo front to a bio back on click or hover, with flip Y, flip X, spring, or fade transitions.",
      "files": [
        {
          "path": "registry/new-york/profile-flip-card/profile-flip-card.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "phone-mockup",
      "type": "registry:component",
      "title": "Phone Mockup",
      "description": "A realistic iPhone frame with 3D cursor tilt, a screen glare that tracks the tilt, ambient glow, and a story-style video/image player with swipe navigation and a progress bar.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/phone-mockup/phone-mockup.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "browser-mockup",
      "type": "registry:component",
      "title": "Browser Mockup",
      "description": "A realistic browser chrome frame in macOS, Windows, or mobile Safari style, with tabs, a URL bar, and a content area for an image, video, or arbitrary React children.",
      "files": [
        {
          "path": "registry/new-york/browser-mockup/browser-mockup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "instagram-post-mockup",
      "type": "registry:component",
      "title": "Instagram Post Mockup",
      "description": "A realistic Instagram post, avatar ring, swipeable multi-photo carousel, double-tap-to-like heart burst, like/comment/repost/share/save actions, and light/dark theme.",
      "files": [
        {
          "path": "registry/new-york/instagram-post-mockup/instagram-post-mockup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "x-post-mockup",
      "type": "registry:component",
      "title": "X Post Mockup",
      "description": "A realistic X (Twitter) post with a verified badge, media image, and interactive like/retweet/bookmark actions with live counts, in light or dark theme.",
      "files": [
        {
          "path": "registry/new-york/x-post-mockup/x-post-mockup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "tiktok-post-mockup",
      "type": "registry:component",
      "title": "TikTok Post Mockup",
      "description": "A full-bleed 9:16 TikTok feed mockup with a Following/For You tab bar, a side action rail (like/comment/save/share), caption overlay, sound pill, and bottom navigation.",
      "files": [
        {
          "path": "registry/new-york/tiktok-post-mockup/tiktok-post-mockup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "linkedin-post-mockup",
      "type": "registry:component",
      "title": "LinkedIn Post Mockup",
      "description": "A realistic LinkedIn post with a headline, media image, a reaction summary, and interactive like/repost actions with live counts, in light or dark theme.",
      "files": [
        {
          "path": "registry/new-york/linkedin-post-mockup/linkedin-post-mockup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "cylinder-gallery",
      "type": "registry:component",
      "title": "Cylinder Gallery",
      "description": "A 3D image gallery arranged around an auto-rotating cylinder, with configurable rows/columns, tilt angle, rotation speed, and edge fade opacity.",
      "files": [
        {
          "path": "registry/new-york/cylinder-gallery/cylinder-gallery.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "gallery-flow",
      "type": "registry:component",
      "title": "Gallery Flow",
      "description": "A gallery of scattered, gently drifting image cards with random rotation, cursor repel/attract mode, pause-on-hover, and a click-to-open lightbox.",
      "files": [
        {
          "path": "registry/new-york/gallery-flow/gallery-flow.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "tilted-carousel",
      "type": "registry:component",
      "title": "Tilted Carousel",
      "description": "A 3D book-flow carousel where cards tilt around the active slide, with paper/glass themes and 3 title alignment styles.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tilted-carousel/tilted-carousel.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "diagonal-carousel",
      "type": "registry:component",
      "title": "Diagonal Carousel",
      "description": "Square cards fan out diagonally into a stacked deck, each inactive card rotates and offsets away from the active one, with paper/glass themes.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/diagonal-carousel/diagonal-carousel.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tilt-text",
      "type": "registry:component",
      "title": "Tilt Text",
      "description": "Large display text that tilts in 3D toward the cursor, with a layered shadow extrusion for real depth, a specular shine highlight, and idle float/breathe animations.",
      "files": [
        {
          "path": "registry/new-york/tilt-text/tilt-text.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "progress-circle-bars",
      "type": "registry:component",
      "title": "Progress Circle Bars",
      "description": "A circular progress indicator with ring, gauge, and dashes arc styles, scroll-triggered count-up animation, color thresholds, a comparison target marker, and a completion pulse.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/progress-circle-bars/progress-circle-bars.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "linear-progress-bars",
      "type": "registry:component",
      "title": "Linear Progress Bars",
      "description": "A card of linear progress rows, plain ratio bars, file-upload rows with icons/subtitles/shimmer, milestone ticks, and an inline variant, with scroll-triggered fill animation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/linear-progress-bars/linear-progress-bars.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "text-scramble-pro",
      "type": "registry:component",
      "title": "Text Scramble Pro",
      "description": "Cycling phrases that decrypt from scrambled characters into readable text, left-to-right, right-to-left, or random reveal order, with a scramble-out transition and blinking cursor.",
      "files": [
        {
          "path": "registry/new-york/text-scramble-pro/text-scramble-pro.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "noise-background",
      "type": "registry:component",
      "title": "Noise Background",
      "description": "A canvas background with animated film-grain noise, soft color blob gradients, 7 built-in themes (or fully custom colors), drifting blob animation, and a vignette.",
      "files": [
        {
          "path": "registry/new-york/noise-background/noise-background.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "dot-image-slider",
      "type": "registry:component",
      "title": "Dot Image Slider",
      "description": "A before/after image reveal, a luminance-mapped halftone dot rendering on one side, the real photo on the other, dragged apart by a glowing lightsaber-style divider handle.",
      "files": [
        {
          "path": "registry/new-york/dot-image-slider/dot-image-slider.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "animated-loader",
      "type": "registry:component",
      "title": "Animated Loader",
      "description": "A loading spinner kit with 4 variants, rotating lines, ring, dual counter-rotating ring, and bouncing dots, sharing a common color/size/speed API.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/animated-loader/animated-loader.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "animated-checkbox",
      "type": "registry:component",
      "title": "Animated Checkbox",
      "description": "An accessible checkbox with an animated draw-in checkmark, focus ring, and optional label, helper text, required marker, and info tooltip.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/animated-checkbox/animated-checkbox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "radio-button",
      "type": "registry:component",
      "title": "Radio Button",
      "description": "An accessible, animated radio group with a springy dot, a ripple on select, focus ring, optional descriptions and a selectable card variant.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/radio-button/radio-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:component",
      "title": "Select",
      "description": "An accessible, animated custom select with a springy chevron, keyboard navigation, type-ahead, option descriptions, disabled options and a focus ring.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/select/select.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:component",
      "title": "Slider",
      "description": "An accessible single or range slider with a draggable thumb, a value tooltip, optional step marks, keyboard control and a focus ring.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/slider/slider.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "search-bar",
      "type": "registry:component",
      "title": "Search Bar",
      "description": "An accessible animated search field with a live suggestions menu, keyboard navigation, a clear button, a loading spinner and a Cmd/Ctrl+K shortcut.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/search-bar/search-bar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tag",
      "type": "registry:component",
      "title": "Tag",
      "description": "A compact label tag with soft, solid and outline variants, 6 colors, 3 sizes, an optional pulsing dot, icon, count, selectable toggle state and an animated remove button.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tag/tag.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:component",
      "title": "Tooltip",
      "description": "An accessible tooltip with 4 placements, auto-flip near the screen edge, a hover delay, keyboard-focus support, an arrow and an optional shortcut badge.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tooltip/tooltip.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:component",
      "title": "Skeleton",
      "description": "A loading placeholder with rect, text, circle and card presets, a shimmer or pulse animation, reduced-motion support and a built-in swap to real content when loading ends.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/skeleton/skeleton.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:component",
      "title": "Tabs",
      "description": "An accessible tab set with underline, pill and segmented variants, a sliding animated indicator, icons, counts, arrow-key navigation and animated content panels.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tabs/tabs.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:component",
      "title": "Breadcrumb",
      "description": "An accessible breadcrumb trail with 4 separator styles, an optional home icon, animated collapse of long paths behind an expandable ellipsis, and hover tint.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/breadcrumb/breadcrumb.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:component",
      "title": "Pagination",
      "description": "An accessible pagination control with smart ellipsis ranges, a sliding animated active page, solid, soft and compact variants, previous/next buttons and optional labels.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/pagination/pagination.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "stepper",
      "type": "registry:component",
      "title": "Stepper",
      "description": "An accessible step indicator with horizontal and vertical layouts, numbered and minimal variants, animated progress connectors, draw-in checkmarks, an error state and optional clickable steps.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/stepper/stepper.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "modal",
      "type": "registry:component",
      "title": "Modal",
      "description": "An accessible modal dialog with a blurred backdrop, focus trap, Escape and backdrop close, scroll lock, focus restore, 3 sizes and scale, slide-up and fade animations.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/modal/modal.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:component",
      "title": "Popover",
      "description": "An accessible popover for interactive content with click or hover triggers, 4 placements and 3 alignments, auto-flip, outside-click and Escape close, an arrow and a spring open animation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/popover/popover.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "drawer",
      "type": "registry:component",
      "title": "Drawer",
      "description": "An accessible slide-in drawer from any of 4 sides with a backdrop, focus trap, Escape and backdrop close, scroll lock, focus restore and drag-to-dismiss.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/drawer/drawer.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:component",
      "title": "Avatar",
      "description": "A user avatar with image, initials or icon fallback, 5 sizes, circle, rounded and square shapes, a presence status dot with pulse, an accent ring and an optional click state.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/avatar/avatar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "avatar-group",
      "type": "registry:component",
      "title": "Avatar Group",
      "description": "A stacked group of avatars with photo or initials, an overflow +N bubble, hover lift with name tooltips, a spread-on-hover animation, 5 sizes and adjustable overlap.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/avatar-group/avatar-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "divider",
      "type": "registry:component",
      "title": "Divider",
      "description": "A horizontal or vertical divider with solid, dashed, dotted and gradient styles, an optional label with start, center or end position, an accent color and a draw-in animation on scroll.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/divider/divider.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:component",
      "title": "Accordion",
      "description": "An accessible accordion with single or multiple open panels, default, card and filled variants, chevron or plus indicators, smooth height animation and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/accordion/accordion.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:component",
      "title": "Card",
      "description": "A flexible content card with media, badge, title, description, action and footer slots, default, elevated, outline and filled variants, vertical or horizontal layout, and interactive hover lift with an optional cursor spotlight.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/card/card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:component",
      "title": "Kbd",
      "description": "A keyboard key cap for showing shortcuts, with raised, flat and outline styles, 3 sizes, automatic Mac or Windows symbols, key combinations and a live press animation.",
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/kbd/kbd.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "empty-state",
      "type": "registry:component",
      "title": "Empty State",
      "description": "A friendly empty, no-results or error placeholder with 5 icon presets, a floating icon tile, title, description and actions, in plain, card and dashed styles with a staggered entrance.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/empty-state/empty-state.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tag-input",
      "type": "registry:component",
      "title": "Tag Input",
      "description": "A multi-value input that turns text into removable tags on Enter, comma or paste, with suggestions, duplicate and max limits, custom validation and an animated add and remove.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tag-input/tag-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "combobox",
      "type": "registry:component",
      "title": "Combobox",
      "description": "A searchable select where you type to filter options, with match highlighting, option descriptions, disabled options, a clear button, an empty state and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/combobox/combobox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "multi-select",
      "type": "registry:component",
      "title": "Multi Select",
      "description": "A searchable multi-select that shows the chosen options as removable chips, with checkbox rows, select all, a selection limit, a +N overflow chip, an empty state and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/multi-select/multi-select.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "date-picker",
      "type": "registry:component",
      "title": "Date Picker",
      "description": "A date picker with a popover calendar: single date or range selection, month navigation, min/max and disabled dates, Today and Clear shortcuts, localized labels and full keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/date-picker/date-picker.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "time-picker",
      "type": "registry:component",
      "title": "Time Picker",
      "description": "A time picker with a popover of scrollable hour, minute and AM/PM columns: 12 or 24-hour clock, minute steps, min/max times, a Now shortcut and full keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/time-picker/time-picker.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:component",
      "title": "Input OTP",
      "description": "A one-time-code input with individual animated cells, paste and autofill support, numeric or alphanumeric mode, masking, grouped cells, error shake and success states.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/input-otp/input-otp.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "number-input",
      "type": "registry:component",
      "title": "Number Input",
      "description": "A numeric field with minus/plus steppers, press-and-hold auto repeat, min/max clamping, decimal precision, prefix and suffix, thousand separators and full keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/number-input/number-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "password-input",
      "type": "registry:component",
      "title": "Password Input",
      "description": "A password field with an animated show/hide eye toggle, a four-segment strength meter, a live requirements checklist and a Caps Lock warning.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/password-input/password-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "phone-input",
      "type": "registry:component",
      "title": "Phone Input",
      "description": "A phone number input with a searchable country menu: flags and calling codes, as-you-type formatting per country, paste detection for +codes, an E.164 value and a length check.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/phone-input/phone-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "credit-card-input",
      "type": "registry:component",
      "title": "Credit Card Input",
      "description": "A grouped card number, expiry and CVC field: brand detection with an animated mark, 4-4-4-4 or Amex 4-6-5 spacing, Luhn and expiry checks, and focus that moves on as each part is complete.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/credit-card-input/credit-card-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "currency-input",
      "type": "registry:component",
      "title": "Currency Input",
      "description": "A money input with a currency picker: live thousands separators for any locale, the right number of decimals per currency, an animated symbol, arrow-key steps and min/max, returning a plain number.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/currency-input/currency-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "segmented-control",
      "type": "registry:component",
      "title": "Segmented Control",
      "description": "A compact radio-style switch between a few options with a sliding animated thumb, solid or soft styles, icons, icon-only mode, vertical orientation and arrow-key navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/segmented-control/segmented-control.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "color-picker",
      "type": "registry:component",
      "title": "Color Picker",
      "description": "A color picker with a draggable saturation/brightness area, hue and opacity sliders, hex input, preset swatches and an optional screen eyedropper, all keyboard accessible.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/color-picker/color-picker.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "file-upload",
      "type": "registry:component",
      "title": "File Upload",
      "description": "A drag-and-drop file dropzone with click-to-browse, type/size/count validation, image previews, animated progress bars, retry and remove actions.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/file-upload/file-upload.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "signature-pad",
      "type": "registry:component",
      "title": "Signature Pad",
      "description": "A signature field that draws smooth, pressure-aware ink, with undo, clear, a typed-signature option for people who can't draw, and PNG and SVG export in a paper-ready ink colour.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/signature-pad/signature-pad.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "image-cropper",
      "type": "registry:component",
      "title": "Image Cropper",
      "description": "An image cropper with a draggable, resizable crop box, aspect presets or a circle mask for avatars, keyboard nudging, drag-and-drop upload and the cropped image returned as a data URL.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/image-cropper/image-cropper.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "callout",
      "type": "registry:component",
      "title": "Callout",
      "description": "An inline message block with info, success, warning, danger and neutral variants, three appearances, self-drawing icons, an optional action link and an animated dismiss.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/callout/callout.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "meter",
      "type": "registry:component",
      "title": "Meter",
      "description": "A meter for a value within a known range: bar, semicircle gauge or segmented variants with threshold zones, animated counting numbers and proper meter semantics.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/meter/meter.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "command-palette",
      "type": "registry:component",
      "title": "Command Palette",
      "description": "A Cmd/Ctrl+K command palette with fuzzy search and match highlighting, grouped results, keyboard navigation, shortcuts and a portal overlay.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/command-palette/command-palette.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "menubar",
      "type": "registry:component",
      "title": "Menubar",
      "description": "A desktop-style app menubar with File/Edit/View-style dropdown menus, checkbox and radio items, submenus and full arrow-key navigation between and within menus.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/menubar/menubar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "sidebar",
      "type": "registry:component",
      "title": "Sidebar",
      "description": "A collapsible app sidebar with grouped nav sections, a sliding active-item indicator, badges, an icon-only rail mode with hover tooltips, a user footer and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/sidebar/sidebar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dock",
      "type": "registry:component",
      "title": "Dock",
      "description": "A macOS-style app dock with cursor-proximity magnification, running-app indicator dots, hover tooltips, separators and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/dock/dock.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "confirm-dialog",
      "type": "registry:component",
      "title": "Confirm Dialog",
      "description": "A focused alert dialog for confirming an action, with default/warning/danger variants, an async-aware confirm button with a spinner and inline error, and a safety-first default focus.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/confirm-dialog/confirm-dialog.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "hover-card",
      "type": "registry:component",
      "title": "Hover Card",
      "description": "A hover-triggered rich preview card with open/close delays, a hover bridge so moving into the card keeps it open, placement with collision flip, an optional arrow and keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/hover-card/hover-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:component",
      "title": "Context Menu",
      "description": "A right-click context menu with checkbox and radio items, nested submenus, viewport edge clamping and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/context-menu/context-menu.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "timeline",
      "type": "registry:component",
      "title": "Timeline",
      "description": "A vertical timeline with status markers (done, active, pending, error), a connecting line, an alternating layout option, collapsible per-item detail and a scroll-triggered staggered reveal.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/timeline/timeline.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tree-view",
      "type": "registry:component",
      "title": "Tree View",
      "description": "A hierarchical tree with expand/collapse, tri-state checkboxes for multi-select, single-row selection, guide lines and full keyboard navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tree-view/tree-view.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "stat-card",
      "type": "registry:component",
      "title": "Stat Card",
      "description": "A dashboard metric card with an animated count-up value, an auto-derived good/bad trend badge, an optional icon and a drawn-in sparkline.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/stat-card/stat-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "code-block",
      "type": "registry:component",
      "title": "Code Block",
      "description": "A syntax-highlighted code block with line numbers, per-line highlighting, a filename/language header, a copy button and a collapsible fade-out for long snippets.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/code-block/code-block.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "description-list",
      "type": "registry:component",
      "title": "Description List",
      "description": "A semantic term/value list for specs, order summaries or profile details, with stacked, inline and grid layouts, optional icons and a hover-reveal copy button per row.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/description-list/description-list.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "splitter",
      "type": "registry:component",
      "title": "Splitter",
      "description": "Resizable panels divided by draggable handles, with min/max size constraints, keyboard resizing, double-click reset, and horizontal or vertical layout.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/splitter/splitter.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "back-to-top",
      "type": "registry:component",
      "title": "Back to Top",
      "description": "A floating scroll-to-top button that fades in past a threshold, with an optional progress ring showing how far down the page you are.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/back-to-top/back-to-top.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "copy-button",
      "type": "registry:component",
      "title": "Copy Button",
      "description": "A standalone copy-to-clipboard button with ghost/outline/solid variants, icon-only or labeled modes, a floating tooltip, and animated copied/error states.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/copy-button/copy-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "terminal",
      "type": "registry:component",
      "title": "Terminal",
      "description": "A macOS-style terminal window that types out a scripted sequence of commands, outputs and comments, with a blinking cursor, auto-scroll and optional looping or manual replay.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/terminal/terminal.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "inline-edit",
      "type": "registry:component",
      "title": "Inline Edit",
      "description": "Click-to-edit text that turns into an auto-sizing input with save/cancel controls, validation, async save support and a shake on error.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/inline-edit/inline-edit.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "aspect-ratio",
      "type": "registry:component",
      "title": "Aspect Ratio",
      "description": "A container that locks its content to a fixed width/height ratio (a preset like video or square, or a custom number), auto-fitting a single image or video child.",
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/aspect-ratio/aspect-ratio.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:component",
      "title": "Scroll Area",
      "description": "A scrollable container with a thin, draggable, auto-hiding custom scrollbar (vertical, horizontal or both) and edge fade masks, replacing the native browser scrollbar.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/scroll-area/scroll-area.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "toolbar",
      "type": "registry:component",
      "title": "Toolbar",
      "description": "An accessible toolbar of icon buttons, toggles, radio-style toggle groups and separators with roving-focus arrow-key navigation, a sliding hover highlight and animated tooltips.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/toolbar/toolbar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "panel",
      "type": "registry:component",
      "title": "Panel",
      "description": "A surface container with an optional header (icon, title, description, actions), body and footer, with outline, filled and elevated variants and an animated collapse.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/panel/panel.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "your-cart-page",
      "type": "registry:component",
      "title": "Your Cart Page",
      "description": "A three-step eCommerce flow in one block: a cart with quantity steppers and promo code, a checkout form with an order summary, and an animated order-confirmed screen.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/your-cart-page/your-cart-page.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "stat-feature",
      "type": "registry:component",
      "title": "Stat Feature",
      "description": "A metrics section with a concentric ring chart, a trend caption and count-up stats that enter with a blur, slide, fade or scale animation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/stat-feature/stat-feature.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "product-list",
      "type": "registry:component",
      "title": "Product List",
      "description": "An eCommerce product listing block with a filter sidebar (live search, Free/Premium tiers, categories) and a responsive photo grid with New and Sale badges.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/product-list/product-list.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "product-detail",
      "type": "registry:component",
      "title": "Product Detail",
      "description": "An eCommerce product page block with a switchable image gallery, color and size pickers, quantity stepper, animated add-to-cart button and Description / Specs / Reviews tabs.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/product-detail/product-detail.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:component",
      "title": "Button",
      "description": "An accessible button with primary, secondary, outline, and ghost variants, a spinning loading state, optional icon, and a focus ring, every color, size, and timing exposed as a prop.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/button/button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:component",
      "title": "Input",
      "description": "An accessible text input with outline, filled, and underline variants, label/helper/error text, a password show/hide toggle, and a focus ring, every color, size, and timing exposed as a prop.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/input/input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:component",
      "title": "Textarea",
      "description": "An accessible textarea with outline, filled, and underline variants, label/helper/error text, optional auto-resize and a character counter, and a focus ring, every color, size, and timing exposed as a prop.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/textarea/textarea.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "form-field",
      "type": "registry:component",
      "title": "Form Field",
      "description": "A form field wrapper with label, description, required or optional marker, info tooltip, character counter and animated helper, error and success messages, with sync or async validation and aria wiring for any control.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/form-field/form-field.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "rich-text-editor",
      "type": "registry:component",
      "title": "Rich Text Editor",
      "description": "A rich text editor with a formatting toolbar, headings, lists, quotes, inline code and links, Markdown-style shortcuts, clean pasting from Docs and Word, and a word count, with no editor library.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/rich-text-editor/rich-text-editor.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "sales-ticket-popup",
      "type": "registry:component",
      "title": "Sales Ticket Popup",
      "description": "A corner-anchored promo popup shaped like a torn event ticket, with 5 themes, a zigzag badge stub, immediate/delay/scroll triggers, auto-hide, and dismiss-memory.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/sales-ticket-popup/sales-ticket-popup.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "expand-card-grid",
      "type": "registry:component",
      "title": "Expand Card Grid",
      "description": "A 2x2 grid of image cards that expand to fill the frame on click, revealing title/description/CTA, with keyboard arrow navigation between cards and swipe-to-close on touch.",
      "files": [
        {
          "path": "registry/new-york/expand-card-grid/expand-card-grid.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "kanban-board",
      "type": "registry:component",
      "title": "Kanban Board",
      "description": "A drag-and-drop task board with a hand-rolled pointer-based drag engine, velocity tilt, edge autoscroll, ghost drop-position indicator, priority badges, avatar stacks, and light/dark theming.",
      "files": [
        {
          "path": "registry/new-york/kanban-board/kanban-board.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "data-table",
      "type": "registry:component",
      "title": "Data Table",
      "description": "An admin data table with sortable/filterable columns, global search, status tabs, row selection, badge/avatar/actions cell types, pagination, and light/dark/custom theming.",
      "files": [
        {
          "path": "registry/new-york/data-table/data-table.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "line-chart",
      "type": "registry:component",
      "title": "Line Chart",
      "description": "A multi-series line/area chart, smooth Catmull-Rom curves, a highlighted zone band, a reference line, endpoint value badges, and a hover crosshair with per-series tooltips.",
      "files": [
        {
          "path": "registry/new-york/line-chart/line-chart.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "bar-chart",
      "type": "registry:component",
      "title": "Bar Chart",
      "description": "A stacked bar chart, up to 5 series per bar, a reference line, a peak-value annotation, and a hover tooltip breaking down each bar's segments with a running total.",
      "files": [
        {
          "path": "registry/new-york/bar-chart/bar-chart.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "tearable-reveal",
      "type": "registry:component",
      "title": "Tearable Reveal",
      "description": "A physically-simulated cloth intro reveal, drag to tear open a torn-paper layer covering an image, with breakable constraints, particle debris, frayed jagged/rounded edges, and optional surface text or logo. Includes Auto Tear and Reset controls.",
      "files": [
        {
          "path": "registry/new-york/tearable-reveal/tearable-reveal.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "desktop-mockup-carousel",
      "type": "registry:component",
      "title": "Desktop Mockup Carousel",
      "description": "A realistic Studio Display-style monitor mockup with an internal video/image carousel, swipe or auto-advance, slide/fade transitions, 3D cursor tilt, ambient glow, and a progress bar.",
      "files": [
        {
          "path": "registry/new-york/desktop-mockup-carousel/desktop-mockup-carousel.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "range-area-chart",
      "type": "registry:component",
      "title": "Range Area Chart",
      "description": "A min/max envelope chart with a nested core-range band, an actual-to-forecast line split, annotated risk zones, a reference line, and a live endpoint badge.",
      "files": [
        {
          "path": "registry/new-york/range-area-chart/range-area-chart.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "radar-chart",
      "type": "registry:component",
      "title": "Radar Chart",
      "description": "A multi-series radar/spider chart with ring gridlines, per-series solid or dashed strokes, optional point markers, and a hover tooltip comparing every series at the highlighted axis.",
      "files": [
        {
          "path": "registry/new-york/radar-chart/radar-chart.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "pie-chart",
      "type": "registry:component",
      "title": "Pie Chart",
      "description": "A donut-style pie chart with a live center total, click-to-toggle legend, percentage callouts around the ring, and a hover tooltip with ARR, account count, and average contract size.",
      "files": [
        {
          "path": "registry/new-york/pie-chart/pie-chart.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "logo-marquee",
      "type": "registry:component",
      "title": "Logo Marquee",
      "description": "An infinite scrolling row of client/partner logos with edge fade masks, grayscale-to-color hover reveal, pause-on-hover, and a constant speed regardless of logo count.",
      "files": [
        {
          "path": "registry/new-york/logo-marquee/logo-marquee.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "liquid-text",
      "type": "registry:component",
      "title": "Liquid Text",
      "description": "Text distorted through an animated SVG noise filter, 5 presets (liquid, melt, blob, ghost, crystal), cursor-proximity intensity, and a click burst ripple.",
      "files": [
        {
          "path": "registry/new-york/liquid-text/liquid-text.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "word-reveal",
      "type": "registry:component",
      "title": "Word Reveal",
      "description": "Staggered word or character reveal text, driven by scroll progress, viewport entry, or a manual trigger, 4 animation presets, 3 stagger patterns, and word highlighting.",
      "files": [
        {
          "path": "registry/new-york/word-reveal/word-reveal.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "alert-toast",
      "type": "registry:component",
      "title": "Alert Toast",
      "description": "A polished toast/alert notification, 5 tones, stacked or inline layout, icons, primary/secondary actions, dismiss and auto-dismiss, light/dark theme, plus a showcase mode rendering every variant side by side.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/alert-toast/alert-toast.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "product-grid-section",
      "type": "registry:component",
      "title": "Product Grid Section",
      "description": "A responsive product/portfolio grid section, heading, per-card image with hover zoom and reveal overlay, category/price meta row, optional badge, and a centered CTA button below the grid.",
      "files": [
        {
          "path": "registry/new-york/product-grid-section/product-grid-section.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-asistant",
      "type": "registry:component",
      "title": "AI Asistant",
      "description": "A dotted status light with two layouts, Mesh grid and Halo rings, across three animated states (Waiting, Listening, Thinking), in four dot shapes with adjustable colors.",
      "files": [
        {
          "path": "registry/new-york/ai-asistant/ai-asistant.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-voice-01",
      "type": "registry:component",
      "title": "AI Voice 01",
      "description": "A voice-assistant pill with a canvas audio-reactive visualizer, idle/listening/speaking states, a glowing edge ring, live word-by-word transcript, optional real microphone input, and custom/silver themes.",
      "files": [
        {
          "path": "registry/new-york/ai-voice-01/ai-voice-01.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-voice-05",
      "type": "registry:component",
      "title": "AI Voice 05",
      "description": "A portrait voice-assistant card with a canvas audio-reactive curve visualizer, a mic button that grows on tap, idle/listening/speaking states, and live word-by-word transcript.",
      "files": [
        {
          "path": "registry/new-york/ai-voice-05/ai-voice-05.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-image-loader-03",
      "type": "registry:component",
      "title": "AI Image Loader 03",
      "description": "An AI image-generation loader, canvas-drawn rolling topographic lines grow in and a top-to-bottom sweep reveals the finished picture, with cycling status messages and a regenerate button.",
      "files": [
        {
          "path": "registry/new-york/ai-image-loader-03/ai-image-loader-03.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-dynamic-island-01",
      "type": "registry:component",
      "title": "AI Dynamic Island 01",
      "description": "A Dynamic Island-style AI status pill that morphs between idle, listening, thinking, working (with an unfolding step list) and done states, with a canvas-drawn particle orb and rippling energy curves.",
      "files": [
        {
          "path": "registry/new-york/ai-dynamic-island-01/ai-dynamic-island-01.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-answer-03",
      "type": "registry:component",
      "title": "AI Answer 03",
      "description": "An agent-style AI answer card, a researching/reading/writing step tracker with a progress rail, markdown-style bold and bullet text, clickable inline citations, source cards, follow-up questions, and custom/sunset themes.",
      "files": [
        {
          "path": "registry/new-york/ai-answer-03/ai-answer-03.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ai-edit-review",
      "type": "registry:component",
      "title": "AI Edit Review",
      "description": "An AI text editor that rewrites a selected passage, streams a word-level diff review with accept/reject actions, and morphs a dock through writing, review, and applied states.",
      "files": [
        {
          "path": "registry/new-york/ai-edit-review/ai-edit-review.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "video-glow-lightbox",
      "type": "registry:component",
      "title": "Video Glow Lightbox",
      "description": "A single video card with a pulsing glow-blob frame that morphs into a fullscreen lightbox on click, supports direct URL, YouTube, Vimeo, or uploaded files, a cursor-following watch label, hover preview loop, and a Web Audio sound-reactive glow.",
      "files": [
        {
          "path": "registry/new-york/video-glow-lightbox/video-glow-lightbox.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "glide-carousel",
      "type": "registry:component",
      "title": "Glide Carousel",
      "description": "A canvas-rendered, drag-to-scroll carousel with a curved wave layout and ambient wind/drift/magnetic card sway, click-to-open lightbox modal, autoplay, and image/video support.",
      "files": [
        {
          "path": "registry/new-york/glide-carousel/glide-carousel.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "testimonial-logos",
      "type": "registry:component",
      "title": "Testimonial Logos",
      "description": "A compact trust bar, a star rating with a helped-N-teams label above an infinite, edge-masked logo marquee.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/testimonial-logos/testimonial-logos.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dice-discount-popup",
      "type": "registry:component",
      "title": "Dice Discount Popup",
      "description": "A gamified discount popup, roll two animated 3D dice for a reward tier (with a doubles bonus), copy the code, and track rolls left across a session. Inline or corner-widget popup with manual, delay or scroll triggers.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/dice-discount-popup/dice-discount-popup.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scratch-card-popup",
      "type": "registry:component",
      "title": "Scratch Card Popup",
      "description": "A gamified scratch-to-win popup, drag to scratch a gold-foil canvas off a 3x3 icon grid, match three to win a reward tier with a confetti burst, copy the code, and track attempts left. Inline or corner-widget popup with manual, delay or scroll triggers.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/scratch-card-popup/scratch-card-popup.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "business-hours",
      "type": "registry:component",
      "title": "Business Hours",
      "description": "A premium opening-hours card, live open/closed status with a pulsing dot, a day-by-day schedule, and a Get Directions link built from an address or custom URL.",
      "files": [
        {
          "path": "registry/new-york/business-hours/business-hours.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "motion-gallery-grid",
      "type": "registry:component",
      "title": "Motion Gallery Grid",
      "description": "A perfectly aligned image grid with a centered glassmorphism overlay card, heading, subtitle and CTA button, with a staggered blur/slide/fade/scale entrance triggered on scroll into view.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/motion-gallery-grid/motion-gallery-grid.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "qr-code-widget",
      "type": "registry:component",
      "title": "QR Code Widget",
      "description": "A QR-code card, title, description, code image, hint text and an open-link button, inline or as a corner-widget popup with a focus-trapped modal dialog.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/qr-code-widget/qr-code-widget.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "airbnb-reviews",
      "type": "registry:component",
      "title": "Airbnb Reviews",
      "description": "A guest-review carousel with the Airbnb Bélo mark, aggregate rating header and CTA, above a draggable autoplaying grid of review cards.",
      "files": [
        {
          "path": "registry/new-york/airbnb-reviews/airbnb-reviews.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "ebay-reviews",
      "type": "registry:component",
      "title": "eBay Reviews",
      "description": "A seller-feedback carousel with the eBay wordmark, aggregate rating header and CTA, above a draggable autoplaying grid of review cards.",
      "files": [
        {
          "path": "registry/new-york/ebay-reviews/ebay-reviews.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "etsy-reviews",
      "type": "registry:component",
      "title": "Etsy Reviews",
      "description": "A shop-review carousel with the Etsy wordmark, aggregate rating header and CTA, above a draggable autoplaying grid of review cards.",
      "files": [
        {
          "path": "registry/new-york/etsy-reviews/etsy-reviews.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "coin-flip-game",
      "type": "registry:component",
      "title": "Coin Flip Game",
      "description": "A real 3D CSS coin, click or tap to flip with a physical spin animation, a yes/no question field, flip history dots, and a heads/tails ratio readout.",
      "files": [
        {
          "path": "registry/new-york/coin-flip-game/coin-flip-game.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "tic-tac-toe-game",
      "type": "registry:component",
      "title": "Tic Tac Toe Game",
      "description": "A playable Tic Tac Toe board with a built-in AI opponent, animated piece placement, a drawn winning-line reveal, score tracking, and a confetti burst on a win.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tic-tac-toe-game/tic-tac-toe-game.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "2048-game",
      "type": "registry:component",
      "title": "2048 Game",
      "description": "A fully playable 2048, arrow-key and swipe controls, spring-animated tile merges, score and best-score tracking, and win/game-over overlays.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/2048-game/2048-game.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "snake-game",
      "type": "registry:component",
      "title": "Snake Game",
      "description": "A canvas-rendered Snake game with three difficulty speeds, keyboard and swipe controls, a directional-eyes snake head, high-score tracking, and ready/game-over overlays.",
      "files": [
        {
          "path": "registry/new-york/snake-game/snake-game.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "minesweeper-game",
      "type": "registry:component",
      "title": "Minesweeper Game",
      "description": "A classic Minesweeper with three board sizes, flood-fill reveal, right-click flagging, a live mine counter and timer, and a confetti burst on a win.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/minesweeper-game/minesweeper-game.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "memory-match-game",
      "type": "registry:component",
      "title": "Memory Match Game",
      "description": "A flip-card memory matching game with animal emoji, three difficulty levels, a 3D flip animation, move/score tracking, and a win overlay.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/memory-match-game/memory-match-game.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "pong-game",
      "type": "registry:component",
      "title": "Pong Game",
      "description": "A canvas Pong against a bot opponent, three difficulty levels, multi-round progression with a color shift and speed increase each round, keyboard and touch-drag paddle control.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/pong-game/pong-game.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dino-runner-game",
      "type": "registry:component",
      "title": "Dino Runner Game",
      "description": "A canvas endless-runner in the style of the offline dino game, pixel-drawn running dino, procedurally spawned cactus obstacles, three difficulty speeds, tap/space/arrow-up to jump, and a high-score tracker.",
      "files": [
        {
          "path": "registry/new-york/dino-runner-game/dino-runner-game.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "space-invaders-game",
      "type": "registry:component",
      "title": "Space Invaders Game",
      "description": "A canvas Space Invaders, a descending grid of pixel-drawn invaders that shoot back, three difficulty levels, keyboard controls on desktop and on-screen move/fire buttons on mobile, with a win/lose end screen.",
      "files": [
        {
          "path": "registry/new-york/space-invaders-game/space-invaders-game.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "glow-jump-widget",
      "type": "registry:component",
      "title": "Glow Jump Widget",
      "description": "A floating-action-button popup that opens a glowing 4-level platformer, jump between walls, dodge moving lava, and collect coins to finish each level, keyboard and on-screen touch controls included.",
      "files": [
        {
          "path": "registry/new-york/glow-jump-widget/glow-jump-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "spin-to-win-wheel",
      "type": "registry:component",
      "title": "Spin to Win Wheel",
      "description": "A gamified discount-capture widget where visitors spin a weighted SVG prize wheel for a reward, with five glass themes, a themed reveal modal and code copy, rendered inline or as a corner-launched popup with manual/delay/scroll triggers.",
      "files": [
        {
          "path": "registry/new-york/spin-to-win-wheel/spin-to-win-wheel.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "memory-cards-widget",
      "type": "registry:component",
      "title": "Memory Cards Widget",
      "description": "A floating-action-button popup that opens a color-matching memory game, 3 difficulty levels, a live timer/move counter, best-score tracking, subtle Web Audio sound effects, and a confetti win screen.",
      "files": [
        {
          "path": "registry/new-york/memory-cards-widget/memory-cards-widget.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "bubble-cursor",
      "type": "registry:component",
      "title": "Bubble Cursor",
      "description": "A liquid-glass bubble that follows the pointer across the whole page, rendered with a raymarched WebGL2 metaball trail with fresnel shading and iridescent glints, plus an optional light/dark theme toggle.",
      "files": [
        {
          "path": "registry/new-york/bubble-cursor/bubble-cursor.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "review-card-portrait",
      "type": "registry:component",
      "title": "Review Card Portrait",
      "description": "A portrait-format testimonial card with a crossfading top image strip, counter, thumbnail selector, and an animated quote with name/role, plus prev/next navigation and optional autoplay.",
      "files": [
        {
          "path": "registry/new-york/review-card-portrait/review-card-portrait.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "cinematic-stacked-gallery",
      "type": "registry:component",
      "title": "Cinematic Stacked Gallery",
      "description": "A fullscreen hero gallery where inactive slides collapse into a stacked deck of thumbnails; clicking one crossfades it to full size with Ken Burns zoom, cursor parallax, and a title/description rail with CTA and prev/next controls.",
      "files": [
        {
          "path": "registry/new-york/cinematic-stacked-gallery/cinematic-stacked-gallery.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "dice-roll-discount-popup",
      "type": "registry:component",
      "title": "Dice Roll Discount Popup",
      "description": "A gamified discount-capture widget where visitors roll two 3D dice for a reward tier, with a themed reveal modal and code copy, rendered inline or as a corner-launched popup with manual/delay/scroll triggers.",
      "files": [
        {
          "path": "registry/new-york/dice-roll-discount-popup/dice-roll-discount-popup.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "error-404-page-section",
      "type": "registry:component",
      "title": "404 Page Section",
      "description": "A centered \"page not found\" section: a big glitching error code, heading, description and one or two pill buttons. Follows the host site's theme by default (or a fixed dark / light palette with an optional theme toggle) and scales with its own width.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/error-404-page-section/error-404-page-section.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "toast-stack",
      "type": "registry:component",
      "title": "Toast Stack",
      "description": "A stacked toast notification system: toasts pile up in a layered stack that fans out on hover, with six tones including a loading state that turns into a result, auto-dismiss that pauses on hover, swipe to dismiss and an action button.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/toast-stack/toast-stack.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "notification-center",
      "type": "registry:component",
      "title": "Notification Center",
      "description": "A bell button with an unread badge that opens a notification panel: All and Unread tabs, Today and Earlier groups, unread dots, mark as read on click, mark all as read, per-item remove and full keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/notification-center/notification-center.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "status-dot",
      "type": "registry:component",
      "title": "Status Dot",
      "description": "A presence and status indicator: online, away, busy, offline and live dots with an optional label, a pulsing ring for live states, and a pinned mode that sits on an avatar's corner behind a cut-out ring.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/status-dot/status-dot.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "inline-validation-message",
      "type": "registry:component",
      "title": "Inline Validation Message",
      "description": "A field-level validation message with error, warning, success and info states: it slides open under the field, crossfades when the text changes, shakes once when an error appears, and lives in a live region so screen readers announce it.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/inline-validation-message/inline-validation-message.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:component",
      "title": "Dropdown Menu",
      "description": "A button-triggered menu with icons, keyboard shortcuts, checkbox and radio items, labelled sections, nested submenus and a highlight that slides from row to row, with full keyboard support including typeahead.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/dropdown-menu/dropdown-menu.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "mega-menu",
      "type": "registry:component",
      "title": "Mega Menu",
      "description": "A pill navigation bar whose menus open one shared panel: it morphs to each menu's size, slides the content in from the side you moved to, and holds columns of icon links plus a featured card, with hover intent and keyboard support.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/mega-menu/mega-menu.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "mobile-tab-bar",
      "type": "registry:component",
      "title": "Mobile Tab Bar",
      "description": "A bottom navigation bar for phones: a pill slides behind the active tab and its icon bounces, with badge counts, an optional raised centre action, docked or floating styles, blurred glass and safe-area padding.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/mobile-tab-bar/mobile-tab-bar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "table-of-contents",
      "type": "registry:component",
      "title": "Table of Contents",
      "description": "An 'On this page' table of contents for articles and docs: it tracks the section in view, slides a marker along its rail (filling it like reading progress), indents subsections, and smooth-scrolls to a heading on click. Collects headings automatically.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/table-of-contents/table-of-contents.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scrollspy-anchor-links",
      "type": "registry:component",
      "title": "Scrollspy Anchor Links",
      "description": "A sticky horizontal bar of section links (Overview, Features, Specs, Reviews) that follows the section in view with a sliding pill or underline, keeps the current link scrolled into view on phones, and fills a progress line as you read.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/scrollspy-anchor-links/scrollspy-anchor-links.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "language-switcher",
      "type": "registry:component",
      "title": "Language Switcher",
      "description": "A language picker: a globe button whose name rolls to the new language, opening a searchable list of native names with codes and a check on the current one, or a segmented row of codes for two to four languages.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/language-switcher/language-switcher.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "checkbox-group",
      "type": "registry:component",
      "title": "Checkbox Group",
      "description": "A group of checkboxes with a Select all row that shows a dash when only some are picked, checks that draw themselves, list or card layouts, a maximum that disables the rest, a live count and an error state.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/checkbox-group/checkbox-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "bottom-sheet",
      "type": "registry:component",
      "title": "Bottom Sheet",
      "description": "A mobile bottom sheet that slides up over a dimmed backdrop, rests at snap points you drag between from its handle, closes on a downward flick, and keeps its own content scrollable.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/bottom-sheet/bottom-sheet.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "lightbox",
      "type": "registry:component",
      "title": "Lightbox",
      "description": "An image lightbox for any grid of photos: the thumbnail morphs into the full view, then arrows, keys and swipes step through, double-click zooms and pans, a swipe down closes, and a thumbnail strip tracks where you are.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/lightbox/lightbox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "cookie-consent-banner",
      "type": "registry:component",
      "title": "Cookie Consent Banner",
      "description": "A cookie consent banner as a corner card or a bottom bar: accept all, reject all with equal weight, or open per-category switches (necessary locked on), and the choice is remembered, with a small button to change it later.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/cookie-consent-banner/cookie-consent-banner.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "product-tour",
      "type": "registry:component",
      "title": "Product Tour",
      "description": "A guided product tour: a spotlight glides from element to element over a dimmed page while a card beside it explains each one, with progress dots, Back, Next and Skip, arrow keys, and automatic placement on the side that has room.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/product-tour/product-tour.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:component",
      "title": "Calendar",
      "description": "An inline month calendar for picking one day, a range or several days, with event dots under their days, an agenda for the selected day, months that slide in from the side they come from, a month picker, week numbers and full keyboard control.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/calendar/calendar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "basic-carousel",
      "type": "registry:component",
      "title": "Basic Carousel",
      "description": "A plain, dependable carousel: drag or swipe between slides, arrows and dots, one to four slides in view, looping, and optional autoplay whose progress fills the active dot and pauses whenever someone hovers, focuses or drags.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/basic-carousel/basic-carousel.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "sparkline-stat",
      "type": "registry:component",
      "title": "Sparkline Stat",
      "description": "A KPI card with a sparkline: the number counts to its new value, a change badge says how far it moved, range tabs swap the series with a redraw, and scrubbing the chart turns the headline into that point's value.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/sparkline-stat/sparkline-stat.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "checklist",
      "type": "registry:component",
      "title": "Checklist",
      "description": "An onboarding checklist: a progress bar and count up top, round checks that draw in and strike the step through, the next step opening by itself with its own action button, a fold-away header and an all-done state.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/checklist/checklist.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "icon-list",
      "type": "registry:component",
      "title": "Icon List",
      "description": "A list with an icon on every line for features, benefits and what's included: checks that draw themselves in as the rows fade up, dimmed and struck-through lines for what isn't included, optional descriptions, and one or two columns.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/icon-list/icon-list.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "icon-box",
      "type": "registry:component",
      "title": "Icon Box",
      "description": "A feature box with an icon, title and text for features and services grids: in the card style a light follows the pointer along the border, the icon tile lifts and tilts on hover, and a linked box nudges its arrow forward.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/icon-box/icon-box.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "data-view",
      "type": "registry:component",
      "title": "Data View",
      "description": "A collection view that switches between a card grid and a list, with every item gliding to its new place; a sort menu reorders them with the same motion, and a pager steps through pages.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/data-view/data-view.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "sortable-list",
      "type": "registry:component",
      "title": "Sortable List",
      "description": "A list people can put in their own order: drag a row by its handle and the others slide out of the way, or use the keyboard (Space to lift, arrows to move, Space to drop, Escape to undo), with live position numbers and optional remove buttons.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/sortable-list/sortable-list.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "organization-chart",
      "type": "registry:component",
      "title": "Organization Chart",
      "description": "An org chart of people cards joined by rounded connector lines: teams open and close from a count chip under each manager, and picking someone lights up their reporting line all the way to the top.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/organization-chart/organization-chart.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "transfer-list",
      "type": "registry:component",
      "title": "Transfer List",
      "description": "Two lists side by side for moving items from one set to another, such as available and granted permissions: tick items and send them across with the arrows (or double-click one), move everything at once, search each side, and watch rows glide between the lists.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/transfer-list/transfer-list.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "tree-table",
      "type": "registry:component",
      "title": "Tree Table",
      "description": "A table whose rows nest, like files in folders: open and close branches with a chevron, parents add up their children (folder sizes), sort any column with folders kept on top, and tick rows with checkboxes that select whole branches.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/tree-table/tree-table.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "chat-bubble",
      "type": "registry:component",
      "title": "Chat Bubble",
      "description": "Chat message bubbles for both sides of a conversation: runs from the same person group together with tight inner corners and one avatar, outgoing messages show sending, delivered and read ticks, reactions pop in under a bubble, and a typing bubble bounces while someone writes.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/chat-bubble/chat-bubble.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "list-group",
      "type": "registry:component",
      "title": "List Group",
      "description": "A framed group of rows for settings menus and navigation lists: icons, descriptions, count badges, a danger row for destructive actions, and in selectable mode an active highlight that slides from row to row with arrow-key navigation.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/list-group/list-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "basic-table",
      "type": "registry:component",
      "title": "Basic Table",
      "description": "A clean, semantic table for showing data as it is: plain, striped or bordered, comfortable or compact, a caption and a totals row, custom cells such as status pills, a sticky header that casts a shadow once you scroll, and rows that fade in on load.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/basic-table/basic-table.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "blockquote",
      "type": "registry:component",
      "title": "Blockquote",
      "description": "A quote with its author: a rule on the left, a large quotation mark, a framed card or a big centred pull quote, revealed as it scrolls into view with a highlighter sweeping across the phrase that matters.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/blockquote/blockquote.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "masonry-grid",
      "type": "registry:component",
      "title": "Masonry Grid",
      "description": "A masonry layout for tiles of different heights: each tile drops into the shortest column while keeping left-to-right order, the column count follows the container's width, and tiles spring to their new places when it changes.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/masonry-grid/masonry-grid.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "bento-grid",
      "type": "registry:component",
      "title": "Bento Grid",
      "description": "A bento layout of feature cells that span columns and rows, fall back to two and then one column as the container narrows, fade in one after another, and light up under the pointer, with a demo set of small live visuals.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/bento-grid/bento-grid.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "sticky-header",
      "type": "registry:component",
      "title": "Sticky Header",
      "description": "A site header that stays out of the way: it slides up while you scroll down and comes back the moment you scroll up, turns compact and frosted after the first few pixels, shows reading progress along its edge, and folds its links into a menu on narrow screens.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/sticky-header/sticky-header.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "section-container",
      "type": "registry:component",
      "title": "Section Container",
      "description": "A page-section wrapper that keeps widths, padding and headings consistent: an optional eyebrow, title and description, grid, dot or glow backgrounds that fade out at the edges, framed side rails with corner marks, and a gentle reveal as it scrolls in.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/section-container/section-container.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "shape-divider",
      "type": "registry:component",
      "title": "Shape Divider",
      "description": "SVG dividers that shape the edge between two sections: waves that drift in a seamless loop, a curve, a tilt, a peak, a zigzag or steps, layered in up to three tones, at the top or bottom of a section and mirrored if you like.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/shape-divider/shape-divider.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "fieldset",
      "type": "registry:component",
      "title": "Fieldset",
      "description": "A grouped form section on the native fieldset: the legend sits in a notch in the border, the group folds away to a one-line summary, a tick appears once it's complete, an error outlines it in coral, and disabling it disables every control inside.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/fieldset/fieldset.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "theme-toggle",
      "type": "registry:component",
      "title": "Theme Toggle",
      "description": "A light / dark switch that morphs a sun into a moon, or a Light · System · Dark control with a sliding pill; it remembers the choice, follows the OS in System mode, writes the theme to <html>, and can grow the new theme out of the button in a circle.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/theme-toggle/theme-toggle.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "share-buttons",
      "type": "registry:component",
      "title": "Share Buttons",
      "description": "Share buttons for X, LinkedIn, Facebook, Reddit, WhatsApp and email with a copy-link button that turns into a tick: round icons with hover labels, labelled pills, or a single Share button that fans out into the row, plus the device's own share sheet where it exists.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/share-buttons/share-buttons.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "social-links",
      "type": "registry:component",
      "title": "Social Links",
      "description": "Links to your profiles in three styles: round icons that fill from the bottom and tilt on hover, a list with handles, follower counts and an out arrow, or a dock whose icons grow as the pointer comes near.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/social-links/social-links.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "scroll-progress-bar",
      "type": "registry:component",
      "title": "Scroll Progress Bar",
      "description": "Reading progress in three forms: a thin spring-smoothed bar, a corner ring with the percentage that becomes a back-to-top button at the end, or a track split into your page's sections that labels the current one and jumps to any other.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/scroll-progress-bar/scroll-progress-bar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "payment-button",
      "type": "registry:component",
      "title": "Payment Button",
      "description": "A pay button that shows every step of a payment: the amount, a spinner while it processes, a drawn tick when it's paid, a shake and a clear message when a card is declined, and an optional press-and-hold mode that fills up before it charges.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/payment-button/payment-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "speed-dial",
      "type": "registry:component",
      "title": "Speed Dial",
      "description": "A floating action button that opens into a short menu of actions: the plus turns into a close cross while actions spring out one after another in a line or a quarter-circle fan, each with a label, with an optional dimmed backdrop and full keyboard control.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/speed-dial/speed-dial.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "animate-on-scroll",
      "type": "registry:component",
      "title": "Animate on Scroll",
      "description": "A wrapper that brings content in as it scrolls into view: fade from any side, zoom, blur, flip or a clip-path wipe, one block at once or each child in turn, once or every time, watching the window or any scroll box.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/animate-on-scroll/animate-on-scroll.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "focus-trap",
      "type": "registry:component",
      "title": "Focus Trap",
      "description": "Keeps keyboard focus inside a dialog, drawer or menu while it's open: Tab and Shift+Tab loop through its controls, focus starts where you choose and returns to where it was, Escape calls you back, and an optional ring glides to whatever has focus.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/focus-trap/focus-trap.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "icon-swap-toggle",
      "type": "registry:component",
      "title": "Icon Swap Toggle",
      "description": "A toggle button that swaps between two icons with a rotate, 3D flip, pop or slide: ready-made pairs for play/pause, mute, like, save, show/hide, menu/close, light/dark and copy/copied, or any two icons of your own.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/icon-swap-toggle/icon-swap-toggle.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "ripple-click-effect",
      "type": "registry:component",
      "title": "Ripple Click Effect",
      "description": "A wrapper that makes any surface ripple where it's pressed: the wave grows while the pointer is held and fades when it lets go, several can overlap, icon buttons can ripple from the centre, and Enter or Space ripples for keyboard users.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/ripple-click-effect/ripple-click-effect.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "toggle-price-counter",
      "type": "registry:component",
      "title": "Toggle Price Counter",
      "description": "A monthly / yearly billing switch whose price rolls to the new amount digit by digit like an odometer, with a saving badge that pops when yearly is picked and a line that spells out what's billed and saved.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/toggle-price-counter/toggle-price-counter.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "animated-underline-link",
      "type": "registry:component",
      "title": "Animated Underline Link",
      "description": "Text links with underlines that move: a line that slides in from the left and out to the right, opens from the centre, draws as a wave, fills behind the text, sweeps like a highlighter, or pushes an arrow, with a faint resting line so they still read as links.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/animated-underline-link/animated-underline-link.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "image-shape-mask",
      "type": "registry:component",
      "title": "Image Shape Mask",
      "description": "Masks an image into a shape (circle, squircle, arch, hexagon, flower, blob or diamond) that grows out from the centre as it scrolls into view and morphs smoothly into another shape on hover while the photo slowly zooms.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/image-shape-mask/image-shape-mask.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "typography-prose",
      "type": "registry:component",
      "title": "Typography Prose",
      "description": "Readable styles for rich text from Markdown or a CMS, without a plugin: balanced headings with hover # links, comfortable line length and rhythm, lists, quotes, inline code, code blocks with a Copy button, tables, marks and keys, scoped so they never leak into the rest of the page.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/typography-prose/typography-prose.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "variant-swatches",
      "type": "registry:component",
      "title": "Variant Swatches",
      "description": "Product option pickers for colour and size: round colour swatches with a ring that glides to the pick, size chips with a sliding fill, the chosen value named in the label, sold-out options struck through, and a low-stock warning when only a few are left.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/variant-swatches/variant-swatches.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "content-switch",
      "type": "registry:component",
      "title": "Content Switch",
      "description": "A switch that swaps the content below it: a pill or underline thumb slides to the chosen option, the new panel slides in from that side (or fades or blurs in), and the box eases to the new height instead of jumping.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/content-switch/content-switch.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "floating-label-input",
      "type": "registry:component",
      "title": "Floating Label Input",
      "description": "A text field whose label sits inside it and floats up on focus or once filled, in outlined (label in a notch in the border), filled or underline styles, with an optional icon, clear button, validity tick, character count, helper text and a shake on error.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/floating-label-input/floating-label-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "input-group",
      "type": "registry:component",
      "title": "Input Group",
      "description": "Joins an input with text addons, icons, a select or a button into one field with one border and one focus ring: https:// and .com around a subdomain with a live availability tick, a price with a currency picker, a search with a shortcut, an invite with a send button.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/input-group/input-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "masked-input",
      "type": "registry:component",
      "title": "Masked Input",
      "description": "A formatted text field for phone numbers, dates, times, card numbers, ZIP codes or any pattern you define: separators fill themselves in, the rest of the template waits in faint ghost text, a thin bar tracks how much is filled, and a tick appears when it's complete.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/masked-input/masked-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "knob",
      "type": "registry:component",
      "title": "Knob",
      "description": "A rotary dial for picking a value in a range, like a mixer control: drag up or down, scroll or use the keyboard, with a 270° progress ring and a sliding thumb, or a physical-looking knob with an indicator and ticks that light up as it turns.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/knob/knob.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "listbox",
      "type": "registry:component",
      "title": "Listbox",
      "description": "An always-open list for picking one or several options: a search box that filters as you type, sticky group headings, avatars and descriptions, a highlight that follows the pointer or keyboard, checks that draw in, and type-ahead to jump by name.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/listbox/listbox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "toggle-button",
      "type": "registry:component",
      "title": "Toggle Button",
      "description": "A button that stays pressed: the fill grows out from the middle, icons spin into their 'on' version, labels roll from Follow to Following and counts tick up by one. Outline, soft and ghost styles, icon-only or with text.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/toggle-button/toggle-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:component",
      "title": "Button Group",
      "description": "Buttons joined into one control: plain action groups like Previous / Today / Next, a single-choice group whose fill slides between options, multi-toggle groups, and a split button whose chevron opens a menu of alternative actions.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/button-group/button-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dual-range-slider",
      "type": "registry:component",
      "title": "Dual Range Slider",
      "description": "A two-handle range filter with a histogram behind it: bars inside the range light up, the result count rolls as you drag, the filled part drags both ends together, and Min / Max fields stay in sync for exact numbers.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/dual-range-slider/dual-range-slider.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "repeatable-field-group",
      "type": "registry:component",
      "title": "Repeatable Field Group",
      "description": "A set of fields people can repeat: add a row, remove one, drag rows into order. Rows grow in and slide out, focus lands in the new row, Enter in the last row adds another, and min / max limits keep the list in bounds.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/repeatable-field-group/repeatable-field-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "filter-chips",
      "type": "registry:component",
      "title": "Filter Chips",
      "description": "A row of pill filters with counts: a check draws in and the chip grows to fit it, neighbours slide over instead of jumping, and a Clear chip appears once anything is on. The demo filters a list of open roles that reflows as you pick.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/filter-chips/filter-chips.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "icon-action-button",
      "type": "registry:component",
      "title": "Icon Action Button",
      "description": "A compact icon-only button for toolbars and table rows: solid, soft, outline or ghost, square or round, four sizes, a tooltip that names the action, a count badge, a loading spinner and a danger tone for destructive actions.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/icon-action-button/icon-action-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glossy-gradient-button",
      "type": "registry:component",
      "title": "Glossy Gradient Button",
      "description": "A premium call-to-action button with a glossy face: a lit gradient, a glass highlight on the top half, a band of light that sweeps across on hover, an arrow that nudges forward, and a press that sinks. Ink, paper and four colour palettes, or your own two stops.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/glossy-gradient-button/glossy-gradient-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "inline-link-button",
      "type": "registry:component",
      "title": "Inline Link Button",
      "description": "A text button that looks like a link, for secondary actions: Forgot password?, View all, Undo, Remove, Read the docs. Neutral, muted, accent or danger, an underline that's always on, on hover or off, an arrow that nudges, and a ↗ for external links. Renders a link when you pass href, a button when you don't.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/inline-link-button/inline-link-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "emoji-rating-scale",
      "type": "registry:component",
      "title": "Emoji Rating Scale",
      "description": "A five-face satisfaction rating for quick feedback: hand-drawn faces from a frown to a wide smile that wobble on hover, fill with their own colour and pop when picked, a label that rolls in underneath, and full keyboard support as a radio group.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/emoji-rating-scale/emoji-rating-scale.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "side-tab-menu",
      "type": "registry:component",
      "title": "Side Tab Menu",
      "description": "A vertical tab menu for settings pages: tabs with icons, second-line descriptions and count badges, grouped under headings, an active highlight with a rail that slides between them, and a panel that fades to the chosen tab. Stacks on phones.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/side-tab-menu/side-tab-menu.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "dot-pager-indicator",
      "type": "registry:component",
      "title": "Dot Pager Indicator",
      "description": "Dots that show where you are in a carousel or onboarding flow: the active dot stretches into a pill, a progress style fills the pill and moves on by itself like stories, and a window style shows five dots out of many and shrinks the edge ones. Clickable and keyboard friendly.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/dot-pager-indicator/dot-pager-indicator.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "vertical-progress-steps",
      "type": "registry:component",
      "title": "Vertical Progress Steps",
      "description": "A live status tracker for multi-step processes like deploys, imports and order tracking: each step is done, running, waiting or failed, the connector fills as steps finish, the running step spins and shows its log lines, and screen readers hear every change.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/vertical-progress-steps/vertical-progress-steps.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "auth-card",
      "type": "registry:component",
      "title": "Auth Card",
      "description": "A sign-in, sign-up and forgot-password card in one: social sign-in buttons, email and password fields with inline validation, a show-password toggle, a password strength meter, a loading state driven by your onSubmit promise and a check-your-email screen.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/auth-card/auth-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "pricing-table",
      "type": "registry:component",
      "title": "Pricing Table",
      "description": "Pricing plans side by side with a monthly / yearly switch, prices that roll when the period changes, a highlighted plan with a badge, included and excluded features, and a custom-price plan for enterprise.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/pricing-table/pricing-table.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "faq-section",
      "type": "registry:component",
      "title": "FAQ Section",
      "description": "A frequently asked questions section: heading and contact card on the left, an animated accordion on the right, optional category tabs and search, and FAQPage structured data for search engines.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/faq-section/faq-section.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "contact-section",
      "type": "registry:component",
      "title": "Contact Section",
      "description": "A contact section with a heading and your email, phone and address on the left, and a validated message form on the right: topic chips, a loading state driven by your onSubmit promise, inline errors and a thank-you screen.",
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "registry/new-york/contact-section/contact-section.tsx",
          "type": "registry:component"
        }
      ]
    }
  ]
}
