diff --git a/src/components/StarRating.jsx b/src/components/StarRating.jsx index 55f7420..0260c34 100644 --- a/src/components/StarRating.jsx +++ b/src/components/StarRating.jsx @@ -1,28 +1,51 @@ import { Star } from "lucide-react"; -export default function StarRating({ value, onChange, disabled = false }) { +export default function StarRating({ value = 0, onChange, disabled = false }) { + const handleSelect = (event, star) => { + if (disabled) return; + + const rect = event.currentTarget.getBoundingClientRect(); + let clientX = event.clientX ?? event.nativeEvent?.clientX ?? 0; + + if (event.nativeEvent?.touches?.length) { + clientX = event.nativeEvent.touches[0].clientX; + } else if (event.nativeEvent?.changedTouches?.length) { + clientX = event.nativeEvent.changedTouches[0].clientX; + } + + const clickX = clientX - rect.left; + const isHalf = clickX <= rect.width / 2; + const nextValue = isHalf ? star - 0.5 : star; + + onChange?.(value === nextValue ? 0 : nextValue); + }; + return (