ScrollBar
A standalone scrollbar component with optional arrows, keyboard navigation, and a draggable thumb.
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()
Keyboard controls
When focused, the scrollbar responds to:
Up/Downork/jfor vertical barsLeft/Rightorh/lfor horizontal barsPageUp/PageDownfor larger jumpsHome/Endto jump to start/end
Construct API
Not available yet. Use
ScrollBarRenderablefor now.
Properties
| Property | Type | Default | Description |
|---|---|---|---|
orientation | "vertical" or "horizontal" | - | Scrollbar direction |
showArrows | boolean | false | Show arrow buttons |
arrowOptions | ArrowOptions | - | Styling for arrow buttons |
trackOptions | Partial<SliderOptions> | - | Styling for the track and thumb |
scrollSize | number | 0 | Total scrollable size |
viewportSize | number | 0 | Visible size of the viewport |
scrollPosition | number | 0 | Current scroll position |
scrollStep | number | - | Step size when scrollBy(..., "step") |
onChange | (position: number) => void | - | Fired when scroll position changes |