@use '../../../base' as *;
@use 'sass:string';

/// @access private
/// @author <a href="https://github.com/desig9stein" target="_blank">Marin Popov</a>
@mixin component {
    @include b(igx-circular-bar) {
        $this: bem--selector-to-string(&);
        @include register-component(
            $name: string.slice($this, 2, -1),
            $deps: ()
        );

        @extend %display-circular !optional;

        @include e(inner) {
            @extend %inner !optional;
        }

        @include e(outer) {
            @extend %outer !optional;
        }

        @include e(text) {
            @extend %text !optional;
        }

        @include e(value, $m: fraction) {
            @extend %text--fraction !optional;
        }

        @include e(gradient-start) {
            @extend %gradient-start !optional;
        }

        @include e(gradient-end) {
            @extend %gradient-end !optional;
        }

        @include m(indeterminate) {
            @extend %display-circular--indeterminate !optional;

            @include e(outer) {
                @extend %outer--indeterminate !optional;
            }

            @include e(text) {
                @extend %text--hidden !optional;
            }
        }

        @each $modifier in ('danger', 'warning', 'info', 'success') {
            @include m($modifier) {
                @extend %display-circular--#{$modifier} !optional;
            }
        }

        @include m(animation-none) {
            @extend %animation-none !optional;
        }

        @include m(hide-counter) {
            @include e(text) {
                @extend %hide-counter !optional;
            }
        }
    }
}
