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

/// @access private
/// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
@mixin component {
    @include b(igx-card) {
        $this: bem--selector-to-string(&);
        @include register-component(
            $name: string.slice($this, 2, -1),
            $deps: (
                igx-icon,
                igx-button,
            )
        );

        @extend %igx-card-display !optional;

        @include e(media) {
            @extend %igx-card-media !optional;
        }

        @include e(media, $m: right) {
            @extend %igx-card-media--right !optional;
        }

        @include m(elevated) {
            @extend %igx-card--elevated !optional;
        }

        @include m(horizontal) {
            @extend %igx-card--horizontal !optional;
        }
    }

    @include b(igx-card-header) {
        @extend %igx-card-header !optional;

        @include e(thumbnail) {
            @extend %igx-card-header-thumbnail !optional;
        }

        @include e(titles) {
            @extend %igx-card-header-titles !optional;
        }

        @include e(title) {
            @extend %igx-card-header-title !optional;
        }

        @include e(title, $m: small) {
            @extend %igx-card-header-title !optional;
            @extend %igx-card-header-title--small !optional;
        }

        @include e(subtitle) {
            @extend %igx-card-header-subtitle !optional;
        }

        @include m(vertical) {
            @extend %igx-card-header--vertical !optional;
        }
    }

    @include b(igx-card-content) {
        @extend %igx-card-content !optional;
    }

    @include b(igx-card-actions) {
        @extend %igx-card-actions !optional;

        @include e(start) {
            @extend %igx-card-actions__start !optional;
        }

        @include e(end) {
            @extend %igx-card-actions__end !optional;
        }

        @include e(igroup) {
            @extend %igx-card-actions-igroup !optional;
        }

        @include e(igroup, $m: start) {
            @extend %igx-card-actions-igroup !optional;
            @extend %igx-card-actions-igroup--start !optional;
        }

        @include e(igroup, $m: end) {
            @extend %igx-card-actions-igroup !optional;
            @extend %igx-card-actions-igroup--end !optional;
        }

        @include e(bgroup) {
            @extend %igx-card-actions-bgroup !optional;
        }

        @include m(vertical) {
            @extend %igx-card-actions--vertical !optional;

            @include e(start) {
                @extend %igx-card-actions__start--vertical !optional;
            }

            @include e(end) {
                @extend %igx-card-actions__end--vertical !optional;
            }
        }

        @include m(reverse) {
            @include e(start) {
                @extend %igx-card-actions__start--reverse !optional;
            }

            @include e(end) {
                @extend %igx-card-actions__end--reverse !optional;
            }
        }

        @include mx(vertical, reverse) {
            @include e(start) {
                @extend %igx-card-actions__start--vertical-reverse !optional;
            }

            @include e(end) {
                @extend %igx-card-actions__end--vertical-reverse !optional;
            }
        }

        @include m(justify) {
            @include e(start) {
                @extend %igx-card-actions__start--justify !optional;
            }

            @include e(end) {
                @extend %igx-card-actions__end--justify !optional;
            }
        }
    }
}
