Skip to content

Button ​

Універсальна кнопка зі станами завантаження, іконками та кількома варіантами.

Живе демо ​

З іконками ​

Стани ​

Передайте to, і кнопка відрендериться як справжнє <a href>, тож працюють пошукові роботи, клік середньою кнопкою та «відкрити в новій вкладці». Внутрішні шляхи навігуються через Vue router, якщо його встановлено (у Nuxt — завжди), без перезавантаження сторінки. Зовнішні URL, tel: / mailto: і #hash-посилання обробляє браузер. Поки disabled або loading, рендериться <button>.

vue
<template>
  <orio-button to="/reserve">Book a table</orio-button>
  <orio-button to="tel:+31165564090" variant="secondary">Call us</orio-button>
</template>

Використання ​

Базове ​

vue
<template>
  <orio-button @click="handleClick">
    Click Me
  </orio-button>
</template>

<script setup>
function handleClick() {
  console.log('Clicked!')
}
</script>

Варіанти кнопки ​

vue
<orio-button variant="primary">Primary</orio-button>
<orio-button variant="secondary">Secondary</orio-button>
<orio-button variant="subdued">Subdued</orio-button>

З іконками ​

vue
<!-- Icon before text -->
<orio-button icon="edit">Edit</orio-button>

<!-- Icon only (automatically rounds to circle) -->
<orio-button icon="plus" />

Стан завантаження ​

vue
<template>
  <orio-button :loading="isLoading" @click="save">
    Save Changes
  </orio-button>
</template>

<script setup>
const isLoading = ref(false)

async function save() {
  isLoading.value = true
  await api.save()
  isLoading.value = false
}
</script>

Пропси ​

ПропТипЗа замовчуваннямОпис
variant'primary' | 'secondary' | 'subdued''primary'Візуальний стиль кнопки
iconstringundefinedНазва іконки з реєстру іконок
loadingbooleanfalseПоказує індикатор завантаження, блокує кліки
disabledbooleanfalseВимикає взаємодію з кнопкою
toRouteLocationRawundefinedРендерити як справжнє <a href> (навігація роутером для внутрішніх шляхів); ігнорується, поки disabled/loading

Примітка: нативний HTML-атрибут type (наприклад, type="submit") можна використовувати як зазвичай через v-bind — він передається на внутрішній елемент <button>.

Події ​

ПодіяДаніОпис
clickPointerEventГенерується під час кліку (коли не loading/disabled)

Слоти ​

СлотПропсиОпис
default-Текстовий вміст кнопки
icon-Власний вміст іконки

Стилізація ​

Кнопка використовує такі CSS-змінні:

css
--color-accent       /* Primary button background */
--color-accent-ink   /* Text color on primary */
--color-accent-hover /* Hover state */
--color-accent-border