UNPKG

rsuite

Version:

A suite of react components

189 lines (152 loc) 3.52 kB
@import '../../styles/common'; @import 'mixin'; // // Buttons // -------------------------------------------------- // Base styles // -------------------------------------------------- .@{ns}btn { .btn; } .@{ns}btn-default, .@{ns}btn-primary, .@{ns}btn-subtle { .button-ripple; } // Button Loading state .@{ns}btn-loading { color: transparent !important; position: relative; cursor: default; pointer-events: none; > .@{ns}btn-spin { &::before, &::after { content: ''; position: absolute; width: @btn-loading-spin-default-diameter; height: @btn-loading-spin-default-diameter; margin: auto; top: 0; right: 0; bottom: 0; left: 0; border-radius: 50%; .@{ns}btn-xs& { width: @btn-loading-spin-xs-diameter; height: @btn-loading-spin-xs-diameter; } } &::before { border: @btn-loading-spin-ring-wide solid @btn-loading-spin-ring-color; .@{ns}btn-primary& { opacity: @btn-disabled-opacity; } } &::after { border-width: @btn-loading-spin-ring-wide; border-color: @btn-spin-light-invert-color transparent transparent; border-style: solid; animation: buttonSpin 0.6s infinite linear; .@{ns}btn-primary& { border-top-color: @btn-spin-light-color; } } } } // Alternate buttons // -------------------------------------------------- // Default Button // Rewrite common button style .@{ns}btn-default { color: @btn-default-color; background: @btn-default-bg; .btn-loading-reset(@btn-default-color, @btn-default-bg); &, & > .@{ns}icon { .btn-transition(); } &:focus { color: @btn-default-color; background-color: @btn-default-focus-bg; } &:hover { color: @btn-default-hover-color; background-color: @btn-default-hover-bg; } &:active, &.@{ns}btn-active, .@{ns}open > .@{ns}dropdown-toggle& { color: @btn-default-color; background-color: @btn-default-active-bg; background-image: none; &:hover, &:focus, &.focus { color: @btn-default-color; background-color: @btn-default-active-bg; } } &.@{ns}btn-disabled, .@{ns}dropdown-disabled & { &, &:hover, &:focus, &:active, &:active:focus { // Reset Opacity; opacity: 1; color: @btn-default-disabled-color; background-color: @btn-default-disabled-bg; } } .generate-spectrum-primary-btns(); } // Primary Button .@{ns}btn-primary { .button-primary-variant(@btn-primary-color; @btn-primary-bg; @calc-readable-color: true); .btn-loading-reset(@btn-primary-color; @btn-primary-bg); &, & > .@{ns}icon { .btn-transition(); } .generate-spectrum-primary-btns(); } // Link buttons .@{ns}btn-link { .btn-transition(color); .btn-link-variant(@btn-link-color); .btn-loading-reset(@btn-link-color); .generate-spectrum-link-btns(); } // Subtle Button .@{ns}btn-subtle { .btn-subtle; } // Ghost Button .@{ns}btn-ghost { .btn-transition(); .btn-ghost-variant(@btn-ghost-color, @btn-ghost-border-color); .generate-spectrum-ghost-btns(); } // Button Sizes // -------------------------------------------------- .@{ns}btn-lg { .btn-lg; } .@{ns}btn-sm { .btn-sm; } .@{ns}btn-xs { .btn-xs; } // Block button // -------------------------------------------------- .@{ns}btn-block { display: block; width: 100%; // Vertically space out multiple block buttons & + & { margin-top: 5px; } }