{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "delete-button", "title": "Delete Button", "description": "A confirmation button with smooth icon transitions.", "dependencies": [ "motion", "@hugeicons/core-free-icons", "@hugeicons/react", "clsx", "tailwind-merge" ], "files": [ { "path": "registry/default/example/delete-button.tsx", "content": "\"use client\";\r\n\r\nimport { Undo03Icon } from \"@hugeicons/core-free-icons\";\r\nimport { HugeiconsIcon } from \"@hugeicons/react\";\r\nimport { motion, AnimatePresence } from \"motion/react\";\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\nconst DeleteButton = () => {\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n const [count, setCount] = useState(10);\r\n const [isAnimating, setIsAnimating] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!isDeleting) return;\r\n\r\n if (count === 0) return;\r\n\r\n const timer = setTimeout(() => setCount((c) => c - 1), 1000);\r\n return () => clearTimeout(timer);\r\n }, [isDeleting, count]);\r\n\r\n const handleClick = (newState: boolean) => {\r\n if (isAnimating) return;\r\n setIsAnimating(true);\r\n setIsDeleting(newState);\r\n if (newState) setCount(10);\r\n\r\n // Release lock after animation completes\r\n setTimeout(() => setIsAnimating(false), 400);\r\n };\r\n\r\n // Change Here\r\n const deleteText = \"Delete Account\";\r\n const cancelText = \"Cancel Deletion\";\r\n\r\n return (\r\n