Presets

Blocks

Get PRO

Need premium blocks and templates? Upgrade to PRO and get access.

Upgrade
JoinLogin
Presets
Monochrome
Overview
  • Introduction
  • Components
  • Installation
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Aspect Ratio
  • Avatar
  • Badge
  • Breadcrumb
  • Button
  • Button Group
  • CalendarNEW
  • Card
  • CarouselNEW
  • Checkbox
  • Collapsible
  • Dialog
  • Dropdown Menu
  • Empty
  • Field
  • Input
  • Input Group
  • Item
  • Kbd
  • Label
  • Native Select
  • Scroll Area
  • SelectNEW
  • Separator
  • SwitchNEW
  • Table
  • Tabs
  • Textarea
  • TooltipNEW

Scroll Area

PreviousNext

Augments native scroll functionality for custom, cross-browser styling.

1import * as React from "react";2import { ScrollArea } from "@/components/ui/scroll-area";3import { Separator } from "@/components/ui/separator";4

Installation

pnpm dlx sprawlify@latest add scroll-area
npx sprawlify@latest add scroll-area
yarn sprawlify@latest add scroll-area
bunx --bun sprawlify@latest add scroll-area

Install the following dependencies:

pnpm add @sprawlify/primitives @sprawlify/react
npm install @sprawlify/primitives @sprawlify/react
yarn add @sprawlify/primitives @sprawlify/react
bun add @sprawlify/primitives @sprawlify/react

Add the following files to your project:

scroll-area.tsx
1"use client";23import * as React from "react";4import { ScrollArea as ScrollAreaPrimitive } from "@sprawlify/react/scroll-area";5import { cn } from "@/lib/utils";67function ScrollArea({8  className,9  children,10  ...props11}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {12  return (13    <ScrollAreaPrimitive.Root14      data-slot="scroll-area"15      className={cn("relative", className)}16      {...props}17    >18      <ScrollAreaPrimitive.Viewport19        data-slot="scroll-area-viewport"20        className="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 scrollbar-none"21      >22        {children}23      </ScrollAreaPrimitive.Viewport>24      <ScrollBar />25      <ScrollAreaPrimitive.Corner />26    </ScrollAreaPrimitive.Root>27  );28}2930function ScrollBar({31  className,32  orientation = "vertical",33  ...props34}: React.ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>) {35  return (36    <ScrollAreaPrimitive.Scrollbar37      data-slot="scroll-area-scrollbar"38      data-orientation={orientation}39      orientation={orientation}40      className={cn(41        "data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none",42        className,43      )}44      {...props}45    >46      <ScrollAreaPrimitive.Thumb47        data-slot="scroll-area-thumb"48        className="rounded-full bg-border relative flex-1"49      />50    </ScrollAreaPrimitive.Scrollbar>51  );52}5354export { ScrollArea, ScrollBar };55

Update the import paths to match your project setup.

Usage

1import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"
1<ScrollArea className="h-[200px] w-[350px] rounded-md border p-4">
2  Your scrollable content here.
3</ScrollArea>

Examples

Horizontal

Use ScrollBar with orientation="horizontal" for horizontal scrolling.

1import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area";23export interface Artwork {4  artist: string;

Vertical

1import * as React from "react";2import { ScrollArea } from "@/components/ui/scroll-area";3import { Separator } from "@/components/ui/separator";4

On This Page

InstallationUsageExamplesHorizontalVertical

Get PRO

Need premium blocks and templates? Upgrade to PRO and get access.