Skip to content

SkyButton ​

Кнопка з варіантами, станами loading/disabled та режимами block і icon.

Демо ​

Приклад ​

vue
<script setup>
import { ref } from 'vue'
import { SkyButton } from '@skyservice-developers/vue-dev-kit'

const deleting = ref(false)
</script>

<template>
  <SkyButton variant="primary" @click="save">Зберегти</SkyButton>
  <SkyButton variant="danger" :loading="deleting" @click="del">Видалити</SkyButton>
  <SkyButton variant="outline" disabled>Недоступно</SkyButton>
  <SkyButton variant="secondary" block>На всю ширину</SkyButton>
</template>

Варіанти ​

variantПризначення
primaryОсновна дія (зелений)
dangerДеструктивна дія (червоний)
secondaryДругорядна дія (сірий)
outlineМінімальний акцент (прозорий фон + рамка)
accentBootstrap Primary (синій)
warningBootstrap Warning (жовтий)
infoBootstrap Info (блакитний)
darkBootstrap Dark (темний)
outline-primary | outline-danger | outline-secondary | outline-accent | outline-warning | outline-info | outline-darkТе саме, але прозорий фон; рамка й текст — основний колір варіанта, на hover заливається
vue
<SkyButton variant="primary">Primary</SkyButton>
<SkyButton variant="danger">Danger</SkyButton>
<SkyButton variant="secondary">Secondary</SkyButton>
<SkyButton variant="outline">Outline</SkyButton>
<SkyButton variant="accent">Accent</SkyButton>
<SkyButton variant="warning">Warning</SkyButton>
<SkyButton variant="info">Info</SkyButton>
<SkyButton variant="dark">Dark</SkyButton>

<SkyButton variant="outline-primary">Primary</SkyButton>
<SkyButton variant="outline-danger">Danger</SkyButton>
<SkyButton variant="outline-accent">Accent</SkyButton>
<!-- …outline-secondary, outline-warning, outline-info, outline-dark -->

Props ​

PropТипЗа замовчуваннямОпис
variantString'primary''primary' | 'danger' | 'secondary' | 'outline' | 'accent' | 'warning' | 'info' | 'dark' | 'outline-primary' | 'outline-danger' | 'outline-secondary' | 'outline-accent' | 'outline-warning' | 'outline-info' | 'outline-dark'
loadingBooleanfalseПоказує спінер, блокує клік
disabledBooleanfalseВимкнена кнопка
blockBooleanfalseПовна ширина
iconBooleanfalseКвадратна кнопка для іконки

Стани ​

Loading ​

Показує спінер і блокує кліки. Зручно для async-дій:

vue
<SkyButton variant="primary" :loading="saving" @click="save">Зберегти</SkyButton>

Disabled ​

vue
<SkyButton variant="primary" disabled>Недоступно</SkyButton>

Block ​

Розтягує кнопку на всю ширину контейнера:

vue
<SkyButton variant="primary" block>На всю ширину</SkyButton>

Іконкова кнопка ​

icon робить кнопку квадратною під іконку. Передайте SVG у слот, title — для tooltip/доступності:

vue
<SkyButton variant="primary" icon title="Додати">
  <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
    <path d="M8 2v12M2 8h12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
  </svg>
</SkyButton>

currentColor

stroke="currentColor" / fill="currentColor" в SVG змусить іконку успадкувати колір тексту кнопки — вона автоматично буде правильного кольору для кожного варіанта.

CSS змінні ​

css
--sky-btn-padding: 16px 20px;
--sky-btn-radius: 6px;
--sky-btn-font-size: 14px;
--sky-btn-font-weight: 500;

--sky-btn-primary-bg: #24973f;
--sky-btn-danger-bg: #dc2626;
--sky-btn-secondary-bg: #f3f4f6;
--sky-btn-outline-bg: transparent;
--sky-btn-accent-bg: #0d6efd;
--sky-btn-warning-bg: #ffc107;
--sky-btn-info-bg: #0dcaf0;
--sky-btn-dark-bg: #212529;
/* outline-*: колір рамки й тексту (за замовчуванням — bg відповідного варіанта) */
--sky-btn-outline-primary-color: #00c279;
--sky-btn-outline-primary-hover-color: #fff; /* текст на hover */

Приклад перебрендування — див. Теми → перебрендувати кнопки.

Опубліковано під ліцензією MIT.