@use '../../scss/theming' as *;

@mixin daff-loading-icon-light-variant($loader-color) {
	.daff-loading-icon__loader {
		stroke: $loader-color;
	}

	.daff-loading-icon__bg {
		stroke: rgba($loader-color, 0.1);
	}
}

@mixin daff-loading-icon-dark-variant($loader-color) {
	.daff-loading-icon__loader {
		stroke: $loader-color;
	}

	.daff-loading-icon__bg {
		stroke: rgba($loader-color, 0.3);
	}
}

@mixin daff-loading-icon-theme($theme) {
	$primary: daff-get-palette($theme, primary);
	$secondary: daff-get-palette($theme, secondary);
	$tertiary: daff-get-palette($theme, tertiary);
	$base: daff-get-base-color($theme, base);
	$base-contrast: daff-get-base-color($theme, base-contrast);
	$white: daff-get-base-color($theme, 'white');
	$black: daff-get-base-color($theme, 'black');
	$neutral: daff-get-palette($theme, neutral);
	$mode: daff-get-theme-mode($theme);

	.daff-loading-icon {
		@include light($mode) {
			@include daff-loading-icon-light-variant(
				daff-color($neutral, 60)
			);

			&.daff-primary {
				@include daff-loading-icon-light-variant(daff-color($primary));
			}

			&.daff-secondary {
				@include daff-loading-icon-light-variant(
					daff-color($secondary)
				);
			}

			&.daff-tertiary {
				@include daff-loading-icon-light-variant(daff-color($tertiary));
			}

			&.daff-theme {
				@include daff-loading-icon-light-variant($base);
			}

			&.daff-theme-contrast {
				@include daff-loading-icon-light-variant($base-contrast);
			}

			&.daff-black {
				@include daff-loading-icon-light-variant($black);
			}

			&.daff-white {
				@include daff-loading-icon-light-variant($white);
			}
		}

		@include dark($mode) {
			@include daff-loading-icon-dark-variant(daff-color($neutral, 40));

			&.daff-primary {
				@include daff-loading-icon-dark-variant(daff-color($primary));
			}

			&.daff-secondary {
				@include daff-loading-icon-dark-variant(daff-color($secondary));
			}

			&.daff-tertiary {
				@include daff-loading-icon-dark-variant(daff-color($tertiary));
			}

			&.daff-theme {
				@include daff-loading-icon-dark-variant($base);
			}

			&.daff-theme-contrast {
				@include daff-loading-icon-dark-variant($base-contrast);
			}

			&.daff-black {
				@include daff-loading-icon-dark-variant($black);
			}

			&.daff-white {
				@include daff-loading-icon-dark-variant($white);
			}
		}
	}
}
