import {Title} from '@app/titles/models/title'; import {DialogTrigger} from '@common/ui/overlays/dialog/dialog-trigger'; import {Button} from '@common/ui/buttons/button'; import {StarBorderIcon} from '@common/icons/material/StarBorder'; import {Trans} from '@common/i18n/trans'; import {RatingDialog} from '@app/reviews/rating-dialog'; import {Episode} from '@app/titles/models/episode'; import clsx from 'clsx'; import {TitleRating} from '@app/reviews/title-rating'; import {useCurrentUserRatingFor} from '@app/reviews/requests/use-current-user-ratings'; import {Skeleton} from '@common/ui/skeleton/skeleton'; import {AnimatePresence, m} from 'framer-motion'; import {opacityAnimation} from '@common/ui/animation/opacity-animation'; import {ReactElement} from 'react'; import {useAuthClickCapture} from '@app/use-auth-click-capture'; interface Props { title: Title; episode?: Episode; size?: 'sm' | 'md' | 'lg'; className?: string; } export function InteractableRating({ title, episode, size = 'md', className, }: Props) { const isUpcoming = episode ? episode.status === 'upcoming' : title.status === 'upcoming'; const score = (episode || title).rating; if (isUpcoming) { return null; } return (