Button

La acción de la pantalla. Nueve variantes en tres tamaños; una sola rellena por vista.

Usar

import {
  Button,
  IconButton,
} from "@unozero-ai/ui/react";

<Button></Button>

Configurador

Cambia las propiedades y mira el componente y su código al mismo tiempo.

Confirmar reserva
loadingdisabled
<Button>Confirmar reserva</Button>

Variantes

primary es la acción del día a día y va una por pantalla (la Regla de una Sola Decisión). Todo lo demás vive en secondary, outline o ghost.

GuardarSecundarioExportarCancelarVer detalle

Marca

El gradiente cian→azul→violeta y el brillo están reservados a acciones de negocio: crear una reserva, capturar un lead, sincronizar. Es el único sitio donde el gradiente toca un componente.

Crear reserva

Estado

Por defecto en tinte suave: superficie *-subtle, texto con contraste AA y borde del mismo tono. emphasis="solid" los rellena y se reserva al botón que confirma un diálogo.

Eliminar tarifaMarcar como pagadaRevisar precios
Eliminar tarifaMarcar como pagadaRevisar precios

Tamaños

La altura sale del token de densidad: 36 px en panel y 48 px en cómoda, sin tocar el marcado.

PequeñoMedianoGrande

Con icono

El icono va como hijo con slot="start" o slot="end", que sustituyen a las props leftIcon y rightIcon del kit React; el botón le da los 16 px. IconButton lleva el icono como único hijo, sin prop icon, y su nombre en label: es obligatorio, es lo único que oye un lector de pantalla y también sale como tooltip nativo al pasar el ratón. default y ghost hoy se pintan igual.

Descargar CSVEnviar factura

Cargando y deshabilitado

loading cambia el icono de start por el spinner, anuncia aria-busy y no deja pasar el clic hasta que la acción termina. Pulsa el botón.

Sincronizar con el PMSSin cambios que guardar

Ancho completo

Para formularios estrechos y pantallas de acceso. Dentro de un <form>, type="submit" lo envía aunque el botón real viva en el shadow DOM. Si la acción lleva a otra página («Crear cuenta»), dale href: se pinta como un enlace <a> con aspecto de botón, sin anidar un botón dentro de un enlace.

Iniciar sesiónCrear cuenta

API

Generada del custom-elements.json que publica @unozero-ai/ui. Las partes se estilan desde tu CSS con el nombre del elemento: uz-button::part(base).

Button · <uz-button>

PropTipoDefectoDescripción
variant"brand" | "primary" | "secondary" | "outline" | "ghost" | "destructive" | "success" | "warning" | "link""primary"Estilo: primary es la acción del día a día (una por vista); brand, solo acciones de negocio.
size"sm" | "md" | "lg""md"Tamaño; la altura sale del token de densidad (--control-h).
emphasis"soft" | "solid""soft"Solo en destructive, success y warning: tinte suave o relleno sólido (para confirmar un diálogo).
loadingbooleanfalseCambia el icono de start por un spinner, anuncia aria-busy y no deja pasar el clic.
disabledbooleanfalseDeshabilita el botón; con href, deja de pintarse como enlace.
fullWidthbooleanfalseOcupa todo el ancho del contenedor.
shinebooleanfalseDestello que cruza el botón al pasar el ratón; pensado para variant="brand".
type"button" | "submit" | "reset""button"Como en <button>: submit envía y reset vacía el <form> que lo contiene.
hrefstring | undefined—Lo pinta como enlace <a> con aspecto de botón.
targetstring | undefined—Destino del enlace con href; con _blank añade rel="noopener noreferrer".
SlotDescripción
(por defecto)El texto.
startIcono antes del texto (se oculta mientras carga).
endIcono después del texto.
Parte CSSDescripción
uz-button::part(base)El <button> o <a> interno.

IconButton · <uz-icon-button>

PropTipoDefectoDescripción
labelstring""Nombre accesible y, fuera de un <uz-tooltip>, globo nativo (title). Obligatorio.
size"sm" | "md" | "lg""md"Tamaño del cuadrado, con la misma altura que <uz-button>.
variant"default" | "ghost" | "danger""default"Tono del hover: danger vira a destructivo, para borrar.
disabledbooleanfalseDeshabilita el botón.
SlotDescripción
(por defecto)El icono (un <svg>).
Parte CSSDescripción
uz-icon-button::part(base)El <button> interno.