Conversation
El hilo con scroll de un chat, pegado al último mensaje mientras llega el stream y fácil de retomar cuando te alejás.
Instalación
pnpm dlx nachui add conversationAnatomía
La raíz es el contenedor con scroll, así que dale una altura. Se renderiza como una región en vivo de tipo polite, que es como un lector de pantalla se entera de los mensajes nuevos sin que lo interrumpan a mitad de una frase.
Composición
Usa la siguiente composición para construir un
Conversation:Pegado al fondo
Mientras el usuario está abajo, el contenido nuevo mantiene el hilo pegado ahí, que es lo que querés durante un stream. Apenas scrollea hacia arriba el hilo lo suelta, y aparece el botón para volver al último mensaje con un click. Si baja a mano, se vuelve a pegar solo.
Nothing yetStart the stream and scroll up to see the thread let go.
Poné
stickToBottom={false} para apagar el anclaje y quedarte solo con el contenedor y el botón.Estado vacío
Conversation.Empty llena el hilo antes del primer mensaje. Metele la intro o un par de sugerencias, y cambialo por Conversation.Content cuando haya algo que mostrar.useConversation
useConversation() lee si el hilo está pegado y expone scrollToBottom, así un composer puede bajar el hilo después de enviar.Referencia de API
Conversation
| Prop | Type | Default | Description |
|---|---|---|---|
stickToBottom | boolean | true | Mantiene el hilo pegado mientras crece el contenido |
onStickChange | (stuck: boolean) => void | - | Se llama cuando el hilo se pega o se suelta |
className | string | - | Clases CSS adicionales, dale una altura |
Conversation.Content
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Clases CSS adicionales |
Conversation.ScrollButton
| Prop | Type | Default | Description |
|---|---|---|---|
label | string | 'Scroll to bottom' | Nombre accesible del botón |
children | ReactNode | - | Reemplaza el icono del chevron |
className | string | - | Clases CSS adicionales |
Conversation.Empty
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Clases CSS adicionales |
¿Encontraste algo que mejorar?
¿Notaste un error, tipografía o detalle faltante en esta página? Ayúdanos a mejorar la documentación abriendo un issue en GitHub.