{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "scroll-area",
  "title": "Scroll Area",
  "description": "Cross-browser custom scrollbars, built on Base UI.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/base/ui/scroll-area.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n  className,\n  children,\n  scrollbarOrientation = \"vertical\",\n  viewportRef,\n  ...props\n}: ScrollAreaPrimitive.Root.Props & {\n  scrollbarOrientation?: ScrollAreaPrimitive.Scrollbar.Props[\"orientation\"]\n  /**\n   * Ref to the underlying scrollable viewport element. Useful for consumers\n   * that need direct access to the native scroll container, e.g. to drive a\n   * virtualizer (react-virtuoso's `customScrollParent`).\n   */\n  viewportRef?: React.Ref<HTMLDivElement>\n}) {\n  return (\n    <ScrollAreaPrimitive.Root\n      data-slot=\"scroll-area\"\n      className={cn(\"relative flex flex-col\", className)}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Viewport\n        ref={viewportRef}\n        data-slot=\"scroll-area-viewport\"\n        // Safe to apply unconditionally: scroll-fade shows nothing when the\n        // content doesn't overflow, so every ScrollArea gets the effect for\n        // free without needing to check per-usage whether it scrolls.\n        className=\"min-h-0 flex-1 scroll-fade-y overscroll-contain rounded-[inherit] outline-none\"\n      >\n        <ScrollAreaPrimitive.Content data-slot=\"scroll-area-content\">\n          {children}\n        </ScrollAreaPrimitive.Content>\n      </ScrollAreaPrimitive.Viewport>\n      <ScrollBar orientation={scrollbarOrientation} />\n      <ScrollAreaPrimitive.Corner />\n    </ScrollAreaPrimitive.Root>\n  )\n}\n\nfunction ScrollBar({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n  return (\n    <ScrollAreaPrimitive.Scrollbar\n      data-slot=\"scroll-area-scrollbar\"\n      orientation={orientation}\n      className={cn(\n        \"flex touch-none p-px transition-colors select-none\",\n        orientation === \"vertical\" &&\n          \"h-full w-2 border-s border-s-transparent\",\n        orientation === \"horizontal\" &&\n          \"h-2 flex-col border-t border-t-transparent\",\n        className\n      )}\n      {...props}\n    >\n      <ScrollAreaPrimitive.Thumb\n        data-slot=\"scroll-area-thumb\"\n        className=\"relative flex-1 rounded-full bg-border\"\n      />\n    </ScrollAreaPrimitive.Scrollbar>\n  )\n}\n\nexport { ScrollArea, ScrollBar }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}