opentui

Build terminal UIs with OpenTUI. Covers Core, frameworks, components, application APIs, testing, extensions, integrations, deployment, and public API lookup.

Install
npx skills add 'https://github.com/anomalyco/opentui/tree/main/packages/web/src/content'
Download bundle ↓
main · ac753b4Scanned 2026-09-15

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

docs/components/scrollbar.mdx

docs/components/scrollbar.mdxBrowse 89 files
View on GitHub
← Back to SKILL.md

title: ScrollBar description: Control a scroll position with a standalone bar

ScrollBar

ScrollBar controls a scroll position with optional arrows, keyboard input, and a draggable thumb. Use ScrollBox when the component must also own and clip scrollable children.

Availability

FieldAvailability
Package@opentui/core
Core renderableScrollBarRenderable
ReactUnavailable
SolidUnavailable
StatusBuilt-in Core renderable

Basic usage

Renderable API

import { ScrollBarRenderable, createCliRenderer } from "@opentui/core"

const renderer = await createCliRenderer()

const scrollbar = new ScrollBarRenderable(renderer, {
  id: "scrollbar",
  orientation: "vertical",
  height: 10,
  showArrows: true,
  trackOptions: {
    backgroundColor: "#222222",
    foregroundColor: "#888888",
  },
  onChange: (position) => {
    console.log("Scroll position:", position)
  },
})

// Connect the scrollbar to your content
scrollbar.scrollSize = 200
scrollbar.viewportSize = 20
scrollbar.scrollPosition = 0

renderer.root.add(scrollbar)
scrollbar.focus()
position: 0 / 180  ▲








viewport: 20 / 200 ▼

Keyboard controls

When focused, the scrollbar responds to:

  • Up/Down or k/j for vertical bars
  • Left/Right or h/l for horizontal bars
  • PageUp/PageDown for larger jumps
  • Home/End to jump to start/end

Properties

PropertyTypeDefaultDescription
orientation"vertical" or "horizontal"-Scrollbar direction
showArrowsbooleanfalseShow arrow buttons
arrowOptionsArrowOptions-Styling for arrow buttons
trackOptionsPartial<SliderOptions>-Styling for the track and thumb
scrollSizenumber0Total scrollable size
viewportSizenumber0Visible size of the viewport
scrollPositionnumber0Current scroll position
scrollStepnumber-Step size when scrollBy(..., "step")
onChange(position: number) => void-Fired when scroll position changes

Read Layout for viewport dimensions. Read Interaction, focus, and selection for keyboard and pointer behavior. Slider exposes the underlying continuous-value control without scroll semantics.