@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; box-shadow: none; } // TODO } &.separator, .separator { color: shade($bg, ($contrast + .05)); border: 1px solid currentColor; &:insensitive { color: shade($bg, .85); } } .linked & { @include linked_button($bg, $dark_shadow); } } @include exports("button") { %close_button { border: 1px solid transparent; background-color: transparent; background-image: none; box-shadow: none; &:focus, &:hover { border: 1px solid alpha(black, 0.3); background-color: alpha(white, 0.2); background-image: none; box-shadow: none; } &:active, &:checked, &:active:hover, &:checked:hover { border: 1px solid alpha(black, 0.3); background-color: alpha(black, 0.1); background-image: none; box-shadow: none; } } .button { @include button($bg_color, $fg_color); &.default { @include button($selected_bg_color, $selected_fg_color); } .spinbutton & { color: mix($text_color, $base_color, 0.4); padding: 2px 4px; border-width: 0; border-radius: 0; border-style: none; background-color: transparent; background-image: none; box-shadow: inset 1px 0 shade($base_color, 0.9); &:insensitive { color: mix($text_color, $base_color, 0.7); box-shadow: inset 1px 0 shade($base_color, 0.95); } &:active, &:checked, &:hover { color: $text_color; } &:first-child { border-radius: $roundness 0 0 $roundness; box-shadow: none; } &:last-child { border-radius: 0 $roundness $roundness 0; } &:dir(rtl) { box-shadow: inset -1px 0 shade($base_color, 0.9); } } .spinbutton.vertical & { border: 1px solid shade($bg_color, 0.8); border-radius: $roundness; background-color: shade($bg_color, 1.08); background-image: none; color: $fg_color; box-shadow: none; &:hover { border-color: shade($bg_color, 0.7); background-color: shade($bg_color, 1.10); background-image: none; } &:active, &:checked { border-color: shade($bg_color, 0.8); background-color: shade($bg_color, 0.95); background-image: none; } &:active:hover, &:checked:hover { border-color: shade($bg_color, 0.7); } &:focus, &:hover:focus, &:active:focus, &:active:hover:focus { border-color: shade($bg_color, 0.7); } &:insensitive { border-color: shade($bg_color, 0.85); background-color: shade($bg_color, 0.9); background-image: none; } &:first-child { border-width: 1px; border-bottom-width: 0; border-radius: $roundness; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } &:last-child { border-width: 1px; border-top-width: 0; border-radius: $roundness; border-top-left-radius: 0; border-top-right-radius: 0; } } .spinbutton.vertical.entry { border-width: 1px; border-style: solid; border-radius: 0; } } }