chat-ui
por inferen-shchat-ui ofrece componentes de interfaz de chat ya preparados para React/Next.js desde ui.inference.sh, incluyendo contenedores de chat, mensajes, inputs, indicadores de escritura y avatares. Ayuda a los desarrolladores a implementar rápidamente interfaces modernas de chat y asistentes de IA con listas de mensajes preparadas para streaming y gestión de inputs.
Descripción general
¿Qué es chat-ui?
chat-ui es un conjunto de bloques para construir interfaces de chat en React y Next.js, proporcionados por ui.inference.sh. Incluye componentes listos para producción como un contenedor de chat, elementos de mensaje, cuadro de entrada, indicadores de escritura y avatares, para que puedas montar un frontend completo de chat o asistente de IA sin empezar desde cero.
Estos componentes se entregan como bloques al estilo shadcn que añades a tu proyecto, ofreciéndote una experiencia de desarrollo familiar y fácil de adaptar, mientras se encargan de las partes repetitivas del layout y el comportamiento de la UI de chat.
Funciones clave de un vistazo
- Diseño del contenedor de chat – Un componente
<ChatContainer>listo para usar que estructura toda el área de chat. - Renderizado de mensajes –
<ChatMessage>para mostrar mensajes de usuario y asistente con soporte para roles y contenido. - Gestión del input de chat –
<ChatInput>para capturar el texto del usuario, gestionar acciones de envío y controlar estados deshabilitado/cargando. - Indicador de escritura –
<TypingIndicator>para mostrar visualmente cuándo el asistente está respondiendo. - Preparado para streaming – Patrones de lista de mensajes y contenedor adecuados para respuestas de asistente por streaming e incrementales.
- Enfoque en React/Next.js – Diseñado para aplicaciones modernas de React y Next.js, alineado con patrones habituales de frontend.
¿Para quién es chat-ui?
chat-ui está pensado para:
- Desarrolladores frontend que construyen interfaces de chat o asistentes de IA sobre APIs existentes.
- Equipos de producto que quieren un layout de chat pulido sin dedicar días a cablear la UI.
- Desarrolladores de Next.js y React que usan bloques de UI al estilo shadcn y buscan componentes de chat consistentes.
Si estás integrando modelos de lenguaje, bots de soporte o herramientas internas basadas en interfaces conversacionales, la skill chat-ui te ayuda a tener una interfaz profesional en marcha rápidamente, manteniendo el control total sobre la lógica, el estilo y los datos.
¿Qué problemas resuelve chat-ui?
Implementar un frontend de chat suele implicar recrear siempre las mismas piezas:
- Estructurar un layout de chat responsive
- Mostrar de forma distinta los mensajes de usuario y de asistente
- Gestionar el envío de mensajes, estados deshabilitados y carga
- Mostrar indicadores de escritura y mantener el comportamiento de scroll
chat-ui resuelve la parte de UI proporcionando:
- Componentes predefinidos para contenedor, mensajes, input e indicador de escritura
- Una API consistente para conectar con tu propio backend o servicio de IA
- Un punto de partida que encaja con las expectativas de diseño modernas, manteniendo la capacidad de personalización
Tú sigues siendo dueño de la lógica de negocio y el flujo de datos, pero te ahorras el trabajo repetitivo de la UI.
Cuándo encaja bien chat-ui
Usa chat-ui cuando:
- Estás creando una aplicación en React o Next.js.
- Quieres componentes de chat listos para usar que se integren con tu estado actual y tus llamadas a APIs.
- Ya tienes, o planeas tener, un backend de chat o asistente de IA y necesitas la capa de interfaz.
- Prefieres control a nivel de componente en vez de incrustar un widget de chat SaaS completo.
Es especialmente útil en:
- Copilotos de IA y asistentes integrados en paneles de control
- Herramientas de soporte al cliente o helpdesk interno
- Herramientas de desarrollador con interfaces conversacionales
- Prototipado rápido de nuevos productos basados en chat
Cuándo puede no ser ideal chat-ui
chat-ui puede no ser la mejor opción si:
- No utilizas React ni Next.js. Los componentes están creados para el ecosistema React.
- Buscas un widget de chat hospedado y plug-and-play que incluya backend, autenticación y almacenamiento. chat-ui se centra solo en la UI de frontend.
- Prefieres una implementación agnóstica de sistema de diseño que no siga patrones tipo shadcn.
En estos casos, plantéate usar en su lugar una librería de UI genérica o un proveedor de chat llave en mano.
Cómo usarlo
Requisitos previos de instalación
Antes de instalar chat-ui, deberías contar con:
- Un proyecto React o Next.js ya creado
- Node.js y npm (o equivalente) instalados
- Familiaridad con la importación y el uso de componentes de React
Los componentes de chat-ui se distribuyen a través del registro estilo shadcn en ui.inference.sh, y los añades a tu proyecto con un único comando de CLI.
Instalar los componentes de chat-ui
Ejecuta el siguiente comando en la raíz de tu proyecto frontend para añadir los componentes de chat:
# Install chat components
npx shadcn@latest add https://ui.inference.sh/r/chat.json
Este comando descarga los bloques relacionados con chat desde el registro de ui.inference.sh a tu proyecto. Normalmente creará entradas bajo una ruta similar a @/registry/blocks/chat/ (como se refleja en las rutas de import en los ejemplos).
Tras la instalación, comprueba que tu proyecto incluye archivos como:
chat-container.tsxchat-message.tsxchat-input.tsxtyping-indicator.tsx
Los nombres exactos de archivo pueden variar según tu configuración de shadcn, pero las importaciones seguirán los patrones que se muestran a continuación.
Componentes principales y uso básico
1. ChatContainer – layout general
ChatContainer envuelve toda el área de conversación. Se encarga de organizar cómo se distribuyen los mensajes y los inputs.
import { ChatContainer } from "@/registry/blocks/chat/chat-container"
function Chat() {
return (
<ChatContainer>
{/* messages and input go here */}
</ChatContainer>
)
}
Puedes anidar dentro de ChatContainer tu lista de mensajes, el input y otros elementos de UI. Trátalo como la base de layout para la experiencia de chat.
2. ChatMessage – renderizar mensajes de usuario y asistente
ChatMessage muestra mensajes individuales y diferencia entre roles, como user y assistant.
import { ChatMessage } from "@/registry/blocks/chat/chat-message"
function Messages({ messages }) {
return (
<div>
{messages.map((message) => (
<ChatMessage
key={message.id}
role={message.role}
content={message.content}
/>
))}
</div>
)
}
Tú te encargas de gestionar el array messages y de pasar el role y el content de cada mensaje a ChatMessage. Así mantienes la UI sincronizada con tu backend o modelo de IA.
3. ChatInput – capturar y enviar mensajes de usuario
ChatInput proporciona el área de texto y la lógica de envío.
import { ChatInput } from "@/registry/blocks/chat/chat-input"
function ChatBox({ onSend, isLoading }) {
return (
<ChatInput
onSubmit={(message) => onSend(message)}
placeholder="Type a message..."
disabled={isLoading}
/>
)
}
Usa el callback onSubmit para integrarlo con tu lógica de envío de mensajes. La prop disabled es útil mientras esperas una respuesta, especialmente si estás recibiendo tokens por streaming desde un modelo de IA.
4. TypingIndicator – mostrar actividad del asistente
TypingIndicator avisa a los usuarios de que el asistente u otra parte está redactando una respuesta.
import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"
function Footer({ isTyping }) {
return <>{isTyping && <TypingIndicator />}</>
}
Configura isTyping según el estado de tu aplicación, por ejemplo, mientras esperas respuestas del servidor o streams de completado.
Integrarlo todo: un flujo de chat sencillo
Este es un esquema simplificado de cómo podrías combinar estos componentes en una página de React o Next.js:
import { useState } from "react"
import { ChatContainer } from "@/registry/blocks/chat/chat-container"
import { ChatMessage } from "@/registry/blocks/chat/chat-message"
import { ChatInput } from "@/registry/blocks/chat/chat-input"
import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"
export function ChatPage() {
const [messages, setMessages] = useState([])
const [isTyping, setIsTyping] = useState(false)
async function handleSend(userMessage) {
const nextMessages = [
...messages,
{ id: Date.now(), role: "user", content: userMessage },
]
setMessages(nextMessages)
setIsTyping(true)
// Call your backend or AI service here
const reply = await fetch("/api/chat", {
method: "POST",
body: JSON.stringify({ messages: nextMessages }),
}).then((res) => res.json())
setMessages((prev) => [
...prev,
{ id: Date.now() + 1, role: "assistant", content: reply.content },
])
setIsTyping(false)
}
return (
<ChatContainer>
<div>
{messages.map((message) => (
<ChatMessage
key={message.id}
role={message.role}
content={message.content}
/>
))}
</div>
<ChatInput
onSubmit={handleSend}
placeholder="Ask me anything..."
disabled={isTyping}
/>
{isTyping && <TypingIndicator />}
</ChatContainer>
)
}
Este ejemplo muestra cómo chat-ui se centra en los elementos básicos de UI, mientras tú aportas la gestión de estado y la integración con APIs.
Personalización y estilos
Como los componentes de chat-ui provienen de ui.inference.sh en forma de bloques al estilo shadcn, normalmente puedes:
- Inspeccionar y editar el código fuente del componente localmente para ajustar layout, colores o tipografía.
- Integrarlos con tus design tokens existentes o tu configuración de Tailwind CSS.
- Ampliar los componentes con props adicionales o wrappers para gestionar avatares, marcas de tiempo o acciones sobre mensajes.
Revisa los archivos generados en tu proyecto después de ejecutar el comando de instalación para ver exactamente cómo están implementados los componentes y cómo alinearlos mejor con tu sistema de diseño.
FAQ
¿Cómo instalo chat-ui en un proyecto React o Next.js existente?
Ejecuta el comando de la CLI de shadcn desde la raíz de tu proyecto:
npx shadcn@latest add https://ui.inference.sh/r/chat.json
Esto añade los componentes de chat-ui desde ui.inference.sh a tu base de código, normalmente bajo una ruta registry/blocks/chat. Después podrás importar ChatContainer, ChatMessage, ChatInput y TypingIndicator usando las rutas de import documentadas.
¿Funciona chat-ui sin Next.js, en React puro?
Sí, los componentes de chat-ui son componentes estándar de React. Mientras tu entorno soporte React, puedes integrarlos en una SPA de React puro. Lo importante es poder ejecutar el comando npx shadcn@latest add ... y que tu bundler resuelva correctamente las importaciones generadas.
¿Incluye chat-ui algún backend o lógica de IA?
No. chat-ui solo proporciona componentes de UI de frontend. Tú eres responsable de:
- Gestionar el estado de
messages - Llamar a tu backend, API o modelo de IA
- Gestionar streaming, errores y autenticación
Esta separación hace que chat-ui sea flexible: puedes combinarlo con cualquier backend de chat, desde APIs personalizadas hasta plataformas de IA de terceros.
¿Puedo personalizar la apariencia de los componentes de chat-ui?
Sí. Los componentes importados a través del registro de ui.inference.sh son componentes de React habituales almacenados en tu proyecto. Puedes abrir los archivos correspondientes (por ejemplo, chat-container, chat-message, chat-input y typing-indicator) y:
- Ajustar layout y espaciados
- Cambiar colores, tipografías y bordes
- Integrar elementos adicionales como avatares, marcas de tiempo o estado del mensaje
Como eres dueño del código fuente, no hay bloqueo en cuanto al estilo.
¿Es chat-ui adecuado para crear asistentes de IA y copilotos?
Sí. chat-ui encaja de forma natural con asistentes de IA, copilotos y herramientas conversacionales similares. Proporciona:
- Un contenedor de chat flexible y una presentación de mensajes clara
- Componentes de input e indicador de escritura bien adaptados a respuestas por streaming
Tú conectas estas piezas con tu backend de IA, gestionas el streaming o las actualizaciones incrementales en tu estado, y dejas que chat-ui se encargue de la interfaz de cara al usuario.
¿Cuándo debería elegir otra solución en lugar de chat-ui?
Valora alternativas si:
- Necesitas un widget de chat totalmente gestionado (UI más backend, base de datos y autenticación) con un esfuerzo de ingeniería mínimo.
- Tu stack no se basa en React (por ejemplo, Vue, Svelte o renderizado en servidor sin React).
- Quieres componentes estrechamente acoplados a un producto de backend específico.
En esos casos, puede encajarte mejor una plataforma de chat dedicada o una librería de UI específica para tu framework.
¿Dónde puedo aprender más sobre los componentes de chat-ui?
Dentro de la skill, la referencia principal es SKILL.md, que detalla los componentes disponibles y ejemplos de uso en código. Tras la instalación, los propios archivos locales de tus componentes se convierten en la mejor fuente de documentación, ya que muestran exactamente cómo están estructurados los bloques de chat-ui en tu proyecto y cómo puedes extenderlos o modificarlos.
