diff options
author | Asaad Mahmood <Unknowngi@live.com> | 2015-07-28 01:08:03 +0500 |
---|---|---|
committer | JoramWilander <jwawilander@gmail.com> | 2015-07-28 11:31:15 -0400 |
commit | 120ca016626bcb3e95090280b7a1d02c6588b6a8 (patch) | |
tree | 46029ade58312fe5fbc335703ab2408da6b9f23a /web | |
parent | 2602f3b49edd92cc292a49cca26377f19f1ccf4b (diff) | |
download | chat-120ca016626bcb3e95090280b7a1d02c6588b6a8.tar.gz chat-120ca016626bcb3e95090280b7a1d02c6588b6a8.tar.bz2 chat-120ca016626bcb3e95090280b7a1d02c6588b6a8.zip |
Signup Ui changes
Diffstat (limited to 'web')
-rw-r--r-- | web/react/components/login.jsx | 14 | ||||
-rw-r--r-- | web/react/components/signup_team.jsx | 4 | ||||
-rw-r--r-- | web/react/components/signup_team_complete.jsx | 109 | ||||
-rw-r--r-- | web/react/components/signup_user_complete.jsx | 51 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_responsive.scss | 6 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_signup.scss | 151 | ||||
-rw-r--r-- | web/templates/signup_team.html | 4 | ||||
-rw-r--r-- | web/templates/signup_user_complete.html | 2 |
8 files changed, 227 insertions, 114 deletions
diff --git a/web/react/components/login.jsx b/web/react/components/login.jsx index 05918650b..45b558dca 100644 --- a/web/react/components/login.jsx +++ b/web/react/components/login.jsx @@ -103,13 +103,9 @@ module.exports = React.createClass({ return ( <div className="signup-team__container"> - <div> - <span className="signup-team__name">{ teamDisplayName }</span> - <br/> - <span className="signup-team__subdomain">/{ teamName }/</span> - <br/> - <br/> - </div> + <h5 className="margin--less">Sign in to:</h5> + <h2 className="signup-team__name">{ teamDisplayName }</h2> + <h2 className="signup-team__subdomain">on { teamName }</h2> <form onSubmit={this.handleSubmit}> <div className={server_error ? 'form-group has-error' : 'form-group'}> { server_error } @@ -124,13 +120,13 @@ module.exports = React.createClass({ <button type="submit" className="btn btn-primary">Sign in</button> </div> { login_message } - <div className="form-group form-group--small"> + <div className="form-group margin--extra form-group--small"> <span><a href="/find_team">{"Find other " + strings.TeamPlural}</a></span> </div> <div className="form-group"> <a href={"/" + teamName + "/reset_password"}>I forgot my password</a> </div> - <div className="external-link"> + <div className="margin--extra"> <span>{"Want to create your own " + strings.Team + "?"} <a href="/" className="signup-team-login">Sign up now</a></span> </div> </form> diff --git a/web/react/components/signup_team.jsx b/web/react/components/signup_team.jsx index 362f79163..6fde7f8b5 100644 --- a/web/react/components/signup_team.jsx +++ b/web/react/components/signup_team.jsx @@ -70,9 +70,9 @@ module.exports = React.createClass({ </div> { server_error } <div className="form-group"> - <button className="btn btn-md btn-primary" type="submit">Sign up for Free</button> + <button className="btn btn-md btn-primary" type="submit">Sign up</button> </div> - <div className="form-group form-group--small"> + <div className="form-group margin--extra-2x"> <span><a href="/find_team">{"Find my " + strings.Team}</a></span> </div> </form> diff --git a/web/react/components/signup_team_complete.jsx b/web/react/components/signup_team_complete.jsx index 3e8a57308..ee85342ce 100644 --- a/web/react/components/signup_team_complete.jsx +++ b/web/react/components/signup_team_complete.jsx @@ -80,19 +80,25 @@ WelcomePage = React.createClass({ <div> <p> <img className="signup-team-logo" src="/static/images/logo.png" /> - <h2>Welcome!</h2> - <h3>{"Let's set up your " + strings.Team + " on " + config.SiteName + "."}</h3> + <h3 className="sub-heading">Welcome to:</h3> + <h1 className="margin--top-none">{config.SiteName}</h1> </p> + <p className="margin--less">Let's setup your new team</p> <p> Please confirm your email address:<br /> - <span className="black">{ this.props.state.team.email }</span><br /> + <div className="inner__content"> + <div className="block--gray">{ this.props.state.team.email }</div> + </div> + </p> + <p className="margin--extra color--light"> + Your account will administer the new team site. <br /> + You can add other administrators later. </p> <div className="form-group"> <button className="btn-primary btn form-group" type="submit" onClick={this.submitNext}><i className="glyphicon glyphicon-ok"></i>Yes, this address is correct</button> { storage_error } </div> <hr /> - <p>If this is not correct, you can switch to a different email. We'll send you a new invite right away.</p> <div className={ this.state.use_diff ? "" : "hidden" }> <div className={ email_error ? "form-group has-error" : "form-group" }> <div className="row"> @@ -105,7 +111,7 @@ WelcomePage = React.createClass({ { server_error } <button className="btn btn-md btn-primary" type="button" onClick={this.handleDiffSubmit} type="submit">Use this instead</button> </div> - <button type="button" onClick={this.handleDiffEmail} className={ this.state.use_diff ? "btn-default btn hidden" : "btn-default btn" }>Use a different address</button> + <a href="#" onClick={this.handleDiffEmail} className={ this.state.use_diff ? "hidden" : "" }>Use a different email</a> </div> ); } @@ -158,9 +164,11 @@ TeamDisplayNamePage = React.createClass({ </div> { name_error } </div> - <p>{"Your " + strings.Team + " name shows in menus and headings. It may include the name of your " + strings.Company + ", but it's not required."}</p> - <button type="button" className="btn btn-default" onClick={this.submitBack}><i className="glyphicon glyphicon-chevron-left"></i> Back</button> - <button type="submit" className="btn-primary btn" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> + <div>{"Name your " + strings.Team + " in any language. Your " + strings.Team + " name shows in menus and headings."}</div> + <button type="submit" className="btn btn-primary margin--extra" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> + <div className="margin--extra"> + <a href="#" onClick={this.submitBack}>Back to previous step</a> + </div> </form> </div> ); @@ -255,10 +263,16 @@ TeamURLPage = React.createClass({ </div> { name_error } </div> - <p className="black">{"Pick something short and memorable for your " + strings.Team + "'s web address."}</p> - <p>{"Your " + strings.Team + " URL can only contain lowercase letters, numbers and dashes. Also, it needs to start with a letter and cannot end in a dash."}</p> - <button type="button" className="btn btn-default" onClick={this.submitBack}><i className="glyphicon glyphicon-chevron-left"></i> Back</button> - <button type="submit" className="btn-primary btn" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> + <p>{"Choose the web address of your new " + strings.Team + ":"}</p> + <ul className="color--light"> + <li>Short and memorable is best</li> + <li>Use lower case letters, numbers and dashes</li> + <li>Must start with a letter and can't end in a dash</li> + </ul> + <button type="submit" className="btn btn-primary margin--extra" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> + <div className="margin--extra"> + <a href="#" onClick={this.submitBack}>Back to previous step</a> + </div> </form> </div> ); @@ -461,14 +475,16 @@ SendInivtesPage = React.createClass({ return ( <div> <form> - <img className="signup-team-logo" src="/static/images/logo.png" /> - <h2>Send Invitations</h2> - { emails } - <div className="form-group"><button type="button" className="btn-default btn" onClick={this.submitAddInvite}>Add Invitation</button></div> - <div className="form btn-default-group"><button type="button" className="btn btn-default" onClick={this.submitBack}><i className="glyphicon glyphicon-chevron-left"></i> Back</button> <button type="submit" className="btn-primary btn" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button></div> - </form> - <p>{"If you'd prefer, you can send invitations after you finish setting up the "+ strings.Team + "."}</p> - <div><a href="#" onClick={this.submitSkip}>Skip this step</a></div> + <img className="signup-team-logo" src="/static/images/logo.png" /> + <h2>Invite Team Members</h2> + { emails } + <div className="form-group text-right"><a href="#" onClick={this.submitAddInvite}>Add Invitation</a></div> + <div className="form-group"><button type="submit" className="btn-primary btn" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button></div> + </form> + <p className="color--light">if you prefer, you can invite team members later<br /> and <a href="#" onClick={this.submitSkip}>skip this step</a> for now.</p> + <div className="margin--extra"> + <a href="#" onClick={this.submitBack}>Back to previous step</a> + </div> </div> ); } @@ -512,19 +528,24 @@ UsernamePage = React.createClass({ <div> <form> <img className="signup-team-logo" src="/static/images/logo.png" /> - <h2>Choose a username</h2> - <div className={ name_error ? "form-group has-error" : "form-group" }> - <div className="row"> - <div className="col-sm-9"> - <input autoFocus={true} type="text" ref="name" className="form-control" placeholder="" defaultValue={this.props.state.user.username} maxLength="128" /> + <h2 className="margin--less">Your username</h2> + <h5 className="color--light">Select a memorable username that makes it easy for teammates to identify you:</h5> + <div className="inner__content margin--extra"> + <div className={ name_error ? "form-group has-error" : "form-group" }> + <div className="row"> + <div className="col-sm-11"> + <h5><strong>Choose your username</strong></h5> + <input autoFocus={true} type="text" ref="name" className="form-control" placeholder="" defaultValue={this.props.state.user.username} maxLength="128" /> + <div className="color--light form__hint">Usernames must begin with a letter and contain 3 to 15 characters made up of lowercase letters, numbers, and the symbols '.', '-' and '_'</div> + </div> + </div> + { name_error } </div> </div> - { name_error } + <button type="submit" className="btn btn-primary margin--extra" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> + <div className="margin--extra"> + <a href="#" onClick={this.submitBack}>Back to previous step</a> </div> - <p>{"Pick something " + strings.Team + "mates will recognize. Your username is how you will appear to others."}</p> - <p>It can be made of lowercase letters and numbers.</p> - <button type="button" className="btn btn-default" onClick={this.submitBack}><i className="glyphicon glyphicon-chevron-left"></i> Back</button> - <button type="submit" className="btn-primary btn" onClick={this.submitNext}>Next<i className="glyphicon glyphicon-chevron-right"></i></button> </form> </div> ); @@ -600,24 +621,32 @@ PasswordPage = React.createClass({ <div> <form> <img className="signup-team-logo" src="/static/images/logo.png" /> - <h2>Choose a password</h2> - <p>You'll use your email address ({this.props.state.team.email}) and password to log into {config.SiteName}.</p> - <div className={ name_error ? "form-group has-error" : "form-group" }> - <div className="row"> - <div className="col-sm-9"> - <input autoFocus={true} type="password" ref="password" className="form-control" placeholder="" maxLength="128" /> + <h2 className="margin--less">Your password</h2> + <h5 className="color--light">Select a password that you'll use to login with your email address:</h5> + <div className="inner__content margin--extra"> + <h5><strong>Email</strong></h5> + <div className="block--gray form-group">{this.props.state.team.email}</div> + <div className={ name_error ? "form-group has-error" : "form-group" }> + <div className="row"> + <div className="col-sm-11"> + <h5><strong>Choose your password</strong></h5> + <input autoFocus={true} type="password" ref="password" className="form-control" placeholder="" maxLength="128" /> + <div className="color--light form__hint">Passwords must contain 5 to 50 characters. Your password will be strongest if it contains a mix of symbols, numbers, and upper and lowercase characters.</div> + </div> + </div> + { name_error } </div> - </div> - { name_error } </div> <div className="form-group checkbox"> <label><input type="checkbox" ref="email_service" /> It's ok to send me occassional email with updates about the {config.SiteName} service.</label> </div> <div className="form-group"> - <button type="button" className="btn btn-default" onClick={this.submitBack}><i className="glyphicon glyphicon-chevron-left"></i> Back</button> - <button type="submit" className="btn-primary btn" id="finish-button" data-loading-text={"<span class='glyphicon glyphicon-refresh glyphicon-refresh-animate'></span> Creating "+strings.Team+"..."} onClick={this.submitNext}>Finish</button> + <button type="submit" className="btn btn-primary margin--extra" id="finish-button" data-loading-text={"<span class='glyphicon glyphicon-refresh glyphicon-refresh-animate'></span> Creating "+strings.Team+"..."} onClick={this.submitNext}>Finish</button> </div> <p>By proceeding to create your account and use { config.SiteName }, you agree to our <a href={ config.TermsLink }>Terms of Service</a> and <a href={ config.PrivacyLink }>Privacy Policy</a>. If you do not agree, you cannot use {config.SiteName}.</p> + <div className="margin--extra"> + <a href="#" onClick={this.submitBack}>Back to previous step</a> + </div> </form> </div> ); diff --git a/web/react/components/signup_user_complete.jsx b/web/react/components/signup_user_complete.jsx index bbf1f670c..36fa27ad7 100644 --- a/web/react/components/signup_user_complete.jsx +++ b/web/react/components/signup_user_complete.jsx @@ -104,8 +104,8 @@ module.exports = React.createClass({ var yourEmailIs = this.state.user.email == "" ? "" : <span>Your email address is { this.state.user.email }. </span> var email = ( - <div className={ this.state.original_email == "" ? "" : "hidden"} > - <label className="control-label">Email</label> + <div className={ this.state.original_email == "" ? "margin--extra" : "hidden"} > + <h5><strong>What's your email address?</strong></h5> <div className={ email_error ? "form-group has-error" : "form-group" }> <input type="email" ref="email" className="form-control" defaultValue={ this.state.user.email } placeholder="" maxLength="128" /> { email_error } @@ -124,29 +124,34 @@ module.exports = React.createClass({ return ( <div> <img className="signup-team-logo" src="/static/images/logo.png" /> - <h3 className="text-center extra-margin">Signup to { config.SiteName }</h3> - <div className="form-group form-group--small"> - <span></span> - </div> + <h5 className="margin--less">Welcome to:</h5> + <h2 className="signup-team__name"> "teamDisplayName" </h2> + <h2 className="signup-team__subdomain">on { config.SiteName }</h2> + <h4 className="color--light">Let's create your account</h4> { signup_message } - <label className="control-label">Username</label> - <div className={ name_error ? "form-group has-error" : "form-group" }> - <input type="text" ref="name" className="form-control" placeholder="" maxLength="128" /> - { name_error } - <p className="form__hint">Your username can be made of lowercase letters and numbers.</p> - <p className="form__hint">{"Pick something " + strings.Team + "mates will recognize. Your username is how you will appear to others"}</p> - </div> - { email } - <label className="control-label">Password</label> - <div className={ password_error ? "form-group has-error" : "form-group" }> - <input type="password" ref="password" className="form-control" placeholder="" maxLength="128" /> - { password_error } - </div> - <p className={ this.state.original_email == "" ? "hidden" : ""}>{ yourEmailIs } You’ll use this address to sign in to {config.SiteName}.</p> - <div className="checkbox"><label><input type="checkbox" ref="email_service" /> It's ok to send me occassional email with updates about the {config.SiteName} service. </label></div> - <p><button onClick={this.handleSubmit} className="btn-primary btn">Create Account</button></p> + <div className="inner__content"> + { email } + <p className={ this.state.original_email == "" ? "hidden" : ""}>{ yourEmailIs } You’ll use this address to sign in to {config.SiteName}.</p> + <div className="margin--extra"> + <h5><strong>Choose your username</strong></h5> + <div className={ name_error ? "form-group has-error" : "form-group" }> + <input type="text" ref="name" className="form-control" placeholder="" maxLength="128" /> + { name_error } + <p className="form__hint">Username must begin with a letter, and contain between 3 to 15 lowercase characters made up of numbers, letters, and the symbols '.', '-' and '_'"</p> + </div> + </div> + <div className="margin--extra"> + <h5><strong>Choose your password</strong></h5> + <div className={ password_error ? "form-group has-error" : "form-group" }> + <input type="password" ref="password" className="form-control" placeholder="" maxLength="128" /> + { password_error } + </div> + </div> + <div className="checkbox"><label><input type="checkbox" ref="email_service" /> It's ok to send me occassional email with updates about the {config.SiteName} service. </label></div> + </div> + <p className="margin--extra"><button onClick={this.handleSubmit} className="btn-primary btn">Create Account</button></p> { server_error } - <p>By proceeding to create your account and use { config.SiteName }, you agree to our <a href={ config.TermsLink }>Terms of Service</a> and <a href={ config.PrivacyLink }>Privacy Policy</a>. If you do not agree, you cannot use {config.SiteName}.</p> + <p>By creating an account and using Mattermost you are agreeing to our <a href={ config.TermsLink }>Terms of Service</a>. If you do not agree, you cannot use this service.</p> </div> ); } diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss index 2d78cf242..719934638 100644 --- a/web/sass-files/sass/partials/_responsive.scss +++ b/web/sass-files/sass/partials/_responsive.scss @@ -426,13 +426,15 @@ } body { &.white { - .row.content { + .inner__wrap { + >.row.content { margin-bottom: -185px; } + } } } .footer, .footer-pane, .footer-push { - height: auto; + height: 187px; } .footer-pane { .footer-link { diff --git a/web/sass-files/sass/partials/_signup.scss b/web/sass-files/sass/partials/_signup.scss index 5996306d2..1a0c55f39 100644 --- a/web/sass-files/sass/partials/_signup.scss +++ b/web/sass-files/sass/partials/_signup.scss @@ -9,65 +9,108 @@ max-width: 380px; margin: 0 auto; position: relative; + &.padding--less { + padding-top: 50px; + } + h1, h2, h3, h4, h5, h6, p { line-height: 1.3; } + + h1 { + font-weight: 600; + } + h2 { font-weight: 600; - margin-bottom: 0.5em; + margin-bottom: 0.8em; letter-spacing: -0.5px; font-size: em(30px); } + h3 { font-weight: 600; margin: 0 0 1.3em 0; font-size: 1.5em; - &.extra-margin { - margin-bottom: 2.5em; - } } + h4 { font-size: em(20px); font-weight: 600; margin-bottom: 1em; - &.text--light { - font-weight: 300; - color: #999; - } } + + h5 { + font-size: em(16px); + } + + hr { + margin: 2em 0; + } + p { color: #555; line-height: 1.5; margin-bottom: 1em; - .black, &.black { - color: #000; - } } + + .inner__content { + padding: 0 15px; + margin: 30px 0 20px; + } + + .block--gray { + background: #f2f2f2; + display: inline-block; + padding: 0.85em 1.2em; + font-weight: 600; + @include border-radius(3px); + } + form { margin-bottom: 0.8em; } + .form__hint { font-size: 0.95em; color: #999; margin: 10px 0; } - .external-link { - position: absolute; - bottom: 0; - left: 0; + + .signup-team-confirm__container { + padding: 100px 0px 100px 0px; + } + + .signup-team-logo { + display: none; + width: 210px; + margin: 0 0 2em 0; + } + + .signup-team-login { + padding-bottom: 10px; + font-weight: 700; } + .signup-team__name { + margin: 0.5em 0 0; font-size: 2.2em; font-weight: 600; - text-transform: uppercase; + padding-left: 1rem; } + .signup-team__subdomain { + margin: 0.2em 0 1.2em; font-size: 1.5em; - padding-left: 1em; + padding-left: 1rem; + font-weight: 300; + text-transform: uppercase; } + .form-control { height: em(38px); } + .or__container { height: 1px; background: #dddddd; @@ -84,6 +127,12 @@ display: inline-block; } } + + ul { + margin-bottom: 0; + padding-left: 18px; + } + .btn { padding: em(7px) em(15px); font-weight: 600; @@ -121,8 +170,8 @@ } .glyphicon { &.glyphicon-ok, &.glyphicon-refresh { - margin-right: 0.3em; - left: -5px; + margin-right: 0.5em; + left: -2px; font-size: 0.9em; } &.glyphicon-chevron-right { @@ -137,6 +186,7 @@ } } } + .has-error { .control-label { background: #f2f2f2; @@ -148,13 +198,14 @@ color: #999; width: 100%; &:before { - @extend .fa; - content: "\f071"; - margin-right: 4px; - color: #aaa; + @extend .fa; + content: "\f071"; + margin-right: 4px; + color: #aaa; } } } + .reset-form { @include border-radius(3px); position: relative; @@ -163,19 +214,49 @@ color: inherit; } } -} -.signup-team-confirm__container { - padding: 100px 0px 100px 0px; -} + // Modifier Styles + h1, h2, h3, h4, h5, h6 { + &.margin--top-none { + margin-top: 0; + } + &.margin--bottom-none { + margin-bottom: 0; + } + &.margin--less { + margin-bottom: 0.3em; + } + &.sub-heading { + font-weight: 400; + margin-bottom: 0; + } + &.color--light { + font-weight: 300; + } + } -.signup-team-logo { - display: none; - width: 210px; - margin: 0 0 2em 0; -} + p { + &.margin--extra { + margin-bottom: 1.5em; + } + &.margin--less { + margin-bottom: 0.3em; + } + .black, &.black { + color: #000; + } + } + + .color--light { + color: #777; + } + + .margin--extra { + margin-top: 3em; + } + + .margin--extra-2x { + margin-top: 6em; + } -.signup-team-login { - padding-bottom: 10px; - font-weight: 700; } diff --git a/web/templates/signup_team.html b/web/templates/signup_team.html index b86590589..b84b8e486 100644 --- a/web/templates/signup_team.html +++ b/web/templates/signup_team.html @@ -9,8 +9,8 @@ <div class="col-sm-12"> <div class="signup-team__container"> <img class="signup-team-logo" src="/static/images/logo.png" /> - <h2>All team communication in one place, searchable and accessible anywhere</h2> - <h4 class="text--light">{{ .SiteName }} is free for an unlimited time, for unlimited users </h4 class="text--light"> + <h1>Mattermost</h1> + <h4 class="color--light">All team communication in one place, searchable and accesible anywhere</h4> <div id="signup-team"></div> </div> </div> diff --git a/web/templates/signup_user_complete.html b/web/templates/signup_user_complete.html index 176ca77b1..e9f6bafcf 100644 --- a/web/templates/signup_user_complete.html +++ b/web/templates/signup_user_complete.html @@ -7,7 +7,7 @@ <div class="inner__wrap"> <div class="row content"> <div class="col-sm-12"> - <div class="signup-team__container"> + <div class="signup-team__container padding--less"> <div id="signup-user-complete"></div> </div> </div> |