Saltar al contenido
Alea0.1
Pro
  1. Alea
  2. Componentes
  3. Datos
  4. Comment

Datos

Comment

Conversaciones: comentarios con autor, tiempo relativo (fecha completa al pasar el mouse), badges, notas de editado y restringido, estados de guardado y fallido, acciones, respuestas anidadas y un editor que crece y envía con ⌘Enter.

import { Comment, CommentComposer } from '@alea/ui';

Ejemplos

Hilo de comentarios

Comentarios con tiempos relativos, badges, ediciones, una nota restringida, respuestas anidadas, acciones y un compositor (⌘Enter envía).

Ana RivasAuthor

The new Tree is ready for review: data mode, cascading checkboxes, lazy loading and drag and drop.

Bruno Díaz· editado
Agreed. Can we keep the 4 px grid in the new cards?
Carla Mendes Only visible to your team
Yes, I updated the tokens.

Configuraciones

Cada valor de cada propiedad, lado a lado. Los números coinciden con la leyenda.

isEdited: false
isEdited: true
isHighlighted: false
isHighlighted: true
failed
saving
  1. EditedisEdited
  2. HighlightedisHighlighted
  3. Statestate

Anatomía

Las partes del componente y la clase que da estilo a cada una.

Tokens

Los tokens de diseño que usa este componente, con su valor en el tema actual. Cambia cualquiera para darle otro estilo.

Color

  • --alea-accent-subtle…
  • --alea-border…
  • --alea-status-danger…
  • --alea-status-warning…
  • --alea-surface-raised…
  • --alea-text…
  • --alea-text-faint…
  • --alea-text-muted…

Space

  • --alea-space-1…
  • --alea-space-2…
  • --alea-space-3…
  • --alea-space-4…

Radius

  • --alea-radius-md…

Type

  • --alea-font-family-body…
  • --alea-font-size-2xs…
  • --alea-font-size-md…
  • --alea-font-size-sm…
  • --alea-font-size-xs…
  • --alea-font-weight-semibold…

Motion

  • --alea-motion-duration-slow…

Props

Comment props

Un comentario en una conversación: autor, hora, texto, acciones y respuestas anidadas.

PropTipoPor defectoDescripción
authorobligatoriastring-Quién lo escribió.
childrenobligatoriaReactNode-El comentario.
actionsReactNode-Acciones debajo: Responder, Me gusta, Editar (usa Button variant="text" size="xs").
avatarSrcstring-Su foto.
badgeReactNode-Una etiqueta corta después del nombre: Autor, Admin, Bot.
classNamestring-Clases extra.
errorMessageReactNode-Qué salió mal cuando state es failed, con tu acción de reintento en actions.
headingLevel2 | 3 | 4 | 5 | 6-Nivel de título de la línea del autor para la navegación por títulos de los lectores de pantalla. Por defecto ninguno (texto simple).
isEditedboolean-Lo marca como editado.
isHighlightedboolean-Llama la atención sobre él: un comentario enlazado o nuevo.
repliesReactNode-Respuestas: elementos Comment anidados.
restrictedReactNode-Solo algunas personas pueden verlo: muestra un candado y este texto ("Solo visible para tu equipo").
state"failed" | "saving"-Lo muestra guardándose (atenuado) o fallido (con errorMessage).
timeReactNode | Date-Cuándo: un Date (mostrado en relativo, como "hace 5 min", con la fecha completa con hover) o tu propio texto.

CommentComposer props

Donde se escribe un comentario o una respuesta: crece con el texto, ⌘Enter o Ctrl+Enter envía.

PropTipoPor defectoDescripción
onSubmitobligatoria(text: string) => void-Se llama con el texto al enviar; bórralo tú si controlas value.
authorstring-Quién escribe (muestra su avatar).
avatarSrcstring-Su foto.
classNamestring-Clases extra.
isSubmittingboolean-Deshabilita el envío mientras guarda.
labelstring-Etiqueta para lectores de pantalla. Por defecto "Comentario".
onCancel(() => void)-Muestra Cancelar, para respuestas en línea.
placeholderstring-Placeholder. Por defecto "Agrega un comentario…".
submitLabelReactNode-Texto del botón de enviar. Por defecto "Comentar".

Especificaciones

Generado desde el código: las variantes de los tipos, los estados y tokens del CSS, y los patrones de motion que aplican. Las grillas muestran el componente real en ambos temas; los números se miden en la página.

Comment

Variantes
statefailedsaving
Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-comment.alea-comment-main.alea-comment-head.alea-comment-author.alea-comment-badge.alea-comment-time.alea-comment-restricted.alea-comment-body.alea-comment-error.alea-comment-actions.alea-comment-replies
Atributos data
data-highlighteddata-state=saving

CommentComposer

Estados
Focus inside
Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-comment-composer.alea-comment-field.alea-comment-input.alea-comment-composer-actions

Accesibilidad

  • Cada comentario es un article; las horas son elementos time reales con la fecha exacta.
  • Los comentarios fallidos anuncian su error como alerta.
  • El editor es un campo con etiqueta; ⌘Enter o Ctrl+Enter envía, y el botón dice el atajo.

Teclado

TeclaAcción
⌘Enter / Ctrl+EnterEnvía el comentario

Qué hacer y qué evitar

Hacer

  • Mantén las respuestas a uno o dos niveles.
  • Muestra quién puede ver los comentarios restringidos.

Evitar

  • No escondas acciones hasta pasar el mouse: quienes usan teclado o toque también las necesitan.
Probado con axe, teclado y roles de lector de pantalla