Adventureland Registry

Page Thumbnails

A fixed left-sidebar thumbnail navigator for multi-page document views, with smooth auto-scroll to keep the active thumbnail visible.

PageThumbnails renders a 120 px fixed sidebar on the left edge. It shows one thumbnail per page — each is an A4-aspect-ratio card with a simplified visual layout preview. Clicking a thumbnail fires onPageSelect. The sidebar auto-scrolls so the active thumbnail is always visible.

The component is fully data-agnostic: no portfolio data dependency. Page titles and a footer label are passed via props.

Installation

npx shadcn@latest add @adv/page-thumbnails

Usage

import PageThumbnails from '@/components/page-thumbnails';

<PageThumbnails
  currentPage={2}
  totalPages={5}
  pageTitles={['Intro', 'Experience', 'Skills', 'Projects', 'Contact']}
  footerLabel="Jane Designer"
  onPageSelect={(page) => setCurrentPage(page)}
/>

Example

Pages

1
Introduction
2
Experience & Skills
3
Portfolio & Contact
Jane Designer

Introduction

Page 1 of 3

Props

PropTypeDefaultDescription
currentPagenumberRequired. 1-based index of the active page.
totalPagesnumberRequired. Total number of pages to render thumbnails for.
onPageSelect(pageNumber: number) => voidRequired. Called with the 1-based page number when a thumbnail is clicked.
pageTitlesstring[][]Human-readable label shown below each thumbnail. Falls back to "Page N".
footerLabelstringOptional label shown in the sidebar footer (e.g. author name).

On this page