import { useUser } from "@site/src/providers/User" import IconStar from "@site/src/theme/Icon/Star" import IconStarSolid from "@site/src/theme/Icon/StarSolid" import clsx from "clsx" import React, { useRef, useState } from "react" type RatingProps = { event?: string className?: string onRating?: () => void } & React.HTMLAttributes const Rating: React.FC = ({ event = "rating", className = "", onRating, }) => { const [rating, setRating] = useState(0) const [hoverRating, setHoverRating] = useState(0) const starElms = useRef([]) const starArr = Array.from(Array(5).keys()) const { track } = useUser() const handleRating = (selectedRating: number) => { if (rating) { return } setHoverRating(0) setRating(selectedRating) for (let i = 0; i < selectedRating; i++) { starElms.current[i].classList.add("animate__animated", "animate__tada") } track( event, { rating: selectedRating, }, () => onRating?.() ) } return (
{starArr.map((i) => { const isSelected = (rating !== 0 && rating - 1 >= i) || (hoverRating !== 0 && hoverRating - 1 >= i) return ( ) })}
) } export default Rating