Label
Una etiqueta que sigue a su control: se atenúa cuando está deshabilitado y lo marca como obligatorio u opcional por sí sola.
pnpm dlx shadcn@latest add https://hextaui.com/r/label.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add @base-ui/react cnCopia y pega el siguiente código en tu proyecto.
components/ui/label.tsx Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Apunta htmlFor al id de un control, o envuelve el control. En ambos casos la etiqueta lo encuentra y sigue su estado. Dentro de un <Field />, usa <FieldLabel />, que conecta el id por ti.
Sigue a su control
La etiqueta se atenúa y muestra un cursor not-allowed mientras su control está deshabilitado, y expone data-required, data-invalid y data-readonly para tus propios estilos. Se mantiene al día cuando el control cambia.
Obligatorio y opcional
indicator="optional" marca los controles sin required, e indicator="required" añade un asterisco a los que lo tienen. La marca se oculta a los lectores de pantalla, que ya anuncian los campos obligatorios.
Checkbox
Envuelve un checkbox para que toda la etiqueta lo active, o coloca la etiqueta a su lado con htmlFor. Un checkbox deshabilitado atenúa su etiqueta en ambos casos.
Icono
Los iconos dentro de una etiqueta se dimensionan y se atenúan para acompañar al texto.
Contenido largo
Las etiquetas largas se ajustan, y las cadenas sin espacios se cortan en lugar de ensanchar el diseño.
De derecha a izquierda
Los espacios y el indicador siguen la dirección de lectura.
- Hacer clic en la etiqueta enfoca o activa su control, así que es un objetivo más grande que el control solo.
- Hacer doble clic en el texto de la etiqueta no lo selecciona. Los dobles clics sobre un control dentro de la etiqueta funcionan como siempre.
- Todo control necesita un nombre. Cuando no hay etiqueta visible, usa
aria-labelen el control.
Renderiza un <label> y acepta sus atributos.
| Prop | Tipo | Predeterminado |
|---|---|---|
htmlForEl id del control. Omítelo cuando la etiqueta envuelve el control. | string | – |
indicatorMarca la etiqueta a partir del estado obligatorio del control. Desactivado por defecto. | "required" | "optional" | – |
optionalText | ReactNode | "Optional" |
render | ReactElement | (props, state) => ReactElement | <label> |
| Atributo | Descripción |
|---|---|
data-slot="label" | Apunta a las etiquetas en CSS. |
data-disabled | Presente mientras el control está deshabilitado. |
data-required | Presente mientras el control es obligatorio. |
data-invalid | Presente mientras el control no es válido, después de que el usuario haya interactuado o cuando se define aria-invalid. |
data-readonly | Presente mientras el control es de solo lectura. |
data-slot="label-indicator" | La marca de obligatorio u opcional. |
- CalendarUna cuadrícula de fechas para selección única, de rango y múltiple, con meses deslizantes, vistas previas de rango y días de tamaño táctil.
- CheckboxUna casilla de verificación cuya marca se dibuja, con padres indeterminados, grupos y etiquetas que comparten su hover.
- ComboboxUn select filtrable con chips, grupos y resultados asíncronos, en un popup que cambia de tamaño mientras escribes.
- Date pickerUn botón que abre un calendario en un popover, o en una hoja inferior en móviles, para fechas únicas y rangos.
- FieldEtiquetas, descripciones y errores conectados a su control, con estados de validación y diseños para formularios.
- InputUn campo de texto con tres tamaños, estados inválido y de solo lectura, estilos de validación nativos y una fuente táctil de 16px para que los móviles nunca hagan zoom.
Usado en bloques
Bloques que se construyen sobre Label.
- Agent TodosMuestra el plan de un agente mientras trabaja. Cada paso pasa de pendiente a por hacer, en curso y hecho, con tiempos en vivo, fallos y las llamadas a herramientas detrás. Una píldora de estado para sobre el compositor, cambios del plan que puedes ver y un paso de revisión para editar el plan antes de ejecutarlo.
- Chat SidebarLa barra lateral de una app de chat. Logo, búsqueda y Nuevo chat arriba, tus propios enlaces debajo, chats fijados, proyectos que se expanden para mostrar sus chats, recientes agrupados por día y filas con menús al pasar el cursor y con clic derecho, renombrado en línea, eliminación con deshacer y estados de respuesta en vivo.
- TeamMiembros del equipo e invitaciones para los ajustes del espacio de trabajo de un producto de IA. Un medidor de plazas que previsualiza las invitaciones que estás escribiendo, un cuadro de invitación que convierte una lista pegada en chips verificados, miembros con roles, búsqueda, filtros y ordenación, invitaciones pendientes con esperas para reenviar y enlaces copiables, transferencia de propiedad con confirmación escrita y eliminación con deshacer.