Compare
A drag slider that reveals before and after states side by side.
Before
YU
After
Installation
Add the compare component with the shadcn CLI.
npx shadcn@latest add https://yami.ui.unsanity.ai/r/compare.jsonUsage
import { Compare, CompareBefore, CompareAfter, CompareHandle, CompareLabel } from "@/components/ui/compare"
<Compare defaultPosition={40} className="h-48 w-72 rounded-xl border">
<CompareBefore>
{/* before content */}
<CompareLabel className="bottom-3 left-3">Before</CompareLabel>
</CompareBefore>
<CompareAfter>
{/* after content */}
<CompareLabel className="bottom-3 right-3">After</CompareLabel>
</CompareAfter>
<CompareHandle />
</Compare>Examples
Default
Drag the handle to reveal before / afterBefore
YU
After
Code
import { Compare, CompareBefore, CompareAfter, CompareHandle, CompareLabel } from "@/components/ui/compare"
<Compare defaultPosition={40} className="h-48 w-72 rounded-xl border">
<CompareBefore className="flex items-center justify-center bg-muted">
{/* skeleton / wireframe state */}
<CompareLabel className="bottom-3 left-3">Before</CompareLabel>
</CompareBefore>
<CompareAfter className="flex items-center justify-center bg-background">
{/* final / generated state */}
<CompareLabel className="bottom-3 right-3">After</CompareLabel>
</CompareAfter>
<CompareHandle />
</Compare>Image comparison
Compare two images with CSS gradientsGrayscale
Color
Code
import { Compare, CompareBefore, CompareAfter, CompareHandle, CompareLabel } from "@/components/ui/compare"
<Compare defaultPosition={50} className="h-48 w-72 rounded-xl border">
<CompareBefore>
<img src="/before.jpg" className="absolute inset-0 size-full object-cover" alt="Before" />
<CompareLabel className="bottom-3 left-3">Before</CompareLabel>
</CompareBefore>
<CompareAfter>
<img src="/after.jpg" className="absolute inset-0 size-full object-cover" alt="After" />
<CompareLabel className="bottom-3 right-3">After</CompareLabel>
</CompareAfter>
<CompareHandle />
</Compare>