| // stylelint-disable custom-property-empty-line-before |
| |
| // |
| // Base styles |
| // |
| |
| .btn { |
| // scss-docs-start btn-css-vars |
| --#{$variable-prefix}btn-padding-x: #{$btn-padding-x}; |
| --#{$variable-prefix}btn-padding-y: #{$btn-padding-y}; |
| --#{$variable-prefix}btn-font-family: #{$btn-font-family}; |
| @include rfs($btn-font-size, --#{$variable-prefix}btn-font-size); |
| --#{$variable-prefix}btn-font-weight: #{$btn-font-weight}; |
| --#{$variable-prefix}btn-line-height: #{$btn-line-height}; |
| --#{$variable-prefix}btn-color: #{$body-color}; |
| --#{$variable-prefix}btn-bg: transparent; |
| --#{$variable-prefix}btn-border-width: #{$btn-border-width}; |
| --#{$variable-prefix}btn-border-color: transparent; |
| --#{$variable-prefix}btn-border-radius: #{$btn-border-radius}; |
| --#{$variable-prefix}btn-box-shadow: #{$btn-box-shadow}; |
| --#{$variable-prefix}btn-disabled-opacity: #{$btn-disabled-opacity}; |
| --#{$variable-prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$variable-prefix}btn-focus-shadow-rgb), .5); |
| // scss-docs-end btn-css-vars |
| |
| display: inline-block; |
| padding: var(--#{$variable-prefix}btn-padding-y) var(--#{$variable-prefix}btn-padding-x); |
| font-family: var(--#{$variable-prefix}btn-font-family); |
| font-size: var(--#{$variable-prefix}btn-font-size); |
| font-weight: var(--#{$variable-prefix}btn-font-weight); |
| line-height: var(--#{$variable-prefix}btn-line-height); |
| color: var(--#{$variable-prefix}btn-color); |
| text-align: center; |
| text-decoration: if($link-decoration == none, null, none); |
| white-space: $btn-white-space; |
| vertical-align: middle; |
| cursor: if($enable-button-pointers, pointer, null); |
| user-select: none; |
| border: var(--#{$variable-prefix}btn-border-width) solid var(--#{$variable-prefix}btn-border-color); |
| @include border-radius(var(--#{$variable-prefix}btn-border-radius)); |
| @include gradient-bg(var(--#{$variable-prefix}btn-bg)); |
| @include box-shadow(var(--#{$variable-prefix}btn-box-shadow)); |
| @include transition($btn-transition); |
| |
| &:hover { |
| color: var(--#{$variable-prefix}btn-hover-color); |
| text-decoration: if($link-hover-decoration == underline, none, null); |
| background-color: var(--#{$variable-prefix}btn-hover-bg); |
| border-color: var(--#{$variable-prefix}btn-hover-border-color); |
| } |
| |
| .btn-check:focus + &, |
| &:focus { |
| color: var(--#{$variable-prefix}btn-hover-color); |
| @include gradient-bg(var(--#{$variable-prefix}btn-hover-bg)); |
| border-color: var(--#{$variable-prefix}btn-hover-border-color); |
| outline: 0; |
| // Avoid using mixin so we can pass custom focus shadow properly |
| @if $enable-shadows { |
| box-shadow: var(--#{$variable-prefix}btn-box-shadow), var(--#{$variable-prefix}btn-focus-box-shadow); |
| } @else { |
| box-shadow: var(--#{$variable-prefix}btn-focus-box-shadow); |
| } |
| } |
| |
| .btn-check:checked + &, |
| .btn-check:active + &, |
| &:active, |
| &.active, |
| &.show { |
| color: var(--#{$variable-prefix}btn-active-color); |
| background-color: var(--#{$variable-prefix}btn-active-bg); |
| // Remove CSS gradients if they're enabled |
| background-image: if($enable-gradients, none, null); |
| border-color: var(--#{$variable-prefix}btn-active-border-color); |
| @include box-shadow(var(--#{$variable-prefix}btn-active-shadow)); |
| |
| &:focus { |
| // Avoid using mixin so we can pass custom focus shadow properly |
| @if $enable-shadows { |
| box-shadow: var(--#{$variable-prefix}btn-active-shadow), var(--#{$variable-prefix}btn-focus-box-shadow); |
| } @else { |
| box-shadow: var(--#{$variable-prefix}btn-focus-box-shadow); |
| } |
| } |
| } |
| |
| &:disabled, |
| &.disabled, |
| fieldset:disabled & { |
| color: var(--#{$variable-prefix}btn-disabled-color); |
| pointer-events: none; |
| background-color: var(--#{$variable-prefix}btn-disabled-bg); |
| background-image: if($enable-gradients, none, null); |
| border-color: var(--#{$variable-prefix}btn-disabled-border-color); |
| opacity: var(--#{$variable-prefix}btn-disabled-opacity); |
| @include box-shadow(none); |
| } |
| } |
| |
| |
| // |
| // Alternate buttons |
| // |
| |
| // scss-docs-start btn-variant-loops |
| @each $color, $value in $theme-colors { |
| .btn-#{$color} { |
| @include button-variant($value, $value); |
| } |
| } |
| |
| @each $color, $value in $theme-colors { |
| .btn-outline-#{$color} { |
| @include button-outline-variant($value); |
| } |
| } |
| // scss-docs-end btn-variant-loops |
| |
| |
| // |
| // Link buttons |
| // |
| |
| // Make a button look and behave like a link |
| .btn-link { |
| --#{$variable-prefix}btn-font-weight: #{$font-weight-normal}; |
| --#{$variable-prefix}btn-color: #{$btn-link-color}; |
| --#{$variable-prefix}btn-bg: transparent; |
| --#{$variable-prefix}btn-border-color: transparent; |
| --#{$variable-prefix}btn-hover-color: #{$btn-link-hover-color}; |
| --#{$variable-prefix}btn-hover-border-color: transparent; |
| --#{$variable-prefix}btn-active-border-color: transparent; |
| --#{$variable-prefix}btn-disabled-color: #{$btn-link-disabled-color}; |
| --#{$variable-prefix}btn-disabled-border-color: transparent; |
| --#{$variable-prefix}btn-box-shadow: none; |
| |
| text-decoration: $link-decoration; |
| |
| &:hover, |
| &:focus { |
| text-decoration: $link-hover-decoration; |
| } |
| |
| // No need for an active state here |
| } |
| |
| |
| // |
| // Button Sizes |
| // |
| |
| .btn-lg { |
| @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); |
| } |
| |
| .btn-sm { |
| @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); |
| } |