Skip to content

Button ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
</script>

<template>
  <VxButton>Default</VxButton>
  <VxButton variant="secondary">Secondary</VxButton>
  <VxButton variant="destructive">Destructive</VxButton>
  <VxButton variant="outline">Outline</VxButton>
  <VxButton variant="ghost">Ghost</VxButton>
  <VxButton variant="link">Link</VxButton>
</template>

Sizes ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
import IconPlus from '../../components/icons/IconPlus.vue'
</script>

<template>
  <VxButton size="sm">Small</VxButton>
  <VxButton>Default</VxButton>
  <VxButton size="lg">Large</VxButton>
  <VxButton size="icon" :icon="IconPlus" />
</template>

Icon ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
import IconMail from '../../components/icons/IconMail.vue'
import IconHeart from '../../components/icons/IconHeart.vue'
import IconTrash from '../../components/icons/IconTrash.vue'
</script>

<template>
  <VxButton :icon="IconMail">Mail</VxButton>
  <VxButton variant="outline" :icon="IconHeart">Like</VxButton>
  <VxButton variant="destructive" :icon="IconTrash">Delete</VxButton>
</template>

Round & Circle ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
import IconSearch from '../../components/icons/IconSearch.vue'
import IconPlus from '../../components/icons/IconPlus.vue'
import IconTrash from '../../components/icons/IconTrash.vue'
</script>

<template>
  <VxButton round>Default</VxButton>
  <VxButton circle :icon="IconSearch" />
  <VxButton circle variant="outline" :icon="IconPlus" />
  <VxButton circle variant="destructive" :icon="IconTrash" />
</template>

Button Group ​

vue
<script setup lang="ts">
import { VxButton, VxButtonGroup } from 'veloxui'
</script>

<template>
  <VxButtonGroup>
    <VxButton variant="outline">Left</VxButton>
    <VxButton variant="outline">Center</VxButton>
    <VxButton variant="outline">Right</VxButton>
  </VxButtonGroup>

  <VxButtonGroup divided>
    <VxButton>One</VxButton>
    <VxButton>Two</VxButton>
    <VxButton>Three</VxButton>
  </VxButtonGroup>
</template>

Disabled ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
</script>

<template>
  <VxButton disabled>Default</VxButton>
  <VxButton variant="outline" disabled>Outline</VxButton>
  <VxButton variant="destructive" disabled>Destructive</VxButton>
</template>

Loading ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
</script>

<template>
  <VxButton loading>Loading</VxButton>
  <VxButton variant="outline" loading>Loading</VxButton>
  <VxButton bg="#4a7cc9" loading>Loading</VxButton>
</template>

Loading Icon ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
import SpinnerDots from '../../components/icons/SpinnerDots.vue'
</script>

<template>
  <VxButton loading :loadingIcon="SpinnerDots">Dots</VxButton>
</template>

Custom Background ​

vue
<script setup lang="ts">
import { VxButton } from 'veloxui'
</script>

<template>
  <VxButton bg="#2563eb">Blue</VxButton>
  <VxButton bg="#16a34a">Green</VxButton>
  <VxButton bg="linear-gradient(135deg, #2563eb, #06b6d4)">Gradient</VxButton>
</template>

Props ​

PropTypeDefaultDescription
variant'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link''default'Vizual uslub
size'sm' | 'default' | 'lg' | 'icon''default'Tugma o'lchami
iconComponent—Ikonka komponenti
roundbooleanfalseTabletka shaklida
circlebooleanfalseFaqat ikonkali doira
disabledbooleanfalseO'chirilgan holat
loadingbooleanfalseMatn bilan loading
loadingIconComponentbuilt-in spinnerMaxsus loading ikonkasi
bgstring''Maxsus fon
buttonClassstring | string[] | Record<string, boolean>''Maxsus CSS class