////
///
/// Input State Utility Classes
/// ===========================================================================
///
/// CSS classes for input state styling.
/// All functionality is defined in mixins - classes only include them.
///
/// @group Classes.BodyAtoms.Inputs
/// @author Scape Agency
/// @link https://scape.style
/// @since 0.2.10
/// @access public
///
////

// ============================================================================
// Use
// ============================================================================

@use "../../../mixins/body_atoms/inputs/input_state" as *;

// ============================================================================
// Utility Classes
// ============================================================================

.input--state--focus,
.input:focus,
input:focus,
input[type="text"]:focus,
input[type="date"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="file"]:focus,
textarea:focus,
select:focus {
    @include input--state--focus;
}

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    @include input--state--focus;
}

.input--state--disabled,
.input:disabled,
input:disabled,
input[type="text"]:disabled,
input[type="date"]:disabled,
input[type="email"]:disabled,
input[type="password"]:disabled,
input[type="tel"]:disabled,
input[type="url"]:disabled,
input[type="search"]:disabled,
input[type="number"]:disabled,
input[type="file"]:disabled,
textarea:disabled,
select:disabled {
    @include input--state--disabled;
}

// ----------------------------------------------------------------------------

.input--state--readonly,
.input[readonly],
input[readonly],
textarea[readonly],
select[readonly] {
    @include input--state--readonly;
}

.input--state--optional,
.input:optional,
input:optional,
textarea:optional,
select:optional {
    @include input--state--optional;
}

.input--state--required,
.input:required,
input:required,
textarea:required,
select:required {
    @include input--state--required;
}

.input--state--invalid,
.input:invalid,
input:invalid,
textarea:invalid,
select:invalid {
    @include input--state--invalid;
}

// ----------------------------------------------------------------------------

.input.is_success,
input.is_success,
textarea.is_success,
select.is_success {
    @include input--state--is_success;
}

.input--state--is_warning,
.input.is_warning,
input.is_warning,
textarea.is_warning,
select.is_warning {
    @include input--state--is_warning;
}

.input--state--is_error,
.input.is_error,
input.is_error,
textarea.is_error,
select.is_error {
    @include input--state--is_error;
}

.input--state--is_info,
.input.is_info,
input.is_info,
textarea.is_info,
select.is_info {
    @include input--state--is_info;
}
