@keyframes skeleton-rectangle-rtl {
    100% {
        background-position: 0% 0%;
    }

    50% {
        background-position: 50% 50%;
    }

    0% {
        background-position: 100% 100%;
    }
}

@mixin skeleton-loader($angleDeg: 90) {
    animation: skeleton-rectangle-rtl 2s linear infinite;
    animation-timing-function: linear;
    background-image: linear-gradient(
        ($angleDeg) + deg,
        var(--loading-patterns-skeleton-base) 30%,
        var(--loading-patterns-skeleton-shine) 50%,
        var(--loading-patterns-skeleton-base) 70%
    );
    background-color: var(--loading-patterns-skeleton-base);
    background-size: 400%;
}

@mixin skeleton-loader-dark($angleDeg: 90) {
    @include skeleton-loader($angleDeg);

    background-color: var(--gray-500);
    background-image: linear-gradient(
        ($angleDeg) + deg,
        var(--gray-500) 30%,
        var(--gray-800) 50%,
        var(--gray-500) 70%
    );
}

@mixin skeleton-loader-element($width: 100%, $height: 20px) {
    height: $height;
    overflow: hidden;
    width: $width;

    @include skeleton-loader;
}

@mixin skeleton-loader-element-square($size: 40px) {
    border-radius: 3px;

    @include skeleton-loader-element($size, $size);
    @include skeleton-loader(135);
}

@mixin skeleton-loader-vertical() {
    display: flex;
    flex-direction: column;
}

@mixin skeleton-loader-horizontal() {
    align-items: center;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
}

