Skip to main content

Installation

npm install @kuzenbo/core

Usage

import { ScrollArea } from "@kuzenbo/core";

function Example() {
  return (
    <ScrollArea className="h-[200px] w-[350px] rounded-md border p-4">
      <div className="space-y-4">
        {Array.from({ length: 50 }, (_, i) => (
          <div key={i} className="text-sm">
            Item {i + 1}
          </div>
        ))}
      </div>
    </ScrollArea>
  );
}

Props

ScrollArea

className
string
Additional CSS classes to apply.
children
ReactNode
required
The content to make scrollable.

ScrollArea.Viewport

className
string
Additional CSS classes to apply to the viewport.

ScrollArea.Bar

orientation
'horizontal' | 'vertical'
default:"'vertical'"
The orientation of the scrollbar.
className
string
Additional CSS classes to apply.

ScrollArea.Thumb

className
string
Additional CSS classes to apply to the thumb.

Advanced Patterns

Horizontal Scrolling

<ScrollArea className="w-96 whitespace-nowrap rounded-md border">
  <ScrollArea.Viewport>
    <ScrollArea.Content>
      <div className="flex space-x-4 p-4">
        {items.map((item) => (
          <div key={item.id} className="shrink-0">
            {item.content}
          </div>
        ))}
      </div>
    </ScrollArea.Content>
  </ScrollArea.Viewport>
  <ScrollArea.Bar orientation="horizontal" />
</ScrollArea>

Custom Scrollbar

<ScrollArea>
  {children}
  <ScrollArea.Bar>
    <ScrollArea.Thumb className="bg-primary" />
  </ScrollArea.Bar>
  <ScrollArea.Corner />
</ScrollArea>

Both Directions

<ScrollArea className="h-[400px] w-[400px]">
  <ScrollArea.Viewport>
    <ScrollArea.Content>
      {/* Wide and tall content */}
    </ScrollArea.Content>
  </ScrollArea.Viewport>
  <ScrollArea.Bar orientation="vertical" />
  <ScrollArea.Bar orientation="horizontal" />
  <ScrollArea.Corner />
</ScrollArea>

Build docs developers (and LLMs) love