numix-gtk-theme/gtk-3.0/scss/_button.scss

153 lines
3.3 KiB
SCSS
Executable File

@import "functions";
@import "global";
/*********
! Buttons
**********/
@mixin linked_button($bg, $shadow) {
border: 1px solid border_normal($bg);
border-radius: 0;
border-right-style: none;
border-left-style: none;
box-shadow: inset -1px 0 border_normal($bg),
0 1px 2px -1px alpha($shadow, .3);
&:first-child {
border-width: 1px;
border-radius: $roundness;
border-left-style: solid;
border-right-style: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
&:dir(rtl) {
border-left-style: none;
border-right-style: solid;
}
}
&:last-child {
border-width: 1px;
border-radius: $roundness;
border-left-style: none;
border-right-style: solid;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&:dir(rtl) {
border-left-style: solid;
border-right-style: none;
}
}
&:only-child {
border-width: 1px;
border-radius: $roundness;
}
&:focus, &:hover {
box-shadow: inset -1px 0 border_focus($bg),
0 1px 2px -1px alpha($shadow, .3);
}
&:active, &:active:hover,
&:active:focus, &:active:hover:focus,
&:checked, &:checked:hover,
&:checked:focus, &:checked:hover:focus {
box-shadow: inset -1px 0 border_active($bg),
inset 1px 0 alpha($shadow, .07),
inset 0 1px alpha($shadow, .08),
inset 0 -1px alpha($shadow, .05);
}
&:insensitive { box-shadow: inset -1px 0 border_insensitive($bg); }
&:last-child, &:only-child,
&:insensitive:last-child, &:insensitive:only-child,
&:active *:insensitive:last-child, &:active *:insensitive:only-child,
&:checked *:insensitive:last-child, &:checked *:insensitive:only-child { box-shadow: none; }
&:active:last-child, &:active:only-child,
&:checked:last-child, &:checked:only-child {
box-shadow: inset 1px 0 alpha($shadow, .07),
inset 0 1px alpha($shadow, .08),
inset -1px 0 alpha($shadow, .07);
}
}
@mixin button($bg, $fg) {
@include linear-gradient(shade($bg, 1.05));
@include border(shade($bg, 1.05));
padding: ($spacing - 1px) ($spacing + 1px);
border-width: 1px;
border-radius: $roundness;
border-style: solid;
color: $fg;
transition: 100ms ease;
box-shadow: 0 1px 2px -1px alpha($dark_shadow, .3);
-GtkWidget-focus-padding: 1;
-GtkWidget-focus-line-width: 0;
&:focus, &:hover {
@include linear-gradient(shade($bg, 1.1));
box-shadow: 0 1px 3px -1px alpha($dark_shadow, .5);
}
&:checked, &:active {
@include linear-gradient(shade($bg, .95));
box-shadow: inset 1px 0 alpha($dark_shadow, .07),
inset 0 1px alpha($dark_shadow, .08),
inset -1px 0 alpha($dark_shadow, .07),
inset 0 -1px alpha($dark_shadow, .05);
}
&:insensitive {
@include linear-gradient(shade($bg, .95));
color: mix($bg, $fg, .5);
box-shadow: none;
}
&:active *:insensitive,
&:checked *:insensitive {
@include linear-gradient(shade($bg, .8));
box-shadow: none;
}
&.flat {
color: inherit;
&, &:hover, &:focus,
&:active, &:active:hover, &:active:focus,
&:checked, &:checked:hover, &:checked:focus {
border: none;
background-color: transparent;
background-image: none;
}
// TODO
}
&.separator, .separator {
color: shade($bg, .95);
border: 1px solid currentColor;
&:insensitive { color: shade($bg, .85); }
}
.linked & { @include linked_button($bg, $dark_shadow); }
}
.button {
@include button($bg_color, $fg_color);
&.default { @include button($selected_bg_color, $selected_fg_color); }
}