// =============================================================================
// 31-modules / carousel / mixins
// =============================================================================

@use "sass:map";
@use "./carousel.config" as config;
@use "../../01-core/external" as *;

@mixin ss-carousel {
    position: relative;
    overflow: hidden;
    width: 100%;
}

@mixin ss-carousel-track {
    display: flex;
    transition: transform #{map.get(config.$carousel-config, "transition")};
    will-change: transform;
}

@mixin ss-carousel-item {
    flex: 0 0 100%;
    min-width: 0;
    position: relative;

    > img,
    > picture > img {
        display: block;
        width: 100%;
        height: auto;
        object-fit: cover;
    }
}

@mixin ss-carousel-indicators {
    position: absolute;
    bottom: q(12);
    left: 0;
    right: 0;
    display: flex;
    justify-content: center;
    gap: map.get(config.$carousel-config, "indicator-gap");
    list-style: none;
    margin: 0;
    padding: 0;
}

@mixin ss-carousel-indicator {
    width: map.get(config.$carousel-config, "indicator-size");
    height: map.get(config.$carousel-config, "indicator-size");
    border-radius: 50%;
    background-color: map.get(config.$carousel-config, "indicator-color");
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: background-color 0.15s ease;

    &.is-active,
    &.active {
        background-color: map.get(
            config.$carousel-config,
            "indicator-color-active"
        );
    }
}

@mixin ss-carousel-control {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: map.get(config.$carousel-config, "control-size");
    height: map.get(config.$carousel-config, "control-size");
    background-color: map.get(config.$carousel-config, "control-bg");
    color: map.get(config.$carousel-config, "control-color");
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
