toggle-corp/react-store

View on GitHub
components/View/Toast/styles.scss

Summary

Maintainability
Test Coverage
@import '../../../stylesheets/utils';

:root {
    --width-toast-medium: 480px;
    --z-index-toast: 11111;
}

.toast {
    position: fixed;
    bottom: 2%;
    left: 50%;
    transform: translate(-50%, 100%);
    opacity: 0;
    z-index: var(--z-index-toast);
    background-color: var(--color-foreground);
    width: var(--width-toast-medium);
    height: auto;
    overflow: hidden;
    color: var(--color-text-on-foreground);
    pointer-events: none;
    @include transition-slow;

    .container {
        .header {
            display: flex;
            align-items: flex-start;
            padding: var(--spacing-medium) var(--spacing-large);

            .heading {
                flex-grow: 1;
            }

            .close-button {
                position: absolute;
                top: var(--spacing-small);
                right: var(--spacing-medium);
                flex-shrink: 0;
                padding: 0;
                color: var(--color-text-label);
                font-size: var(--font-size-medium-alt);
            }
        }

        .main-content {
            display: flex;
            padding: var(--spacing-large) var(--spacing-medium);

            .icon {
                align-self: flex-start;
                flex-shrink: 0;
                padding: 0 var(--spacing-medium);
                font-size: var(--font-size-extra-large);
            }

            .message {
                align-self: center;
                flex-grow: 1;
                padding: 0 var(--spacing-medium);
            }

            .action-buttons {
                align-self: flex-end;
                flex-shrink: 0;
            }
        }
    }

    &.shown {
        transform: translate(-50%, 0%);
        opacity: 1;
        box-shadow: 0 (0 - var(--spacing-extra-small)) var(--radius-blur-medium)  var(--radius-spread-medium) var(--color-shadow-medium);
        pointer-events: all;
    }

    &.success {
        border: var(--width-separator-thin) solid var(--color-success);

        .container {
            .main-content {
                .icon {
                    color: var(--color-success);
                }
            }
        }
    }

    &.info {
        border: var(--width-separator-thin) solid var(--color-info);

        .container {
            .main-content {
                .icon {
                    color: var(--color-info);
                }
            }
        }
    }

    &.warning {
        box-shadow: 0 0 var(--spacing-small) var(--color-warning);

        .container {
            .main-content {
                .icon {
                    color: var(--color-warning);
                }
            }
        }
    }

    &.error {
        border: var(--width-separator-thin) solid var(--color-danger);

        .container {
            .main-content {
                .icon {
                    color: var(--color-danger);
                }
            }
        }
    }
}