Pular para o conteúdo

Rating

Avaliações por estrelas para feedback do usuário e reviews.

import { Rating } from 'asterui'

Rating Básico

Avaliação simples de 5 estrelas sem configuração necessária.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} />
    )
}

export default App

Limpável

Clique na mesma estrela novamente para limpar a avaliação.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} allowClear />
    )
}

export default App

Diferentes Tamanhos

Avaliação em vários tamanhos.

xs
sm
md
lg
xl
import { Rating, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="sm">
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">xs</span><Rating size="xs" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">sm</span><Rating size="sm" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">md</span><Rating size="md" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">lg</span><Rating size="lg" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">xl</span><Rating size="xl" defaultValue={3} /></div>
      </Space>
    )
}

export default App

Meia Estrela

Permite precisão de meia estrela.

md
lg
import { Rating, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="sm">
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">md</span><Rating defaultValue={2.5} allowHalf /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">lg</span><Rating defaultValue={2.5} allowHalf size="lg" /></div>
      </Space>
    )
}

export default App

Formato de Coração

Avaliação com ícones de coração.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={4} mask="heart" color="bg-error" />
    )
}

export default App

Cores Customizadas

Diferentes cores para cada nível de avaliação usando Rating.Item.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3}>
        <Rating.Item value={1} color="bg-error" />
        <Rating.Item value={2} color="bg-warning" />
        <Rating.Item value={3} color="bg-warning" />
        <Rating.Item value={4} color="bg-success" />
        <Rating.Item value={5} color="bg-success" />
      </Rating>
    )
}

export default App

Desabilitado

Exibe avaliação sem interação.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating value={4} disabled />
    )
}

export default App

Contagem Customizada

Especifica um número diferente de estrelas.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={7} count={10} />
    )
}

export default App

Rating Controlado

Controla valor de avaliação externamente.

Current rating: 0

import { Rating } from 'asterui'
import { useState } from 'react'

function App() {
  const [rating, setRating] = useState(0)
  
  return (
      <div>
        <Rating value={rating} onChange={setRating} />
        <p className="mt-2">Current rating: {rating}</p>
      </div>
    )
}

export default App

Estrela Alternativa

Estilo de estrela diferente.

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} mask="star" color="bg-success" />
    )
}

export default App

Integração com Formulário

Rating funciona com validação de Form.

 

import { Rating, Form, notification, Button } from 'asterui'

function App() {
  const handleSubmit = (values: { rating?: number }) => {
    notification.success({ message: 'Submitted!', description: `Rating: ${values.rating}` })
  }
  
  return (
      <Form onFinish={handleSubmit} initialValues={{ rating: 3 }}>
        <Form.Item
          name="rating"
          label="Your rating"
          rules={{ required: 'Please provide a rating' }}
        >
          <Rating />
        </Form.Item>
        <Button htmlType="submit" color="primary">Submit</Button>
      </Form>
    )
}

export default App
PropriedadeDescriçãoTipoPadrão
childrenComponentes Rating.Item customizados (opcional)React.ReactNode-
valueValor de avaliação controladonumber-
defaultValueValor de avaliação padrão (não controlado)number0
onChangeCallback quando avaliação muda(value: number) => void-
onHoverChangeCallback quando valor de hover muda(value: number) => void-
countNúmero de estrelasnumber5
sizeTamanho da avaliação'xs' | 'sm' | 'md' | 'lg' | 'xl'-
gapEspaço entre estrelas'none' | 'xs' | 'sm' | 'md' | 'lg''md'
colorClasse de cor de fundo Tailwindstring'bg-warning'
maskFormato dos ícones de avaliação'star' | 'star-2' | 'heart''star-2'
allowClearPermite limpar avaliação clicando no mesmo valorbooleantrue
allowHalfPermite seleção de meia estrelabooleanfalse
disabledEstado desabilitado (não interativo)booleanfalse
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
PropriedadeDescriçãoTipoPadrão
valueValor de avaliação que este item representanumber-
maskFormato do ícone de avaliação'star' | 'star-2' | 'heart''star-2'
colorClasse de cor de fundo Tailwindstring'bg-warning'
hiddenItem oculto para limpar avaliaçãobooleanfalse
halfPosição de meia estrela'first' | 'second'-
classNameClasses CSS adicionaisstring-
data-testidID de teste para testesstring-
  • Usa role="radiogroup" para semântica apropriada
  • Usa padrão de botão de rádio para seleção de avaliação
  • Cada estrela tem um aria-label descrevendo seu valor
  • Navegação por teclado entre opções de avaliação
  • Preview de hover mostra feedback visual antes da seleção
  • Estado desabilitado previne interação enquanto exibe valor