Rating
Star rating on native radios (arrow keys, forms) with hover preview, or readOnly display with fractional stars for averages.
You rated 4 of 5
import { Rating } from "@/components/ui/rating";export function ProductRating({ average, count,}: { average: number; count: number;}) { return ( <div className="flex items-center gap-2 text-sm"> <Rating readOnly value={average} size="sm" /> <span className="font-medium">{average}</span> <span className="text-muted-foreground">· {count} reviews</span> </div> );}<Rating>
Star rating. Interactive: native radios (arrow keys, forms, screen readers) with a hover preview and a spring lift/press on the stars. readOnly: an image of the score, fractions included.
defaultValuedefault0numberRating at first render (uncontrolled).
labeldefault"Rating"stringGroup label (visually hidden).
maxdefault5numberNumber of stars.
namestringForm field name for the chosen value.
onValueChange(value: number) => voidCalled with the picked rating.
readOnlydefaultfalsebooleanDisplay only: renders fractions (4.6) as a partially filled star, no inputs.
sizedefault"default""sm" | "default"Star size.
valuenumberControlled rating; pair with
onValueChange.
| Prop | Type | Default |
|---|---|---|
defaultValueRating at first render (uncontrolled). | number | 0 |
labelGroup label (visually hidden). | string | "Rating" |
maxNumber of stars. | number | 5 |
nameForm field name for the chosen value. | string | — |
onValueChangeCalled with the picked rating. | (value: number) => void | — |
readOnlyDisplay only: renders fractions (4.6) as a partially filled star, no inputs. | boolean | false |
sizeStar size. | "sm" | "default" | "default" |
valueControlled rating; pair with | number | — |
* required. Every component also takes className.