254 lines
6.5 KiB
SCSS
254 lines
6.5 KiB
SCSS
//
|
|
// _buttons.scss
|
|
//
|
|
|
|
button,
|
|
a {
|
|
outline: none !important;
|
|
}
|
|
|
|
.btn {
|
|
box-shadow: $element-shadow;
|
|
}
|
|
|
|
:is(.btn.show, .btn:first-child:active, :not(.btn-check)+.btn:active) {
|
|
border-color: transparent;
|
|
}
|
|
|
|
.btn-icon {
|
|
position: relative;
|
|
display: inline-flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: calc(#{$btn-padding-y * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
width: calc(#{$btn-padding-y * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
padding: 0;
|
|
|
|
:is(i, svg, img) {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
&.btn-sm {
|
|
height: calc(#{$btn-padding-y-sm * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
width: calc(#{$btn-padding-y-sm * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
}
|
|
|
|
&.btn-lg {
|
|
height: calc(#{$btn-padding-y-lg * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
width: calc(#{$btn-padding-y-lg * 2} + #{$btn-line-height}em + #{$border-width * 2});
|
|
}
|
|
}
|
|
|
|
//
|
|
// Soft Buttons
|
|
//
|
|
|
|
@each $state in map-keys($theme-colors) {
|
|
|
|
.btn-#{$state} {
|
|
--#{$prefix}btn-bg: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-border-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$state}-text-emphasis);
|
|
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
--#{$prefix}btn-focus-shadow-rgb: var(--#{$prefix}#{$state}-rgb);
|
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
|
|
--#{$prefix}btn-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
}
|
|
|
|
.btn-outline-#{$state} {
|
|
--#{$prefix}btn-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-bg: transparent;
|
|
--#{$prefix}btn-border-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-focus-shadow-rgb: var(--#{$prefix}#{$state}-rgb);
|
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-active-border-color: var(--#{$prefix}#{$state});
|
|
}
|
|
|
|
// soft Buttons
|
|
.btn-soft-#{$state} {
|
|
--#{$prefix}btn-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
|
--#{$prefix}btn-border-color: transparent;
|
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-hover-border-color: transparent;
|
|
--#{$prefix}btn-focus-shadow-rgb: var(--#{$prefix}#{$state}-rgb);
|
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-active-border-color: transparent;
|
|
}
|
|
|
|
// Ghost Buttons
|
|
.btn-ghost-#{$state} {
|
|
--#{$prefix}btn-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-bg: transparent;
|
|
--#{$prefix}btn-border-color: transparent;
|
|
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
|
--#{$prefix}btn-hover-border-color: transparent;
|
|
--#{$prefix}btn-focus-shadow-rgb: var(--#{$prefix}#{$state}-rgb);
|
|
--#{$prefix}btn-active-color: var(--#{$prefix}#{$state});
|
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
|
--#{$prefix}btn-active-border-color: transparent;
|
|
}
|
|
}
|
|
|
|
//button with icon
|
|
.btn-label {
|
|
position: relative;
|
|
padding-left: 44px;
|
|
|
|
.label-icon {
|
|
position: absolute;
|
|
width: 35.5px;
|
|
left: calc(#{$btn-border-width} * -1);
|
|
top: calc(#{$btn-border-width} * -1);
|
|
bottom: calc(#{$btn-border-width} * -1);
|
|
background-color: rgba($white, 0.1);
|
|
font-size: 16px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
&.btn-light {
|
|
.label-icon {
|
|
background-color: rgba($dark, 0.05);
|
|
}
|
|
}
|
|
|
|
&.right {
|
|
padding-left: $btn-padding-x;
|
|
padding-right: 44px;
|
|
|
|
.label-icon {
|
|
right: calc(#{$btn-border-width} * -1);
|
|
left: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Animation Button
|
|
|
|
.btn-animation {
|
|
overflow: hidden;
|
|
transition: border-color 0.3s, background-color 0.3s;
|
|
transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
|
|
|
|
&::after {
|
|
content: attr(data-text);
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
opacity: 0;
|
|
transform: translate3d(0, 25%, 0);
|
|
padding: $btn-padding-y $btn-padding-x;
|
|
transition: transform 0.3s, opacity 0.3s;
|
|
transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
|
|
}
|
|
|
|
>span {
|
|
display: block;
|
|
transition: transform 0.3s, opacity 0.3s;
|
|
transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
|
|
}
|
|
|
|
&:hover {
|
|
&::after {
|
|
opacity: 1;
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
>span {
|
|
opacity: 0;
|
|
transform: translate3d(0, -25%, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@mixin button-variant($bg) {
|
|
&.btn-animation {
|
|
background-color: $bg;
|
|
border-color: $bg !important;
|
|
|
|
&:is(:hover, :focus, :active, :focus-visible) {
|
|
color: $bg;
|
|
background-color: rgba($bg, 0.1);
|
|
}
|
|
}
|
|
}
|
|
|
|
@each $color,
|
|
$value in $theme-colors {
|
|
.btn-#{$color} {
|
|
@include button-variant($value);
|
|
}
|
|
}
|
|
|
|
//btn group
|
|
.btn-group-vertical {
|
|
label {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
// btn group radio
|
|
.btn-group.radio {
|
|
.btn {
|
|
border: none;
|
|
}
|
|
|
|
.btn-check:active+.btn-light,
|
|
.btn-check:checked+.btn-light,
|
|
.btn-light.active,
|
|
.btn-light.dropdown-toggle.show,
|
|
.btn-light:active {
|
|
background-color: rgba($info, 0.2);
|
|
color: $info;
|
|
}
|
|
}
|
|
|
|
.btn-load {
|
|
|
|
.spinner-border,
|
|
.spinner-grow {
|
|
height: 19px;
|
|
width: 19px;
|
|
}
|
|
}
|
|
|
|
//Border Bottom Buttons Style
|
|
@each $color,
|
|
$value in $theme-colors {
|
|
|
|
:is(.btn-#{$color}, .btn-outline-#{$color}, .btn-soft-#{$color}) {
|
|
&.btn-border {
|
|
border-bottom: 2px solid darken($value, 8%);
|
|
}
|
|
}
|
|
|
|
:is(.btn-soft-#{$color}, .btn-outline-#{$color}) {
|
|
--#{$prefix}btn-active-color: #{color-contrast($value)};
|
|
--#{$prefix}btn-hover-color: #{color-contrast($value)};
|
|
}
|
|
}
|
|
|
|
//custom toggle
|
|
.custom-toggle {
|
|
.icon-off {
|
|
display: none;
|
|
}
|
|
|
|
&.active {
|
|
.icon-on {
|
|
display: none;
|
|
}
|
|
|
|
.icon-off {
|
|
display: block;
|
|
}
|
|
}
|
|
} |