Button Botón
Introducción
El componente Button es un elemento clicable flexible y altamente interactivo que se usa para desencadenar acciones, enviar formularios o restablecer entradas. Diseñado pensando en valores estáticos predeterminados sin JavaScript, admite de forma nativa múltiples variantes visuales, escalado de tamaño y temas de acento.
Para configuraciones avanzadas, los botones pueden configurarse con estados de indicador de carga o incrustarse con campos de ejecución de JavaScript crudo y personalizado (onclick) para ejecutar comportamientos personalizados al instante sin depender de una carga de hidratación completa del cliente.
Uso
Puedes construir y estilizar botones como se muestra a continuación:
Botón de acción básico
Un botón clásico de llamada a la acción principal, estilizado con rellenos sólidos o estilos de contorno estándar.
{
"blockType": "button",
"text": "Get Started",
"variant": "solid",
"colorPalette": "blue"
}
Botón de envío de formulario
En layouts de página que incluyen campos de formulario interactivos (como campos de texto dentro de un Fieldset), configura el tipo de acción del botón como "submit". Esto garantiza que el formulario principal capture el evento y envíe los campos correctamente.
{
"blockType": "button",
"text": "Submit Registration",
"buttonType": "submit",
"variant": "solid",
"colorPalette": "green"
}
Botón con script de cliente en línea (avanzado)
Para interacciones instantáneas como alternar superposiciones, desplazamiento suave o disparar eventos personalizados sin hidratar toda la página, proporciona un fragmento de JavaScript crudo en el campo onclick.
{
"blockType": "button",
"text": "Notify System",
"variant": "outline",
"onclick": "window.dispatchEvent(new CustomEvent('park-ui:toast:create', { detail: { title: 'Action Registered' } }))"
}
Botones agrupados
Renderiza varios botones complementarios uno al lado del otro o unidos como un segmento cohesivo y contiguo. En el constructor de páginas CMS, anidar bloques button dentro de un bloque contenedor (como un bloque Group con attached habilitado) fusiona sus bordes sin costuras.
{
"blockType": "group",
"attached": true,
"children": [
{
"blockType": "button",
"text": "Previous",
"variant": "outline"
},
{
"blockType": "button",
"text": "Next",
"variant": "outline"
}
]
}
Propiedades
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
text | String | - | La etiqueta de texto renderizada dentro del botón. |
variant | Select | solid | El estilo visual del botón. Opciones: solid, outline, subtle, surface, plain. |
size | Select | md | Tamaño de escalado del padding y la tipografía del botón. Opciones: xs, sm, md, lg. |
buttonType | Select | button | El tipo de acción HTML. Opciones: button, submit, reset. (Mapeado desde el atributo HTML nativo type para evitar conflictos de esquema en los constructores CMS). |
colorPalette | Select | - | Tema de color visual para acentos de fondo/borde. Opciones: blue, green, red, purple, orange, amber, cyan, slate. |
onclick | String | - | Expresión JavaScript cruda que se ejecuta al instante al hacer clic. Se ejecuta sin requerir cargas de hidratación del cliente. |
Notas de arquitectura
- Prevención de colisiones: El campo de configuración del CMS usa la clave
buttonTypeen lugar detype. Esto evita que los editores visuales del constructor de páginas confundan el tipo de botón HTML con el discriminador interno de bloques (blockType) del sistema. - Ejecuciones inmediatas: Proporcionar scripts en
onclickescribe un manejador de eventos crudo directamente en el marcado HTML renderizado en el servidor. Esto es extremadamente eficiente, ya que la lógica se ejecuta completamente en línea sin que el navegador necesite descargar, analizar y adjuntar escuchas JS durante la hidratación. - Accesibilidad: Los comportamientos estándar de teclado (enfocar con Tab, activar con Space o Enter) son nativos de la etiqueta de botón HTML base del navegador y no requieren manejadores ARIA personalizados.