@use "../../../dev" as *;

// ============================================================================
// Mixins
// ============================================================================

/// Formfield radio buttons container mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: q(16);
}

/// Formfield radio buttons option label wrapper mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-label-wrapper {
    display: flex;
    flex-direction: column;
}

/// Formfield radio buttons option label mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-label {
    text-align: left;
    line-height: q(20);
    font-size: q(16);
    font-weight: 700;
}

/// Formfield radio buttons option subtext mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-subtext {
    text-align: left;
    line-height: q(20);
    font-size: q(14);
    font-weight: 400;
}

/// Formfield radio buttons option label right mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-label-right {
    font-weight: 700;
    margin-left: auto;
}

/// Formfield radio buttons option input list mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-input-list {
    display: block;
    width: 100%;
    text-align: left;
    padding: q(16) 0 0 q(40);
    line-height: q(26);
}

/// Formfield radio buttons option input list item mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-input-list-item {
    display: flex;
    align-items: center;

    &:before {
        background-color: var(--color_text_primary);
        border-radius: 0;
        content: "";
        // mask: url(/media/sites/icons/ui-chip-check.svg);
        top: auto;
        width: q(18);
        height: q(18);
        margin: 0 q(16) 0 0;
        mask-size: cover;
    }
}

/// Formfield radio buttons option mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option {
    padding: q(16);
    background-color: transparent;
    border: q(1) solid #e6e6e6;
    border-radius: q(8);
    color: #262626;
    position: relative;
    cursor: pointer;

    .formfield-radio-buttons__radio-filled-icon {
        display: none;
        width: q(18);
        height: q(18);
        border-radius: 50%;
        // background-image: url(/media/sites/icons/radio-selected.svg);
    }

    .formfield-radio-buttons__radio-open-icon {
        display: block;
        width: q(18);
        height: q(18);
        // background-image: url(/media/sites/icons/radio.svg);
    }
}

/// Formfield radio buttons option selected state mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option--selected {
    border: q(1) solid var(--color_text_primary);

    .formfield-radio-buttons__radio-filled-icon {
        display: block;
    }

    .formfield-radio-buttons__radio-open-icon {
        display: none;
    }
}

/// Formfield radio buttons option tag mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-tag {
    align-self: start;
    display: none;
    font-size: q(10);
    font-weight: 700;
    line-height: q(10);
    border: q(1) solid #b1b1b1;
    border-radius: q(16);
    padding: q(4) q(8);
    margin-left: q(10);
    color: #404040;

    &:before {
        display: inline-block;
        text-transform: uppercase;
    }
}

/// Formfield radio buttons option tag show state mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-tag--show {
    display: inline-block;
}

/// Formfield radio buttons option input wrapper mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-input-wrapper {
    position: relative;
    width: q(18);
    height: q(18);
    margin-right: q(20);
}

/// Formfield radio buttons option input top mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-input-top {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
}

/// Formfield radio buttons option label highlight mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-label-highlight {
    font-family: helveticaneue, Helvetica, Arial, Utkal, sans-serif;
    font-size: q(12);
}

/// Formfield radio buttons option badge mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-badge {
    border-radius: q(8);
    background: var(--color_accent_primary);
    color: var(--color_fill_primary);
    font-size: q(10);
    font-weight: 700;
    line-height: q(18);
    position: absolute;
    right: q(-6);
    top: q(-9);
    padding: 0 q(12);
    text-transform: uppercase;
}

/// Formfield radio buttons option input mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option-input {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0;
    width: q(18);
    height: q(18);
    margin: 0;
    border-radius: 50%;
}

/// Formfield radio buttons option hover mixin
/// @group Forms.Formfield
@mixin formfield-radio-buttons__option--hover {
    @media (min-width: q(480)) {
        &:hover {
            background-color: #e6e6e6;
        }
    }
}

// ============================================================================
// Form Field Layout Mixins
// ============================================================================

/// Form field layout with ordered elements
/// Reorders form elements: label first, help text second, input third, errors fourth
/// @group Forms.Formfield
@mixin formfield--ordered {
    display: flex;
    flex-direction: column;
}

/// Form field label element - appears first in visual order
/// @group Forms.Formfield
@mixin formfield__label--ordered {
    order: 1;
    font-size: q(12);
    font-weight: 600;
}

/// Form field help text element - appears second in visual order
/// @group Forms.Formfield
@mixin formfield__help--ordered {
    order: 2;
    margin-bottom: q(2);
    font-size: q(12);
}

/// Form field input element - appears third in visual order
/// @group Forms.Formfield
@mixin formfield__input--ordered {
    order: 3;
    margin-bottom: q(16);
}

/// Form field error element - appears fourth in visual order
/// @group Forms.Formfield
@mixin formfield__error--ordered {
    order: 4;
}

/// Form field with square image preview
/// Creates a square container that crops images to fit
/// @group Forms.Formfield
@mixin formfield__image-preview {
    position: relative;
    width: 100%;
    padding-top: 100%; // Makes it a square
    overflow: hidden;

    img {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transform: translate(-50%, -50%);
    }
}

/// Form field full-width input
/// @group Forms.Formfield
@mixin formfield__input--full-width {
    width: 100%;
}
