// Helper function to replace characters in a string @function str-replace($string, $search, $replace: '') { $index: str-index($string, $search); @return if($index, str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace), $string); } // Encode svg function by http://codepen.io/jakob-e/pen/doMoML @function svg-encode($svg){ // Chunk up string in order to avoid "stack level too deep" error $encoded:''; $slice: 2000; $index: 0; $loops: ceil(divide(str-length($svg), $slice)); @for $i from 1 through $loops { $chunk: str-slice($svg, $index, $index + $slice - 1); // Encode $chunk: str-replace($chunk, '"', '\''); $chunk: str-replace($chunk, '%', '%25'); $chunk: str-replace($chunk, '#', '%23'); $chunk: str-replace($chunk, '{', '%7B'); $chunk: str-replace($chunk, '}', '%7D'); $chunk: str-replace($chunk, '<', '%3C'); $chunk: str-replace($chunk, '>', '%3E'); $encoded: #{$encoded}#{$chunk}; $index: $index + $slice; } @return "data:image/svg+xml,#{$encoded}"; } @function checkmark($color) { $start: ''; $content: ''; $end: ''; @return svg-encode("#{$start}#{$content}#{$end}"); } @function indeterminate($color) { $start: ''; $content: ''; $end: ''; @return svg-encode("#{$start}#{$content}#{$end}"); }