import { IconStar, IconStarFilled } from "@components/icons.tsx"; import { Signal, useSignal } from "@preact/signals"; import { useState } from "preact/hooks"; export const SmallRating = ( { max = 5, rating }: { max?: number; rating: number }, ) => { return (
{Array.from({ length: max }).map((_, i) => { return ( {(i + 1) <= rating ? : } ); })}
); }; export const Rating = ( { max, rating = useSignal(0) }: { max?: number; defaultRating: number; rating: Signal; }, ) => { const [hover, setHover] = useState(0); const ratingValue = rating.value || 0; return (
{Array.from({ length: max || 5 }).map((_, i) => { return ( setHover(i + 1)} onClick={() => (rating.value = i + 1)} > {(i + 1) <= ratingValue || (i + 1) <= hover ? : } ); })}
); };