Skip to content

Button

Controle de ação primária. Lidere com intenção: clicks async, confirmação e navegação. O Design Kit possui look and feel.

Básico

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

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

Click async

Se o handler do click retornar um thenable, Button entra em fase busy até resolver. Com feedback (default true), segue um flash breve de success ou 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 um segundo click antes de confirmar. true usa o label armado padrão; uma string define um personalizado.

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

Passe href (e opcionalmente target / rel) para ações de navegação.

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

Props comuns

PropIntent
confirmCommit no segundo click
hrefRenderizar como link
loadingBusy controlado (combina com intenção async)
disabledNão interativo
busyText / successText / errorTextRevelação progressiva do label
feedbackAlternar flash pós-settle (default true)
blockLayout em largura total

Escape hatches avançados

variant, tone e size existem para exceções raras. Prefira o Design Kit para marca e density. Não trate estes como a API primária de Button.