Forms

Rating for product feedback

Rating renders an interactive review control for product scores, customer sentiment, support quality, marketplace cards, and survey feedback. It supports controlled and uncontrolled values, half-step selection, clear-on-repeat behavior, read-only aggregate displays, hidden form values, and icon presets powered by react-icons.

Customer sentiment

Half steps are enabled for nuanced product feedback.

Delight score

Support quality

Examples

Rating covers review forms, NPS-style feedback, marketplace cards, and read-only aggregate scores with one accessible radiogroup API.


Review score

Current value: 3.5


Delight score


Average support rating

Rating variants examples

Use Show output / Show code on each row. Snippets start with a Variant line naming the axis and token.


Appearance: DEFAULT | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: SECONDARY | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: DESTRUCTIVE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: OUTLINE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GHOST | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GLASS | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: EMERALD | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: INDIGO | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: PURPLE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: PINK | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: ROSE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: SKY | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: TEAL | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: YELLOW | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: ORANGE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRAY | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: AMBER | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: VIOLET | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-BLUE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-GREEN | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-RED | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-YELLOW | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-PURPLE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-TEAL | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-INDIGO | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-PINK | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: GRADIENT-ORANGE | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: AMBER | Size: SM

Product rating

Product rating

Product rating

Product rating


Appearance: AMBER | Size: MD

Product rating

Product rating

Product rating

Product rating


Appearance: AMBER | Size: LG

Product rating

Product rating

Product rating

Product rating


Behavior: HALF + CLEAR

Product rating

Click the selected value again to clear it.

Product rating

Click the selected value again to clear it.

Product rating

Click the selected value again to clear it.

Product rating

Click the selected value again to clear it.


Icon: STAR

Product rating

Product rating

Product rating

Product rating


Icon: HEART

Product rating

Product rating

Product rating

Product rating


Icon: FLAME

Product rating

Product rating

Product rating

Product rating


Icon: THUMB

Product rating

Product rating

Product rating

Product rating


Icon: CUSTOM REACT ICON

Energy score


State: VALIDATION

Service rating

Choose a score before submitting feedback.

CSS variable overrides

Rating CSS variables

Override these rating variables on :root, a theme selector, or a component wrapper. Structural variables drive the label, hint, empty icon, focus ring, and error text; each appearance sets the active (filled) icon color.

66 variables

Pattern: --zui-<component>-<slot?>-<variant?>-<property>-<state?>-dark?

:root {
  --zui-rating-label-fg: oklch(20.8% 0.042 265.755);
  --zui-rating-hint-fg: oklch(55.4% 0.046 257.417);
  --zui-rating-error-fg: oklch(58.6% 0.253 17.585);
  --zui-rating-empty: oklch(86.9% 0.022 252.894);
  --zui-rating-gap: 0.25rem;
  --zui-rating-ring-focus: oklch(54.6% 0.245 262.881 / 0.32);
  --zui-rating-ring-offset-focus: #ffffff;
  --zui-rating-default-active: oklch(20.8% 0.042 265.755);
  --zui-rating-secondary-active: oklch(44.6% 0.043 257.281);
  --zui-rating-destructive-active: oklch(58.6% 0.253 17.585);
  --zui-rating-outline-active: oklch(44.6% 0.043 257.281);
  --zui-rating-ghost-active: oklch(37.2% 0.044 257.287);
  --zui-rating-glass-active: oklch(54.6% 0.245 262.881);
  --zui-rating-emerald-active: oklch(59.6% 0.145 163.225);
  --zui-rating-indigo-active: oklch(51.1% 0.262 276.966);
  --zui-rating-purple-active: oklch(55.8% 0.288 302.321);
  --zui-rating-pink-active: oklch(59.2% 0.249 0.584);
  --zui-rating-rose-active: oklch(58.6% 0.253 17.585);
  --zui-rating-sky-active: oklch(62.3% 0.214 259.815);
  --zui-rating-teal-active: oklch(60% 0.118 184.704);
  --zui-rating-yellow-active: oklch(79.5% 0.184 86.047);
  --zui-rating-orange-active: oklch(64.6% 0.222 41.116);
  --zui-rating-gray-active: oklch(55.1% 0.027 264.364);
  --zui-rating-amber-active: oklch(76.9% 0.188 70.08);
  --zui-rating-violet-active: oklch(54.1% 0.281 293.009);
  --zui-rating-gradient-blue-active: oklch(54.6% 0.245 262.881);
  --zui-rating-gradient-green-active: oklch(62.7% 0.194 149.214);
  --zui-rating-gradient-red-active: oklch(57.7% 0.245 27.325);
  --zui-rating-gradient-yellow-active: oklch(79.5% 0.184 86.047);
  --zui-rating-gradient-purple-active: oklch(62.7% 0.265 303.9);
  --zui-rating-gradient-teal-active: oklch(60% 0.118 184.704);
  --zui-rating-gradient-indigo-active: oklch(51.1% 0.262 276.966);
  --zui-rating-gradient-pink-active: oklch(59.2% 0.249 0.584);
  --zui-rating-gradient-orange-active: oklch(64.6% 0.222 41.116);
}

/* Dark theme variables follow the same names with -dark appended. */
.dark {
  --zui-rating-label-fg-dark: oklch(98.4% 0.003 247.858);
  --zui-rating-empty-dark: oklch(37.2% 0.044 257.287);
  /* ...same variables with -dark at the end */
}

What it does

Provide a polished rating primitive with animated fill clipping, hover previews, keyboard stepping, and the same appearance system used across Zentauri UI components.

The component keeps the visual icon row separate from the radio options so half-step values stay accessible while the display remains compact.

Composition and API

Import Rating from the rating entrypoint. Use value and onValueChange for controlled state, or defaultValue for uncontrolled state. Tune the control with max, allowHalf, allowClear, readOnly, disabled, name, size, appearance, icon, getLabel, hint, and errorMessage.

Common use cases

Use Rating anywhere a product surface needs compact sentiment input or a read-only quality signal. It fits product reviews, post-support satisfaction prompts, survey questions, testimonial cards, marketplace summaries, and admin dashboards that compare customer feedback across teams or releases.

Accessibility

Rating renders a role=radiogroup wrapper with individual role=radio options. Provide label text, use hint for helper copy, and customize getLabel when your scoring language needs more context than the default numeric value.

Next.js integration notes

Use Rating in client components when the selected value changes in the browser. Read-only aggregate displays can be rendered from server data, while interactive feedback forms should submit the hidden input or controlled value to your own server action or API route.

FAQ

Can Rating collect half-star values?

Yes. Pass allowHalf to expose half-step radio options and keep the fill clipped to the selected fractional value.

Can I use icons other than stars?

Yes. Use the built-in star, heart, flame, and thumb presets, or pass any react-icons component through the icon prop.

Does Rating work in forms?

Yes. Pass name to render a hidden input with the current numeric rating value.