/**
 * Generate rem font-size
 *
 * @mixin
 * @section REM
 * @param $size-value Pixel value (int)
 * @example
 *  @include font-size();
 *  @include font-size(18);
 */

@mixin font-size($size-value: 1.6) {
    font-size: $size-value + px;
    font-size: ($size-value / 16) + rem;
}

/**
 * Position absolute d'un élément
 *
 * @mixin
 * @section Position absolute
 * @param $top PX | % | auto
 * @param $right PX | % | auto
 * @param $bottom PX | % | auto
 * @param $left PX | % | auto
 * @example
 *  @include abs-position(auto, 5%, 5px);
 */

@mixin abs-position($top: auto, $right: auto, $bottom: auto, $left: auto) {
    position: absolute;
    top: $top;
    right: $right;
    bottom: $bottom;
    left: $left;
}

/**
 * Centrer horizontallement un bloc
 *
 * @mixin
 * @section Center block
 * @example
 *  @include center-block;
 */

@mixin center-block {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

/**
 * Centrer horizontallementet et/ou verticalement un élément
 *
 * @mixin
 * @section Center element
 * @param $position 'vertical' | 'horizontal' | 'both'
 * @example
 *  @include center('vertical');
 *  @include center('horizontal');
 *  @include center('both');
 */

@mixin center($position) {
    position: absolute;

    @if $position == 'vertical' {
        top: 50%;
        transform: translateY(-50%);
    }

    @else if $position == 'horizontal' {
        left: 50%;
        transform: translate(-50%);
    }

    @else if $position == 'both' {
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    }
}

/**
 * @mixin
 * @section Quick padding
 * @param $top Pixel value (int)
 * @param $right Pixel value (int)
 * @param $bottom Pixel value (int)
 * @param $left Pixel value (int)
 * @example
 *  @include padding(1px, 2px, 3px, 4px);
 *  @include padding(1px, null, 3px, 4px);
 */

@mixin padding($top, $right, $bottom, $left) {
    padding-top: $top + px;
    padding-right: $right + px;
    padding-bottom: $bottom + px;
    padding-left: $left + px;
}

/**
 * @mixin
 * @section Quick margin
 * @param $top Pixel value (int)
 * @param $right Pixel value (int)
 * @param $bottom Pixel value (int)
 * @param $left Pixel value (int)
 * @example
 *  @include margin(1px, 2px, 3px, 4px);
 *  @include margin(1px, null, 3px, 4px);
 */

@mixin margin($top, $right, $bottom, $left) {
    margin-top: $top + px;
    margin-right: $right + px;
    margin-bottom: $bottom + px;
    margin-left: $left + px;
}
