From d239070adbe60e8a3a84c8cbe69107b7ee6648d6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sun, 19 Jul 2015 03:19:37 +0100 Subject: [PATCH] implement login --- skins/base/css/molecules/ServerConfig.css | 31 ++++++++ skins/base/css/templates/Login.css | 79 ++++++++++++++++++++- skins/base/img/logo.png | Bin 0 -> 14893 bytes skins/base/views/molecules/ServerConfig.js | 17 ++--- skins/base/views/templates/Login.js | 31 ++++---- skins/base/views/templates/Register.js | 11 ++- 6 files changed, 139 insertions(+), 30 deletions(-) create mode 100644 skins/base/css/molecules/ServerConfig.css create mode 100644 skins/base/img/logo.png diff --git a/skins/base/css/molecules/ServerConfig.css b/skins/base/css/molecules/ServerConfig.css new file mode 100644 index 00000000..db0572c8 --- /dev/null +++ b/skins/base/css/molecules/ServerConfig.css @@ -0,0 +1,31 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_ServerConfig { + margin-top: 7px; +} + +.mx_ServerConfig .mx_Login_field { + margin-top: 4px; + margin-bottom: 5px; +} + +.mx_ServerConfig_help:link { + opacity: 0.8; + font-size: 14px; + font-weight: 300; + color: #4a4a4a; +} \ No newline at end of file diff --git a/skins/base/css/templates/Login.css b/skins/base/css/templates/Login.css index 7dbcde1c..b8cab4a4 100644 --- a/skins/base/css/templates/Login.css +++ b/skins/base/css/templates/Login.css @@ -15,8 +15,81 @@ limitations under the License. */ .mx_Login { - width: 600px; - height: 350px; - position: relative; + width: 100%; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; +} + +.mx_Login h2 { + color: #4a4a4a; + font-weight: 300; + margin-top: 32px; + margin-bottom: 20px; +} + +.mx_Login_box { + width: 300px; +} + +.mx_Login_logo { + text-align: center; +} + +.mx_Login_field { + width: 100%; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 14px; + padding: 9px; + margin-bottom: 14px; +} + +.mx_Login_submit { + margin-top: 35px; + margin-bottom: 24px; + width: 100%; + border-radius: 40px; + height: 40px; + border: 0px; + background-color: #76cfa6; + font-size: 16px; + color: #fff; +} + +.mx_Login_label { + font-size: 14px; + opacity: 0.8; +} + +.mx_Login_advanced_checkbox { + margin-right: 10px; +} + +.mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 14px; + opacity: 0.8; +} + +.mx_Login_error { + color: #ff2020; + font-weight: bold; + text-align: center; + margin-bottom: 24px; +} + +.mx_Login_create:link { + color: #4a4a4a; } diff --git a/skins/base/img/logo.png b/skins/base/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7cea081a8f452453d0f471a4510dd31d9af95d6c GIT binary patch literal 14893 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 literal 0 HcmV?d00001 diff --git a/skins/base/views/molecules/ServerConfig.js b/skins/base/views/molecules/ServerConfig.js index e06536c5..c533cf94 100644 --- a/skins/base/views/molecules/ServerConfig.js +++ b/skins/base/views/molecules/ServerConfig.js @@ -26,17 +26,12 @@ module.exports = React.createClass({ render: function() { return ( - <div className="HomeServerTextBox"> - <table className="serverConfig"> - <tr> - <td>Home Server URL</td> - <td><input type="text" value={this.state.hs_url} onChange={this.hsChanged} /></td> - </tr> - <tr> - <td>Identity Server URL</td> - <td><input type="text" value={this.state.is_url} onChange={this.isChanged} /></td> - </tr> - </table> + <div className="mx_ServerConfig"> + <label className="mx_Login_label mx_ServerConfig_hslabel" htmlFor="hsurl">Home server URL</label> + <input className="mx_Login_field" id="hsurl" type="text" value={this.state.hs_url} onChange={this.hsChanged} /> + <label className="mx_Login_label mx_ServerConfig_islabel" htmlFor="isurl">Identity server URL</label> + <input className="mx_Login_field" type="text" value={this.state.is_url} onChange={this.isChanged} /> + <a className="mx_ServerConfig_help" href="#">What does this mean?</a> </div> ); } diff --git a/skins/base/views/templates/Login.js b/skins/base/views/templates/Login.js index 0fd64ce5..ee7273b8 100644 --- a/skins/base/views/templates/Login.js +++ b/skins/base/views/templates/Login.js @@ -111,13 +111,13 @@ module.exports = React.createClass({ } return ( <div> - <input type="checkbox" value={this.state.serverConfigVisible} onChange={this.onServerConfigVisibleChange} /> - Use custom server options (advanced) + <input className="mx_Login_advanced_checkbox" id="advanced" type="checkbox" value={this.state.serverConfigVisible} onChange={this.onServerConfigVisibleChange} /> + <label className="mx_Login_label" htmlFor="advanced">Use custom server options (advanced)</label> <div style={serverConfigStyle}> - <ServerConfig ref="serverConfig" - defaultHsUrl={this.customHsUrl} defaultIsUrl={this.customIsUrl} - onHsUrlChanged={this.onHsUrlChanged} - /> + <ServerConfig ref="serverConfig" + defaultHsUrl={this.customHsUrl} defaultIsUrl={this.customIsUrl} + onHsUrlChanged={this.onHsUrlChanged} + /> </div> </div> ); @@ -126,10 +126,10 @@ module.exports = React.createClass({ return ( <div> <form onSubmit={this.onUserPassEntered}> - <input ref="user" type="text" placeholder="username" /><br /> - <input ref="pass" type="password" placeholder="password" /><br /> + <input className="mx_Login_field" ref="user" type="text" placeholder="Email or user name" /><br /> + <input className="mx_Login_field" ref="pass" type="password" placeholder="Password" /><br /> {this.componentForStep('choose_hs')} - <input type="submit" value="Log in" /> + <input className="mx_Login_submit" type="submit" value="Log in" /> </form> </div> ); @@ -144,10 +144,10 @@ module.exports = React.createClass({ } else { return ( <div> - <h1>Please log in:</h1> + <h2>Sign in</h2> {this.componentForStep(this.state.step)} - <div className="error">{this.state.errorText}</div> - <a onClick={this.showRegister} href="#">Create a new account</a> + <div className="mx_Login_error">{this.state.errorText}</div> + <a className="mx_Login_create" onClick={this.showRegister} href="#">Create a new account</a> </div> ); } @@ -156,7 +156,12 @@ module.exports = React.createClass({ render: function() { return ( <div className="mx_Login"> - {this.loginContent()} + <div className="mx_Login_box"> + <div className="mx_Login_logo"> + <img src="/img/logo.png" width="249" height="76" alt="vector"/> + </div> + {this.loginContent()} + </div> </div> ); } diff --git a/skins/base/views/templates/Register.js b/skins/base/views/templates/Register.js index 23367378..866f777b 100644 --- a/skins/base/views/templates/Register.js +++ b/skins/base/views/templates/Register.js @@ -129,7 +129,7 @@ module.exports = React.createClass({ case 'stage_m.login.recaptcha': return ( <div ref="recaptchaContainer"> - This Home Server would like to make sure you're not a robot + This Home Server would like to make sure you are not a robot <div id="mx_recaptcha"></div> </div> ); @@ -180,8 +180,13 @@ module.exports = React.createClass({ render: function() { return ( - <div className="mx_Register"> - {this.registerContent()} + <div className="mx_Login"> + <div className="mx_Login_box"> + <div className="mx_Login_logo"> + <img src="/img/logo.png" width="249" height="76" alt="vector"/> + </div> + {this.registerContent()} + </div> </div> ); }