toggle-corp/react-store

View on GitHub
components/Input/TimeInput/styles.scss

Summary

Maintainability
Test Coverage
@import '../../../stylesheets/utils';
@import '../../../stylesheets/input-base';
@import '../../../stylesheets/input-border';

:root {
    --width-time-input: 120px;
    --width-input-spinner: 16px;
}

.time-input {
    min-width: var(--width-time-input);

    .input {
        @extend %input-border;
        display: flex;
        align-items: center;

        .units {
            display: flex;
            flex-grow: 1;

            .unit {
                @extend %input-base;
                width: calc(2ch + var(--width-input-spinner));
                font-family: var(--font-family-monospace);
            }

            .separator {
                display: flex;
                align-items: center;
                flex-shrink: 0;
                padding-right: var(--spacing-small);
                font-family: var(--font-family-monospace);
            }
        }

        .action-buttons {
            @include transition-medium;
            display: inline;
            flex-shrink: 0;
            opacity: 0;
        }

        &:hover {
            .action-buttons {
                opacity: 1;
            }
        }
    }

    &:not(.disabled) {
        &.focused {
            .input {
                border-bottom-color: var(--color-accent);
            }
        }

        &.invalid {
            .input {
                border-bottom-color: var(--color-warning);
            }
        }

        &.error {
            .input {
                border-bottom-color: var(--color-danger);
            }
        }
    }


    &.disabled {
        .input {
            .units {
                .unit {
                    color: var(--color-text-disabled);
                }
            }
        }
    }

    &.readOnly,
    &.disabled {
        .input {
            border-bottom-color: var(--color-separator);
        }

        &:hover {
            .action-buttons {
                opacity: 0;
                pointer-events: none;
            }
        }

        .label {
            color: var(--color-text-disabled);
        }
    }
}