Sternebewertung
Fünf Sterne, die sich beim Hover als Vorschau füllen und nach dem Klick gefüllt bleiben.
Einstellungen
Code
import { useState } from "react";
import { motion } from "framer-motion";
import { Star } from "lucide-react";
const spring = { type: "spring" as const, stiffness: 300, damping: 30 };
interface StarRatingProps {
color?: string;
}
export default function StarRating({ color = "#c58b32" }: StarRatingProps) {
const [rating, setRating] = useState(0);
const [hover, setHover] = useState(0);
return (
<div className="flex gap-1">
{[1, 2, 3, 4, 5].map((i) => (
<motion.button
key={i}
type="button"
aria-label={`${i} de 5 estrellas`}
aria-pressed={rating === i}
onMouseEnter={() => setHover(i)}
onMouseLeave={() => setHover(0)}
onClick={() => setRating(i)}
whileHover={{ scale: 1.18, y: -2 }}
transition={spring}
>
<Star
className="h-8 w-8"
stroke={color}
fill={i <= (hover || rating) ? color : "transparent"}
/>
</motion.button>
))}
</div>
);
}
Prompt für KI
Füg ihn in ChatGPT, Claude oder Cursor ein und der Baustein wird mit diesen Einstellungen an dein Projekt angepasst, auch ohne React.
Mehr aus Mikrointeraktionen
Wofür du ihn nutzen kannst
Sterne sind immer noch der schnellste Weg, nach einer Meinung zu fragen. Die Hover-Vorschau zeigt die Wertung, bevor man sie festlegt, und jeder Stern hebt sich leicht unter dem Cursor. Nutz sie nach einer Lieferung, am Ende eines Onlinekurses, bei einem Rezept oder in einem Bewertungsformular. Eine Sternebewertung, die so schön auf die Maus reagiert, überspringt kaum jemand.
Auf dem Handy gibt es kein Hover, die Wertung wird also direkt beim Tippen gesetzt, und das klappt gut. Zeig die gewählte Zahl daneben in Worten, etwa „4 von 5“, und lass Leute vor dem Absenden umentscheiden.