About
A responsive image gallery with keyboard-navigable thumbnail strip, photo location tags, and smooth aspect-ratio staging. It is useful in photography portfolios, real estate listings, and product galleries to showcase curated photo collections.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Thumbnail image viewer to your project and fits it to your theme.
Code
How Thumbnail image viewer is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
"use client";
import * as React from "react";
import ThumbnailImageViewer, { type State } from "@/components/ui/thumbnail-image-viewer";
const settings = { title: "Somewhere, slower." };
export const loopDuration = 6;
// Pure timeline: export frame n by passing n / 60. No timers or network calls.
export function showcase(time: number): State {
const t = ((time % loopDuration) + loopDuration) % loopDuration;
return { active: t < 1.2 ? 0 : t < 2.4 ? 1 : t < 3.6 ? 2 : t < 4.8 ? 3 : 0 };
}
export default function Demo(props: any = {}) {
const { showcaseTime, ...incoming } = props;
const merged = { ...settings, ...incoming };
return (
<div className="w-full min-h-[460px] flex items-center justify-center p-4 sm:p-6 bg-background">
<ThumbnailImageViewer
{...merged}
state={showcaseTime === undefined ? incoming.state : showcase(showcaseTime)}
seeking={showcaseTime !== undefined || incoming.seeking}
/>
</div>
);
}















