Files
atom/packages/one-dark-ui/styles/buttons.less
2018-09-06 11:17:04 -07:00

187 lines
3.8 KiB
Plaintext

@btn-border: 1px solid @button-border-color;
@btn-padding: 0 @ui-size/1.25;
// Mixins -----------------------
.btn-default (@color, @hover-color, @selected-color, @text-color) {
color: @text-color;
text-shadow: none;
border: @btn-border;
background-color: @color;
background-image: linear-gradient(lighten(@color, 2%), @color);
&:hover {
color: @text-color-highlight;
background-image: linear-gradient(lighten(@hover-color, 2%), @hover-color);
}
&:active {
background: darken(@color, 4%);
box-shadow: none;
}
&.selected {
background: @selected-color;
}
&.selected:focus,
&.selected:hover {
background: lighten(@selected-color, 2%);
}
&:focus {
.focus(); // unfortunately :focus styles stay even after releasing mouse.
}
}
.btn-variant (@color) {
@_text-color: contrast(@color, white, hsl(0,0%,20%), 33% );
.btn-default(
@color,
lighten(@color, 3%),
saturate(darken(@color, 12%), 20%),
@text-color-highlight
);
color: @_text-color;
& when (@ui-lightness > 50%) {
border-color: transparent; // hide border on light backgrounds
}
&:hover,
&:focus {
color: @_text-color;
}
&:focus {
border-color: transparent;
background-clip: padding-box;
box-shadow: inset 0 0 0 1px fade(@base-border-color, 50%), 0 0 0 1px @color;
}
&.icon:before {
color: @_text-color;
}
}
// Buttons -----------------------
.btn {
height: initial;
padding: @btn-padding;
font-size: @ui-size;
line-height: @ui-line-height;
}
.btn,
.btn.btn-default {
.btn-default(@button-background-color, @button-background-color-hover, @button-background-color-selected, @text-color);
}
.btn.btn-primary {
.btn-variant(@accent-bg-color);
}
.btn.btn-info {
.btn-variant(@background-color-info);
}
.btn.btn-success {
.btn-variant(@background-color-success);
}
.btn.btn-warning {
.btn-variant(@background-color-warning);
}
.btn.btn-error {
.btn-variant(@background-color-error);
}
// Button Sizes -----------------------
.btn.btn-xs,
.btn-group-xs > .btn {
font-size: @ui-size*.8;
line-height: @ui-line-height;
padding: @btn-padding;
}
.btn.btn-sm,
.btn-group-sm > .btn {
font-size: @ui-size*.9;
line-height: @ui-line-height;
padding: @btn-padding;
}
.btn.btn-lg,
.btn-group-lg > .btn {
font-size: @ui-size * 1.5;
line-height: @ui-line-height;
padding: @btn-padding;
}
// Button Group -----------------------
.btn-group > .btn {
z-index: 0;
&:hover {
z-index: 0;
}
&.btn:focus {
z-index: 1;
.focus();
}
&:first-child {
border-left: @btn-border;
}
&:last-child,
&.selected:last-child {
border-right: @btn-border;
}
// hide border on light backgrounds
& when (@ui-lightness > 50%) {
&.btn-primary:first-child,
&.btn-info:first-child,
&.btn-success:first-child,
&.btn-warning:first-child,
&.btn-error:first-child {
border-left-color: transparent;
}
&.btn-primary:last-child,
&.btn-info:last-child,
&.btn-success:last-child,
&.btn-warning:last-child,
&.btn-error:last-child {
border-right-color: transparent;
}
}
&.selected,
&.selected:first-child,
&.selected:last-child {
color: @button-text-color-selected;
border-color: @button-border-color-selected;
}
& when (@ui-lightness > 50%) {
&.selected + .btn {
border-left-color: @button-border-color-selected;
}
&.selected + .selected {
border-left-color: mix(@button-border-color, @button-border-color-selected);
}
}
&.selected:focus {
border-color: @button-background-color-selected;
box-shadow: inset 0 0 0 1px fade(@base-border-color, 50%), 0 0 0 1px @button-background-color-selected;
}
}
// Button Icons -----------------------
.btn.icon:before {
width: auto;
height: auto;
font-size: 1.333333em;
vertical-align: -.1em;
}