The Ratings component offers two distinct variants for displaying and collecting rating feedback:
Static Rating - A read-only display of rating values with support for fractional ratings
Rating Input - An interactive form control that allows users to select a rating value
Both components support customization options including different icons, sizes, and counts.
Static Rating
The Static Rating component displays a visual representation of a rating value using star icons (or custom icons). It supports fractional values, making it ideal for displaying average ratings or review scores.
Default
Custom Icons
Custom Icon Number
Custom Icon Size
Showing Small Increments Within Icons
<div class="flex flex-col gap-10 skin text-lg font-bold"> <div class="flex flex-col gap-4"> Default <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.1" role="meter" aria-label="Rating: 0.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.2" role="meter" aria-label="Rating: 1 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="1" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.3" role="meter" aria-label="Rating: 1.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="1.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.4" role="meter" aria-label="Rating: 2 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.6" role="meter" aria-label="Rating: 3 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="3" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.7" role="meter" aria-label="Rating: 3.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="3.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.8" role="meter" aria-label="Rating: 4 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="4" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.9" role="meter" aria-label="Rating: 4.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="4.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 1" role="meter" aria-label="Rating: 5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="5" ></div> </div> <div class="flex flex-col gap-4" style=" --rating-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='2 2 20 20'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E"); " > Custom Icons <div class="skin-tertiary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Heart Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-count: 10"> Custom Icon Number <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 5 out of 10" aria-valuemin="0" aria-valuemax="10" aria-valuenow="5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-size: 48px"> Custom Icon Size <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-size: 30px; --rating-icon-count: 1" > Showing Small Increments Within Icons <div class="flex gap-5"> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.1" role="meter" aria-label="Rating: 0.1 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.1" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.2" role="meter" aria-label="Rating: 0.2 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.2" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.3" role="meter" aria-label="Rating: 0.3 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.3" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.4" role="meter" aria-label="Rating: 0.4 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.4" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 0.5 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.6" role="meter" aria-label="Rating: 0.6 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.6" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.7" role="meter" aria-label="Rating: 0.7 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.7" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.8" role="meter" aria-label="Rating: 0.8 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.8" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.9" role="meter" aria-label="Rating: 0.9 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.9" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 1" role="meter" aria-label="Rating: 1 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="1" ></div> </div> </div></div>
<div class="flex flex-col gap-10 skin text-lg font-bold"> <div class="flex flex-col gap-4"> Default <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.1" role="meter" aria-label="Rating: 0.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.2" role="meter" aria-label="Rating: 1 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="1" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.3" role="meter" aria-label="Rating: 1.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="1.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.4" role="meter" aria-label="Rating: 2 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.6" role="meter" aria-label="Rating: 3 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="3" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.7" role="meter" aria-label="Rating: 3.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="3.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.8" role="meter" aria-label="Rating: 4 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="4" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.9" role="meter" aria-label="Rating: 4.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="4.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 1" role="meter" aria-label="Rating: 5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="5" ></div> </div> <div class="flex flex-col gap-4" style=" --rating-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='2 2 20 20'%3E%3Cpath d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/%3E%3C/svg%3E"); " > Custom Icons <div class="skin-tertiary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Heart Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-count: 10"> Custom Icon Number <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 5 out of 10" aria-valuemin="0" aria-valuemax="10" aria-valuenow="5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-size: 48px"> Custom Icon Size <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 2.5 out of 5" aria-valuemin="0" aria-valuemax="5" aria-valuenow="2.5" ></div> </div> <div class="flex flex-col gap-4" style="--rating-icon-size: 30px; --rating-icon-count: 1" > Showing Small Increments Within Icons <div class="flex gap-5"> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.1" role="meter" aria-label="Rating: 0.1 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.1" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.2" role="meter" aria-label="Rating: 0.2 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.2" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.3" role="meter" aria-label="Rating: 0.3 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.3" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.4" role="meter" aria-label="Rating: 0.4 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.4" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.5" role="meter" aria-label="Rating: 0.5 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.5" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.6" role="meter" aria-label="Rating: 0.6 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.6" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.7" role="meter" aria-label="Rating: 0.7 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.7" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.8" role="meter" aria-label="Rating: 0.8 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.8" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 0.9" role="meter" aria-label="Rating: 0.9 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="0.9" ></div> <div class="skin-secondary rating wrapper" style="--rating-percentage: 1" role="meter" aria-label="Rating: 1 out of 1" aria-valuemin="0" aria-valuemax="1" aria-valuenow="1" ></div> </div> </div></div>
Rating Input
The Rating Input component provides an interactive way for users to select a rating. It uses radio inputs styled to display as star icons, offering a familiar and accessible pattern for user feedback.