.SkeletonLoader {
    width: 100%;

    @include skeleton-loader-vertical;

    &-item {
        flex: 1;
    }

    &-horizontal {
        @include skeleton-loader-horizontal;

        .SkeletonLoader-item:not(:first-child) {
            margin-left: 4px;
        }
    }

    &-vertical {
        @include skeleton-loader-vertical;

        .SkeletonLoader-item:not(:first-child) {
            margin-top: 4px;
        }
    }

    &-line {
        border-radius: 3px;
        @include skeleton-loader-element;
    }

    &-square {
        @include skeleton-loader-element-square;
    }

    &-circle {
        @include skeleton-loader-element-square(32px);

        border-radius: 50%;
        width: 32px;
    }

    &-rounded {
        @include skeleton-loader-element(100px, 24px);

        border-radius: 12px;
    }

    &-columnChart {
        mask-image: url('data:image/svg+xml,<svg width="81" height="100" viewBox="0 0 81 100" xmlns="http://www.w3.org/2000/svg"><path d="M33.3027 75.7576C31.6459 75.7576 30.3027 74.4144 30.3027 72.7576L30.3027 3C30.3027 1.34315 31.6459 6.9321e-07 33.3027 6.20799e-07L47.5048 0C49.1616 -7.24249e-08 50.5048 1.34315 50.5048 3V72.7576C50.5048 74.4144 49.1616 75.7576 47.5048 75.7576H33.3027ZM0 73.1425C0 74.7994 1.34315 76.1425 3 76.1425H17.202C18.8589 76.1425 20.202 74.7994 20.202 73.1425L20.202 53.89C20.202 52.2332 18.8589 50.89 17.202 50.89H3C1.34314 50.89 0 52.2332 0 53.89V73.1425ZM3 85.8584C1.34315 85.8584 0 87.2015 0 88.8584V96.9998C0 98.6566 1.34315 99.9998 3 99.9998H77.8081C79.4649 99.9998 80.8081 98.6566 80.8081 96.9998V88.8584C80.8081 87.2015 79.4649 85.8584 77.8081 85.8584H3ZM60.6064 73.1423C60.6064 74.7992 61.9496 76.1423 63.6064 76.1423H77.8085C79.4653 76.1423 80.8085 74.7992 80.8085 73.1423V28.6373C80.8085 26.9804 79.4653 25.6373 77.8085 25.6373H63.6064C61.9496 25.6373 60.6064 26.9804 60.6064 28.6373L60.6064 73.1423Z" fill="black"/></svg>');
        mask-size: 100% 100%;
        aspect-ratio: 81/100;

        @include skeleton-loader;
    }

    &-barChart {
        mask-image: url('data:image/svg+xml,<svg width="125" height="80" viewBox="0 0 125 80" xmlns="http://www.w3.org/2000/svg"><path d="M3 0C1.34315 0 0 1.34315 0 3V77C0 78.6569 1.34315 80 3 80H12C13.6569 80 15 78.6569 15 77V3C15 1.34315 13.6569 0 12 0H3ZM28 0C26.3431 0 25 1.34315 25 3V17C25 18.6569 26.3431 20 28 20H122C123.657 20 125 18.6569 125 17V3C125 1.34315 123.657 0 122 0H28ZM28 30C26.3431 30 25 31.3431 25 33V47C25 48.6569 26.3431 50 28 50H97C98.6569 50 100 48.6569 100 47V33C100 31.3431 98.6569 30 97 30H28ZM25 63C25 61.3431 26.3431 60 28 60H72C73.6569 60 75 61.3431 75 63V77C75 78.6569 73.6569 80 72 80H28C26.3431 80 25 78.6569 25 77V63Z" fill="blak"/></svg>');
        mask-size: 100% 100%;
        aspect-ratio: 125/80;

        @include skeleton-loader;
    }

    &-pieChart {
        mask-image: url('data:image/svg+xml,<svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="M66.7304 75.2985C61.9265 78.4826 56.1814 80.3449 50 80.3449C33.2402 80.3449 19.6078 66.6798 19.6078 49.8796C19.6078 34.7551 30.6618 22.1709 45.098 19.8172V0C19.8186 2.47654 0 23.9005 0 49.8796C0 77.5146 22.4314 100 50 100C61.3775 100 71.8726 96.1722 80.2843 89.7302L66.7304 75.2936V75.2985ZM54.9023 19.8172C63.5935 21.2373 71.0543 26.3623 75.618 33.5217L93.8729 25.8562C86.118 11.68 71.7161 1.64611 54.9023 0V19.8172ZM80.3924 49.8796C80.3924 47.3539 80.0787 44.897 79.4954 42.5482V42.5433L97.716 34.8926C99.2012 39.6245 100 44.6562 100 49.8746C100 62.5767 95.2601 74.1879 87.4611 83.0327L73.9316 68.6256C77.9709 63.4514 80.3924 56.9455 80.3924 49.8796Z" fill="black"/></svg>');
        mask-size: 100% 100%;
        aspect-ratio: 100/100;

        @include skeleton-loader;
    }

    &-lineChart {
        mask-image: url('data:image/svg+xml,<svg width="120" height="91" viewBox="0 0 120 91" xmlns="http://www.w3.org/2000/svg"><path d="M57.585 45.9416C56.7067 47.2601 54.9546 47.6684 53.5839 46.874L31.4792 34.0626C30.5387 33.5175 29.3769 33.5238 28.4424 34.0791L1.46785 50.107C0.557815 50.6477 0.000111939 51.628 0.000294559 52.6866L0.0018696 61.8163C0.00227088 64.1423 2.53504 65.5831 4.5346 64.3947L28.5306 50.133C29.4652 49.5776 30.6271 49.5712 31.5677 50.1164L57.8961 65.3762C59.2668 66.1706 61.019 65.7623 61.8972 64.4438L87.1494 26.5337C88.3277 24.7647 90.9212 24.7484 92.1218 26.5023L114.524 59.2312C116.19 61.6649 120 60.4859 120 57.5366V43.6828C120 43.0786 119.818 42.4885 119.477 41.9897L91.9723 1.75618C90.7724 0.000881135 88.1778 0.0164498 86.999 1.78602L57.585 45.9416ZM3 76.4614C1.34315 76.4614 0 77.8046 0 79.4614V87.3076C0 88.9644 1.34314 90.3076 3 90.3076H117C118.657 90.3076 120 88.9644 120 87.3076V79.4614C120 77.8046 118.657 76.4614 117 76.4614H3Z" fill="black"/></svg>');
        mask-size: 100% 100%;
        aspect-ratio: 120/91;

        @include skeleton-loader;
    }

    &-unifiedChart {
        mask-image: url('data:image/svg+xml,<svg width="130" height="87" viewBox="0 0 130 87" xmlns="http://www.w3.org/2000/svg"><path d="M107.813 54.043C105.37 55.3816 104.467 58.427 105.805 60.87L105.738 60.8365C107.077 63.2795 110.122 64.1831 112.565 62.8444C124.446 56.3521 131.674 42.9994 129.666 28.8101C127.123 10.5045 110.189 -2.24587 91.8837 0.330969C86.9977 1.00028 82.5468 2.70702 78.6313 5.18346C76.2888 6.65594 75.6195 9.76823 77.0919 12.1108C78.5644 14.4534 81.6767 15.1227 84.0193 13.6502C86.7635 11.9435 89.8757 10.7387 93.2892 10.2702C106.106 8.46307 117.953 17.3983 119.76 30.2156C121.166 40.1549 116.113 49.4917 107.813 54.043ZM69.0929 3.64247C70.8665 5.78426 70.5653 8.93001 68.457 10.7037L48.3777 27.4364C46.671 28.8754 44.228 28.9758 42.3874 27.7711L25.4204 16.4597L8.2192 30.7829C6.07742 32.5566 2.93166 32.2554 1.15799 30.1471C-0.615674 28.0053 -0.314485 24.8596 1.79384 23.0859L21.8731 6.35317C23.5798 4.91416 26.0228 4.81376 27.8634 6.01852L44.8304 17.3298L62.0317 3.00663C64.1734 1.23296 67.3192 1.53415 69.0929 3.64247ZM69.5283 27.6387C69.5283 25.1288 71.5697 23.0874 74.0796 23.0874H87.7001C90.21 23.0874 92.2514 25.1288 92.2514 27.6387V63.9822C92.2514 66.4921 90.21 68.5335 87.7001 68.5335H74.0796C71.5697 68.5335 69.5283 66.4921 69.5283 63.9822V27.6387ZM42.2886 36.707C39.7787 36.707 37.7373 38.7484 37.7373 41.2583V63.9814C37.7373 66.4913 39.7787 68.5327 42.2886 68.5327H55.909C58.4189 68.5327 60.4603 66.4913 60.4603 63.9814V41.2583C60.4603 38.7484 58.4189 36.707 55.909 36.707H42.2886ZM12.6039 77.5679C9.02308 77.5679 6.11159 79.6093 6.11159 82.1192H6.07812C6.07812 84.6291 8.98962 86.6705 12.5704 86.6705H90.3441C93.9249 86.6705 96.8364 84.6291 96.8364 82.1192C96.8364 79.6093 93.9249 77.5679 90.3441 77.5679H12.6039ZM10.4956 47.6504C7.98573 47.6504 5.94434 48.5874 5.94434 49.7253V66.4245C5.94434 67.5623 7.98573 68.4994 10.4956 68.4994H24.1161C26.626 68.4994 28.6674 67.5623 28.6674 66.4245V49.7253C28.6674 48.5874 26.626 47.6504 24.1161 47.6504H10.4956Z" fill="black"/></svg>');
        mask-size: 100% 100%;
        aspect-ratio: 130/87;

        @include skeleton-loader;
    }
}
