| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- // Стили для кнопки
- .btn
- display: inline-flex
- align-items: center
- justify-content: center
- padding: var(--spacing-sm) var(--spacing-md)
- border: var(--border-width) solid transparent
- border-radius: var(--border-radius)
- font-family: var(--font-family)
- font-size: var(--font-size-base)
- font-weight: var(--font-weight-medium)
- line-height: var(--line-height-tight)
- text-decoration: none
- cursor: pointer
- transition: var(--transition-fast)
- background: var(--color-primary)
- color: var(--color-white)
- position: relative
- overflow: hidden
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: var(--color-primary-50)
- transform: translateY(-1px)
- box-shadow: var(--shadow-md)
-
- &:active:not(.btn--disabled):not(.btn--loading)
- transform: translateY(0)
- box-shadow: var(--shadow-sm)
-
- &.btn--disabled
- opacity: 0.6
- cursor: not-allowed
- background: var(--color-secondary)
-
- &.btn--loading
- cursor: wait
- color: transparent
-
- // Размеры
- &.btn--small
- padding: var(--spacing-xs) var(--spacing-sm)
- font-size: var(--font-size-sm)
-
- &.btn--medium
- padding: var(--spacing-sm) var(--spacing-md)
- font-size: var(--font-size-base)
-
- &.btn--large
- padding: var(--spacing-md) var(--spacing-lg)
- font-size: var(--font-size-lg)
- font-weight: var(--font-weight-semibold)
-
- // Типы
- &.btn--primary
- background: var(--color-primary)
- border-color: var(--color-primary)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: var(--color-primary-50)
- border-color: var(--color-primary-50)
-
- &.btn--secondary
- background: var(--color-secondary)
- border-color: var(--color-secondary)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: var(--color-dark-50)
- border-color: var(--color-dark-50)
-
- &.btn--success
- background: var(--color-success)
- border-color: var(--color-success)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: #218838
- border-color: #1e7e34
-
- &.btn--danger
- background: var(--color-danger)
- border-color: var(--color-danger)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: #c82333
- border-color: #bd2130
-
- &.btn--outline
- background: transparent
- color: var(--color-primary)
- border-color: var(--color-primary)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: var(--color-primary-10)
- color: var(--color-primary)
-
- // Лоадер
- .btn__loader
- position: absolute
- top: 50%
- left: 50%
- transform: translate(-50%, -50%)
- width: 20px
- height: 20px
- border: 2px solid transparent
- border-top: 2px solid var(--color-white)
- border-radius: 50%
- animation: btn-spin 1s linear infinite
-
- .btn__text
- display: flex
- align-items: center
- gap: var(--spacing-xs)
- // Темная тема
- .theme-dark
- .btn--outline
- color: var(--color-light)
- border-color: var(--color-light)
-
- &:hover:not(.btn--disabled):not(.btn--loading)
- background: var(--color-light-10)
- color: var(--color-light)
- // Анимация лоадера
- @keyframes btn-spin
- 0%
- transform: translate(-50%, -50%) rotate(0deg)
- 100%
- transform: translate(-50%, -50%) rotate(360deg)
- // Адаптивность
- @media (max-width: 768px)
- .btn
- width: 100%
- justify-content: center
-
- &.btn--small,
- &.btn--medium,
- &.btn--large
- width: 100%
|