import React, { FC, useState } from 'react'; import styled from '@emotion/styled'; import { StarIcon } from './StarIcon'; type RatingProps = { value: number; onChange: (value: number) => void; }; export const Rating: FC = (props) => { const { value, onChange } = props; const [hoveredIndex, setHoveredIndex] = useState(); const isSelected = (rating: number) => { if (hoveredIndex !== undefined) { return hoveredIndex >= rating; } return value >= rating; }; return ( setHoveredIndex()}> {Array.from({ length: 5 }, (_, index) => index + 1).map((rating) => ( setHoveredIndex(rating)} onClick={() => onChange(rating)} key={rating} /> ))} ); }; const Container = styled.div` display: flex; .SvgIcon { cursor: pointer; } .SvgIcon + .SvgIcon { margin-left: 8px; } `;