{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "uniquel",
  "homepage": "https://uniquel.io/components",
  "items": [
    {
      "name": "pin-input",
      "type": "registry:component",
      "title": "PIN Input",
      "description": "A six-digit PIN input with paste support and keyboard navigation for verification codes.",
      "categories": ["input"],
      "dependencies": ["lucide-react"],
      "files": [{ "path": "components/input/PinInput.tsx", "type": "registry:component", "target": "@components/input/PinInput.tsx" }]
    },
    {
      "name": "search-input-with-icon",
      "type": "registry:component",
      "title": "Search Input With Icon",
      "description": "A premium search input with a focused state and an icon that becomes a submit action as you type.",
      "categories": ["input"],
      "dependencies": ["lucide-react"],
      "files": [{ "path": "components/input/SearchInputWithIcon.tsx", "type": "registry:component", "target": "@components/input/SearchInputWithIcon.tsx" }]
    },
    {
      "name": "typing-animation",
      "type": "registry:component",
      "title": "Typing Animation",
      "description": "A minimal typing animation with smart backspacing, an optional cursor, and adjustable speed.",
      "categories": ["animation"],
      "dependencies": [],
      "files": [{ "path": "components/animation/TypingAnimation.tsx", "type": "registry:component", "target": "@components/animation/TypingAnimation.tsx" }]
    },
    {
      "name": "confetti-fireworks",
      "type": "registry:component",
      "title": "Confetti Fireworks",
      "description": "A button-triggered canvas confetti burst with a center launch and three quick side volleys.",
      "categories": ["animation"],
      "dependencies": ["canvas-confetti"],
      "files": [{ "path": "components/animation/ConfettiButton.tsx", "type": "registry:component", "target": "@components/animation/ConfettiButton.tsx" }]
    },
    {
      "name": "iphone-duo-closed-mockup",
      "type": "registry:component",
      "title": "iPhone Duo Closed Mockup",
      "description": "A single folded iPhone Duo with a replaceable 1398 × 2034 external display and polished silver frame.",
      "categories": ["phone-mockups"],
      "files": [{ "path": "components/phone-mockups/IphoneDuoClosedMockup.tsx", "type": "registry:component", "target": "@components/phone-mockups/IphoneDuoClosedMockup.tsx" }]
    },
    {
      "name": "iphone-duo-open-mockup",
      "type": "registry:component",
      "title": "iPhone Duo Open Mockup",
      "description": "A single fully open iPhone Duo with a flat, replaceable 2670 × 1878 display and subtle hinge detail.",
      "categories": ["phone-mockups"],
      "files": [{ "path": "components/phone-mockups/IphoneDuoOpenMockup.tsx", "type": "registry:component", "target": "@components/phone-mockups/IphoneDuoOpenMockup.tsx" }]
    },
    {
      "name": "iphone-duo-mockup",
      "type": "registry:component",
      "title": "iPhone Duo Mockup",
      "description": "A silver foldable concept with polished edges, dual cameras, and one easily replaceable screenshot.",
      "categories": ["phone-mockups"],
      "files": [
        {
          "path": "components/phone-mockups/IphoneDuoMockup.tsx",
          "type": "registry:component",
          "target": "@components/phone-mockups/IphoneDuoMockup.tsx"
        }
      ]
    },
    {
      "name": "wavy-tide",
      "type": "registry:component",
      "title": "Wavy Tide",
      "description": "Animated canvas waves that fill the container and drift with the pointer - a softer, SaaS-ready take on classic wavy backgrounds.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/WavyTideBackground.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/WavyTideBackground.tsx"
        }
      ]
    },
    {
      "name": "meteor-shower",
      "type": "registry:component",
      "title": "Meteor Shower",
      "description": "Subtle canvas meteors drifting across a dark sky - a quiet animated background for heroes and landing sections.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/MeteorShowerBackground.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/MeteorShowerBackground.tsx"
        }
      ]
    },
    {
      "name": "neon-flow",
      "type": "registry:component",
      "title": "Neon Flow",
      "description": "Staggered neon trails that sweep across a dark field - colors are prop-driven for easy theming.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/NeonFlowBackground.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/NeonFlowBackground.tsx"
        }
      ]
    },
    {
      "name": "desert-dune",
      "type": "registry:component",
      "title": "Desert Dune",
      "description": "Soft layered waves in parallax drift - cool indigo tones by default, colors via props.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/DesertDuneBackground.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/DesertDuneBackground.tsx"
        }
      ]
    },
    {
      "name": "aurora",
      "type": "registry:component",
      "title": "Aurora",
      "description": "Minimal aurora borealis light - fanned curtains in tones of a single green, drifting slowly across a deep night sky.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/AuroraBackground.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/AuroraBackground.tsx"
        }
      ]
    },
    {
      "name": "coverflow-gallery",
      "type": "registry:component",
      "title": "Coverflow Gallery",
      "description": "3D coverflow carousel with keyboard, dot nav, and optional autoplay that pauses on hover.",
      "categories": [
        "gallery"
      ],
      "files": [
        {
          "path": "components/gallery/CoverflowGallery.tsx",
          "type": "registry:component",
          "target": "@components/gallery/CoverflowGallery.tsx"
        }
      ]
    },
    {
      "name": "arch-gallery",
      "type": "registry:component",
      "title": "Arch Gallery",
      "description": "Fanned photo arch with center-forward stacking; hover lifts a card and scales it up.",
      "categories": [
        "gallery"
      ],
      "files": [
        {
          "path": "components/gallery/ArchGallery.tsx",
          "type": "registry:component",
          "target": "@components/gallery/ArchGallery.tsx"
        }
      ]
    },
    {
      "name": "integration-hub",
      "type": "registry:component",
      "title": "Integration Hub",
      "description": "Brand hub with a pyramid of connected apps and a looping pulse that travels down each branch.",
      "categories": [
        "integrations"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/integrations/IntegrationHub.tsx",
          "type": "registry:component",
          "target": "@components/integrations/IntegrationHub.tsx"
        }
      ]
    },
    {
      "name": "avatar-stack",
      "type": "registry:component",
      "title": "Avatar Stack",
      "description": "Layered portraits with grayscale-to-color hover, spring lift, and a glass +N counter.",
      "categories": [
        "trust"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/trust/AvatarStack.tsx",
          "type": "registry:component",
          "target": "@components/trust/AvatarStack.tsx"
        }
      ]
    },
    {
      "name": "rating-badge",
      "type": "registry:component",
      "title": "Rating Badge",
      "description": "Editorial rating with sequentially drawn stars, review count, and a soft luminous edge.",
      "categories": [
        "trust"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/trust/RatingBadge.tsx",
          "type": "registry:component",
          "target": "@components/trust/RatingBadge.tsx"
        }
      ]
    },
    {
      "name": "promo-pill",
      "type": "registry:component",
      "title": "Promo Pill",
      "description": "Translucent offer marker with a low-frequency glow pulse and optional dismiss.",
      "categories": [
        "conversion"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/conversion/PromoPill.tsx",
          "type": "registry:component",
          "target": "@components/conversion/PromoPill.tsx"
        }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:component",
      "title": "Button Group",
      "description": "Primary and secondary actions as one unit - depth on hover, underline reveal on the quiet CTA.",
      "categories": [
        "conversion"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/conversion/ButtonGroup.tsx",
          "type": "registry:component",
          "target": "@components/conversion/ButtonGroup.tsx"
        }
      ]
    },
    {
      "name": "feature-chip",
      "type": "registry:component",
      "title": "Feature Chip",
      "description": "Minimal metadata token with an independent icon hover and soft selected bloom.",
      "categories": [
        "product"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/product/FeatureChip.tsx",
          "type": "registry:component",
          "target": "@components/product/FeatureChip.tsx"
        }
      ]
    },
    {
      "name": "integration-badge",
      "type": "registry:component",
      "title": "Integration Badge",
      "description": "Sculptural app mark in a precise tile - muted to full color with a near-imperceptible lift.",
      "categories": [
        "product"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/product/IntegrationBadge.tsx",
          "type": "registry:component",
          "target": "@components/product/IntegrationBadge.tsx"
        }
      ]
    },
    {
      "name": "accordion-chevron",
      "type": "registry:component",
      "title": "Accordion Chevron",
      "description": "Minimal accordion with a subtly animated chevron for compact FAQs and supporting details.",
      "categories": [
        "content"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/content/AccordionChevron.tsx",
          "type": "registry:component",
          "target": "@components/content/AccordionChevron.tsx"
        }
      ]
    },
    {
      "name": "scroll-progress-indicator",
      "type": "registry:component",
      "title": "Scroll Progress Indicator",
      "description": "A circular scroll progress indicator that doubles as a compact return-to-top control.",
      "categories": [
        "content"
      ],
      "dependencies": [
        "@solar-icons/react"
      ],
      "files": [
        {
          "path": "components/content/ScrollCompass.tsx",
          "type": "registry:component",
          "target": "@components/content/ScrollCompass.tsx"
        }
      ]
    },
    {
      "name": "reading-progress",
      "type": "registry:component",
      "title": "Reading Progress",
      "description": "A drawn-line progress indicator with spring-smoothed scroll tracking and a fading percentage.",
      "categories": [
        "content"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/content/ReadingProgress.tsx",
          "type": "registry:component",
          "target": "@components/content/ReadingProgress.tsx"
        }
      ]
    },
    {
      "name": "quote-highlight",
      "type": "registry:component",
      "title": "Quote Highlight",
      "description": "Editorial pull quote with oversized glyph, expanding rule, and blurred fade-in.",
      "categories": [
        "content"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/content/QuoteHighlight.tsx",
          "type": "registry:component",
          "target": "@components/content/QuoteHighlight.tsx"
        }
      ]
    },
    {
      "name": "announcement-bar",
      "type": "registry:component",
      "title": "Announcement Bar",
      "description": "Restrained product update strip with gradient sheen and a clean collapse dismiss.",
      "categories": [
        "navigation"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/navigation/AnnouncementBar.tsx",
          "type": "registry:component",
          "target": "@components/navigation/AnnouncementBar.tsx"
        }
      ]
    },
    {
      "name": "language-selector",
      "type": "registry:component",
      "title": "Language Selector",
      "description": "Minimal locale control with scaled blur-sm menu and staggered options - no native select chrome.",
      "categories": [
        "navigation"
      ],
      "dependencies": [
        "framer-motion"
      ],
      "files": [
        {
          "path": "components/navigation/LanguageSelector.tsx",
          "type": "registry:component",
          "target": "@components/navigation/LanguageSelector.tsx"
        }
      ]
    },
    {
      "name": "spinner-overlay",
      "type": "registry:component",
      "title": "Spinner Overlay",
      "description": "A centered spinner overlay for blocking a page or panel while content loads.",
      "categories": ["overlay-loaders"],
      "files": [{ "path": "components/overlay-loaders/SpinnerOverlay.tsx", "type": "registry:component", "target": "@components/overlay-loaders/SpinnerOverlay.tsx" }]
    },
    {
      "name": "bouncing-dots-overlay",
      "type": "registry:component",
      "title": "Bouncing Dots Overlay",
      "description": "A light three-dot loading overlay with staggered motion.",
      "categories": ["overlay-loaders"],
      "files": [{ "path": "components/overlay-loaders/BouncingDotsOverlay.tsx", "type": "registry:component", "target": "@components/overlay-loaders/BouncingDotsOverlay.tsx" }]
    },
    {
      "name": "wave-bars-overlay",
      "type": "registry:component",
      "title": "Wave Bars Overlay",
      "description": "Five staggered bars that create a compact equalizer-style loading overlay.",
      "categories": ["overlay-loaders"],
      "files": [{ "path": "components/overlay-loaders/WaveBarsOverlay.tsx", "type": "registry:component", "target": "@components/overlay-loaders/WaveBarsOverlay.tsx" }]
    },
    {
      "name": "skeleton-overlay",
      "type": "registry:component",
      "title": "Skeleton Overlay",
      "description": "A card-shaped skeleton overlay for loading dashboards, forms, and content panels.",
      "categories": ["overlay-loaders"],
      "files": [{ "path": "components/overlay-loaders/SkeletonOverlay.tsx", "type": "registry:component", "target": "@components/overlay-loaders/SkeletonOverlay.tsx" }]
    },
    {
      "name": "compact-card",
      "type": "registry:component",
      "title": "Compact Card",
      "description": "Editorial card with a full-bleed image, story metadata, and optional link wrapper.",
      "categories": ["cards"],
      "files": [{ "path": "components/cards/CompactCard.tsx", "type": "registry:component", "target": "@components/cards/CompactCard.tsx" }]
    },
    {
      "name": "horizontal-card",
      "type": "registry:component",
      "title": "Horizontal Card",
      "description": "Side-by-side product card with image, price, and a clear action.",
      "categories": ["cards"],
      "files": [{ "path": "components/cards/HorizontalCard.tsx", "type": "registry:component", "target": "@components/cards/HorizontalCard.tsx" }]
    },
    {
      "name": "metric-card",
      "type": "registry:component",
      "title": "Metric Card",
      "description": "Compact dashboard metric with a trend badge and inline sparkline.",
      "categories": ["cards"],
      "files": [{ "path": "components/cards/MetricCard.tsx", "type": "registry:component", "target": "@components/cards/MetricCard.tsx" }]
    },
    {
      "name": "card-stack",
      "type": "registry:component",
      "title": "Card Stack",
      "description": "Layered testimonial cards that cycle forward with a spring stack. Click the front card to advance.",
      "categories": ["cards"],
      "dependencies": ["framer-motion"],
      "files": [{ "path": "components/cards/CardStack.tsx", "type": "registry:component", "target": "@components/cards/CardStack.tsx" }]
    },
    {
      "name": "dark-mode-toggle",
      "type": "registry:component",
      "title": "Dark Mode Toggle",
      "description": "Compact sun and moon switch that persists theme preference and toggles the document dark class.",
      "categories": ["navigation"],
      "dependencies": ["framer-motion"],
      "files": [{ "path": "components/navigation/DarkModeToggle.tsx", "type": "registry:component", "target": "@components/navigation/DarkModeToggle.tsx" }]
    },
    {
      "name": "pagination-with-ellipsis",
      "type": "registry:component",
      "title": "Pagination with Ellipsis",
      "description": "Numbered pagination that keeps the current page visible and collapses long ranges with ellipses.",
      "categories": ["navigation"],
      "dependencies": [],
      "files": [{ "path": "components/navigation/PaginationWithEllipsis.tsx", "type": "registry:component", "target": "@components/navigation/PaginationWithEllipsis.tsx" }]
    },
    {
      "name": "pagination-with-dots",
      "type": "registry:component",
      "title": "Pagination with Dots",
      "description": "Compact pagination controls with arrows and dots by default, plus optional page numbers.",
      "categories": ["navigation"],
      "dependencies": ["lucide-react"],
      "files": [{ "path": "components/navigation/PaginationWithDots.tsx", "type": "registry:component", "target": "@components/navigation/PaginationWithDots.tsx" }]
    },
    {
      "name": "react-stepper",
      "type": "registry:component",
      "title": "React Stepper",
      "description": "Minimal React stepper with clear completed, current, and upcoming states for multi-step flows.",
      "categories": ["forms"],
      "dependencies": [],
      "files": [{ "path": "components/forms/ReactStepper.tsx", "type": "registry:component", "target": "@components/forms/ReactStepper.tsx" }]
    },
    {
      "name": "horizontal-react-splitter",
      "type": "registry:component",
      "title": "Horizontal React Splitter",
      "description": "A clean side-by-side React splitter for inboxes, editors, and dashboard layouts.",
      "categories": ["splitters"],
      "dependencies": [],
      "files": [{ "path": "components/splitters/Splitter.tsx", "type": "registry:component", "target": "@components/splitters/Splitter.tsx" }]
    },
    {
      "name": "vertical-react-splitter",
      "type": "registry:component",
      "title": "Vertical React Splitter",
      "description": "A stacked React splitter for charts, activity feeds, consoles, and detail panels.",
      "categories": ["splitters"],
      "dependencies": [],
      "files": [{ "path": "components/splitters/Splitter.tsx", "type": "registry:component", "target": "@components/splitters/Splitter.tsx" }]
    },
    {
      "name": "nested-react-splitter",
      "type": "registry:component",
      "title": "Nested React Splitter",
      "description": "A flexible React splitter layout with an independent sidebar and stacked workspace panels.",
      "categories": ["splitters"],
      "dependencies": [],
      "files": [{ "path": "components/splitters/Splitter.tsx", "type": "registry:component", "target": "@components/splitters/Splitter.tsx" }]
    },
    {
      "name": "input-spinner",
      "type": "registry:component",
      "title": "Input Spinner",
      "description": "A minimalist input spinner for choosing quantities with buttons, typing, or arrow keys.",
      "categories": ["input"],
      "dependencies": ["lucide-react"],
      "files": [{ "path": "components/input/InputSpinner.tsx", "type": "registry:component", "target": "@components/input/InputSpinner.tsx" }]
    },
    {
      "name": "vertical-slider",
      "type": "registry:component",
      "title": "Vertical Slider",
      "description": "A vertical range input with configurable value labels, thumb shapes, colors, and height.",
      "categories": ["input"],
      "dependencies": [],
      "files": [{ "path": "components/input/VerticalSlider.tsx", "type": "registry:component", "target": "@components/input/VerticalSlider.tsx" }]
    },
    {
      "name": "background-grid",
      "type": "registry:component",
      "title": "Background Grid",
      "description": "A static 3D background grid - a glowing wireframe perspective grid that recedes into the dark, with depth from atmospheric falloff and light pooling at each intersection.",
      "categories": [
        "backgrounds"
      ],
      "files": [
        {
          "path": "components/backgrounds/BackgroundGrid.tsx",
          "type": "registry:component",
          "target": "@components/backgrounds/BackgroundGrid.tsx"
        }
      ]
    },
    {
      "name": "scrollable-carousel",
      "type": "registry:component",
      "title": "Scrollable Carousel",
      "description": "Responsive horizontal carousel with native scrolling, scroll snapping, and accessible previous and next controls.",
      "categories": ["gallery"],
      "dependencies": ["lucide-react"],
      "files": [{ "path": "components/gallery/ScrollableCarousel.tsx", "type": "registry:component", "target": "@components/gallery/ScrollableCarousel.tsx" }]
    },
    {
      "name": "svg-blob-animation",
      "type": "registry:component",
      "title": "SVG Blob Animation",
      "description": "Lightweight SVG blob that smoothly morphs between organic shapes with customizable colors and speed.",
      "categories": ["animation"],
      "dependencies": [],
      "files": [{ "path": "components/animation/SvgBlobAnimation.tsx", "type": "registry:component", "target": "@components/animation/SvgBlobAnimation.tsx" }]
    },
    {
      "name": "react-search-bar",
      "type": "registry:component",
      "title": "React Search Bar",
      "description": "Accessible React search bar with highlighted results, keyboard navigation, and polished loading and empty states.",
      "categories": ["input"],
      "dependencies": ["@solar-icons/react"],
      "files": [{ "path": "components/input/ReactSearchBar.tsx", "type": "registry:component", "target": "@components/input/ReactSearchBar.tsx" }]
    },
    {
      "name": "file-upload-component",
      "type": "registry:component",
      "title": "File Upload Component",
      "description": "Polished file upload component with drag and drop, validation, progress, errors, and removable file rows.",
      "categories": ["forms"],
      "dependencies": ["@solar-icons/react"],
      "files": [{ "path": "components/forms/FileUpload.tsx", "type": "registry:component", "target": "@components/forms/FileUpload.tsx" }]
    },
    {
      "name": "animated-next-button",
      "type": "registry:component",
      "title": "Animated Next Button",
      "description": "Compact next button with a looping arrow reveal, crisp press feedback, and loading and disabled states.",
      "categories": ["navigation"],
      "dependencies": ["@solar-icons/react"],
      "files": [{ "path": "components/navigation/AnimatedNextButton.tsx", "type": "registry:component", "target": "@components/navigation/AnimatedNextButton.tsx" }]
    },
    {
      "name": "animated-slider",
      "type": "registry:component",
      "title": "Animated Slider",
      "description": "Premium animated image and content slider with directional transitions, swipe gestures, captions, and numbered progress.",
      "categories": ["gallery"],
      "dependencies": ["framer-motion", "@solar-icons/react"],
      "files": [{ "path": "components/gallery/AnimatedSlider.tsx", "type": "registry:component", "target": "@components/gallery/AnimatedSlider.tsx" }]
    },
    {
      "name": "liquid-button",
      "type": "registry:component",
      "title": "Liquid Button",
      "description": "Minimal liquid button with a curved dark fill that rises on hover, focus, and press.",
      "categories": ["conversion"],
      "dependencies": [],
      "files": [{ "path": "components/conversion/LiquidButton.tsx", "type": "registry:component", "target": "@components/conversion/LiquidButton.tsx" }]
    },
    {
      "name": "skeleton-loader",
      "type": "registry:component",
      "title": "Skeleton Loader",
      "description": "Reusable skeleton loader with rounded shapes and a quiet reduced-motion shimmer.",
      "categories": ["loaders"],
      "dependencies": [],
      "files": [{ "path": "components/loaders/SkeletonLoader.tsx", "type": "registry:component", "target": "@components/loaders/SkeletonLoader.tsx" }]
    },
    {
      "name": "spinner-component",
      "type": "registry:component",
      "title": "Spinner Component",
      "description": "Thin inline loading spinner sized for buttons, cards, and compact panels.",
      "categories": ["loaders"],
      "dependencies": [],
      "files": [{ "path": "components/loaders/Spinner.tsx", "type": "registry:component", "target": "@components/loaders/Spinner.tsx" }]
    },
    {
      "name": "react-number-input",
      "type": "registry:component",
      "title": "React Number Input",
      "description": "Labeled React number input with an optional unit, stacked controls, bounds, and empty values.",
      "categories": ["input"],
      "dependencies": ["@solar-icons/react"],
      "files": [{ "path": "components/input/ReactNumberInput.tsx", "type": "registry:component", "target": "@components/input/ReactNumberInput.tsx" }]
    },
    {
      "name": "drawer",
      "type": "registry:component",
      "title": "Drawer",
      "description": "Flexible Base UI drawer primitive for focused tasks, panels, and mobile sheets.",
      "categories": ["drawer"],
      "dependencies": ["@base-ui/react"],
      "files": [
        { "path": "components/drawer/Drawer.tsx", "type": "registry:component", "target": "@components/drawer/Drawer.tsx" }
      ]
    },
    {
      "name": "modal",
      "type": "registry:component",
      "title": "Modal",
      "description": "Flexible Base UI modal primitive for confirmations, forms, sharing, and command dialogs.",
      "categories": ["modal"],
      "dependencies": ["@base-ui/react"],
      "files": [
        { "path": "components/modal/Modal.tsx", "type": "registry:component", "target": "@components/modal/Modal.tsx" }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:component",
      "title": "Tabs",
      "description": "Base UI tabs with default, line, vertical, disabled, and icon compositions.",
      "categories": ["tabs"],
      "dependencies": ["@base-ui/react", "class-variance-authority", "cn"],
      "files": [
        { "path": "components/ui/tabs.tsx", "type": "registry:component", "target": "@components/ui/tabs.tsx" }
      ]
    }
  ]
}
