Skip to content

Button

Primäre Aktionskontrolle. Führe mit Intent: async Clicks, Bestätigung und Navigation. Das Design Kit besitzt Look and Feel.

Basic

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

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

Async Click

Wenn der Click-Handler ein Thenable zurückgibt, wechselt Button in eine busy-Phase bis zur Settlement. Mit feedback (Default true) folgt ein kurzer Success- oder Error-Flash.

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

Zweiter Klick vor dem Commit erforderlich. true nutzt das Default-Armed-Label; ein String setzt ein eigenes.

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

Mit href (und optional target / rel) Navigationsaktionen umsetzen.

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

Häufige Props

PropIntent
confirmCommit per zweitem Klick
hrefAls Link rendern
loadingControlled busy (merged mit async Intent)
disabledNicht interaktiv
busyText / successText / errorTextProgressive Label-Disclosure
feedbackPost-Settle-Flash umschalten (Default true)
blockFull-Width-Layout

Advanced Escape Hatches

variant, tone und size existieren für seltene Ausnahmen. Bevorzuge das Design Kit für Brand und Density. Behandle diese nicht als primäre Button-API.