Skip to content

Scrollable List

Windowed scrollable list component for Ink 5. Renders only visible items, follows the cursor, shows scroll indicators.

Install

Terminal window
npm install @matthesketh/ink-scrollable-list

Usage

import { ScrollableList } from '@matthesketh/ink-scrollable-list';
function MyList() {
const [selectedIndex, setSelectedIndex] = useState(0);
return (
<ScrollableList
items={items}
selectedIndex={selectedIndex}
maxVisible={15}
renderItem={(item, selected) => (
<Text bold={selected} color={selected ? 'cyan' : 'white'}>
{selected ? '> ' : ' '}{item.name}
</Text>
)}
emptyText="No items found"
/>
);
}

Props

PropTypeDescription
itemsT[]Array of items to render
selectedIndexnumberCurrently selected index
maxVisiblenumberMax items visible at once
renderItem(item, selected, index) => ReactNodeRender function per item
emptyTextstring?Text shown when items is empty

Requirements

  • Ink >= 5.0.0
  • React >= 18.0.0