////
///
/// Grid Size Mixins
/// ===========================================================================
///
/// CSS Grid template sizing mixins for defining column and row tracks.
///
/// @group Mixins.HeadLayout.Grid
/// @author Scape Agency
/// @link https://scape.style
/// @since 0.1.0 initial release
/// @access public
///
////

// ============================================================================
// Grid Column Size
// ============================================================================

/// Mixin to define a grid with a given number of columns
/// @param {Number} $val - The number of columns in the grid
@mixin grid--size--col($val) {
    grid-template-columns: repeat($val, 1fr);
}

/// Mixin for auto grid columns
@mixin grid--size--col--auto {
    grid-template-columns: auto;
}

/// Mixin for auto-fit columns with minimum width
/// @param {Length} $min - Minimum column width
@mixin grid--size--col--auto-fit($min: 250px) {
    grid-template-columns: repeat(auto-fit, minmax($min, 1fr));
}

/// Mixin for auto-fill columns with minimum width
/// @param {Length} $min - Minimum column width
@mixin grid--size--col--auto-fill($min: 250px) {
    grid-template-columns: repeat(auto-fill, minmax($min, 1fr));
}

// ============================================================================
// Grid Row Size
// ============================================================================

/// Mixin to define a grid with a given number of rows
/// @param {Number} $val - The number of rows in the grid
@mixin grid--size--row($val) {
    grid-template-rows: repeat($val, 1fr);
}

/// Mixin for auto grid rows
@mixin grid--size--row--auto {
    grid-template-rows: auto;
}

/// Mixin for min-content rows
@mixin grid--size--row--min {
    grid-template-rows: min-content;
}

/// Mixin for max-content rows
@mixin grid--size--row--max {
    grid-template-rows: max-content;
}
