{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "ripple-click-button-shadcnui", "type": "registry:ui", "title": "Ripple Click Effect", "description": "Material design inspired ripple effect on click", "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/micro/buttons/ripple-click.tsx", "content": "\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { useState } from \"react\";\n\ntype Ripple = {\n x: number;\n y: number;\n id: number;\n};\n\nexport function RippleClickButton() {\n const [ripples, setRipples] = useState([]);\n\n const handleClick = (e: React.MouseEvent) => {\n const button = e.currentTarget;\n const rect = button.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n const newRipple = { x, y, id: Date.now() };\n setRipples([...ripples, newRipple]);\n\n setTimeout(() => {\n setRipples((prev) => prev.filter((r) => r.id !== newRipple.id));\n }, 600);\n };\n\n return (\n
\n \n Click Me\n {ripples.map((ripple) => (\n \n ))}\n \n
\n );\n}\n", "type": "registry:ui", "target": "components/uitripled/ripple-click-button-shadcnui.tsx" } ] }