VibeUI
ComponentsDocs
VibeUI

Components with taste, that you own. Copy the source, retint the tokens, keep every line.

Library

  • All components
  • Signature pieces
  • Text effects
  • Footers

Docs

  • Introduction
  • Installation
  • Theming
  • CLI

Project

  • GitHub
  • Agents and MCP
  • Issues
  • MIT license
© 2026 VibeUI · MIT licensed
  1. Components
  2. Data & surfaces
  3. Scroll Area

Scroll Area

Height-limited scroll container with a slim scrollbar.

Data & surfacesServer-safe
  • Release note #12v0.12.0
  • Release note #11v0.11.0
  • Release note #10v0.10.0
  • Release note #9v0.9.0
  • Release note #8v0.8.0
  • Release note #7v0.7.0
  • Release note #6v0.6.0
  • Release note #5v0.5.0
  • Release note #4v0.4.0
  • Release note #3v0.3.0
  • Release note #2v0.2.0
  • Release note #1v0.1.0

Install

bash
npx @agents-npm-packages/vibeui add scroll-area --dir ./src/components/ui

Import

tsx
import { ScrollArea } from "@/components/ui/scroll-area"

API

Generated from the component's TypeScript types, so it always matches the source. * marks a required prop.

<ScrollArea>

PropTypeDefaultDescription
children*ReactNode—Content rendered inside the component.
classNamestring—Extra classes, merged with the component's own.
maxHeightnumber240Maximum height in pixels before content scrolls.

Source

src/components/ui/scroll-area.tsx
import { cn } from "@/lib/utils";

/** Height-limited scroll container with a slim scrollbar. */
export function ScrollArea({
  className,
  children,
  maxHeight = 240,
}: {
  className?: string;
  children: React.ReactNode;
  maxHeight?: number;
}) {
  return (
    <div
      tabIndex={0}
      className={cn(
        "overflow-y-auto rounded-md border border-line bg-surface [scrollbar-color:var(--line-strong)_transparent] [scrollbar-width:thin]",
        className,
      )}
      style={{ maxHeight }}
    >
      {children}
    </div>
  );
}

Exports ScrollArea. Peer dependencies: clsx, tailwind-merge.

PreviousResizableNextSortable List