import React from 'react'; import { Star } from 'lucide-react'; interface RatingStarsProps { rating: number; maxRating?: number; size?: 'sm' | 'md' | 'lg'; showNumber?: boolean; interactive?: boolean; onRatingChange?: (rating: number) => void; } const RatingStars: React.FC = ({ rating, maxRating = 5, size = 'md', showNumber = false, interactive = false, onRatingChange, }) => { const [hoveredRating, setHoveredRating] = React.useState(null); const sizeClasses = { sm: 'w-4 h-4', md: 'w-5 h-5', lg: 'w-6 h-6', }; const handleClick = (value: number) => { if (interactive && onRatingChange) { onRatingChange(value); } }; const handleMouseEnter = (value: number) => { if (interactive) { setHoveredRating(value); } }; const handleMouseLeave = () => { if (interactive) { setHoveredRating(null); } }; const displayRating = hoveredRating ?? rating; return (
{Array.from({ length: maxRating }, (_, index) => { const starValue = index + 1; const isFilled = starValue <= displayRating; return ( ); })} {showNumber && ( {rating.toFixed(1)} )}
); }; export default RatingStars;