UNPKG

@darksnow-ui/scroll-area

Version:
104 lines (82 loc) 2.47 kB
# Scroll Area Augments native scroll functionality for custom, cross-platform styling. Built on top of Radix UI Scroll Area primitive. ## Installation ```bash npm install @darksnow-ui/scroll-area ``` ### Peer Dependencies ```bash npm install react react-dom ``` ## Usage ```tsx import { ScrollArea } from "@darksnow-ui/scroll-area" export function ScrollAreaExample() { 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"> This is item {i + 1} </div> ))} </div> </ScrollArea> ) } ``` ## Props | Prop | Type | Default | Description | |-----------|-------------------|---------|--------------------------------| | className | string | - | Additional CSS classes | | children | React.ReactNode | - | Scrollable content | ## Examples ### Basic Scroll Area ```tsx <ScrollArea className="h-72 w-48 rounded-md border"> <div className="p-4"> <h4 className="mb-4 text-sm font-medium leading-none">Tags</h4> {tags.map((tag) => ( <div key={tag} className="text-sm"> {tag} </div> ))} </div> </ScrollArea> ``` ### Horizontal Scroll ```tsx <ScrollArea className="w-96 whitespace-nowrap rounded-md border"> <div className="flex w-max space-x-4 p-4"> {artworks.map((artwork) => ( <figure key={artwork.artist} className="shrink-0"> <div className="overflow-hidden rounded-md"> <img src={artwork.art} alt={`Photo by ${artwork.artist}`} className="aspect-[3/4] h-fit w-fit object-cover" width={300} height={400} /> </div> <figcaption className="pt-2 text-xs text-theme-content-muted"> Photo by{" "} <span className="font-semibold text-theme-content"> {artwork.artist} </span> </figcaption> </figure> ))} </div> </ScrollArea> ``` ## Accessibility - Native scrolling behavior preserved - Keyboard navigation support - Screen reader accessible - Focus management ## Styling Uses DarkSnow UI design tokens for consistent theming with custom scrollbars. ## Related Components - [Dialog](/components/ui/dialog) - Modal containers - [Sheet](/components/ui/sheet) - Slide-out panels