Spaces:
Running
Running
"use client" | |
import * as React from "react" | |
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" | |
import { cn } from "@/lib/utils" | |
function ScrollArea({ | |
className, | |
children, | |
...props | |
}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) { | |
return ( | |
<ScrollAreaPrimitive.Root | |
data-slot="scroll-area" | |
className={cn("relative", className)} | |
{...props} | |
> | |
<ScrollAreaPrimitive.Viewport | |
data-slot="scroll-area-viewport" | |
className="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1" | |
> | |
{children} | |
</ScrollAreaPrimitive.Viewport> | |
<ScrollBar /> | |
<ScrollAreaPrimitive.Corner /> | |
</ScrollAreaPrimitive.Root> | |
) | |
} | |
function ScrollBar({ | |
className, | |
orientation = "vertical", | |
...props | |
}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) { | |
return ( | |
<ScrollAreaPrimitive.ScrollAreaScrollbar | |
data-slot="scroll-area-scrollbar" | |
orientation={orientation} | |
className={cn( | |
"flex touch-none p-px transition-colors select-none", | |
orientation === "vertical" && | |
"h-full w-2.5 border-l border-l-transparent", | |
orientation === "horizontal" && | |
"h-2.5 flex-col border-t border-t-transparent", | |
className | |
)} | |
{...props} | |
> | |
<ScrollAreaPrimitive.ScrollAreaThumb | |
data-slot="scroll-area-thumb" | |
className="bg-border relative flex-1 rounded-full" | |
/> | |
</ScrollAreaPrimitive.ScrollAreaScrollbar> | |
) | |
} | |
export { ScrollArea, ScrollBar } | |