J’aime avec particules
Le cœur se remplit de couleur, fait un petit bond et lance un anneau de particules autour de lui.
Réglages
Code
import { useState } from "react";
import { AnimatePresence, motion } from "framer-motion";
import { Heart } from "lucide-react";
interface ParticleLikeButtonProps {
color?: string;
particles?: number;
}
export default function ParticleLikeButton({
color = "#d25563",
particles = 8,
}: ParticleLikeButtonProps) {
const [liked, setLiked] = useState(false);
return (
<button
type="button"
aria-label="J’aime"
aria-pressed={liked}
onClick={() => setLiked((v) => !v)}
className="relative grid h-14 w-14 place-items-center rounded-full bg-white dark:bg-[#1c1c1e] text-[#1d1d1f] dark:text-[#f5f5f7] shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)]"
>
<motion.span
animate={{ scale: liked ? [1, 1.35, 1] : 1 }}
transition={{ type: "spring", stiffness: 300, damping: 30 }}
>
<Heart
className="h-6 w-6"
fill={liked ? color : "transparent"}
stroke={liked ? color : "currentColor"}
/>
</motion.span>
<AnimatePresence>
{liked &&
Array.from({ length: particles }, (_, i) => (
<motion.i
key={i}
className="absolute h-1 w-1 rounded-full"
style={{ backgroundColor: color }}
initial={{ x: 0, y: 0, opacity: 1 }}
animate={{
x: Math.cos((i / particles) * Math.PI * 2) * 30,
y: Math.sin((i / particles) * Math.PI * 2) * 30,
opacity: 0,
}}
exit={{ opacity: 0 }}
transition={{ duration: 0.55 }}
/>
))}
</AnimatePresence>
</button>
);
}
Prompt pour l’IA
Collez-le dans ChatGPT, Claude ou Cursor : le bloc sera adapté à votre projet avec ces réglages, même sans React.
Plus dans Boutons
Où l’utiliser
Un « j’aime » doit être agréable à presser, sinon personne ne s’en sert. Ce cœur se remplit, sursaute et projette quelques points, comme sur les réseaux sociaux. Utilisez-le pour enregistrer une recette, mettre une annonce en favori ou réagir à une publication. Aussi petit soit-il, un bouton like animé est souvent l’élément le plus cliqué de la page.
Huit particules suffisent largement ; au-delà, on dirait des confettis. Si les cœurs ne collent pas à votre marque, remplacez le rouge par votre couleur. Un second appui retire le « j’aime », il fonctionne donc comme un vrai interrupteur.