Button
Trigger an action or event, such as submitting a form or displaying a dialog.
vue
<script setup lang="ts">
import { Icon } from '@iconify/vue'
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button>
<Icon icon="lucide:bookmark" />
Bookmark
</Button>
</div>
</template>
API Reference
Prop | Default | Type |
---|---|---|
as | "button" | AsTagComponent The element or component this component should render as. |
asChild | – | boolean |
color | – | Overrides the accent color inherited from the ThemeProvider. |
disabled | – | boolean Mark the button as disabled. |
highContrast | – | boolean Uses a higher contrast color for the component. |
radius | – | "none""small""medium""large""full" Overrides the radius inherited from the ThemeProvider. |
size | "2" | "1""2""3""4" Control the size of the button. |
variant | "solid" | Enum The visual variant to apply. |
Examples
Size
Use the size
prop to control the size of the button.
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button size="1" variant="soft">
Edit profile
</Button>
<Button size="2" variant="soft">
Edit profile
</Button>
<Button size="3" variant="soft">
Edit profile
</Button>
<Button size="4" variant="soft">
Edit profile
</Button>
</div>
</template>
Variant
Use the variant
prop to control the visual style of the button.
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button variant="classic">
Edit profile
</Button>
<Button variant="solid">
Edit profile
</Button>
<Button variant="soft">
Edit profile
</Button>
<Button variant="surface">
Edit profile
</Button>
<Button variant="outline">
Edit profile
</Button>
</div>
</template>
Disabled
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button variant="classic" disabled>
Edit profile
</Button>
<Button variant="solid" disabled>
Edit profile
</Button>
<Button variant="soft" disabled>
Edit profile
</Button>
<Button variant="surface" disabled>
Edit profile
</Button>
<Button variant="outline" disabled>
Edit profile
</Button>
</div>
</template>
Ghost
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button variant="ghost">Edit profile</Button>
<Button variant="ghost" disabled>Edit profile</Button>
</div>
</template>
Color
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button color="indigo" variant="soft">Edit profile</Button>
<Button color="cyan" variant="soft">Edit profile</Button>
<Button color="orange" variant="soft">Edit profile</Button>
<Button color="crimson" variant="soft">Edit profile</Button>
</div>
</template>
High Contrast
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex flex-col gap-3">
<div class="flex items-center gap-2">
<Button color="gray" variant="classic">
Edit profile
</Button>
<Button color="gray" variant="solid">
Edit profile
</Button>
<Button color="gray" variant="soft">
Edit profile
</Button>
<Button color="gray" variant="surface">
Edit profile
</Button>
<Button color="gray" variant="outline">
Edit profile
</Button>
</div>
<div class="flex items-center gap-2">
<Button color="gray" variant="classic" high-contrast>
Edit profile
</Button>
<Button color="gray" variant="solid" high-contrast>
Edit profile
</Button>
<Button color="gray" variant="soft" high-contrast>
Edit profile
</Button>
<Button color="gray" variant="surface" high-contrast>
Edit profile
</Button>
<Button color="gray" variant="outline" high-contrast>
Edit profile
</Button>
</div>
</div>
</template>
Radius
vue
<script setup lang="ts">
import { Button } from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-2">
<Button radius="none" variant="soft">
Edit profile
</Button>
<Button radius="small" variant="soft">
Edit profile
</Button>
<Button radius="medium" variant="soft">
Edit profile
</Button>
<Button radius="large" variant="soft">
Edit profile
</Button>
<Button radius="full" variant="soft">
Edit profile
</Button>
</div>
</template>