Scroll Area

Usage

import { ScrollArea } from '@jamie/ui/scroll-area'
import { Separator } from '@jamie/ui/separator'
 
const meetings = [
  'Q4 Revenue Forecast',
  'Board Meeting Prep',
  'Monthly Close Debrief',
  'FP&A Sync — January',
  'Audit Committee Review',
  'Budget Planning 2026',
  'Investor Relations Call',
  'Due Diligence: Series C',
  'Revenue Ops Standup',
  'Quarterly Earnings Review',
  'Cash Flow Analysis',
  'Headcount Planning',
  'Expense Report Review',
  'Tax Strategy Meeting'
]
 
export function ScrollAreaDemo() {
  return (
    <ScrollArea className="h-72 w-48 rounded-md border">
      <div className="p-4">
        <h4 className="mb-4 text-sm font-medium leading-none">Recent Meetings</h4>
        {meetings.map((meeting) => (
          <div key={meeting}>
            <div className="text-sm">{meeting}</div>
            <Separator className="my-2" />
          </div>
        ))}
      </div>
    </ScrollArea>
  )
}

Horizontal

Scroll horizontally through a row of items.

import { ScrollArea } from '@jamie/ui/scroll-area'
 
const speakers = [
  { name: 'Sasha K.', role: 'Finance' },
  { name: 'Charles M.', role: 'CFO' },
  { name: 'David R.', role: 'Revenue Ops' },
  { name: 'Jozo P.', role: 'FP&A' },
  { name: 'Raul G.', role: 'Audit' },
  { name: 'Marcel T.', role: 'Analytics' },
  { name: 'Alex N.', role: 'Product' }
]
 
export function ScrollAreaHorizontalDemo() {
  return (
    <ScrollArea className="w-96 whitespace-nowrap rounded-md border">
      <div className="flex w-max gap-4 p-4">
        {speakers.map((speaker) => (
          <div
            key={speaker.name}
            className="flex w-32 shrink-0 flex-col items-center gap-1 rounded-md border p-4"
          >
            <div className="flex size-10 items-center justify-center rounded-full bg-muted text-xs font-medium">
              {speaker.name
                .split(' ')
                .map((n) => n[0])
                .join('')}
            </div>
            <span className="text-sm font-medium">{speaker.name}</span>
            <span className="text-xs text-muted-foreground">{speaker.role}</span>
          </div>
        ))}
      </div>
    </ScrollArea>
  )
}