@mixin border-image($images) {
    -webkit-border-image: _border-add-prefix($images, webkit);
    -moz-border-image: _border-add-prefix($images, moz);
    -o-border-image: _border-add-prefix($images, o);
    border-image: _border-add-prefix($images);
}

@function _border-add-prefix($images, $vendor: false) {
    $border-image: null;
    $images-type: type-of(nth($images, 1));
    $first-var: nth(nth($images, 1), 1); // Get type of Gradient (Linear || radial)

    // If input is a gradient
    @if $images-type == string {
        @if ($first-var == "linear") or ($first-var == "radial") {
            $gradient-type: nth($images, 1); // Get type of gradient (linear || radial)
            $gradient-pos: nth($images, 2); // Get gradient position
            $gradient-args: nth($images, 3); // Get actual gradient (red, blue)
            $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
            $border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
        }
            // If input is a URL
        @else {
            $border-image: $images;
        }
    }
        // If input is gradient or url + additional args
    @else if $images-type == list {
        $type: type-of(nth($images, 1)); // Get type of variable - List or String

        // If variable is a list - Gradient
        @if $type == list {
            $gradient: nth($images, 1);
            $gradient-type: nth($gradient, 1); // Get type of gradient (linear || radial)
            $gradient-pos: nth($gradient, 2); // Get gradient position
            $gradient-args: nth($gradient, 3); // Get actual gradient (red, blue)
            $gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
            $border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);

            @for $i from 2 through length($images) {
                $border-image: append($border-image, nth($images, $i));
            }
        }
    }
    @return $border-image;
}

//Examples:
// @include border-image(url("image.png"));
// @include border-image(url("image.png") 20 stretch);
// @include border-image(linear-gradient(45deg, orange, yellow));
// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
// @include border-image(radial-gradient(top, cover, orange, yellow, orange));

