Librería de botones para Angular | ng-hub-ui-buttons
Sistema completo de botones para Angular 22 con API basada en signals — botones estándar, FAB, speed dial y dropdown overlay. Sin dependencias externas más allá de ng-hub-ui-utils.
Referencia API
Aquí tienes el contrato completo de buttons: todo lo que puedes enlazar, escuchar, proyectar y personalizar, reunido en un solo sitio. Enlaza lo que necesites y dale el estilo que quieras — es standalone y reactivo con signals.
Inputs
Ajusta buttons a tu gusto con 34 inputs. Se enlazan como cualquier @Input de Angular.
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
variant (hub-button) | 'solid' | 'outline' | 'soft' | 'ghost' | 'link' | 'solid' | Estilo visual del botón: solid, outline, soft, ghost o link. |
color (hub-button) | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'neutral' | 'light' | 'dark' | string | 'primary' | Acento semántico del botón. Conjunto abierto: cualquiera de los nueve acentos integrados, un acento personalizado registrado mediante hub-btn-color-rules(), un color CSS con nombre o un literal (#hex, rgb(), oklch(), var(...)). Alimenta el slot --hub-btn-accent del que se deriva cada color de rol. |
size (hub-button) | 'sm' | 'md' | 'lg' | 'xl' | 'md' | Token de tamaño del botón: sm, md, lg o xl. |
loading (hub-button) | boolean | false | Muestra el spinner animado y marca el botón como ocupado Y deshabilitado: refleja aria-busy="true" y el atributo nativo disabled, lo saca del orden de tabulación y bloquea la activación por puntero/teclado para que un envío en curso no pueda dispararse dos veces. |
disabled (hub-button) | boolean | false | Deshabilita el botón, reflejando el atributo nativo disabled en el elemento anfitrión. |
color (hub-fab) | HubSemanticColor | 'primary' | Acento semántico del fondo del FAB. Acepta los acentos integrados o cualquier color personalizado/literal a través del slot --hub-fab-accent. |
size (hub-fab) | 'mini' | 'standard' | 'large' | 'standard' | Diámetro del FAB circular: mini, standard o large. |
extended (hub-fab) | boolean | false | Renderiza el FAB como una píldora extendida que muestra el contenido proyectado de [slot=label] junto al icono. |
position (hub-fab) | 'top-start' | 'top-center' | 'top-end' | 'middle-start' | 'center' | 'middle-end' | 'bottom-start' | 'bottom-center' | 'bottom-end' | 'bottom-end' | Posición fija en el viewport del FAB sobre una rejilla de nueve posiciones; implementada con propiedades lógicas CSS para soporte RTL. |
collapseOnScroll (hub-fab) | boolean | false | Cuando es true, un FAB extendido se colapsa a solo icono una vez que la página se desplaza más de 50px. |
disabled (hub-fab) | boolean | false | Deshabilita el FAB, aplicando la apariencia hub-fab-disabled. |
color (hub-speed-dial) | HubSemanticColor | 'primary' | Acento semántico pintado en el FAB disparador del speed dial. Acepta los acentos integrados o cualquier color personalizado/literal. |
size (hub-speed-dial) | 'mini' | 'standard' | 'large' | 'standard' | Tamaño del FAB disparador: mini, standard o large. |
position (hub-speed-dial) | HubFabPosition | 'bottom-end' | Posición fija en el viewport del speed dial sobre la rejilla FAB de nueve posiciones. |
direction (hub-speed-dial) | 'up' | 'down' | 'left' | 'right' | 'up' | Dirección en la que los elementos de acción se expanden desde el disparador: up, down, left o right. |
trigger (hub-speed-dial) | 'click' | 'hover' | 'click' | Interacción que abre el speed dial: click lo alterna; hover lo abre con mouseenter y lo cierra con mouseleave. |
isOpen (hub-speed-dial) | boolean (two-way model) | false | Estado de apertura del speed dial con enlace bidireccional (signal model). Pulsar Escape lo cierra automáticamente. |
icon (hub-speed-dial-item)Obligatorio | string | — | Cadena de clases CSS para el icono de la acción, renderizado como <i [class]="icon()"> dentro del botón del elemento. También se usa como aria-label de respaldo cuando no se establece etiqueta. |
label (hub-speed-dial-item) | string | '' | Etiqueta de tooltip mostrada junto al botón de acción; también se usa como su aria-label accesible. |
color (hub-speed-dial-item) | HubSemanticColor | 'default' | 'default' | Acento semántico del botón de acción; 'default' mantiene la apariencia neutra. Los colores personalizados/literales pintan a través del slot --hub-speed-dial-item-accent. |
disabled (hub-speed-dial-item) | boolean | false | Deshabilita el botón del elemento de acción; itemClick no se emite mientras está deshabilitado. |
hubDropdown ([hubDropdown])Obligatorio | TemplateRef<any> | — | El ng-template renderizado dentro del panel overlay a nivel de body, enlazado como [hubDropdown]="tpl". |
placement ([hubDropdown]) | 'top-start' | 'top' | 'top-end' | 'start' | 'end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'bottom-start' | Colocación del panel respecto al elemento disparador; el overlay prueba la posición mapeada y recurre a alternativas hasta que una cabe en el viewport. |
trigger ([hubDropdown]) | 'click' | 'hover' | 'click' | Interacción que abre el dropdown: click lo alterna; hover lo abre con mouseenter y lo cierra con mouseleave. |
closeOnSelect ([hubDropdown]) | boolean | true | Cuando es true, cualquier clic dentro del contenido del panel cierra el dropdown automáticamente. |
disabled ([hubDropdown]) | boolean | false | Impide que el dropdown se abra. |
offsetY ([hubDropdown]) | number | 4 | Separación en píxeles entre el disparador y el panel a lo largo del eje de colocación. |
panelClass ([hubDropdown]) | string | '' | Clase CSS extra añadida al panel overlay junto a la clase por defecto hub-dropdown-overlay. |
isOpen ([hubDropdown]) | boolean (two-way model) | false | Estado de apertura del dropdown con enlace bidireccional (signal model). Se cierra automáticamente con Escape, clic fuera, clic en el backdrop y scroll de la página. |
color (hub-dropdown-panel) | HubSemanticColor | 'default' | 'default' | Acento semántico para el borde superior del panel; 'default' mantiene el borde neutro. |
color (hub-dropdown-item) | HubSemanticColor | 'default' | 'default' | Acento semántico para el color de la etiqueta del elemento; 'default' hereda el color del panel. |
icon (hub-dropdown-item) | string | undefined | undefined | Cadena de clases CSS opcional para un icono renderizado como <i [class]="icon()"> antes de la etiqueta. |
disabled (hub-dropdown-item) | boolean | false | Deshabilita el elemento del menú; los clics se ignoran e itemClick no se emite. |
selected (hub-dropdown-item) | boolean | false | Muestra un indicador de marca de verificación que señala el elemento como seleccionado. |
Outputs
Reacciona a lo que hace buttons: 9 eventos a los que enganchar tu lógica.
| Nombre | Tipo | Descripción |
|---|---|---|
fabClick (hub-fab) | OutputEmitterRef<void> | Output declarado para la activación del FAB. La implementación actual nunca lo emite internamente — enlaza en su lugar el evento nativo (click) en <hub-fab>. |
isOpenChange (hub-speed-dial) | OutputEmitterRef<boolean> | Emite el nuevo estado de apertura cada vez que cambia el model isOpen (contraparte del enlace bidireccional). |
opened (hub-speed-dial) | OutputEmitterRef<void> | Emite después de que el speed dial se abra. |
closed (hub-speed-dial) | OutputEmitterRef<void> | Emite después de que el speed dial se cierre, incluidos los cierres con la tecla Escape. |
itemClick (hub-speed-dial-item) | OutputEmitterRef<void> | Emite cuando se activa el botón del elemento de acción. |
isOpenChange ([hubDropdown]) | OutputEmitterRef<boolean> | Emite el nuevo estado de apertura cada vez que cambia el model isOpen (contraparte del enlace bidireccional). |
opened ([hubDropdown]) | OutputEmitterRef<void> | Emite después de que el panel overlay se adjunte y el dropdown se abra. |
closed ([hubDropdown]) | OutputEmitterRef<void> | Emite después de que el dropdown se cierre y el overlay se destruya (Escape, clic fuera, scroll, backdrop o closeOnSelect). |
itemClick (hub-dropdown-item) | OutputEmitterRef<void> | Emite cuando se activa el elemento del menú; se suprime mientras el elemento está deshabilitado. |
Templates
Todavía no hay templates documentados.