import * as React from "react"; import { P } from "~/components/system/components/Typography"; import { Input } from "~/components/system"; import { css } from "@emotion/react"; const STYLES_SMALL_TEXT = (theme) => css` font-size: ${theme.typescale.lvlN1}; line-height: 15.6px; `; const STYLES_PASSWORD_VALIDATIONS = (theme) => css` margin-top: 16px; border: 1px solid ${theme.system.white}; background-color: white; @supports ((-webkit-backdrop-filter: blur(25px)) or (backdrop-filter: blur(25px))) { background-color: ${theme.system.bgBlurWhiteTRN}; backdrop-filter: blur(75px); } padding: 8px 12px; border-radius: 8px; `; const STYLES_PASSWORD_VALIDATION = css` display: flex; align-items: center; & > * + * { margin-left: 8px; } `; const STYLES_CIRCLE = (theme) => css` height: 8px; width: 8px; border-radius: 50%; border: 1.25px solid ${theme.system.grayLight2}; `; const STYLES_CIRCLE_SUCCESS = (theme) => css` border: 1.25px solid ${theme.system.green}; `; const STYLES_INPUT = (theme) => css` background-color: rgba(242, 242, 247, 0.7); box-shadow: ${theme.shadow.large}; border-radius: 8px; &::placeholder { color: ${theme.system.textGrayDark}; } `; const STYLES_INPUT_ERROR = (theme) => css` box-shadow: 0 0 0 1px ${theme.system.red}; `; const STYLES_INPUT_SUCCESS = (theme) => css` box-shadow: 0 0 0 1px ${theme.system.green}; `; const PasswordValidations = ({ validations, full, color }) => { return (

Passwords should

Be at least 8 characters long

Contain both uppercase and lowercase letters

Contain at least 1 number

Contain at least 1 symbol

); }; export default function Field({ touched, error, success, validations, errorAs, containerAs, full, color = "transparent", ...props }) { const showError = touched && error; const showSuccess = touched && !error; const STYLES_STATUS = React.useMemo(() => { if (showError) return STYLES_INPUT_ERROR; if (showSuccess) return STYLES_INPUT_SUCCESS; }, [touched, error]); const ContainerComponent = containerAs || "div"; const ErrorWrapper = errorAs || "div"; return (
{props.name === "password" && validations && ( )} {props.name !== "password" && (showError || showSuccess) && (

{(showError && error) || (showSuccess && success)}

)}
); }