| //// |
| /// @group components/functions |
| //// |
| |
| /* light, strong, medium */ |
| |
| |
| /// Calculates a contrasting color relative to the passed parameters. |
| /// @param {number} $strength |
| /// @param {hex} $color |
| /// @param {bool} $desaturate |
| @function get_contrast ($strength, $color, $desaturate: true) { |
| $new-color: $color; |
| $new-color: darken($color, $strength); |
| $strength-offset: 50; //in case of unexpected bright spots in dark themes |
| |
| @if lightness($new-color) <= 5 { |
| |
| @if $strength > $strength-offset { |
| $new-color: darken($color, $strength - $strength-offset); |
| //@warn "doppeldunkel #{$new-color}-"; |
| } |
| @else { |
| $new-color: lighten($color, $strength); |
| } |
| } |
| |
| @else if lightness($new-color) >= 95 { |
| $new-color: darken($color, $strength); |
| } |
| |
| |
| @if $desaturate == true { |
| $new-color: desaturate($new-color, 100%); |
| } |
| @return $new-color; |
| } |
| |
| |
| /// Mixes two colors. |
| /// @todo seem's useless. Could just call built-in "mix" function. |
| @function get_color_mix ($color, $mix, $strength) { |
| $new-color: mix($color, $mix, $strength); |
| @return $new-color; |
| } |
| |
| /// Remove the unit of a length |
| /// @param {Number} $number - Number to remove unit from |
| /// @return {Number} - Unitless number |
| @function strip_unit($number) { |
| @if type-of($number) == 'number' and not unitless($number) { |
| @return $number / ($number * 0 + 1); |
| } |
| @return $number; |
| } |
| |
| |
| /// Tries to return an even number. |
| /// Unfortunately, sass modulo never returns fractions, so this is a bit cumbersome. |
| @function make_even($number) { |
| |
| /* TODO: */ |
| /* v-layout-spacing muss ne gerade zahl sein, rest aber eigentlich "nur" auf ne glatte zahl gerundet. */ |
| /* genau unterscheiden, wo was gebraucht wird, sonst basst nix! */ |
| |
| /* make sure units are correct */ |
| $even-number: $number + 0px; |
| |
| /* $number: strip_unit($number); */ |
| $num-ceil: ceil($number); |
| $num-floor: floor($number); |
| |
| @if $num-ceil % 2 == 0px { |
| $t1: $num-ceil % 2; |
| $even-number: $num-ceil; |
| } |
| @else if $num-floor % 2 == 0px { |
| $t2: $num-ceil % 2; |
| $even-number: $num-floor; |
| } |
| @else { /*assume that number is an odd integer - this might not go well*/ |
| $even-number: $number + 1px; |
| } |
| |
| /* Line below shows up as exception; use to check values... */ |
| /* @return ($even-number,$num-ceil, $num-floor, $t1, $t2) ; */ |
| |
| |
| @return $even-number; |
| |
| } |
| |
| |
| /* |
| * Luminance Formula |
| * Y = 0.2126 R + 0.7152 G + 0.0722 B |
| 83 96 122 |
| |
| @function is-dark-color($color) { |
| $luminance: color-luminance($color); |
| @if $luminance < $v-luminance-threshold or (saturation($color) > 80% and ($luminance < $v-luminance-threshold + 20)) { |
| @return true; |
| } @else { |
| @return false; |
| } |
| } */ |
| |