A draggable before/after image comparison slider. Horizontal or vertical, hover-to-reveal mode, full keyboard support, and zero dependencies.
bunx --bun shadcn@latest add https://ui.ahmet.studio/r/image-comparison
import { ImageComparison } from "@/components/ui/image-comparison"; export function Demo() { return ( <ImageComparison className="aspect-video" showLabels before={<img src="/before.jpg" alt="" className="h-full w-full object-cover" />} after={<img src="/after.jpg" alt="" className="h-full w-full object-cover" />} /> ); }
before and after (images, videos, divs).orientation="vertical".hoverToReveal for a no-click reveal.role="slider" with aria-valuenow/aria-orientation.| Prop | Type | Default |
|---|---|---|
before | ReactNode | Required |
after | ReactNode | Required |
defaultValue | number | 50 |
value | number | undefined |
onValueChange | (value: number) => void | undefined |
orientation | "horizontal" | "vertical" | "horizontal" |
showHandle | boolean | true |
showLabels | boolean | false |
hoverToReveal | boolean | false |
← / → (or ↑ / ↓ in vertical) — adjust by 1%Shift + Arrow — adjust by 10%Home — set to 0%End — set to 100%