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);
API
Props
Props | Type | Default | Description |
---|---|---|---|
variant | String | solid | Button style variant, valid value is solid , outline , ghost and link |
color | String | - | Button color variant, valid value is primary , info , success , warning and danger |
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 | String or RouteLocationRaw | - | 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 |