_drawing.scss
ASCII text
1// Drawing mixins 2 3// generic drawing of more complex things 4 5// shadows 6// $z-depth-1: 0 1px 1.5px rgba(0, 0, 0, 0.12), 0 1px 1px rgba(0, 0, 0, 0.24); 7$z-depth-1: 0 1px 1px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); 8$z-depth-2: 0 3px 3px rgba(0, 0, 0, 0.16), 0 3px 3px rgba(0, 0, 0, 0.23); 9$z-depth-3: 0 10px 10px rgba(0, 0, 0, 0.19), 0 6px 3px rgba(0, 0, 0, 0.23); 10$z-depth-4: 0 14px 14px rgba(0, 0, 0, 0.25), 0 10px 5px rgba(0, 0, 0, 0.22); 11$z-depth-5: 0 19px 19px rgba(0, 0, 0, 0.30), 0 15px 6px rgba(0, 0, 0, 0.22); 12 13@keyframes ripple_effect { 14from { 15background-image: -gtk-gradient(radial, 16center center, 0, 17center center, 0.001, 18to(gtkalpha(currentColor, 0.1)), 19to(transparent)), 20linear-gradient(to bottom, gtkalpha(currentColor, 0)); 21} 22to { 23background-image: -gtk-gradient(radial, 24center center, 0, 25center center, 0.4, 26to(gtkalpha(currentColor, 0.1)), 27to(transparent)), 28linear-gradient(to bottom, gtkalpha(currentColor, 0.1)); 29} 30} 31 32@keyframes flat_ripple_effect { 33from { 34background-image: -gtk-gradient(radial, 35center center, 0, 36center center, 0.001, 37to(gtkalpha(currentColor, 0.1)), 38to(transparent)), 39linear-gradient(to bottom, gtkalpha(currentColor, 0.1)); 40} 41to { 42background-image: -gtk-gradient(radial, 43center center, 0, 44center center, 0.4, 45to(gtkalpha(currentColor, 0.1)), 46to(transparent)), 47linear-gradient(to bottom, gtkalpha(currentColor, 0.1)); 48} 49} 50 51@keyframes list_ripple_effect { 52from { 53background-image: -gtk-gradient(radial, 54center center, 0, 55center center, 0.001, 56to(gtkalpha(currentColor, 0)), 57to(transparent)), 58linear-gradient(to bottom, gtkalpha(currentColor, 0.05)); 59} 60to { 61background-image: -gtk-gradient(radial, 62center center, 0, 63center center, 0.4, 64to(gtkalpha(currentColor, 0.1)), 65to(transparent)), 66linear-gradient(to bottom, gtkalpha(currentColor, 0.1)); 67} 68} 69 70// entries 71 72@mixin entry($t, $fc:$selected_bg_color) { 73// 74// Entries drawing function 75// 76// $t: entry type 77// $fc: focus color 78// 79// possible $t values: 80// normal, focus, insensitive, flat, flat-focus, flat-insensitive; 81// 82 83@if $t==normal { 84box-shadow: $z-depth-1; 85background-color: if($fc!=$selected_bg_color, $fc, $base_color); 86color: if($fc!=$selected_bg_color, $selected_fg_color, $text_color); 87} 88@if $t==focus { 89box-shadow: $z-depth-2; 90} 91@if $t==insensitive { 92color: $insensitive_fg_color; 93background-color: $insensitive_base_color; 94} 95@if $t==flat { 96border-image: -gtk-gradient(radial, 97center bottom, 0, 98center bottom, 0.001, 99to($fc), 100to(transparent)) 1010 0 0 / 0 0 0px; 102border-radius: 0; 103box-shadow: inset 0 -1px if($fc!=$selected_bg_color, $fc, $fill_color); 104background-color: transparent; 105color: $text_color; 106} 107@if $t==flat-focus { 108border-image: -gtk-gradient(radial, 109center bottom, 0, 110center bottom, 0.5, 111to($fc), 112to(transparent)) 1130 0 2 / 0 0 2px; 114box-shadow: inset 0 -2px $fc; 115transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0 cubic-bezier(0.4, 0, 0.2, 1) 0.2s, color 0; 116} 117@if $t==flat-insensitive { 118box-shadow: inset 0 -1px $fill_color; 119background-color: transparent; 120color: $insensitive_fg_color; 121} 122} 123 124// buttons 125 126@mixin button($t, $c:$light_color, $tc:$fg_color) { 127// 128// Button drawing function 129// 130// $t: button type, 131// $c: base button color for colored* types 132// $tc: optional text color for colored* types 133// 134// possible $t values: 135// normal, hover, active, insensitive, checked, checked-insensitive, 136// flat, flat-hover, flat-active, flat-insensitive, flat-checked, flat-checked-insensitive, undecorated 137// 138 139@if $t==normal { 140// 141// normal button 142// 143box-shadow: $z-depth-1; 144background-color: $c; 145background-image: -gtk-gradient(radial, 146center center, 0, 147center center, 0.5, 148to(gtkalpha(currentColor, 0)), 149to(transparent)), 150linear-gradient(to bottom, gtkalpha(currentColor, 0)); 151color: $secondary_fg_color; 152} 153 154@else if $t==hover { 155// 156// hovered button 157// 158box-shadow: $z-depth-2; 159background-image: -gtk-gradient(radial, 160center center, 0, 161center center, 0.5, 162to(gtkalpha(currentColor, 0)), 163to(transparent)), 164linear-gradient(to bottom, gtkalpha(currentColor, 0)); 165color: $fg_color; 166} 167 168@else if $t==active { 169// 170// pushed button 171// 172box-shadow: $z-depth-2; 173color: $fg_color; 174transition-duration: 0; 175animation: ripple_effect 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards; 176} 177@else if $t==insensitive { 178// 179// insensitive button 180// 181box-shadow: none; 182background-color: $fill_color; 183color: if($tc!=$fg_color, $insensitive_fg_color, $insensitive_secondary_fg_color); 184> .label { color: inherit; } 185} 186@else if $t==checked { 187// 188// checked button 189// 190background-color: $selected_bg_color; 191color: $selected_fg_color; 192&:not(:hover):not(:active) > .label { opacity: 0.75; } 193&:not(:hover):not(:active) > GtkImage { opacity: 0.75; } 194} 195@else if $t==checked-insensitive { 196// 197// checked insensitive button 198// 199background-color: $fill_color; 200color: gtkopacity($selected_bg_color, 0.4); 201> .label { color: inherit; } 202} 203 204@else if $t==flat { 205// 206// normal flat button 207// 208box-shadow: none; 209background-color: transparent; 210background-image: -gtk-gradient(radial, 211center center, 0, 212center center, 0.5, 213to(gtkalpha(currentColor, 0)), 214to(transparent)), 215linear-gradient(to bottom, gtkalpha(currentColor, 0)); 216} 217@else if $t==flat-hover { 218// 219// hovered flat button 220// 221box-shadow: none; 222background-image: -gtk-gradient(radial, 223center center, 0, 224center center, 0.5, 225to(gtkalpha(currentColor, 0)), 226to(transparent)), 227linear-gradient(to bottom, gtkalpha(currentColor, 0.1)); 228} 229@else if $t==flat-active { 230// 231// pushed flat button 232// 233box-shadow: none; 234animation: flat_ripple_effect 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards; 235} 236@else if $t==flat-insensitive { 237// 238// insensitive flat button 239// 240box-shadow: none; 241background-color: transparent; 242} 243@else if $t==flat-checked { 244// 245// backdrop pushed button FIXME no colors here! 246// 247background-color: $fill_color; 248color: $fg_color; 249} 250@else if $t==flat-checked-insensitive { 251// 252// flat-checked insensitive button 253// 254> .label { color: inherit; } 255} 256 257@else if $t==undecorated { 258// 259// reset 260// 261border-color: transparent; 262background-color: transparent; 263background-image: none; 264box-shadow: none; 265text-shadow: none; 266icon-shadow: none; 267} 268} 269 270@mixin overshoot($p, $t:normal, $c:$selected_bg_color) { 271// 272// overshoot 273// 274// $p: position 275// $t: type 276// $c: base color 277// 278// possible $p values: 279// top, bottom, right, left 280// 281// possible $t values: 282// normal, backdrop 283// 284 285$_position: center $p; 286 287@if ($p == left) or ($p == right) { 288$_position: $p center; 289} 290 291background-image: -gtk-gradient(radial, 292$_position, 0, 293$_position, 0.75, 294to(gtkopacity($c, 0.2)), 295to(transparent)); 296 297background-repeat: no-repeat; 298background-position: $_position; 299 300background-color: transparent; // reset some properties to be sure to not inherit them somehow 301border: none; // 302box-shadow: none; // 303} 304 305@mixin undershoot($p) { 306// 307// undershoot 308// 309// $p: position 310// 311// possible $p values: 312// top, bottom, right, left 313// 314 315$_undershoot_color_dark: gtkopacity(black, 0.2); 316$_undershoot_color_light: gtkopacity(white, 0.2); 317 318$_gradient_dir: left; 319$_dash_bg_size: 16px 2px; 320$_gradient_repeat: repeat-x; 321$_bg_pos: center $p; 322 323background-color: transparent; // shouldn't be needed, but better to be sure; 324 325@if ($p == left) or ($p == right) { 326$_gradient_dir: top; 327$_dash_bg_size: 2px 16px; 328$_gradient_repeat: repeat-y; 329$_bg_pos: $p center; 330} 331 332background-image: linear-gradient(to $_gradient_dir, // this is the dashed line 333$_undershoot_color_light 50%, 334$_undershoot_color_dark 50%); 335 336padding-#{$p}: 0; 337background-size: $_dash_bg_size; 338background-repeat: $_gradient_repeat; 339background-origin: content-box; 340background-position: $_bg_pos; 341} 342