@mixin border-state($parent, $child, $error-color: $error-color, $focus-color: #428bca) {
    .#{$parent}:has(input.ng-invalid.ng-dirty),
    #{$parent}:has(input.ng-invalid.ng-dirty) {
        .#{$child} {
            border: 1px solid #{$error-color};
        }
    }

    .#{$parent}.ng-invalid.ng-dirty,
    #{$parent}.ng-invalid.ng-dirty {
        .#{$child} {
            border: 1px solid #{$error-color};
        }
    }

    .#{$parent}:has(input:focus),
    #{$parent}:has(input:focus) {
        .#{$child} {
            border: 1px solid #{$focus-color};
        }
    }
}
