Skip to content

Button

Contrôle d'action principal. Menez avec l'intention : clics async, confirmation et navigation. Le Design Kit possède le look and feel.

Basique

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

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

Clic async

Si le gestionnaire de clic retourne un thenable, Button entre en phase busy jusqu'à la résolution. Avec feedback (défaut true), un court flash de succès ou d'erreur suit.

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 second clic avant de confirmer. true utilise le libellé armé par défaut ; une chaîne en définit un personnalisé.

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

Intention lien

Passez href (et optionnellement target / rel) pour les actions de navigation.

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

Props courantes

PropIntention
confirmValidation au second clic
hrefRendu comme lien
loadingBusy contrôlé (se fusionne avec l'intention async)
disabledNon interactif
busyText / successText / errorTextDivulgation progressive du libellé
feedbackActive/désactive le flash post-résolution (défaut true)
blockLayout pleine largeur

Échappatoires avancées

variant, tone et size existent pour de rares exceptions. Préférez le Design Kit pour la marque et la densité. Ne traitez pas ces props comme l'API principale de Button.