123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- @use "sass:color";
- //
- // Button
- //
- .btn {
- --#{$prefix}btn-icon-size: #{$input-btn-icon-size};
- --#{$prefix}btn-bg: var(--#{$prefix}bg-surface);
- --#{$prefix}btn-color: var(--#{$prefix}body-color);
- --#{$prefix}btn-border-color: #{$btn-border-color};
- --#{$prefix}btn-hover-bg: var(--#{$prefix}btn-bg);
- --#{$prefix}btn-hover-border-color: var(--#{$prefix}border-active-color);
- --#{$prefix}btn-box-shadow: var(--#{$prefix}box-shadow-input);
- --#{$prefix}btn-active-color: #{$active-color};
- --#{$prefix}btn-active-bg: #{$active-bg};
- --#{$prefix}btn-active-border-color: #{$active-border-color};
- display: inline-flex;
- align-items: center;
- justify-content: center;
- white-space: nowrap;
- box-shadow: var(--#{$prefix}btn-box-shadow);
- .icon {
- width: var(--#{$prefix}btn-icon-size);
- height: var(--#{$prefix}btn-icon-size);
- min-width: var(--#{$prefix}btn-icon-size);
- font-size: var(--#{$prefix}btn-icon-size);
- margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
- vertical-align: bottom;
- color: inherit;
- }
- .avatar {
- width: var(--#{$prefix}btn-icon-size);
- height: var(--#{$prefix}btn-icon-size);
- margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
- }
- .icon-right {
- margin: 0 calc(var(--#{$prefix}btn-padding-x) / -4) 0 calc(var(--#{$prefix}btn-padding-x) / 2);
- }
- .badge {
- top: auto;
- }
- .btn-check + &:hover {
- color: var(--#{$prefix}btn-hover-color);
- background-color: var(--#{$prefix}btn-hover-bg);
- border-color: var(--#{$prefix}btn-hover-border-color);
- }
- }
- .btn-link {
- color: #{color.adjust($primary, $lightness: 5%)};
- background-color: transparent;
- border-color: transparent;
- box-shadow: none;
- .icon {
- color: inherit;
- }
- &:hover {
- color: $link-hover-color;
- border-color: transparent;
- }
- }
- //
- // Button color variations
- //
- @each $color, $value in $theme-colors {
- .btn-#{$color} {
- @if $color == 'dark' {
- --#{$prefix}btn-border-color: var(--#{$prefix}dark-mode-border-color);
- --#{$prefix}btn-hover-border-color: var(--#{$prefix}dark-mode-border-active-color);
- --#{$prefix}btn-active-border-color: var(--#{$prefix}dark-mode-border-active-color);
- } @else {
- --#{$prefix}btn-border-color: transparent;
- --#{$prefix}btn-hover-border-color: transparent;
- --#{$prefix}btn-active-border-color: transparent;
- }
- --#{$prefix}btn-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-bg: var(--#{$prefix}#{$color});
- --#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color}-darken);
- --#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-active-bg: var(--#{$prefix}#{$color}-darken);
- --#{$prefix}btn-disabled-bg: var(--#{$prefix}#{$color});
- --#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-box-shadow: var(--#{$prefix}box-shadow-input);
- }
- .btn-outline-#{$color} {
- --#{$prefix}btn-color: var(--#{$prefix}#{$color});
- --#{$prefix}btn-bg: transparent;
- --#{$prefix}btn-border-color: var(--#{$prefix}#{$color});
- --#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-hover-border-color: transparent;
- --#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
- --#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
- --#{$prefix}btn-active-bg: var(--#{$prefix}#{$color});
- --#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
- --#{$prefix}btn-disabled-border-color: var(--#{$prefix}#{$color});
- }
- }
- @each $name, $color in $theme-colors {
- .btn-ghost-#{$name} {
- --#{$prefix}btn-color: var(--#{$prefix}#{$name});
- --#{$prefix}btn-bg: transparent;
- --#{$prefix}btn-border-color: transparent;
- --#{$prefix}btn-hover-color: var(--#{$prefix}#{$name}-fg);
- --#{$prefix}btn-hover-bg: var(--#{$prefix}#{$name});
- --#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$name});
- --#{$prefix}btn-active-color: var(--#{$prefix}#{$name}-fg);
- --#{$prefix}btn-active-bg: var(--#{$prefix}#{$name});
- --#{$prefix}btn-active-border-color: transparent;
- --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
- --#{$prefix}btn-disabled-color: var(--#{$prefix}#{$name});
- --#{$prefix}btn-disabled-bg: transparent;
- --#{$prefix}btn-disabled-border-color: transparent;
- --#{$prefix}gradient: none;
- --#{$prefix}btn-box-shadow: none;
- }
- }
- //
- // Button sizes
- //
- .btn-sm, .btn-group-sm > .btn {
- --#{$prefix}btn-line-height: #{$input-btn-line-height-sm};
- --#{$prefix}btn-icon-size: #{$input-btn-icon-size-sm};
- }
- .btn-lg, .btn-group-lg > .btn {
- --#{$prefix}btn-line-height: #{$input-btn-line-height-lg};
- --#{$prefix}btn-icon-size: #{$input-btn-icon-size-lg};
- }
- //
- // Button shapes
- //
- .btn-pill {
- padding-right: 1.5em;
- padding-left: 1.5em;
- border-radius: 10rem;
- &[class*="btn-icon"] {
- padding: 0.375rem 15px;
- }
- }
- .btn-square {
- border-radius: 0;
- }
- //
- // Icon button
- //
- .btn-icon {
- min-width: calc((var(--#{$prefix}btn-line-height) * var(--#{$prefix}btn-font-size)) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
- min-height: calc((var(--#{$prefix}btn-line-height) * var(--#{$prefix}btn-font-size)) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
- padding-left: 0;
- padding-right: 0;
- .icon {
- margin: calc(-1 * var(--#{$prefix}btn-padding-x));
- }
- }
- //
- // Button list
- //
- .btn-list {
- @include elements-list;
- }
- //
- // Button floating
- //
- .btn-floating {
- position: fixed;
- z-index: $zindex-fixed;
- bottom: 1.5rem;
- right: 1.5rem;
- border-radius: $border-radius-pill;
- }
- //
- // Button loading
- //
- .btn-loading {
- position: relative;
- color: transparent !important;
- text-shadow: none !important;
- pointer-events: none;
- > * {
- opacity: 0;
- }
- &:after {
- content: "";
- display: inline-block;
- vertical-align: text-bottom;
- border: $spinner-border-width var(--#{$prefix}border-style) currentColor;
- border-right-color: transparent;
- border-radius: $border-radius-pill;
- color: var(--#{$prefix}btn-color);
- position: absolute;
- width: var(--#{$prefix}btn-icon-size);
- height: var(--#{$prefix}btn-icon-size);
- left: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
- top: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
- animation: spinner-border .75s linear infinite;
- }
- }
- //
- // Action button
- //
- .btn-action {
- padding: 0;
- border: 0;
- color: var(--#{$prefix}secondary);
- display: inline-flex;
- width: 2rem;
- height: 2rem;
- align-items: center;
- justify-content: center;
- border-radius: var(--#{$prefix}border-radius);
- background: transparent;
- &:after {
- content: none;
- }
- &:focus {
- outline: none;
- box-shadow: none;
- }
- &:hover,
- &.show {
- color: var(--#{$prefix}body-color);
- background: var(--#{$prefix}active-bg);
- }
- &.show {
- color: var(--#{$prefix}primary);
- }
- .icon {
- margin: 0;
- width: 1.25rem;
- height: 1.25rem;
- font-size: 1.25rem;
- stroke-width: 1;
- }
- }
- .btn-actions {
- display: flex;
- }
|