Skip to Content

Scroll Area

A custom scrollable container that provides a consistent scrolling experience across different browsers and platforms.

Usage

import { ScrollArea } from "@rhinolabs/ui" export default function ScrollAreaDemo() { return ( <ScrollArea className="h-[200px] w-[350px] rounded-md border p-4"> <div> <h4 className="mb-4 text-sm font-medium leading-none">Tags</h4> {Array.from({ length: 50 }).map((_, i) => ( <div key={i} className="text-sm">Tag {i + 1}</div> ))} </div> </ScrollArea> ) }

Examples

Basic Scroll Area

A simple scrollable container with custom styling.

<ScrollArea className="h-[200px] w-[350px] rounded-md border p-4"> <div className="space-y-4"> <h4 className="text-sm font-medium leading-none">Notifications</h4> {Array.from({ length: 20 }).map((_, i) => ( <div key={i} className="flex items-center gap-4"> <div className="h-8 w-8 rounded-full bg-muted" /> <div className="space-y-1"> <p className="text-sm">Notification {i + 1}</p> <p className="text-sm text-muted-foreground"> This is a notification message. </p> </div> </div> ))} </div> </ScrollArea>

Horizontal Scrolling

A scroll area with horizontal scrolling.

<ScrollArea className="w-96 whitespace-nowrap rounded-md border"> <div className="flex w-max space-x-4 p-4"> {Array.from({ length: 50 }).map((_, i) => ( <div key={i} className="w-[150px] shrink-0 rounded-md border p-4" > <div className="text-sm">Item {i + 1}</div> </div> ))} </div> </ScrollArea>

Props

ScrollArea

PropTypeDescription
type"auto" | "always" | "scroll" | "hover"Scrollbar visibility behavior
scrollHideDelaynumberDelay in ms before scrollbar hides
dir"ltr" | "rtl"Text direction

The ScrollArea component also accepts all standard HTML div attributes.

Design Considerations

  • Set appropriate container dimensions
  • Handle content overflow gracefully
  • Consider scrollbar visibility
  • Maintain consistent styling
  • Support touch interactions

Accessibility

  • Supports keyboard navigation
  • Maintains focus management
  • Provides visual feedback
  • Handles touch gestures
  • Supports screen readers
Last updated on