Skip to content

Button

Control de acción primaria. Lidera con intención: clicks async, confirmación y navegación. El Design Kit posee look and feel.

Básico

vue
<script setup lang="ts">
import { Button } from 'pomikit-ui'
</script>

<template>
  <Button>Save</Button>
</template>

Click async

Si el handler del click devuelve un thenable, Button entra en fase busy hasta que se resuelve. Con feedback (default true), sigue un flash breve de success o error.

vue
<script setup lang="ts">
import { Button } from 'pomikit-ui'

async function onSave() {
  await api.save()
}
</script>

<template>
  <Button @click="onSave" busy-text="Saving…" success-text="Saved">Save</Button>
</template>

Confirm

Exige un segundo click antes de confirmar. true usa el label armado por defecto; un string define uno personalizado.

vue
<template>
  <Button :confirm="true" @click="remove">Delete</Button>
  <Button confirm="Really delete?" @click="remove">Delete</Button>
</template>

Intención de enlace

Pasa href (y opcionalmente target / rel) para acciones de navegación.

vue
<template>
  <Button href="/settings">Settings</Button>
  <Button href="https://example.com" target="_blank" rel="noopener noreferrer">
    External
  </Button>
</template>

Props comunes

PropIntent
confirmCommit con segundo click
hrefRenderizar como enlace
loadingBusy controlado (se combina con intención async)
disabledNo interactivo
busyText / successText / errorTextRevelación progresiva del label
feedbackAlternar flash post-settle (default true)
blockLayout a ancho completo

Escape hatches avanzados

variant, tone y size existen para excepciones raras. Prefiere el Design Kit para marca y density. No trates estos como la API primaria de Button.