@use "sass:map";
@use "sass:math";
@use "../core/_index.scss" as *;

/// The border radius of the Loader segment.
/// @group loader
$kendo-loader-segment-border-radius: 50% !default;

/// The size of the small Loader segment.
/// @group loader
$kendo-loader-sm-segment-size: k-spacing(1) !default;
/// The size of the medium Loader segment.
/// @group loader
$kendo-loader-md-segment-size: k-spacing(2) !default;
/// The size of the large Loader segment.
/// @group loader
$kendo-loader-lg-segment-size: k-spacing(4) !default;

/// The horizontal padding of the small Loader.
/// @group loader
$kendo-loader-sm-padding-x: calc( #{$kendo-loader-sm-segment-size} / 2 ) !default;
/// The horizontal padding of the medium Loader.
/// @group loader
$kendo-loader-md-padding-x: calc( #{$kendo-loader-md-segment-size} / 2 ) !default;
/// The horizontal padding of the large Loader.
/// @group loader
$kendo-loader-lg-padding-x: calc( #{$kendo-loader-lg-segment-size} / 2 ) !default;

/// The vertical padding of the small Loader.
/// @group loader
$kendo-loader-sm-padding-y: calc( #{$kendo-loader-sm-segment-size} / 2 ) !default;
/// The vertical padding of the medium Loader.
/// @group loader
$kendo-loader-md-padding-y: calc( #{$kendo-loader-md-segment-size} / 2 ) !default;
/// The vertical padding of the large Loader.
/// @group loader
$kendo-loader-lg-padding-y: calc( #{$kendo-loader-lg-segment-size} /2 ) !default;

/// The equilateral height of the Loader.
/// @group loader
$kendo-loader-equilateral-height: .8660 !default;

/// The width of the small spinner-3 Loader.
/// @group loader
$kendo-loader-sm-spinner-3-width: calc( #{$kendo-loader-sm-segment-size} * 4 ) !default;
/// The width of the medium spinner-3 Loader.
/// @group loader
$kendo-loader-md-spinner-3-width: calc( #{$kendo-loader-md-segment-size} * 4 ) !default;
/// The width of the large spinner-3 Loader.
/// @group loader
$kendo-loader-lg-spinner-3-width: calc( #{$kendo-loader-lg-segment-size} * 4 ) !default;

/// The height of the small spinner-3 Loader.
/// @group loader
$kendo-loader-sm-spinner-3-height: calc( #{$kendo-loader-sm-spinner-3-width} * #{$kendo-loader-equilateral-height} ) !default;
/// The height of the medium spinner-3 Loader.
/// @group loader
$kendo-loader-md-spinner-3-height: calc( #{$kendo-loader-md-spinner-3-width} * #{$kendo-loader-equilateral-height} ) !default;
/// The height of the large spinner-3 Loader.
/// @group loader
$kendo-loader-lg-spinner-3-height: calc( #{$kendo-loader-lg-spinner-3-width} * #{$kendo-loader-equilateral-height} ) !default;

/// The width of the small spinner-4 Loader.
/// @group loader
$kendo-loader-sm-spinner-4-width: calc( #{$kendo-loader-sm-segment-size} * 4 ) !default;
/// The width of the medium spinner-4 Loader.
/// @group loader
$kendo-loader-md-spinner-4-width: calc( #{$kendo-loader-md-segment-size} * 4 ) !default;
/// The width of the large spinner-4 Loader.
/// @group loader
$kendo-loader-lg-spinner-4-width: calc( #{$kendo-loader-lg-segment-size} * 4 ) !default;

/// The height of the small spinner-4 Loader.
/// @group loader
$kendo-loader-sm-spinner-4-height: $kendo-loader-sm-spinner-4-width !default;
/// The height of the medium spinner-4 Loader.
/// @group loader
$kendo-loader-md-spinner-4-height: $kendo-loader-md-spinner-4-width !default;
/// The height of the large spinner-4 Loader.
/// @group loader
$kendo-loader-lg-spinner-4-height: $kendo-loader-lg-spinner-4-width !default;

/// The border width of the container panel.
/// @group loader
$kendo-loader-container-panel-border-width: 1px !default;
/// The border style of the container panel.
/// @group loader
$kendo-loader-container-panel-border-style: solid !default;
/// The border color of the container panel.
/// @group loader
$kendo-loader-container-panel-border-color: var( --kendo-component-border, initial ) !default;
/// The border radius of the container panel.
/// @group loader
$kendo-loader-container-panel-border-radius: k-border-radius(md) !default;
/// The background color of the container panel.
/// @group loader
$kendo-loader-container-panel-bg: if($kendo-enable-color-system, k-color( app-surface ), $kendo-color-white) !default;

/// The horizontal padding of the small Loader container.
/// @group loader
$kendo-loader-sm-container-padding-x: k-spacing(4) !default;
/// The horizontal padding of the medium Loader container.
/// @group loader
$kendo-loader-md-container-padding-x: k-spacing(5) !default;
/// The horizontal padding of the large Loader container.
/// @group loader
$kendo-loader-lg-container-padding-x: k-spacing(6) !default;

/// The vertical padding of the small Loader container.
/// @group loader
$kendo-loader-sm-container-padding-y: k-spacing(4) !default;
/// The vertical padding of the medium Loader container.
/// @group loader
$kendo-loader-md-container-padding-y: k-spacing(5) !default;
/// The vertical padding of the large Loader container.
/// @group loader
$kendo-loader-lg-container-padding-y: k-spacing(6) !default;

/// The gap of the small Loader container.
/// @group loader
$kendo-loader-sm-container-gap: k-spacing(1) !default;
/// The gap of the medium Loader container.
/// @group loader
$kendo-loader-md-container-gap: k-spacing(2) !default;
/// The gap of the large Loader container.
/// @group loader
$kendo-loader-lg-container-gap: k-spacing(3) !default;

/// The font size of the small Loader container.
/// @group loader
$kendo-loader-sm-container-font-size: var( --kendo-font-size-sm, inherit ) !default;
/// The font size of the medium Loader container.
/// @group loader
$kendo-loader-md-container-font-size: var( --kendo-font-size, inherit ) !default;
/// The font size of the large Loader container.
/// @group loader
$kendo-loader-lg-container-font-size: var( --kendo-font-size-lg, inherit ) !default;

/// The theme variations for the Loader.
/// @group loader
$kendo-loader-brand-colors: (
    primary: primary,
    secondary: if($kendo-enable-color-system, secondary, neutral),
    tertiary: tertiary,
    error: error,
    success: success,
    warning: warning,
    info: info
 ) !default;

 // Matrix with loader theme colors in the order: bg, color, border
$_tc-loader-matrix: (
    (normal: if($kendo-enable-color-system, (color, null, null), (100, null, null))),
) !default;

$_tc-loader-dark-matrix: (
    (normal: if($kendo-enable-color-system, (color, null, null), (160, null, null))),
) !default;

$_tc-loader-light-matrix: (
    (normal: if($kendo-enable-color-system, (color, null, null), (50, null, null))),
) !default;

/// The theme colors map for the Loader variations.
/// @group loader
$kendo-loader-theme-colors: () !default;

@each $ui-states in $_tc-loader-matrix {
    @each $brand-color, $palette in $kendo-loader-brand-colors {
        $kendo-loader-theme-colors: map.deep-merge(
            $kendo-loader-theme-colors,
            k-generate-theme-variation( $brand-color, $palette, $ui-states )
        );
    };
}

@each $ui-states in $_tc-loader-dark-matrix {
    $kendo-loader-theme-colors: map.deep-merge(
        $kendo-loader-theme-colors,
        k-generate-theme-variation( dark, if($kendo-enable-color-system, dark, neutral), $ui-states )
    );
}

@each $ui-states in $_tc-loader-light-matrix {
    $kendo-loader-theme-colors: map.deep-merge(
        $kendo-loader-theme-colors,
        k-generate-theme-variation( light, if($kendo-enable-color-system, light, neutral), $ui-states )
    );
}

// Loading indicator
/// The background color of the Loading indicator.
/// @group loading
$kendo-loading-bg: var( --kendo-component-bg, initial ) !default;
/// The text color of the Loading indicator.
/// @group loading
$kendo-loading-text: currentColor !default;
/// The opacity of the Loading indicator.
/// @group loading
$kendo-loading-opacity: .3 !default;
/// The z-index of the Loading indicator.
/// @group loading
$kendo-zindex-loading: 100 !default;
