type Props = { cancelConnection: () => void; checkPin: () => void; pinError: boolean; pinInput: string; }; const DelegateAccount = ({ cancelConnection, checkPin, pinError, pinInput, }: Props) => { const handleCancelConnection = () => cancelConnection(); /** * Auto submit the form when the pinInput is equal to the TARGET_PIN_LENGTH */ const TARGET_PIN_LENGTH = 6; const handleCheckPin = () => { if (pinInput.length === TARGET_PIN_LENGTH) { checkPin(); } else { pinError = false; } }; return ( <> <input type="checkbox" id="delegate-account-modal" defaultChecked className="modal-toggle" /> <div className="modal"> <div className="modal-box w-narrowModal relative text-center"> <div> <h3 className="mb-8 text-base"> A new device would like to connect to your account </h3> <div className="mb-5"> <input id="pin" type="text" className="input input-bordered w-full max-w-[197px] mb-2 rounded-full h-[68px] focus:outline-none font-mono text-deviceCode text-center tracking-[0.1em] font-light {pinError ? '!text-red-500 !border-red-500' : ''}" maxLength={6} value={pinInput} onKeyUp={handleCheckPin} /> <label htmlFor="pin" className="label"> {!pinError ? ( <span className="label-text-alt"> Enter the connection code from that device to approve this connection. </span> ) : ( <span className="label-text-alt text-error"> Entered pin does not match a pin from a known device. </span> )} </label> </div> <div> <button className="btn btn-outline w-full" onClick={handleCancelConnection} > Cancel Request </button> </div> </div> </div> </div> </> ); }; export default DelegateAccount;