Button 
Base button component
Usage 
Simple Button 
preview
vue
<template>
  <p-button>Click me</p-button>
</template>Button with icon 
preview
vue
<template>
  <p-button color="info" icon><IconPersona /></p-button>
</template>
<script setup>
  import IconPersona from '@privyid/persona-icon/vue/persona/20.vue'
</script>Button with icon + text 
preview
vue
<template>
  <p-button color="info"><IconPersona /> Click Me</p-button>
  <p-button color="info">Click Me <IconPersona /></p-button>
</template>
<script setup>
  import IconPersona from '@privyid/persona-icon/vue/persona/20.vue'
</script>Variants 
Button has 4 variants, solid, outline, ghost, link. Default is solid
Default color 
preview
vue
<template>
  <p-button variant="solid">Click me</p-button>
  <p-button variant="outline">Click me</p-button>
  <p-button variant="ghost">Click me</p-button>
  <p-button variant="link">Click me</p-button>
</template>With Color 
preview
vue
<template>
  <p-button color="info" variant="solid">Click me</p-button>
  <p-button variant="outline">Click me</p-button>
  <p-button color="info" variant="ghost">Click me</p-button>
  <p-button variant="link">Click me</p-button>
</template>Colors 
Button solid and ghost available in 5 different colors primary, info, success, warning and danger.
preview
vue
<template>
  <p-button color="primary">Click me</p-button>
  <p-button color="info">Click me</p-button>
  <p-button color="success">Click me</p-button>
  <p-button color="warning">Click me</p-button>
  <p-button color="danger">Click me</p-button>
</template>ghost variant
vue
<template>
  <p-button variant="ghost" color="primary">Click me</p-button>
  <p-button variant="ghost" color="info">Click me</p-button>
  <p-button variant="ghost" color="success">Click me</p-button>
  <p-button variant="ghost" color="warning">Click me</p-button>
  <p-button variant="ghost" color="danger">Click me</p-button>
</template>Button link and button outline are available in emphasis color to accommodate dark background (inverse).
link variant
vue
<template>
  <p-button variant="outline">Click me</p-button>
  <p-button variant="outline" color="emphasis">Click me</p-button>
  <p-button variant="link">Click me</p-button>
  <p-button variant="link" color="emphasis">Click me</p-button>
</template>Sizing 
There are 4 size variants that can be use: xs, sm, md, lg. default is md
preview
vue
<template>
  <p-button color="info" size="xs">Click me</p-button>
  <p-button color="info" size="sm">Click me</p-button>
  <p-button color="info" size="md">Click me</p-button>
  <p-button color="info" size="lg">Click me</p-button>
</template>Pill mode 
You can add prop pill to make button more rounded
preview
vue
<template>
  <p-button color="info" size="xs" pill>Click me</p-button>
  <p-button color="info" size="sm" pill>Click me</p-button>
  <p-button color="info" size="md" pill>Click me</p-button>
  <p-button color="info" size="lg" pill>Click me</p-button>
</template>Icon mode 
You can add prop icon to make button more square, it's suitable for button with icon only
preview
vue
<template>
  <p-button color="info" size="xs" icon><IconPersona /></p-button>
  <p-button color="info" size="sm" icon><IconPersona /></p-button>
  <p-button color="info" size="md" icon><IconPersona /></p-button>
  <p-button color="info" size="lg" icon><IconPersona /></p-button>
</template>You can also combine with pill mode to make round button
preview
vue
<template>
  <p-button color="info" size="xs" icon pill><IconPersona /></p-button>
  <p-button color="info" size="sm" icon pill><IconPersona /></p-button>
  <p-button color="info" size="md" icon pill><IconPersona /></p-button>
  <p-button color="info" size="lg" icon pill><IconPersona /></p-button>
</template>Disable state 
link variant
vue
<template>
  <p-button color="info" variant="solid" disabled>Click me</p-button>
  <p-button variant="outline" disabled>Click me</p-button>
  <p-button variant="ghost" color="info" disabled>Click me</p-button>
  <p-button variant="link" disabled>Click me</p-button>
</template>Loading state 
link variant
vue
<template>
  <p-button color="info" variant="solid" loading>Click me</p-button>
  <p-button variant="outline" loading>Click me</p-button>
  <p-button variant="ghost" color="info" loading>Click me</p-button>
  <p-button variant="link" loading>Click me</p-button>
</template>Variables 
Button use local CSS variables on .btn for enhanced real-time customization.
sass
--p-button-xs-padding-x: theme(spacing.2);
--p-button-sm-padding-x: theme(spacing.4);
--p-button-md-padding-x: theme(spacing.5);
--p-button-lg-padding-x: theme(spacing.8);
/** only work in button variant link */
--p-button-xs-padding-y: theme(spacing[0.5]);
--p-button-sm-padding-y: theme(spacing.1);
--p-button-md-padding-y: theme(spacing[2.5]);
--p-button-lg-padding-y: theme(spacing.4);API 
Props 
| Props | Type | Default | Description | 
|---|---|---|---|
| variant | String | solid | Button style variant, valid value is solid,outline,ghostandlink | 
| color | String | - | Button color variant, valid value is primary,info,success,warninganddanger | 
| size | String | md | Size of button, valid value is xs,sm,md,lg | 
| pill | Boolean | false | Enable pill mode | 
| icon | Boolean | false | Enable icon mode | 
| disabled | Boolean | false | Disable state | 
| loading | Boolean | false | Enable loading state | 
| href | StringorRouteLocationRaw | - | Place url in the button to make button-like permalink | 
Slots 
| Name | Description | 
|---|---|
| default | Content to place in button | 
| loading | Content when loading | 
Events 
| Name | Arguments | Description | 
|---|---|---|
| click | Native DOM Event object | Event when button is clicked |