$sthemerLevels: 1 !default;

@function inverseScheme($scheme) {
	@if $scheme == 'dark' {
		@return 'light';
	} @else {
		@return 'dark';
	}
}

@function getSchemeSelector($scheme) {
	@if $scheme == 'dark' {
		@return ':global(.sthemer-dark)';
	} @else {
		@return ':global(.sthemer-light)';
	}
}

@function getSelector($scheme, $levels) {
	@if $levels < 1 {
		$levels: 1;
	} @else if $levels > 100 {
		$levels: 100;
	}

	$selector: '&';
	$combinedSelector: '';

	@for $i from 1 through $levels {
		$selector: getSchemeSelector($scheme) + ' ' + $selector;
		$scheme: inverseScheme($scheme);

		@if $combinedSelector == '' {
			$combinedSelector: $selector;
		} @else {
			$combinedSelector: $combinedSelector + ', ' + $selector;
		}
	}

	@return $combinedSelector;
}

@mixin on-dark($levels: $sthemerLevels) {
	#{getSelector('dark', $levels)} {
		@content;
	}
}

@mixin on-light($levels: $sthemerLevels) {
	#{getSelector('light', $levels)} {
		@content;
	}
}
