Ir al contenido

Rating

Calificaciones con estrellas para comentarios de usuarios y reseñas.

import { Rating } from 'asterui'

Calificación básica

Calificación simple de 5 estrellas sin configuración necesaria.

import { Rating } from 'asterui'

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

export default App

Borrable

Haz clic en la misma estrella nuevamente para borrar la calificación.

import { Rating } from 'asterui'

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

export default App

Diferentes tamaños

Calificación en varios tamaños.

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

Media estrella

Permite precisión de media estrella.

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

Forma de corazón

Calificación con iconos de corazón.

import { Rating } from 'asterui'

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

export default App

Colores personalizados

Diferentes colores para cada nivel de calificación 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

Deshabilitado

Muestra calificación sin interacción.

import { Rating } from 'asterui'

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

export default App

Conteo personalizado

Especifica un número diferente de estrellas.

import { Rating } from 'asterui'

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

export default App

Calificación controlada

Controla el valor de calificación 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

Estrella alternativa

Estilo de estrella diferente.

import { Rating } from 'asterui'

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

export default App

Integración con formulario

Rating funciona con validación 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
PropiedadDescripciónTipoPredeterminado
childrenComponentes Rating.Item personalizados (opcional)React.ReactNode-
valueValor de calificación controladonumber-
defaultValueValor de calificación predeterminado (no controlado)number0
onChangeCallback cuando cambia la calificación(value: number) => void-
onHoverChangeCallback cuando cambia el valor de hover(value: number) => void-
countNúmero de estrellasnumber5
sizeTamaño de calificación'xs' | 'sm' | 'md' | 'lg' | 'xl'-
gapEspacio entre estrellas'none' | 'xs' | 'sm' | 'md' | 'lg''md'
colorClase de color de fondo de Tailwindstring'bg-warning'
maskForma de los iconos de calificación'star' | 'star-2' | 'heart''star-2'
allowClearPermitir borrar calificación haciendo clic en el mismo valorbooleantrue
allowHalfPermitir selección de media estrellabooleanfalse
disabledEstado deshabilitado (no interactivo)booleanfalse
classNameClases CSS adicionalesstring-
data-testidID de prueba para pruebasstring-
PropiedadDescripciónTipoPredeterminado
valueValor de calificación que representa este elementonumber-
maskForma del icono de calificación'star' | 'star-2' | 'heart''star-2'
colorClase de color de fondo de Tailwindstring'bg-warning'
hiddenElemento oculto para borrar calificaciónbooleanfalse
halfPosición de media estrella'first' | 'second'-
classNameClases CSS adicionalesstring-
data-testidID de prueba para pruebasstring-
  • Usa role="radiogroup" para semántica apropiada
  • Usa patrón de botón de radio para selección de calificación
  • Cada estrella tiene un aria-label describiendo su valor
  • Navegación por teclado entre opciones de calificación
  • La vista previa de hover muestra retroalimentación visual antes de la selección
  • El estado deshabilitado previene interacción mientras muestra el valor