File size: 1,713 Bytes
13a0af9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"use client";

import * as React from "react";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area@1.2.3";

import { cn } from "./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 };