Skip to content
GitHub

Slide to Unlock

Interactive slider inspired by the classic iPhone “slide to unlock” gesture.

slide to unlock
"use client";
import { toast } from "sonner";
import {
SlideToUnlock,
SlideToUnlockHandle,
SlideToUnlockText,
SlideToUnlockTrack,
} from "@/components/ui/pxl/slide-to-unlock";
export default function SlideToUnlockDemo() {
return (
<SlideToUnlock
onUnlock={() => {
toast.success("Unlocked");
}}
>
<SlideToUnlockTrack>
<SlideToUnlockText>slide to unlock</SlideToUnlockText>
<SlideToUnlockHandle />
</SlideToUnlockTrack>
</SlideToUnlock>
);
}
pnpm dlx shadcn@latest add pxl-ui/registry/slide-to-unlock
import {
SlideToUnlock,
SlideToUnlockHandle,
SlideToUnlockText,
SlideToUnlockTrack,
} from "@/components/ui/pxl/slide-to-unlock"
<SlideToUnlock>
<SlideToUnlockTrack>
<SlideToUnlockText>
slide to unlock
</SlideToUnlockText>
<SlideToUnlockHandle />
</SlideToUnlockTrack>
</SlideToUnlock>

Use the following composition to build a SlideToUnlock

SlideToUnlock
└── SlideToUnlockTrack
├── SlideToUnlockText
└── SlideToUnlockHandle
Prop Type Default Description
handleWidth number - Width of the drag handle in pixels.
onUnlock (() => void) | undefined - Called when the handle is dragged fully to the end.
Prop Type Default Description
children React.JSX.Element | ((props: { isDragging: boolean; }) => React.JSX.Element) | string - Accepts a render function as children to react to the dragging state.