Skip to content

SButton

Кнопка.

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. В зависимости от контекста сам подбирает семантический элемент: анкор для ссылок или button для отправки формы.
  2. Позволяет передать Link-элемент InertiaJS в качестве атрибута as.

Стандартный пример

Используйте color, outlined, transparent, disabled, small, loading и fullwidth чтобы задать стили кнопок.

Основной цвет

Основное действие
Дополнительное действие
Прозрачная кнопка
Недоступная кнопка
Маленькая кнопка
<SButton>Основное действие</SButton>
<SButton outlined>Дополнительное действие</SButton>
<SButton transparent>Прозрачная кнопка</SButton>
<SButton disabled>Недоступная кнопка</SButton>
<SButton small>Маленькая кнопка</SButton>

Красная кнопка

Основное действие
Дополнительное действие
Прозрачная кнопка
Недоступная кнопка
Маленькая кнопка
<SButton color="red">Основное действие</SButton>
<SButton outlined color="red">Дополнительное действие</SButton>
<SButton transparent color="red">Прозрачная кнопка</SButton>
<SButton disabled color="red">Недоступная кнопка</SButton>
<SButton small color="red">Маленькая кнопка</SButton>

Зеленая кнопка

Основное действие
Дополнительное действие
Прозрачная кнопка
Недоступная кнопка
Маленькая кнопка
<SButton color="green">Основное действие</SButton>
<SButton outlined color="green">Дополнительное действие</SButton>
<SButton transparent color="green">Прозрачная кнопка</SButton>
<SButton disabled color="green">Недоступная кнопка</SButton>
<SButton small color="green">Маленькая кнопка</SButton>

Жёлтая кнопка

Основное действие
Дополнительное действие
Прозрачная кнопка
Недоступная кнопка
Маленькая кнопка
<SButton color="yellow">Основное действие</SButton>
<SButton outlined color="yellow">Дополнительное действие</SButton>
<SButton transparent color="yellow">Прозрачная кнопка</SButton>
<SButton disabled color="yellow">Недоступная кнопка</SButton>
<SButton small color="yellow">Маленькая кнопка</SButton>

Золотая кнопка

Акцент для «денежных» и премиум-действий (платные операции, запуск, оплата): градиент золота с тёмным текстом. Использует токены --s-gold, --s-gold-dark, --s-gold-lightest из палитры.

Запустить (≈ 210 ₽)
Дополнительное действие
Прозрачная кнопка
Недоступная кнопка
Маленькая кнопка
<SButton color="gold">Запустить (≈ 210 ₽)</SButton>
<SButton outlined color="gold">Дополнительное действие</SButton>
<SButton transparent color="gold">Прозрачная кнопка</SButton>
<SButton disabled color="gold">Недоступная кнопка</SButton>
<SButton small color="gold">Маленькая кнопка</SButton>

Кнопка на всю ширину формы

Основное действие
Основное действие
Основное действие
Основное действие
<SButton fullwidth>Основное действие</SButton>
<SButton fullwidth color="red">Основное действие</SButton>
<SButton fullwidth color="green">Основное действие</SButton>
<SButton fullwidth color="yellow">Основное действие</SButton>

Действия по кнопке

Отправка формы

Если кнопка внутри формы, то отправляет форму:

vue
<template>
    <SForm method="post" action="/users/create">
        ...
        <SButton>Создать пользователя</SButton>
    </SForm>
</template>

Кастомное действие

Создать пользователя
<SButton @click="createUser">Создать пользователя</SButton>

Переход по ссылке

Если добавляем href, то кнопка по умолчанию становится семантически правильным анкором:

<SButton href="https://startup-ui.ru">Документация</SButton>

Переход по внутренней ссылке InertiaJs

Если нужно сделать кнопку внутренней InertjaJS-ссылкой, то используем атрибут "is":

vue
<SButton :is="Link" href="/projects/create">Создать проект</SButton>

Интерфейс компонента

Свойства (Props)

НазваниеТипПо умолчаниюОписание
outlinedbooleanfalseСтиль кнопки с контуром (без заливки)
transparentbooleanfalseПрозрачная кнопка без границ
fullwidthbooleanfalseКнопка на всю ширину контейнера
smallbooleanfalseМаленький размер кнопки
disabledbooleanfalseОтключает кнопку (некликабельна, прозрачность 0.3)
loadingbooleanfalseСостояние загрузки (некликабельна, курсор ожидания)
colorstringЦвет кнопки: "red", "green", "yellow", "gold" или кастомный
isstring | ComponentHTML-элемент или Vue-компонент для рендеринга (например, InertiaJS Link)
hrefstringURL для перехода (делает кнопку ссылкой)

Слоты (Slots)

НазваниеОписание
defaultСодержимое кнопки (текст, иконка и т.д.)