react-reusable-elements
Version:
React reusble components
98 lines (78 loc) • 1.69 kB
CSS
.input_container {
text-align: start;
}
.input_container span {
color: red;
}
.input_wrapper {
--focus-color: var(--brand-color);
--padding: 0.75rem;
position: relative;
display: flex;
align-items: center;
}
.inputField {
padding: var(--padding);
border: 2px solid gray;
outline: none;
border-radius: 6px;
transition: all 0.2s ease-in;
width: 100%;
}
.inputFieldLabel {
position: absolute;
background-color: white;
color: gray;
left: var(--padding);
padding: 0 4px;
transition: all 0.2s ease-in;
cursor: text;
}
.inputField::placeholder {
transition: all 0.2s ease-in;
}
.hide_placeholder:not(:focus)::placeholder {
opacity: 0;
}
.inputField:is(:focus) {
border: 2px solid var(--focus-color);
}
.inputField:is(:focus)+.inputFieldLabel {
color: var(--focus-color);
}
.inputField:is(:focus, :not(:placeholder-shown)) {}
.inputField:is(:focus, :not(:placeholder-shown))+.inputFieldLabel {
transform: translatey(calc(-1 * var(--padding) - 12px)) translatex(-8px);
font-size: 14px;
}
.error .inputField:is(:not(:focus)) {
border: 2px solid red;
}
.error .inputFieldLabel {
color: red;
}
.errorMessage {
color: red;
font-size: 0.75rem;
height: 1rem;
transition: opacity 0.75s ease;
}
.hideErrorMessage {
opacity: 0;
}
.showErrorMessage {
opacity: 1;
height: unset;
}
.heightZero {
height: 0;
}
.borderlessInput {
border: none;
}
.borderlessInput:focus {
border: none;
}
.error .inputField:is(:not(:focus)) {
border: none;
}