Loading the record
Reading the stored /api/items response for this item.
Reading the stored /api/items response for this item.
npx shadcn@latest add makes, so the answer cannot drift from reality without the install drifting too.GET https://lucide-animated.com/r/alarm-clock-check.json"use client";
import { motion, useAnimation, type Variants } from "motion/react";
import type { HTMLAttributes } from "react";
import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
import { cn } from "@/lib/utils";
export interface AlarmClockCheckIconHandle {
startAnimation: () => void;
stopAnimation: () => void;
}
interface AlarmClockCheckIconProps extends HTMLAttributes<HTMLDivElement> {
size?: number;
}
const PATH_VARIANTS: Variants = {
normal: {
y: 0,
x: 0,
transition: {
duration: 0.2,
type: "spring",
stiffness: 200,
damping: 25,
},
},
animate: {
y: -1.5,
x: [-1, 1, -1, 1, -1, 0],
transition: {
y: {
duration: 0.2,
type: "spring",
stiffness: 200,
damping: 25,
},
x: {
duration: 0.3,
repeat: Number.POSITIVE_INFINITY,
ease: "linear",
},
},
},
};
const SECONDARY_PATH_VARIANTS: Variants = {
normal: {
y: 0,
x: 0,
transition: {
duration: 0.2,
type: "spring",
stiffness: 200,
damping: 25,
},
},
animate: {
y: -2.5,
x: [-2, 2, -2, 2, -2, 0],
transition: {
y: {
duration: 0.2,
type: "spring",
stiffness: 200,
damping: 25,
},
x: {
duration: 0.3,
repeat: Number.POSITIVE_INFINITY,
ease: "linear",
},
},
},
};
const AlarmClockCheckIcon = forwardRef<
AlarmClockCheckIconHandle,
AlarmClockCheckIconProps
>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {
const controls = useAnimation();
const isControlledRef = useRef(false);
const resetToNormal = useCallback(() => {
controls.stop();
controls.start("normal").catch(() => {
// ignore when interrupted by a new animation
});
}, [controls]);
useImperativeHandle(ref, () => {
isControlledRef.current = ref != null;
return {
startAnimation: () => controls.start("animate"),
stopAnimation: () => resetToNormal(),
};
}, [controls, ref, resetToNormal]);
const handleMouseEnter = useCallback(
(e: React.MouseEvent<HTMLDivElement>) => {
if (isControlledRef.current) {
onMouseEnter?.(e);
} else {
controls.start("animate");
}
},
[controls, onMouseEnter]
);
const handleMouseLeave = useCallback(
(e: React.MouseEvent<HTMLDivElement>) => {
if (isControlledRef.current) {
// … truncatedRead from https://lucide-animated.com/r/alarm-clock-check.json. Source is read for the first 150 items per registry, which is a size decision, not a coverage one. Nothing is served from this origin: the install command fetches the registry's own endpoint.
This registry's own demo page permits framing, so the component can be watched running where its authors maintain it.
https://lucide-animated.com/icons/alarm-clock-check
This record is the /api/items/lucide-animated-pqoqubbw/alarm-clock-check response blockdex.thecompound.tech served on 2026-09-13, from the crawl of 2026-09-13.