// lms alerts
// This file contains "I want alerts that look like the pattern library" sass
// and should be replaced when moving to the patter library proper
// https://github.com/edx/ux-pattern-library/blob/master/pattern-library/sass/patterns/_alerts.scss

// ------------------------------
// edX Pattern Library: Utilities - Alerts
//
// About: Contains base styling for alerts.
// ----------------------------

// #CONFIG
// #UTILITIES
// #GENERAL
// #INDIVIDUAL CASES


// ----------------------------
// #CONFIG
// ----------------------------

// Overrides for other things available in the UXPL but not here
// This is super gross. Don't do this in other places if you can avoid it.
$palette-brand-accent: #2991c3;
$palette-brand-back: #cce3f0;
$palette-warning-accent: #ffc01f;
$palette-warning-back: #fff9eb;
$palette-error-accent: #cb0712;
$palette-error-back: #feeced;
$palette-success-accent: #009b00;
$palette-success-back: #ecfaec;
$palette-grey-accent: #a0a0a0;
$palette-grey-back: #d9d9d9;
$spacing-vertical-xx-small: ($baseline / 4);
$spacing-vertical-x-small: ($baseline / 2);
$spacing-vertical-small: $baseline;
$spacing-horizontal-small: ($baseline / 2);
$spacing-horizontal-base: $baseline;
$font-size-small: 14px;
$bp-screen-md: 768px !default;

// ----------------------------
// #UTILITIES
// ----------------------------
@mixin alert($shim-alert-color, $shim-alert-color-glow) {
    border: 1px solid $shim-alert-color;
    box-shadow: inset 0 0 0 4px $shim-alert-color-glow;

    .alert-icon {
        color: $white;
        background-color: $shim-alert-color;
    }
}

@mixin alert-message($width) {
    box-sizing: border-box;

    @media (min-width: $bp-screen-md) {
        @include float(left);
        width: $width;
        padding: $spacing-vertical-small;
        padding-top: 0;
        padding-bottom: 0;
    }

    :last-child {
        // keeps the message compact
        margin-bottom: 0;
    }
}

// everything below here gets added specificity pattern-library-shim
.pattern-library-shim {
    // ----------------------------
    // #GENERAL
    // ----------------------------
    &.alert {
        background-color: $white;
        border: 1px solid $palette-grey-accent;
        padding: $spacing-vertical-small $spacing-horizontal-base;
        box-shadow: inset 0 0 0 4px $palette-grey-back;
        overflow: auto;

        &.alert-slim {
            padding: $spacing-vertical-x-small;

            .alert-message {
                padding: $spacing-vertical-small $spacing-horizontal-base;
                font-size: $font-size-small;

                .copy {
                    margin-bottom: 0;
                }
            }
        }

        &.alert-tiny {
            padding: $spacing-vertical-x-small;

            .alert-message {
                padding: $spacing-vertical-x-small $spacing-horizontal-small;
                font-size: $font-size-small;

                .copy {
                    margin-bottom: 0;

                    .icon {
                        display: inline-block;
                        margin-right: $baseline;
                    }
                }
            }
        }
    }

    .alert-icon {
        // hide icons on small screens
        display: none;

        @media (min-width: $bp-screen-md) {
            @include float(left);
            display: block;

            // create a circle around the icon
            border-radius: 50%;

            // create room around the icon for the circle
            padding: $spacing-vertical-x-small;
        }
    }

    .alert-message-with-action {
        // provide room for the action to be displayed next to the alert message
        @include alert-message(70%);
    }

    .alert-message {
        @include alert-message(90%);
    }

    .alert-title {
        @extend %hd-5;
        @extend %headings-emphasized;

        @media (min-width: $bp-screen-md) {
            // shift the section up to make the alert more compact
            margin-top: - $spacing-vertical-x-small;
        }

    }

    .alert-copy {
        @extend %copy-base;

        @media (min-width: $bp-screen-md) {
            // shift the message down to be in line with the icon
            margin-top: $spacing-vertical-xx-small;
        }
    }

    .alert-copy-with-title {
        @extend %copy-base;
    }

    .alert-action {
        width: 100%;

        @media (min-width: $bp-screen-md) {
            @include float(right);
            width: inherit;
        }
    }

    // ----------------------------
    // #INDIVIDUAL CASES
    // ----------------------------

    // information-based alert
    &.alert-information {
        @include alert($palette-brand-accent, $palette-brand-back);
    }

    // warning-based alert
    &.alert-warning {
        @include alert($palette-warning-accent, $palette-warning-back);
    }

    // error-based alert
    &.alert-error {
        @include alert($palette-error-accent, $palette-error-back);
    }

    // success-based alert
    &.alert-success {
        @include alert($palette-success-accent, $palette-success-back);
    }
}
