_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, $lower_opacity / 2)), 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, $lower_opacity / 2)), 27to(transparent)), 28linear-gradient(to bottom, gtkalpha(currentColor, $lower_opacity / 2)); 29} 30} 31 32@keyframes flat_ripple_effect { 33from { 34background-image: -gtk-gradient(radial, 35center center, 0, 36center center, 0.001, 37to(gtkalpha(currentColor, $lower_opacity / 2)), 38to(transparent)), 39linear-gradient(to bottom, gtkalpha(currentColor, $lower_opacity / 2)); 40} 41to { 42background-image: -gtk-gradient(radial, 43center center, 0, 44center center, 0.4, 45to(gtkalpha(currentColor, $lower_opacity / 2)), 46to(transparent)), 47linear-gradient(to bottom, gtkalpha(currentColor, $lower_opacity / 2)); 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, $lower_opacity / 2)), 65to(transparent)), 66linear-gradient(to bottom, gtkalpha(currentColor, $lower_opacity / 2)); 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, $fg_color); 87} 88@if $t==focus { 89box-shadow: $z-depth-2; 90} 91@if $t==insensitive { 92color: $insensitive_fg_color; 93background-color: $secondary_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, $track_color); 104background-color: transparent; 105color: $fg_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 $material_duration $material_timing_function, box-shadow 0 $material_timing_function $material_duration, color 0; 116} 117@if $t==flat-insensitive { 118box-shadow: inset 0 -1px $track_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-property: opacity, border-color, border-image, box-shadow, 175background-color, text-shadow, icon-shadow; // Remove background-image 176animation: ripple_effect $material_duration $material_timing_function forwards; 177} 178@else if $t==insensitive { 179// 180// insensitive button 181// 182box-shadow: none; 183background-color: $track_color; 184color: if($tc!=$fg_color, $insensitive_fg_color, $insensitive_secondary_fg_color); 185> .label { color: inherit; } 186} 187@else if $t==checked { 188// 189// checked button 190// 191background-color: $selected_bg_color; 192color: $selected_fg_color; 193} 194@else if $t==checked-insensitive { 195// 196// checked insensitive button 197// 198background-color: $track_color; 199color: scale-alpha($selected_bg_color, $disabled_opacity); 200> .label { color: inherit; } 201} 202 203@else if $t==flat { 204// 205// normal flat button 206// 207box-shadow: none; 208background-color: transparent; 209background-image: -gtk-gradient(radial, 210center center, 0, 211center center, 0.5, 212to(gtkalpha(currentColor, 0)), 213to(transparent)), 214linear-gradient(to bottom, gtkalpha(currentColor, 0)); 215} 216@else if $t==flat-hover { 217// 218// hovered flat button 219// 220box-shadow: none; 221background-image: -gtk-gradient(radial, 222center center, 0, 223center center, 0.5, 224to(gtkalpha(currentColor, 0)), 225to(transparent)), 226linear-gradient(to bottom, gtkalpha(currentColor, $lower_opacity / 2)); 227} 228@else if $t==flat-active { 229// 230// pushed flat button 231// 232box-shadow: none; 233transition-property: opacity, border-color, border-image, box-shadow, 234background-color, text-shadow, icon-shadow; // Remove background-image 235animation: flat_ripple_effect $material_duration $material_timing_function forwards; 236} 237@else if $t==flat-insensitive { 238// 239// insensitive flat button 240// 241box-shadow: none; 242background-color: transparent; 243} 244@else if $t==flat-checked { 245// 246// checked flat button 247// 248background-color: $track_color; 249color: $fg_color; 250} 251@else if $t==flat-checked-insensitive { 252// 253// checked flat insensitive button 254// 255> .label { color: inherit; } 256} 257 258@else if $t==undecorated { 259// 260// reset 261// 262border-color: transparent; 263background-color: transparent; 264background-image: none; 265box-shadow: none; 266text-shadow: none; 267icon-shadow: none; 268} 269} 270 271@mixin overshoot($p, $t:normal, $c:$secondary_selected_bg_color) { 272// 273// overshoot 274// 275// $p: position 276// $t: type 277// $c: base color 278// 279// possible $p values: 280// top, bottom, right, left 281// 282// possible $t values: 283// normal, backdrop 284// 285 286$_position: center $p; 287 288@if ($p == left) or ($p == right) { 289$_position: $p center; 290} 291 292background-image: -gtk-gradient(radial, 293$_position, 0, 294$_position, 0.75, 295to(scale-alpha($c, $lower_opacity)), 296to(transparent)); 297 298background-repeat: no-repeat; 299background-position: $_position; 300 301background-color: transparent; // reset some properties to be sure to not inherit them somehow 302border: none; // 303box-shadow: none; // 304} 305 306@mixin undershoot($p) { 307// 308// undershoot 309// 310// $p: position 311// 312// possible $p values: 313// top, bottom, right, left 314// 315 316$_undershoot_color_dark: scale-alpha($fg_color, $lower_opacity); 317$_undershoot_color_light: scale-alpha($base_color, $lower_opacity); 318 319$_gradient_dir: left; 320$_dash_bg_size: 16px 2px; 321$_gradient_repeat: repeat-x; 322$_bg_pos: center $p; 323 324background-color: transparent; // shouldn't be needed, but better to be sure; 325 326@if ($p == left) or ($p == right) { 327$_gradient_dir: top; 328$_dash_bg_size: 2px 16px; 329$_gradient_repeat: repeat-y; 330$_bg_pos: $p center; 331} 332 333background-image: linear-gradient(to $_gradient_dir, // this is the dashed line 334$_undershoot_color_light 50%, 335$_undershoot_color_dark 50%); 336 337padding-#{$p}: 0; 338background-size: $_dash_bg_size; 339background-repeat: $_gradient_repeat; 340background-origin: content-box; 341background-position: $_bg_pos; 342} 343