From f731b84eb28e5a687a40ab8c47f41fc7c72b659e Mon Sep 17 00:00:00 2001 From: Bryan Clark <clarkbw@gmail.com> Date: Tue, 30 Aug 2011 13:48:41 -0700 Subject: [PATCH] initial push toward the new design. this is only for the site and does not include the popup. serveral places are broken and marked with a XXX for fixing. --- browserid/app.js | 16 +- browserid/static/css/github.css | 129 ---- browserid/static/css/m.css | 210 ++++++ browserid/static/css/style.css | 890 +++++++++++++++++++------- browserid/static/i/bg.png | Bin 0 -> 6998 bytes browserid/static/i/blink.gif | Bin 0 -> 123 bytes browserid/static/i/browserid_logo.png | Bin 3726 -> 0 bytes browserid/static/i/card.png | Bin 0 -> 5906 bytes browserid/static/i/count.png | Bin 0 -> 868 bytes browserid/static/i/developers.png | Bin 889 -> 0 bytes browserid/static/i/hint.png | Bin 0 -> 9534 bytes browserid/static/i/icon.png | Bin 0 -> 2401 bytes browserid/static/i/id.png | Bin 1027 -> 0 bytes browserid/static/i/labs-logo.png | Bin 1158 -> 0 bytes browserid/static/i/people.png | Bin 1083 -> 0 bytes browserid/static/i/slit.png | Bin 0 -> 327 bytes browserid/static/js/browserid.js | 163 +++-- browserid/views/about.ejs | 48 ++ browserid/views/developers.ejs | 105 --- browserid/views/index.ejs | 66 +- browserid/views/layout.ejs | 78 +-- browserid/views/manage.ejs | 10 - browserid/views/primaries.ejs | 12 - browserid/views/privacy.ejs | 6 +- browserid/views/prove.ejs | 14 +- browserid/views/signin.ejs | 38 ++ browserid/views/signup.ejs | 34 + browserid/views/tos.ejs | 7 +- browserid/views/users.ejs | 8 - 29 files changed, 1248 insertions(+), 586 deletions(-) delete mode 100644 browserid/static/css/github.css create mode 100644 browserid/static/css/m.css create mode 100644 browserid/static/i/bg.png create mode 100644 browserid/static/i/blink.gif delete mode 100644 browserid/static/i/browserid_logo.png create mode 100644 browserid/static/i/card.png create mode 100644 browserid/static/i/count.png delete mode 100644 browserid/static/i/developers.png create mode 100644 browserid/static/i/hint.png create mode 100644 browserid/static/i/icon.png delete mode 100644 browserid/static/i/id.png delete mode 100644 browserid/static/i/labs-logo.png delete mode 100644 browserid/static/i/people.png create mode 100644 browserid/static/i/slit.png create mode 100644 browserid/views/about.ejs delete mode 100644 browserid/views/developers.ejs delete mode 100644 browserid/views/manage.ejs delete mode 100644 browserid/views/primaries.ejs create mode 100644 browserid/views/signin.ejs create mode 100644 browserid/views/signup.ejs delete mode 100644 browserid/views/users.ejs diff --git a/browserid/app.js b/browserid/app.js index d15177098..d712890dd 100644 --- a/browserid/app.js +++ b/browserid/app.js @@ -93,20 +93,16 @@ function router(app) { res.render('prove.ejs', {title: 'Verify Email Address', fullpage: false}); }); - app.get(/^\/users(\.html)?$/, function(req,res) { - res.render('users.ejs', {title: 'for Users', fullpage: false}); + app.get(/^\/signup(\.html)?$/, function(req, res) { + res.render('signup.ejs', {title: 'Sign Up', fullpage: false}); }); - app.get(/^\/developers(\.html)?$/, function(req,res) { - res.render('developers.ejs', {title: 'for Developers', fullpage: false}); + app.get(/^\/signin(\.html)?$/, function(req, res) { + res.render('signin.ejs', {title: 'Sign In', fullpage: false}); }); - app.get(/^\/primaries(\.html)?$/, function(req,res) { - res.render('primaries.ejs', {title: 'for Primary Authorities', fullpage: false}); - }); - - app.get(/^\/manage(\.html)?$/, function(req,res) { - res.render('manage.ejs', {title: 'My Account', fullpage: false}); + app.get(/^\/about(\.html)?$/, function(req, res) { + res.render('about.ejs', {title: 'About', fullpage: false}); }); app.get(/^\/tos(\.html)?$/, function(req, res) { diff --git a/browserid/static/css/github.css b/browserid/static/css/github.css deleted file mode 100644 index 52bad17aa..000000000 --- a/browserid/static/css/github.css +++ /dev/null @@ -1,129 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov <vast@whiteants.net> - -*/ - -pre code { - display: block; padding: 0.5em; - color: #000; - background: #f1f1f1; -} - -pre .comment, -pre .template_comment, -pre .diff .header, -pre .javadoc { - color: #998; - font-style: italic -} - -pre .keyword, -pre .css .rule .keyword, -pre .winutils, -pre .javascript .title, -pre .lisp .title, -pre .subst { - color: #000; - font-weight: bold -} - -pre .number, -pre .hexcolor { - color: #40a070 -} - -pre .string, -pre .tag .value, -pre .phpdoc, -pre .tex .formula { - color: #d14 -} - -pre .title, -pre .id { - color: #900; - font-weight: bold -} - -pre .javascript .title, -pre .lisp .title, -pre .subst { - font-weight: normal -} - -pre .class .title, -pre .haskell .label, -pre .tex .command { - color: #458; - font-weight: bold -} - -pre .tag, -pre .tag .title, -pre .rules .property, -pre .django .tag .keyword { - color: #000080; - font-weight: normal -} - -pre .attribute, -pre .variable, -pre .instancevar, -pre .lisp .body { - color: #008080 -} - -pre .regexp { - color: #009926 -} - -pre .class { - color: #458; - font-weight: bold -} - -pre .symbol, -pre .ruby .symbol .string, -pre .ruby .symbol .keyword, -pre .ruby .symbol .keymethods, -pre .lisp .keyword, -pre .tex .special, -pre .input_number { - color: #990073 -} - -pre .builtin, -pre .built_in, -pre .lisp .title { - color: #0086b3 -} - -pre .preprocessor, -pre .pi, -pre .doctype, -pre .shebang, -pre .cdata { - color: #999; - font-weight: bold -} - -pre .deletion { - background: #fdd -} - -pre .addition { - background: #dfd -} - -pre .diff .change { - background: #0086b3 -} - -pre .chunk { - color: #aaa -} - -pre .tex .formula { - opacity: 0.5; -} diff --git a/browserid/static/css/m.css b/browserid/static/css/m.css new file mode 100644 index 000000000..a4b9b6b93 --- /dev/null +++ b/browserid/static/css/m.css @@ -0,0 +1,210 @@ +body #wrapper { + width: 320px; +} + +body hr { + width: 300px; +} + +body #content { + padding: 122px 0 84px; + margin: 0 10px; +} + +body #header { + padding: 20px 30px; +} + +body #header ul.nav { + float: left; + width: 260px; + margin-top: 10px; +} + +body #header ul.nav li { + margin: 0 1px 0 0; + text-align: center; +} + +body #header ul.nav li:nth-child(1) { + width: 102px; +} + +body #header ul.nav li:nth-child(2) { + width: 91px; +} + +body #header ul.nav li:nth-child(3) { + width: 65px; + margin: 0; +} + +body #header ul.nav li a { + padding: 3px 0; + background-color: #549FDC; + color: #fff; + display: block; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} + +body #header ul.nav li:nth-child(1) a { + + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + -o-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +body #header ul.nav li:nth-child(2) a { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; +} + +body #header ul.nav li:nth-child(3) a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + -o-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +body #header ul.nav li a.signIn { + background-color: rgba(0,0,0,0.1); + color: #222; +} + +body #header ul.nav li a:hover { + text-decoration: none; +} + +body #signUp { + width: 320px; + padding: 0 10px; + font-size: 16px; + line-height: 21px; + margin: 122px 0 122px; +} + +body #signUp p { + padding: 0 20px; +} + +body #card { + width: 260px; + height: 80px; + background-position: center top; + background-size: 50%; + position: relative; + margin: 0 20px 20px; + top: auto; + + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +body button.create { + font-size: 14px; + height: 28px; + padding: 0 12px; +} + +body #card.insert { + background-position: center top; +} + +body #card img { + display: none; +} + +body #hint, +body #status { + display: none; +} + +body #legal { + padding: 20px; + text-align: left; +} + +body #legal li { + list-style-position: inside; +} + +body #about { + padding: 0; +} + +body #about .video, +body #about .video img { + width: 300px; + height: auto; +} + +body .row { + padding: 20px 20px 0; + margin: 0; +} + +body .row div { + width: auto; + height: auto; + vertical-align: inherit; + display: block; + padding: 20px 0; +} + +body .row img { + float: none; + width: 260px; + height: auto; +} + +body .row p { + float: none; + display: block; + width: 260px; + text-indent: -33px; + padding-left: 33px; +} + +body #signUpFormWrap { + margin: 122px 10px 122px; +} + +body #manage { + padding: 20px; + text-align: left; +} + +body #manage .edit { + margin: 36px 0 14px; +} + +body #manage #emails { + margin: 0 0 36px; +} + +body #emails .email, +body #emails .activity { + display: block; + width: 260px; +} + +body #emails .activity span { + float: left; +} + +body #disclaimer { + text-align: left; +} + +body #footer { + padding: 20px 30px; +} diff --git a/browserid/static/css/style.css b/browserid/static/css/style.css index 09e35763d..6cd4cf166 100644 --- a/browserid/static/css/style.css +++ b/browserid/static/css/style.css @@ -1,320 +1,774 @@ -@font-face { - font-family: 'Shadows Into Light'; - font-style: normal; +@import url("m.css") screen and (max-width: 640px); + +* { + margin: 0; + padding: 0; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + box-sizing: border-box; +} + +html, body { + height: 100%; +} + +body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 21px; + background-image: url('/i/bg.png'); + overflow-y: scroll; +} + +.sans { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +.serif { + font-family: 'Droid Serif', Georgia, serif; +} + +.mono { + font-family: 'Monaco', monospace; +} + +a { + color: #222; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +p:last-child { + margin-bottom: 0 !important; +} + +button::-moz-focus-inner { + padding: 0; + border: 0 +} + +hr { + height: 1px; + border: none; + background-color: #eee; + width: 700px; +} + +.right { + text-align: right; +} + +#wrapper { + width: 700px; + min-height: 100%; + margin: 0 auto; + position: relative; +} + +#content { + padding: 84px 0; +} + +#about { + font-family: 'Droid Serif', Georgia, serif; + font-size: 14px; + line-height: 21px; + color: #444; + + text-shadow: 1px 1px 0 rgba(255,255,255,0.5); + padding: 0 0 50px 0; + background-color: #fff; + + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -o-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} + +.video { + margin: 0 0 25px 0; + width: 700px; +} + +.video img, .video iframe { + display: block; +} + +.row { + margin: 0 0 25px 0; + padding: 25px 50px 0 50px; + position: relative; +} + +.row:last-child { + margin: 0; +} + +.row h2 { + font-size: 21px; font-weight: normal; - src: local('Shadows Into Light'), local('ShadowsIntoLight'), url('sil.ttf') format('truetype'); + color: #222; + line-height: 32px; + display: inline-block; +} + +.row div { + height: 140px; + width: 500px; + padding: 0 0 0 20px; + display: table-cell; + vertical-align: middle; +} + +.row p { + width: 380px; + text-shadow: 1px 1px 0 rgba(255,255,255,0.5); + float: left; +} + +.row img { + float: left; +} + +.row button { + float: right; + display: inline-block; +} + +.steps { + width: 24px; + height: 24px; + display: inline-block; + vertical-align: bottom; + margin-right: 5px; + background-image: url('/i/count.png'); +} + +.one .steps { + background-position: left 0; +} + +.two .steps { + background-position: left -24px; +} + +.three .steps { + background-position: left -48px; +} + +#legal { + padding: 75px 125px; +} + +#manage { + padding: 75px; +} + +#legal, #manage { + text-shadow: 1px 1px 0 rgba(255,255,255,0.5); + background-color: #fff; + text-align: justify; + + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +#legal p, +#legal h2, +#legal ul { + padding: 0 0 21px 0; +} + +#legal li { + border-bottom: 1px solid #EEEEEE; + margin: 7px 0 0; + padding: 0 0 7px; + list-style-type: square; +} + +#legal li:last-child { + border: none; } -@font-face { - font-family: 'Tenor Sans'; - font-style: normal; +#legal h2 { + font-size: 21px; + color: #222; +} + +#legal h3 { + font-size: 18px; + color: #222; + padding: 49px 0 7px; +} + +#legal h4 { + font-size: 14px; + margin: 14px 0 7px 0; + color: #222; +} + +#legal h5, +#legal strong { + font-size: 12px; + color: #666; +} + +#legal p, +#legal ul { + color: #666; +} + +#legal h2, +#legal h3 { + font-family: 'Droid Serif', Georgia, serif; font-weight: normal; - src: local('Tenor Sans'), local('TenorSans'), url('ts.ttf') format('truetype'); } -body { - padding: 0; - margin: 0; - font-size: 12px; - font-family: 'Tenor Sans', arial, serif; +#manage .edit { + margin: 72px 0 14px; } -header { - border-top: 4px solid #333; - background-color: #333; - padding: 0 20% 0 20%; - margin: 0; - background: #008; - height: 230px; - color #fff; - min-width: 800px; +#manageAccounts, +#cancelManage { + float: right; + display: inline-block; + text-align: center; + line-height: 21px; + font-weight: bold; + width: 48px; + font-size: 12px; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #fff; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; } -header.quarter { - height: 50px; +#manage .edit a:hover { + text-decoration: none; } -#labslogo { - margin: auto; - text-align: left; - background: url("/i/labs-logo.png") 0 0 no-repeat; - width: 161px; - height: 34px; - margin: 10px 0 0 110px; - color: transparent; - display: inline-block; +#manageAccounts { + background-color: #37A6FF; + border: 1px solid #37A6FF; + text-shadow: -1px -1px 0 #37A6FF; + cursor: pointer; + + -webkit-box-shadow: 0 0 0 1px #76C2FF inset; + -moz-box-shadow: 0 0 0 1px #76C2FF inset; + -o-box-shadow: 0 0 0 1px #76C2FF inset; + box-shadow: 0 0 0 1px #76C2FF inset; + + background-image: -moz-linear-gradient(center top , #76C2FF 0pt, #37A6FF 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #76C2FF), color-stop(100%, #37A6FF)); } -.half h1 { - padding-top: .2em; - font-size: 3em; - font-weight: bold; - background: url("/i/browserid_logo.png") 0 0 no-repeat; - width: 366px; - height: 72px; - margin: 43px auto 0 auto; - clear: left; - color: transparent; +#cancelManage { + display: none; + background-color: #006EC6; + border: 1px solid #003E70; + color: #EEEEEE; + text-shadow: -1px -1px 0 #006EC6; + + -webkit-box-shadow: 0 0 5px #003763 inset; + -moz-box-shadow: 0 0 5px #003763 inset; + -o-box-shadow: 0 0 5px #003763 inset; + box-shadow: 0 0 5px #003763 inset; + + background-image: -moz-linear-gradient(center top , #3AA7FF 0%, #006EC6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3AA7FF), color-stop(100%, #006EC6)); +} + +#manage #emailList { + list-style-type: none; + margin: 0 0 72px 0; + border-top: 1px solid #eee; } -.quarter h1 { - float: left; - width: 135px; - height: 35px; - margin: 7px 0 0 10px; +#emailList li { + padding: 10px 0; + line-height: 24px; + border-bottom: 1px solid #eee; + overflow: hidden; } -.quarter h1 > a { - color: transparent; +#emailList .email, +#emailList .activity { + display: inline-block; + float: left; + white-space: nowrap; } +#emailList .email { + width: 275px; +} -h2 { - font-family: 'Shadows Into Light', arial, serif; - font-size: 3em; - font-weight: normal; - color: #fff; - margin: -4px auto 0 auto; - text-align: center; +#emailList .activity { + width: 275px; + color: #aaa; + text-align: right; } -.quarter h2 { - font-size: 2em; - margin: .2em 0 0 .5em; - float: left; +#emailList .activity button, +#emailList .activity abbr { + float: right; + display: inline-block; } +#emailList .activity button { + width: 60px; + margin-left: 10px; + margin-right: -70px; -header > #manageLink { - float: right; - background-color: #333; - color: #fff; - padding: 1px 10px 5px 10px; - -webkit-border-radius: 0 0 10px 10px; - -moz-border-radius: 0 0 10px 10px; - border-radius: 0 0 10px 10px; - display: none; + -webkit-transition: margin 0.4s ease; + -moz-transition: margin 0.4s ease; + -o-transition: margin 0.4s ease; + transition: margin 0.4s ease; } -.authenticated header > #manageLink { - display: block; +#emailList.remove .activity button { + margin-right: 0; } -header > #manageLink:hover { - opacity:1; - color: #AAA; +button.delete { + background-color: #37A6FF; + height: 24px; + vertical-align: middle; + border: 1px solid #B13D3D; + font-size: 12px; + font-weight: bold; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #fff; + text-shadow: -1px -1px 0 #C84343; + cursor: pointer; + + -webkit-box-shadow: 0 0 0 1px #EA7676 inset; + -moz-box-shadow: 0 0 0 1px #EA7676 inset; + -o-box-shadow: 0 0 0 1px #EA7676 inset; + box-shadow: 0 0 0 1px #EA7676 inset; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + + background-image: -moz-linear-gradient(center top , #EA7676 0pt, #C84343 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #EA7676), color-stop(100%, #C84343)); } -.why { - width: 600px; - height: 130px; - padding: 10px 0; - margin: 0 auto; +button.delete:active { + background-color: #C84343; + border: 1px solid #672424; + color: #EEEEEE; + text-shadow: -1px -1px 0 #AA3D3D; + + -webkit-box-shadow: 0 0 5px #003763 inset; + -moz-box-shadow: 0 0 5px #003763 inset; + -o-box-shadow: 0 0 5px #003763 inset; + box-shadow: 0 0 5px #003763 inset; + + background-image: -moz-linear-gradient(center top , #C84343 0%, #AA3D3D 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #C84343), color-stop(100%, #AA3D3D)); } -.why p { - font-size: 2em; - text-align: center; +#disclaimer { + color: #888; + text-align: right; } -.why a, #cancellink { - color: #666; - text-decoration: none; - border-bottom: 1px dotted black; +#disclaimer a { + color: #549FDC; } -.why a:hover { - color: #000; - opacity: 1; +h1 { + font-size: 24px; + font-weight: normal; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5); } -a { - color: #fff; - text-decoration: none; +#vAlign { + width: 700px; + display: table-cell; + vertical-align: middle; +} + +#signUp { + margin: 122px 0; + width: 700px; + font-family: 'Droid Serif', Georgia, serif; + font-size: 24px; + line-height: 32px; + text-shadow: 1px 1px 0 rgba(255,255,255,0.5); + position: relative; + padding: 0 0 0 250px; } -a:hover { - opacity: .6; +#signUp a { + color: #549FDC; + text-decoration: underline; } -footer { - background-color: #F1F1F1; - border-top: 2px solid #ddd; - margin: 0; - margin-top: 100px; - padding: 0; - height: 200px; - font-size: 1.1em; +#signUp p { + margin: 0 0 16px 0; } -footer > div { - width: 800px; - margin: auto; +.create { + background-color: #37A6FF; + height: 32px; + padding: 0 16px; + vertical-align: middle; + border: 1px solid #37A6FF; + font-size: 16px; + font-family: 'Droid Serif', Georgia, serif; + color: #fff; + text-shadow: -1px -1px 0 #37A6FF; + cursor: pointer; + + -webkit-box-shadow: 0 0 0 1px #76C2FF inset; + -moz-box-shadow: 0 0 0 1px #76C2FF inset; + -o-box-shadow: 0 0 0 1px #76C2FF inset; + box-shadow: 0 0 0 1px #76C2FF inset; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + + background-image: -moz-linear-gradient(center top , #76C2FF 0pt, #37A6FF 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #76C2FF), color-stop(100%, #37A6FF)); } -footer > div > div { - width: 400px; - padding: 10px; +.create:active { + background-color: #006EC6; + border: 1px solid #003E70; + color: #EEEEEE; + text-shadow: -1px -1px 0 #006EC6; + + -webkit-box-shadow: 0 0 5px #003763 inset; + -moz-box-shadow: 0 0 5px #003763 inset; + -o-box-shadow: 0 0 5px #003763 inset; + box-shadow: 0 0 5px #003763 inset; + + background-image: -moz-linear-gradient(center top , #3AA7FF 0%, #006EC6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3AA7FF), color-stop(100%, #006EC6)); } -footer .right { - padding-top: 13px; - float: right; +#card { + width: 200px; + height: 200px; + display: block; + position: absolute; + z-index: 1; + top: 50%; + left: 0; + margin-top: -100px; + background-image: url('/i/card.png'); + background-position: 0px center; + background-repeat: no-repeat; + + -webkit-transition: background-position 0.4s ease; + -moz-transition: background-position 0.4s ease; + -o-transition: background-position 0.4s ease; + transition: background-position 0.4s ease; } -footer .right img { - margin-bottom: -5px; +#card.insert { + background-position: 170px center; } -footer a { - color: #666; +#card img { + float: right; } -footer .right p { - text-align: right; +#status { + width: 6px; + height: 16px; + display: block; + position: absolute; + top: 50%; + margin-top: -13px; + left: 214px; + background-image: url('/i/blink.gif'); + background-position: left center; + background-repeat: no-repeat; + + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + -o-border-radius: 8px; + border-radius: 8px; + + -webkit-box-shadow: 0 0 4px #c15151; + -moz-box-shadow: 0 0 4px #c15151; + -o-box-shadow: 0 0 4px #c15151; + box-shadow: 0 0 4px #c15151; } -footer .copyright { - font-weight: bold; - font-size: .8em; +#status.green { + background-position: right center; + + -webkit-box-shadow: 0 0 4px #3bb421; + -moz-box-shadow: 0 0 4px #3bb421; + -o-box-shadow: 0 0 4px #3bb421; + box-shadow: 0 0 4px #3bb421; } -#steps { - list-style: none; - width: 800px; - margin: 0 auto; - padding: 0; +#hint { /* put hints on rollover */ + width: 200px; + height: 200px; + display: block; + position: absolute; + top: 50%; + left: 0; + margin-top: -100px; + z-index: 0; + background-image: url('/i/hint.png'); + background-repeat: no-repeat; } -#steps a { - color: #666; - text-decoration: none; - border-bottom: 1px dotted #666; +#hint.info{ + background-position: left center; } -.step { - margin: 1em 0 2em 0; - padding: 0 0 0 50px; - font-size: 14px; - position: relative; +#hint.signUp { + background-position: right center; } -.step .number { - position: absolute; - top: -5px; - left: 0; - font-family: 'Shadows Into Light', arial, serif; - font-size: 4em; - font-weight: bold; - line-height: 1em; +#signUpFormWrap { + margin: 122px 160px; } -.step > h3 { - font-size: 1em; - margin: 0; - display: inline; +#signUpFormWrap a.signUpIn { + color: #549FDC; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5); } -.step > pre { - clear: both; +#signUpFormWrap a.space { + margin: 10px 20px 0; + display: inline-block; } -.step > p, .step > ol { - margin-left: 50px; +#signUpForm { + padding: 20px; + background-color: rgba(0,0,0,0.035); + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; } -.prose { - font-size: 1.5em; +#signUpForm ul { + margin: 20px 0; + list-style-type: none; } -.status { - margin: 0 auto; - width: 600px; - font-size: 1.2em; +#signUpForm li { + padding: 0 0 10px 0; } -pre code { - padding: 10px 15px 10px 15px; - margin: .75em; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px 10px 10px 10px; - width: 650px; +#signUpForm label { + display: block; + color: #62615F; + text-shadow: 1px 1px 0 rgba(255,255,255,0.5); } -#emailList { - font-size: 1.0em; - width: 4x00px; - margin: auto; - font-weight:bold; - margin-top:32px; +#signUpForm label.half, +.half { + width: 50%; + display: inline-block; + float: left; } -#cancelaccount { - font-size: 1.0em; - width: 500px; - margin: auto; - margin-top:35px; +a.forgot { + color: #888784; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5); + font-size: 11px; } -.email { - display:inline-block; +#signUpForm .error { + margin-top: 20px; + color: red; + background-color: rgba(255,0,0,0.25); + padding: 5px; + line-height: 16px; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; } -.emailblock a { - font-size:0.7em; - color:#405090; + +#signUpForm .red { + color: red; } -.emailblock { - border: 1px solid #ddd; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - background-color:#f0f0f0; - width:500px; - padding:8px; - min-height:48px; - margin:16px auto; + +#signUpForm input[type=text] { + width: 100%; + font-size: 14px; + padding: 5px; + border-width: 1px; + border-style: solid; + border-color: #A3A29D #C6C3B4 #C6C3B4 #A3A29D; + outline: none; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + + -webkit-box-shadow: 1px 1px 0 rgba(255,255,255,0.5); + -moz-box-shadow: 1px 1px 0 rgba(255,255,255,0.5); + -o-box-shadow: 1px 1px 0 rgba(255,255,255,0.5); + box-shadow: 1px 1px 0 rgba(255,255,255,0.5); } -.meta { - display:inline-block; - float:right; - font:8pt Arial; + +#signUpForm input[type=text]:focus { + border: 1px solid #549FDC; + + -webkit-border-radius: 0; + -moz-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + + -webkit-box-shadow: 0 0 0 1px #549FDC inset; + -moz-box-shadow: 0 0 0 1px #549FDC inset; + -o-box-shadow: 0 0 0 1px #549FDC inset; + box-shadow: 0 0 0 1px #549FDC inset; } -.meta a { - cursor:pointer; + +#signUpForm .submit { + height: 28px; } -.keyblock { - font:8pt Arial; + +#signUpForm .remember { + display: inline-block; + line-height: 28px; } -.date { - font:8pt Arial; + +#signUpForm .remember .checkAlign { + float: left; } -.buttonbox { - height: 25px; - width: 460px; - margin: auto; +#signUpForm .remember label { + margin-left: 5px; + float: left; } -.buttonbox > div { - float: left; - margin-right: 10px; + +#signUpForm .create { + font-size: 14px; + height: 28px; + padding: 0 10px; + float: right; +} + +#header { + position: absolute; + top: 0; + font-weight: bold; +} + +#header ul { + display: inline-block; +} + +#header ul.nav { + float: right; +} + +#header ul li { + display: inline-block; + float: left; } -.legal { - font-size: 1.3em; - width: 800px; - margin: 0 auto; +#header ul.nav li { + margin: 0 0 0 10px; } -.legal li { - margin-bottom: 7px; +#header a { + color: #222; +} + +#header a.home { + width: 80px; + height: 21px; + background-image: url('/i/icon.png'); + display: block; + background-position: left 4px; + background-repeat: no-repeat; +} + +#header a.signIn { + background-color: rgba(0,0,0,0.1); + padding: 4px 8px; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; +} + +#header a.signIn:hover { + background-color: rgba(0,0,0,0.25); + text-decoration: none; +} + +#header, +#footer { + display: block; + width: 100%; + padding: 20px 0; +} + +#footer ul li { + display: inline-block; + float: left; + margin: 0 10px 0 0; +} + +#footer { + position: absolute; + bottom: 0; + color: #aaa; +} + +#footer a { + color: #aaa; +} + + +/* for floats */ +.cf:after { + content: "."; + display: block; + clear: both; + visibility: hidden; + line-height: 0; + height: 0; } -.legal h5 { - margin-bottom: 1px; - padding-bottom: 1px; - line-height: 100%; +html[xmlns] .cf { + display: block; } -.legal p { - margin-top : 1px; +* html .cf { + height: 1%; } diff --git a/browserid/static/i/bg.png b/browserid/static/i/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e367c9b811d0d8b191b19d756a666aaeef0aa02e GIT binary patch literal 6998 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 literal 0 HcmV?d00001 diff --git a/browserid/static/i/blink.gif b/browserid/static/i/blink.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0a5fbf3626cc6f2291a69b48393eb4256271e8f GIT binary patch literal 123 zcmZ?wbhEHb<Y5qCn8?g<Ffh>Ts*d#*#sB~REB@#9a}5c0b_{Se(lcOYWME)W{K>+~ z#lXy<17tIRv@kHqw8*b)pOtf`*~lRve_2rZy9&h}6NEP}oNu+sixHuL4XA+)tbt=n N|H{*E`IEI6tN~PpA$<S< literal 0 HcmV?d00001 diff --git a/browserid/static/i/browserid_logo.png b/browserid/static/i/browserid_logo.png deleted file mode 100644 index b80d82f2880c2118e3f5c6860dc48e4099084600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3726 zcmV;94sr2`P)<h;3K|Lk000e1NJLTq00C|Q002k`1^@s6)*v4c000hENkl<Zc-rlq zOHX6T703Ak{sLCkrirqfhQ`n>%_gGLCQ33(z-XdTcEe-xQlt@$-4h{YkpVo5*-WGX z>{XOafN7*ii8MUi4WleFQg@^5BKZs4FHpG^%8A>tUFT6%_u+G-{|4b(b?a9B>eQ*% zgi>lkBoc{4*^v~2NF)*oxJ4q7NF?AEi9{lifLkOIiSh>S9p%TOSm&``#M+JZQLIV% z5F*i7s2J<Fv1%DtJ=Xha1b0n^H4XHp`LI&KMWXy^S>?}`#vR<frU71%iY^l6N|DN^ zEeN>Z_P`gUvWrBy&?A*!)2u29xZk#hRC<vp^D3)+TNFA<kalouYe~fyi3Hp!x7(2L z&H}iV$&WMukx0OuW;+vb|G$-_0f<Bb?vz_A3*i1D*0lLBgESkfs_xc3ZpFG{6v(wS z0Fg+*odH`)JGh?`64h~_HRAFh@w!E#e1f~XIq%A%a{xQOjdcll7WMfMTSzmwIkD#w zp@3wSiAa=BaGxWdcW!ysJC5?LHw0GH-7fDAVWmkakKpdY8)I*z5r{;&1osu<dA5*i z+0%QhAOY@enPAf3*4jqGTN;8$B;Za0++8)2UM83Za2Jr^mh((RA^~@j;GQrOkWjnH zBe*BbL;}?21AG+SnLIR-b5pW=5?#4xRg<o(&tg3>f1i>vLT_82Cpu1f1UDAmtvrHz z7f}F@fX~#&#csqpF|nr4EdQ^UE*=e;Fx7Fb_mCA;myJHY_SKNsm+q{Z1}sH~9nQRg zlZMqF#|SJ1Q<kU5NpC%GvKMR7bN;&Z@v9M&YZs;te&k_fSv2KyXzKGV;Qt##V!FC~ ze<k4lkM<FDZ7px$-f|G*))j5D2h@Wq+pr1JYe2g902O_ov6Sf6OnyMi>^)Qdr<Pgv zImUN^=G*7<ZQ-$kDF+uzxFQ42*#sxFdaZ3>OYO*3dq53cURy8@h0T5;;QnuUVZQHj zp1^&=1oxkSzg;8_bvl+0x2@cnPU|tC%svM`Z=Lu}77=--gp<k+%6>ulJ1(??>`43d zm;vm5yGAZ8`x)@L4Mks~TNH4=)j4CFgHm3=4XxnAK5iBG`+dSY_W!QGqIW!j!*(t? z6nv)v!dDf-^XtH8?+*EWONBAYh@#;sFVLZO5fLWp?PwxTWs+8Ke_%Sr-VHd<%}B); z!@BS;W*yv^wcMM`irOYjDhwM^`t<gC8%Ti}YUp_GOqGcd`x<2}CJ1e1IvC8b`Nng8 zT8_UTWi#A*PQYDvIGMQbxNWB%++R5wl0z!$KVrR07%~rnb|@S5fsZ{5YcU<+AkS^W z16X>srotMgaoq&U69g(>BAgPe15(ThxNV$!;K>2)+D%r$jk$+z-}0<BVwj>B=~61X zui^Rz@b}oE-->6zK|6+HW{2V;Tm^lnR^YtZ!X|Z3?ST?H$||_AVMYoUT3G}4eZ-4) z0ASei)IdsoL*ZM3H~Oi%o4~A@eEyk`k3r|OOfuud!*oi>A12OS0X}o1?{`gPp4z4p z>h}=m&EF3!br9-VVlTptj7R*mr%q5#&K#A$8BgtDeT=}Zkned+EYr2n;NBv9#G<LN zm`V<rh5f`sCG8KBY$Ja=ZHb3s<6<+!kOMZ9LGc_gac<~)PcppiC1gi(O7ymi$nx4A z;e-^Cj=^&^dc%wlD~=hsF&qB28Rfbh65M|?@UD%JhV-E+>{kTO1iEyF<6#__#@pMV zeiZ8`L~vjx9xxN7F9-boh!`t&eReXYbAarW?e8=<eR?oG-?)hcRMSIUZaM-f)dr1J zbSL^7V!37++?aLrRYsYkmI<c$2Ao@kTklvVrZMB8fnvQ9jORT=3_Cz8GskOyc2*EO zB8G3Mt7!U1L#`)rmyzj1CvO`L!5t|_8$@yhZp^BpStj$q>_{WHBV=Jw!Hw~XF$ZDQ zh@gNDw_g(T1})QD#<zpSx#x(_f`aV#9>Bxx%wG_mJ?)^Q^5*f45x6n!`Jp3+wU8xn z|2@`^6@6`E8Cgj&>1=rLIys(hkpSCc#~l<k&b>}7N2omw1Z_-NJt3w6?W`spfcw73 zvKkj~7aXzhMrF+7?ihd-J%bxN9E5tI$BfF28Fp_FpdSJ9u*&>?kT~}#u@OTpl*bJ% ztB8>XbP|7)3GSxnvKkj~PdH>@E2}Z?rgDEC0wo5D=|$I>75p_Yoh#zI+sgCM^824V z7;$un<%sG0Lmb6>2+Ys1XW$K*4{&*imw-DNaBEx3BDk>y2d(5-j|_9z(p(@IC`DVs zS7kyK(uq|Zj4CFH@7LSu`-V3(jIqs32VxhD-@Xda$qBgW_PwlvTiY3+A(lNgq-_RF zvBJdC=LsQ*BQ^TGXvj$A4I|DCSphR_MASysnT`pG`2sl9s?2mEM%{zhrGPuN;BNWy zxOJsESEH}Hzf}13+k?zD+X@9Y_CvG-f_s($1jsh^*NQ%Acwqi-j}hmFEPFh3(5Vdy zS8S-^lX#TdV4%jmar|q~;Jy-YJL84RO;0yIW8CM8HXC0tAfUv(LxUSSB>vh#1)pMs zkf33R0<ke{BE05dX+SpKtSbKGt<BjuVS*g9+3O4Szpd?9eH`mwz;vbr++M(4SAG^q zaGX>&xVayla-Q|$z~EMa8vxV}iJeSY(I#Lg5&v6ZyxXV>+f?qYW1fq-^~T5X3S65L zaC-qaCe-!Bkz-+<EKVBS*v%)SVxZ#&?zW;`eo!OCo+D%jv8!ksZ*Cpe6$->x95wjR zRu*u30XJsBLEQngL7Sk`0PgNdff!p6a1TtcLj0XAZhfL~t6w_A7&YYElmbA|cHDx1 zdwjr+ncO~Lenas7lC*#u`_i|8z&({Qa6`fvgEoZNR*GyW{9!r;!uN%4xejsr(5Q1e z1l;2RZtR|q*NpFnIv6cY;I1HFv=9K?k1_^sNTt?xj~L&^OcY|z8o}-`)R4ap0K{bh z_t=6Pv!j$Vd5*qJAx+@MZn7v#sDykLNR<)ahI;9H$j;$_SY9iNcQ6*j^Dbrp+%h@o z9^A9YdPp(S^<`-T_c`K)KM`<~Hq!J%b)N`S%zAFfw^>#E6-sqeF0R8U*NQ#~^{u*F z26^RC->AVm>;&9&aAUpTHlbdTFAPo_xG~o^)lvrT^T6OfWsF>Ucgxw<R#zFJEzHEE z>m80o(;4h3*!pps6_GLiuDufgjGVeO&fwk|64$O1>Y9s@oPgUQxI2gs5%Q?eQOB1a zAfSo?7B;Wl24uUX=S?7x>CWbm=#ke6bqxa%0e5(Chd!6RmldqD&$ApV2?cIUXTp8| zIYe5Uig$%lN!hp9cbH|<h24ea|MmknG|GLSZK8)YBjC<8xTh7~*tZO2d2%uoxc3lw z;vSEQ8G@IYL$~k8`q1(}yUfX*6Cgm6@=7uHeRha-wJzY!Ex0jP%yn(eMcQcsH}<}^ zXMw<txm=*aEQ6<rv}`e9+o}(J@$2uH?^6cA&en-U34%@Q1#v_Los9ZYz@1xgpCOsm za+P+Pz<r1;gi0WAV}`}tYqOwX8Awdn77F-ltiL#zFtmA|?=mJ?Lui2rZs-+k9RYVP z!QDdg>da;OS>5tJC@kR%+?WZ<TNP$vvf-ey{L|69oLHV?>l{`R1~;_c^p6ZC5#MV@ zz?~a#7YLJ)<Yj+p26su}XZbsf21o&SBS4&c8IeZGVZ$9}+rTt7nCTP~2KNJCJ}(&^ z`bz<KF2Fsb@SD9N<>4}qq`^%+bD|L#+?a3)b%lfvul|?;RA}X&WTb&z2Keh(KXu#) zJ_P1<(Dvtb#Jjq@Mg0%J4lhgKzCb+Bwn}N*v4_2)Xd7(U%l>?U`+}J86Xc{2#7pxD zZs^ru-H(O!BG(Y_jtMPLz2V4Hr^D&wdXIE{=`j2N&HJk29W(2q5f^(rzUMgux4tmq zW98;@3C`sedZf8)K+V0mYr$8Ua={HP>~3MW*umCh#ww}cet^g$CZ>fsrW8BTMfHYH zl;4SE%8<4;q&zq=a?F_{!@g%7*&$Lq?}Eu|gakvDz@0Z+@>!-?I&at(FY*m;><%g0 zna<szHYQZ`*rP|;Ya7Tks>JW<>avZ<bRHGuXM(BexQv^?QCZPAJrOZ}D&S7WTE5FP zYv5jRP&qi@rrf}CYykbh<Z;Ff<FJjLx}4~UP|n!97%68p9DDMNBLkyt6Ot?U=m%!x z7a^Z#gDmxO2Yr6?LEo@`%ZzwBh)zJjogO<2P@b6r_mZQ^QDYX`{RG~<qv$i!6+&8+ zblxD-+4R_1y0mp*K9>^A<Gg@773O@|UzWiQjSGeXcj!jSozyBI(>o-lvxiIvI)S^B zp&@T8p?rQI;7)ZIckIC3L=;9yaEF4otK~$PwWn3(-?PVf^}kHW<EF+bL$;lcrGBIZ z+;d|9?NTUcry1PP$(tm>-3^=gg367<9vt&MsT*Q2p8c+Jv#P?EaqCEkJ2CeG^&>6d zp2|767eYciP2kp*{M2}RR9GbeZt50TTUo3-&Led4jC(FN^sJRdMp>^b`nqwOT|4xg zT-S@PJx6q|X#w{{j-kC28rq}4z2gba`n>J7iKFWEuX@)1o}-t6UhKQ$sW6MohT6S( z!&jUP;sJifOye2wU0roX`;H*4orVXV>qW$@8x6u}2x8v^f=wfb&~7CG?NQ(s@jR`H zfy$+&F}4k?L&V3vYhsP%A<`=ozT@ECAC5?4&J3G<z_Droc>!o}dKsQxCb=4NLMhe{ z)!j11wxz>)Z90=sbt9DCH}6!-xa#IzCIs9fk)POVx3hXA<sr(8q!2_Rkx0NT5{X12 s0k=pb5{U%dB9TZW;1-EQB2f_i8=uvry~D)zQ~&?~07*qoM6N<$g5Lcph5!Hn diff --git a/browserid/static/i/card.png b/browserid/static/i/card.png new file mode 100644 index 0000000000000000000000000000000000000000..eac93fc8481e85d226d934eaa30a2b3b4737837d GIT binary patch literal 5906 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 ZKZtBqaksBSn4jEODvBBkFnNohe*xQkgn|G7 literal 0 HcmV?d00001 diff --git a/browserid/static/i/count.png b/browserid/static/i/count.png new file mode 100644 index 0000000000000000000000000000000000000000..2f031bd84fd4528f74782eb417fef154e3c7f811 GIT binary patch literal 868 zcmV-q1DpJbP)<h;3K|Lk000e1NJLTq000;O002k`1^@s6?D;hh0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#21!IgRCwC#m`P|9K@^5x+J=Y<aUtSD z1{B0WBL;FbcnAnWFu{YD$x(2@Lvm9*L<~XjkV6jQ0&^1~co0TH1R)2BH-(4`isHbC z3kH>df&qj6zg6Wl1Km~KQ*)7i@Mk7X&;PorUe){Pw%_yXB_Xy$N1*|z6Y9~|7obIG z2D&2$zP*n#Xp2d(1-b|whgL~)tUzVx0up_4NpKjt4Xu-O@f|vbB=@2hgNB<%pxF%O zqJJ|h4>yd&B^ZPzrTLgdlEKC);$l9BI>b*bL3_FQW&~p%%|&~SnGqE5`PQLYL^h#X zx1JLD@l>RGUL2}xXNW%~t9ghA+Hpx_b1BUz=vm?v9kSlK?X)uIlc$S*CfMzCE2qRh zEse1!)JH&ae7Gv|3x(0qmo`CX;B*_!Ge)2ftyaY%6TE6+f)`A1zl90rm|$9O3g1D` zX(p)Z^W1H*m*!pfLm6jLHG0^+%y>-4^@d{fuw%;`_BcJmrj17TK?NH1U_J`-N?b>q zf`;@EvrNkn%%_rCrWr|5FZ_yQwUqUoS6rzg4qJNl^~bK*5@x9FRFQL0&P6)b?i1<0 zEBJv@@ungTFI+^U-Y4qQoT5y~?+XX5TohQjXybq~|9ndsQZ#20%ECpVm5X@(KRY7w zvz7%0`a>%hE!UKy5XL8G;^mr^ivlMu`nPm_3L*LAZV=|kMP^}HJ&ZSJoH5dki@3<U zuBgw~F#j^+nTxmwI09A@<&}%fqB2O>X0uUtR-Fqq7fr<O1%oQ-ne{IhnX~9Rbiy-u z-M}bMnkpL4*yxjb!+7+#&bcV(qMVCzF7nPrrulg1A|BhTaeI5AP8&^g5t|In-(6OQ zkM=8?V6*YUMeM(9@X;pEM$_*0z9=0R70$u9tIkDsvT%G~WTNYAeFWaQh`}`=wiwdj zVmHl2G~t4pDk8Rgyr%x=Tgaxlh$ehm;){tj-LCNKz(ssw8gc%asON!7%4=V(gy-<S uh(?@ymaD0Ke&@BEi*hddKe*_R00RIPv3-+f#aKW90000<MNUMnLSTaWxRm?= literal 0 HcmV?d00001 diff --git a/browserid/static/i/developers.png b/browserid/static/i/developers.png deleted file mode 100644 index 2ce054467eef5ae8dc937efa10167d3a344ffc71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV0Q3yaSW-r_4clJhi{?Gfsd~x z&E&XGF5b9N;N-F7#HAu#qTbR@Jri$Ks4hx-y7hyOw%I2?&WXL74171KaEtg(l2D!U z(faJnOGoZxzuVbY{O)=D{kuNjzx}VDW&FJU-`(h!FJG=)QEAM{FoT7GrGY_!fyse^ zgMm?jfd#@j%dK#1(F)yLi=3vcx!R<|xW)bMMRn0dDQmx_a6X8*ve>EAz?;F{C*z?N z16~lI-(Y_6>x;G`&6&TaS2FF0G5jQ#{)wgF?4Rd$=NKVc57e_HM3`94TIDlKs8>U% z;fe45QY-V#b}q)<ED2Fxj;8r6JF6$vkk>se^8VsTsC5BC4E&4K#kN;6uJL}K8}44d zSYB+`PKGUCf6x7S@#KrStoeQnwaPag@5tG1{qU4+!@g5;-%n(umKe`vVDMslP`5=# zD)umQ|IUjSOR6OsCf#MT>*sUlUaT0Z;L{Ven2+JqPW}lxZ`Lu&)qLq)c=6H;uP>4f zpK@7hd*8WAUsmsC?!C(}rCQyfQe>8lU99ldKhKOdN;W*Z!Bsc)o)zEw?@_r7Q^XIv zevz|9Me1w&^;--MI~n%$>$$C7R2aJM|Kr8M3?lLlMO81#e$^y+@&0By8S7MC6<Hu1 z5x{VNk^9BI3^(5Hc`?7IyNA#Iup?5FQD()*8=seCL|^$iy*}`ooA#x*PY!-#YB<Jt zBP8|Vb6536>l}R|iYApgv8BJWX85t)pZWNb=gjY}RN5`DuI2yQ=f@z$zToTh`Sa!8 z_RdQ+Nt}Plx~1xPGEg)j`xnEDnlFZrIlccK+%w^x(!6zx%Nb1g9Hu8Hd}Cz6k~Z*0 zIJ)Fcri_glGtHNKFdPf3vOiL}-zYPF>G#E-xS0?9C})PM{=`sl5||+To^w7(+!C>~ zOxvH~S3Oj+L5D%cd|~VBglP<Xp;i0OcplA6Ph$wV=flLH#>l`3Pq9eJS1aD0vFOgN Uiqp^RKv{~x)78&qol`;+03NYVC;$Ke diff --git a/browserid/static/i/hint.png b/browserid/static/i/hint.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff8bf5314769e16ad6e44cbfa0f0839c321ab47 GIT binary patch literal 9534 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%0AiC@cCLrE>-m#E9{$*oFb7sU`<n|`0f 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 literal 0 HcmV?d00001 diff --git a/browserid/static/i/icon.png b/browserid/static/i/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..68fb1e165c72824c3e74a7c6190ab2a5cb8e612c GIT binary patch literal 2401 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 T5^5go00000NkvXXu0mjf0m+pR literal 0 HcmV?d00001 diff --git a/browserid/static/i/id.png b/browserid/static/i/id.png deleted file mode 100644 index 8986681adfc3a44b16ab73df12cb24ed5e8be691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1027 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU_RyP;uunK>+K!y4&OwE10VlS zEq4y|*eD<-CKMDAq0yg`{Ce*Pt;mEG7oSX=+B(UdBl4D@QI|)~45N9xN}pna4j(b- zIXb7+@AHo7#p{08ey@MMe|PQj_jB&Qo%efgv7W4~Y{b`RegX~FjtpuH!VR1USQ3~F z7-ul}5af3AFc|Q!*!<uY-<fkv2LcxyZptYaW8mAN-26s*gEIq@Km!Ad0s|w50}As5 z?*ab@oCW)N?lRA-+@Q^UAUr`SfZ^AZ7{(dT4z9Cdc&u?hyNiAICx#w<<%X4VZ#FRc zFkDl+ZOOBS*^NV?j$v}cXNPR@<ULH&m=CiEs5eYJ>G&>pP4~%@an~568tyh;6Jc)n zC8TC(#?Fw<@x9c9jltYoBEO1{!HkvXLC6b+U(Dx${ACP}m<$*y0-r>@J&?k9gmnRf ziI`;=w}Bcv!)s=?0-Ltt24htQiK)yDe@}*ccf|HQ)LyW%<zv`RK7s324!j@swS45` zQqW^)eG-(n@$pq|g?&>G)T;U<wJ|(mHrUXy`KDRI#Oq9t_DXD7Hoee}p|+T*fbRxV z4(}S>19Kx7&b&{Z<9+g{lN`eyu>eK}t^-%|j{RUfbMj*yLpYN*!vUuU!gudS+=@A( zG=YJMHGuh!ZqgcOrVj1{TT&#q?QHp&$FSA*j`#<2hHF4SMPx9rF?cteK6!QT{=bo* z1uZzwoMJejn2@)?G{mYQEWu>1dG$5M{^B3K)w~hBJj*{zvebVMmuTQVFx|-Klkca@ zf6o}#ze{JXuRKs|aRnaxIHK=|JVTtSdEp=L>y76b-~33IJoDA9C_U7Kp)9q;{?1+o zhMW@#^H?9G`Y?P;+Y&6t!l2M?-NznyXa9;&(FVIvmV^xqECQkpwvuz1@9;AmIL7nr zrv0|!hT4;t9h`%Bebr`Pv)?lNyB!yULoR>u+v`VT+Dk5aJSg>Hh-%m#`=#-meb>Lw zrPI#spWwOwyX*&B28Q{&X1@OYgmI?*{!8n=7+fz~m7=)9jP*g;k#1w{Ack3msuRv? zGHh33+pwlbeJk8k3yK(R&J;%HMlxDV`s{ae8q);{!-lDv4F1LU?w!+N&|&p^expgG zLDn+=eZ84>X<>GL-)$>Koqy>JV&(5x7<UN6!->dDvth$8-tYbiMNF>FmB7r+;OXk; Jvd$@?2>^8Khd}@U diff --git a/browserid/static/i/labs-logo.png b/browserid/static/i/labs-logo.png deleted file mode 100644 index 696c5d5d126202682d651c6a9ecf633d5b804703..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmV;11bO?3P)<h;3K|Lk000e1NJLTq005x?001Hg1^@s6H+8wd000C{Nkl<Zc-rlp z?Qw)45QeV=O0Wb<pae^x1WTX;ORxk=umnr61WF+H11Ds&AK<BHa_r2`B;oWxp4(+# zxIAKvkLJza>FpsjZxA-WrFTzX;<xz*Ve_lq$KN(I2%BH&o7tyN>F2pY*!)VLkw`dZ z?J5E4o^Be1&ChWC^pF9#B=8;yz5oEt+Z%+<4|A2GoB;*PW&uRZxk1?c3U>*(HH&<G z24dGBY<`q)>pct7tRp0w%}j%^`4K62Vb*&VRL(l9p5xwi;eURZQ?_=oU|q9G4@*id z52AfNQ<}J;4`7YAnPVV@uW1m1w2_-e)-aoK*M<*V^G)gZ5h*$ph<@P}0RJ<Dn9jAW zSBwCm1nDP4!jM1<h(_4N>OvoxNGL&QJ{UqQ-G;qYZ(9@ojD}+cWS<P-_Uwj~Vux2m z=vE!m-XOgBQ7)b6pRx%VQ&jPw%6w#1<kl{Ia<)&IPuI-p{)RbH<SHDh{Vwa@84z~J zc>K-?GNkMKodw0rxYVbu*qD&{&BrzsXn{F1Tz?b>A>0r2L@B-`SQn;U5dvt4w9UwM zCe~RANJl_uh~fvXrSy)ID|;lNQlt80z|zGgd5SVi^kb^%i^CwC<8kH?080!4d`Ad} zivFw@K{yGK2R`GHB?`O;3?NFF<3;FGhe0?oV5~v}3&`K{logQ4am0I$1?hMsKIK<H zsEF~*#B<UYKv;V!Ml)kxiA<)z_zZIpw(0;ZC(<riXBF~reMYloAjE)Cg0L(}0$xZF zXQ$&K8>ayiMd_38gb)T9Bc$V!O#s7av+5`aoge@kX5#V(xgzjBh~q)hnuAJ*z5=A9 z3KLT(l-~tHR|ugi)L%IWySqVHvd37u52=w<7zzuTGpgersZ7HgAaqEfID?A#RS1oc z((~*z-3dZ{AcWNBxvA6wkAScj*2z~wC{?5(JB(2RVTnzI`cZ02E=8RUp*ax3Q7B@r zg0ObN&V*1S&mAk|7NJiyW7?org>%GN|CiEnU!g~y4WTC@Lr+|LCWJ#p3S0^yoSDsl zwV<C}{Qg=1bQ_WHGhYE=5JEXtQ4WH{BS{};LMWxCD<O0+s+?SyKzZubZPWQG2q!_n zwSq)5R}?PqfY99pLURFxa6bMFgocP79a3?@YaOu*L4|v@6GAPtcMN1});<VP{Y(fY zc>GNwVgC*YYxWd_FyWGQJEK{iRu$1cGHXI<Ou7QXh53+ej-3(@DXU<wcNK-nMBJkX z>$wo=uZVKKz-M|Dgr!n~j{7#|;hv}j;VA6$dglJR5WKw*mKs)YaQz7fN;DWBe#bow zgwO)f)glv@w`(93<ZUApiaj#<BT?zj6>gdS%tR^+L|Rp;Pl17aAwaf3RJZZilQ1v} zsYo9_@!9(uW=Eq|qH%>=soXtmY+w02{J#`vq^;&`psDb#KpIiRYqT(ql4ZavWB7HC YFVih&kuBK5;s5{u07*qoM6N<$f+d#;JOBUy diff --git a/browserid/static/i/people.png b/browserid/static/i/people.png deleted file mode 100644 index 9260e8edc9ec89be7a56d6ae3e98db28de49ded4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU}5rfaSW-r^>(g*hghmi!~FHr zjLKTiioLwBFk(WMsF{$WtC@<He^73_#-sz2OA4&HFD>m}?w}HQAwf`(_l=VDlupkJ zUb{<I@J(C&Mrobrsa>vH-j>XGsr2UE^Y3TRSii41&wN;JpZ)&w`<2hWp92cK&sOnl zD$(P=!OEq83}v0ed3tk9q$+EC<qf9fG9P&CV7`Il4CCbkEFVNa=za*_&6vF7<h71P z6W?-v;4xs@!)J5tN%}el_eTGQ*<1q48CEye9{7FWux{Ht)^AMhq6&J9*O-qt@>-fc zG}*wtV=co~@dWJ;k!H`HpS0M(yki~1RnZ5P54aP29escDRV=;fBj9}h+DoGkfe$V- zmD?Rqd(iNman(upn@?je?%~}NJ>75hX@L(+AACEV{&VHTWNH*}X!K8<^nZF?!g9$4 zQj!bge>8qs7dO)<B{Jb6kHEBW<~KDB&o`Z&eBi(y34?E9tQ_9rA94=-Xyy`_7I!If zZ-C88hQyc4zIM*Dc@fAE*wAo>xt_hJKAiDT5&I57gMXo{9H;FMoM(LOujNp&k5A(F zBBqw-Iv>&(EUtHAJX9<x!7WfO^27Ywxz(pjK7>86xuCJqGkA%x<MwIQlP5bqEo8I^ zO4`F8e(PsiLy<AVlJkG!6=K-~RMZ=`&#GL^-#Sg3Au>vC@s8(A#~Y`ATzKJB5vK&( zKaCe_{+qrl&TU|ta^5mQ`a^Kv{Yth9&KWDC)325qWeDBisqv}Wz9F=Zy)51R-&(7( z5Op2CSpJ#`Z;#wlvoGegV3S$WyOYhIX|>{k|7*@(`XTVa<Ylu;KLh8>HTO(DD1S&T zGc~-Q=fJvR8pHQb0ozoU1fSxrWDjV_;tsGd{E{nPcxig<=kKZR1sUs@?hB^{ty;|T zLRI(12f3qqOu4Pv2kIUOoYoO5<jAPys9^dr=av33iL)%RAN&&f_$FL?)0wDx&U(pY z*R%#1;{&q~oa|^@Wtm{$IqCixhMxv9H+P=ON~q@H?R9M^6^vWSqv24urYoQ!kM%^q zME!L&U?h+YU)nGx>4-?U&Q8`8{_g#)e5HJ649mPlKcf!3HFAz}{&7$>?!DSt^O#z1 zWlf>2LCd08{2246Tv=kfWa^3O+2NC1F6`Wx(vZfbuf}*w*w@j+pUIWc1qF&YkN_7b znY`Kld--ZNCLhM>jX#?ne_`0X)iNtdLr{5{5vngU=l^GT*ZcOY7Jq6Duux#|boFyt I=akR{0PC-`Gynhq diff --git a/browserid/static/i/slit.png b/browserid/static/i/slit.png new file mode 100644 index 0000000000000000000000000000000000000000..f406cf593bd63bfd0e28e58f4d90dfa8fd8f7d37 GIT binary patch literal 327 zcmV-N0l5B&P)<h;3K|Lk000e1NJLTq000F50077c1^@s6AQ>x<0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy=}AOERCwC#mg^3JFbsuhSv0{5`u=ag z>w$n6nKapwd8mZwKk1T_v5(Vs7a*|rK0|S)wDr&tk@OTnRaHBe7$~T4$$&$DWN<M; zxy~n@8C;@Lb6!%I2VF6I=Hw;kRm(XG=LkugJQgaowV$+Q9vJph#s!9p_CKDc!R<ly zBOq_J?UF%*1`U1%y#{F;)oq>z4X%Pd=)nL)JvzrpcLtZJ!*Fr7Y50gRbvBrD=8WOB zmQxLH7Q-WaE;=!%TD{g*baMa*3%xnhoY|*cYGckU>3gS~X6L{qZE*6h4L64Wd%Rx) Z3;?<GcbMcun!f-5002ovPDHLkV1kq3hi3o) literal 0 HcmV?d00001 diff --git a/browserid/static/js/browserid.js b/browserid/static/js/browserid.js index e3e9f1fa9..04064ebfa 100644 --- a/browserid/static/js/browserid.js +++ b/browserid/static/js/browserid.js @@ -35,14 +35,104 @@ * ***** END LICENSE BLOCK ***** */ $(function() { + + if ($('#vAlign').length) { + $(window).bind('resize', function() { $('#vAlign').css({'height' : $(window).height() }); }).trigger('resize'); + } + BrowserIDNetwork.checkAuth(function(authenticated) { if (authenticated) { - $("body").addClass("authenticated"); + //$("body").addClass("authenticated"); if ($('#emailList').length) { display_saved_ids(); } } }); + + _.mixin({ + relative: function(date) { + var diff = (((new Date()).getTime() - date.getTime()) / 1000), + day_diff = Math.floor(diff / 86400), + dObj = { "friendly" : date.toLocaleDateString(), + "additional" : date.toLocaleTimeString(), + "utc" : date.toUTCString(), + "locale" : date.toLocaleString() }; + + /* some kind of error */ + if (day_diff < 0) { + dObj.friendly = "in the future!?!"; + return dObj; + } else if (isNaN(day_diff)) { + dObj.friendly = dObj.additional = "unknown"; + return dObj; + } + + if (day_diff === 0) { + if (diff < 60) { + dObj.friendly = "just now"; + return dObj; + } + if (diff < 120 + 30) { /* 1 minute plus some fuzz */ + dObj.friendly = "a minute ago"; + return dObj; + } + if (diff < 3600) { + dObj.friendly = Math.floor(diff / 60) + " minutes ago"; + return dObj; + } + if (diff < (60 * 60) * 2) { + dObj.friendly = "1 hour ago"; + return dObj; + } + if (diff < 24 * 60 * 60) { + dObj.friendly = Math.floor(diff / 3600) + " hours ago"; + return dObj; + } + } + if (day_diff === 1) { + dObj.friendly = "yesterday"; + return dObj; + } + if (day_diff < 7) { + dObj.friendly = day_diff + " days ago"; + return dObj; + } + if (day_diff < 8) { + dObj.friendly = "last week"; + return dObj; + } + /* for this scope: we want day of week and the date + plus the month (if different) */ + if (day_diff < 31) { + dObj.friendly = Math.ceil(day_diff / 7) + " weeks ago"; + return dObj; + } + + /* for this scope: we want month + date */ + if (day_diff < 62) { + dObj.friendly = "a month ago"; + return dObj; + } + if (day_diff < 365) { + dObj.friendly = Math.ceil(day_diff / 31) + " months ago"; + return dObj; + } + + /* for this scope: we want month + year */ + if (day_diff >= 365 && day_diff < 730) { + dObj.additional = date.toLocaleDateString(); + dObj.friendly = "a year ago"; + return dObj; + } + if (day_diff >= 365) { + dObj.additional = date.toLocaleDateString(); + dObj.friendly = Math.ceil(day_diff / 365) + " years ago"; + return dObj; + } + return dObj; + } + }); + }); function display_saved_ids() @@ -50,11 +140,19 @@ function display_saved_ids() var emails = {}; BrowserIDIdentities.syncIdentities(function() { emails = getEmails(); - displayEmails(); + if (_.isEmpty(emails)) { + console.log(emails); + $("#content").hide(); + $("#vAlign").show(); + } else { + $("#content").show(); + $("#vAlign").hide(); + displayEmails(); + } }); - function displayEmails() { + // XXX: this is currently not displayed $('#cancellink').click(function() { if (confirm('Are you sure you want to cancel your account?')) { BrowserIDNetwork.cancelUser(function() { @@ -63,42 +161,35 @@ function display_saved_ids() } }); + $('#manageAccounts').click(function() { + $('#emailList').addClass('remove'); + $(this).hide(); + $("#cancelManage").show(); + }); + + $('#cancelManage').click(function() { + $('#emailList').removeClass('remove'); + $(this).hide(); + $("#manageAccounts").show(); + }); + $("#emailList").empty(); _(emails).each(function(data, e) { - var block = $("<div>").addClass("emailblock"); - var label = $("<div>").addClass("email").text(e); - var meta = $("<div>").addClass("meta"); - - var pub = $("<div class='keyblock'>").text(data.pub); - pub.hide(); - var linkblock = $("<div>"); - var puba = $("<a>").text("[show public key]"); - // var priva = $("<a>").text("[show private key]"); - puba.click(function() {pub.show()}); - // priva.click(function() {priv.show()}); - linkblock.append(puba); - // linkblock.append(" / "); - // linkblock.append(priva); - - var deauth = $("<button>").text("Forget this Email"); - meta.append(deauth); - deauth.click(function() { - // remove email from server - BrowserIDNetwork.removeEmail(e, display_saved_ids); - }); - - var d = new Date(data.created); - var datestamp = $("<div class='date'>").text("Signed in at " + d.toLocaleString()); + var date = _.relative(new Date(data.created)); - meta.append(datestamp); - meta.append(linkblock); - - block.append(label); - block.append(meta); - // block.append(priv); - block.append(pub); - - $("#emailList").append(block); + $("<li class='identity cf'/>").append( + _.template("<div class='email'><%= email %></div>", { email : e }), + $("<div class='activity cf'/>").append( + $("<button class='delete'>remove</button>").click(function() { + if (confirm("Remove " + e + " from your BrowserID?")) { + // XXX this callback is not working as expected + BrowserIDNetwork.removeEmail(e, display_saved_ids); + } + }), + _.template("<abbr class='status' title='Registered: <%= created %>'>Registered <%= relative %></abbr>", + { relative: date.friendly, created : date.locale } ) + ) + ).appendTo($("#emailList")); }); } } diff --git a/browserid/views/about.ejs b/browserid/views/about.ejs new file mode 100644 index 000000000..165be9c6f --- /dev/null +++ b/browserid/views/about.ejs @@ -0,0 +1,48 @@ +<div id="content"> + <div id="about"> + + <div class="video"> + <!-- <iframe width="700" height="300" src="https://www.youtube.com/embed/l0t9yDLAmFo" frameborder="0" allowfullscreen></iframe> --> + <img src="http://placehold.it/700x300/eee/ccc"> + </div> + + <div class="row cf"> + <h2>Sign In. Simply.</h2> + <button class="create signIn">sign in</button> <!-- XXX: remove this button if user is signed in --> + </div> + <div class="row one cf"> + <img src="http://placehold.it/200x140/eee/ccc"> + <div> + <p><span class="steps"></span> Click the <em>BrowserID</em> ‘Sign In’ button.</p> + </div> + </div> + + <hr> + + <div class="row two cf"> + <img src="http://placehold.it/200x140/eee/ccc"> + <div> + <p><span class="steps"></span> Select your preferred Email.</p> + </div> + + </div> + + <hr> + + <div class="row three cf"> + <img src="http://placehold.it/200x140/eee/ccc"> + <div> + <p><span class="steps"></span> No passwords necessary, you're done!</p> + </div> + </div> + </div> + +</div> + +<script type="text/javascript"> + $(document).ready(function () { + $(".signIn").click(function () { + document.location = "/signin"; + }); + }); +</script> diff --git a/browserid/views/developers.ejs b/browserid/views/developers.ejs deleted file mode 100644 index 88deb4475..000000000 --- a/browserid/views/developers.ejs +++ /dev/null @@ -1,105 +0,0 @@ - <script src="js/highlight.js"></script> - <script>hljs.initHighlightingOnLoad();</script> - <div class="why"> - <p> - BrowserID provides a <strong>simple</strong> and <strong>sophisticated</strong> - sign-in process that your <strong>users will love</strong>. It can be - integrated in three easy steps: - </p> - </div> - <ol id="steps"> - <li class="step"> - <div class="number">1.</div> - <h3>Enable BrowserID:</h3> - Include the BrowserID JavaScript library in your site by adding a script tag to your <tt><head></tt> - - <pre><code><script src="https://browserid.org/include.js" type="text/javascript"></script></code></pre> - </li> - <li class="step"> - <div class="number">2.</div> - <h3>Identify the User:</h3> - Instead of displaying a form on your - site which takes a username and password, use the BrowserID - JavaScript API when the user clicks your sign-in button: -<pre><code class="javascript">navigator.id.getVerifiedEmail(function(assertion) { - if (assertion) { - // This code will be invoked once the user has successfully - // selected an email address they control to sign in with. - } else { - // something went wrong! the user isn't logged in. - } -}); -</code></pre> - <p> - Upon a successful sign-in, you'll be called back with - an <i>assertion</i>, a string containing a signed claim that proves - the user is who they say they are. - </p> - <p> - <strong>NOTE:</strong> While completely optional, you might consider - replacing your sign-in button with a pretty BrowserID button: - - <div class="buttonbox"> - <div><img src="i/sign_in_red.png"></div> - <div><img src="i/sign_in_blue.png"></div> - <div><img src="i/sign_in_orange.png"></div> - <div><img src="i/sign_in_green.png"></div> - <div><img src="i/sign_in_grey.png"></div> - </div> - </p> - </li> - <li class="step"> - <div class="number">3.</div> - <h3>Verify the User's Identity:</h3> - You must verify the <i>assertion</i> - is authentic, and extract the user's email address from it. - The easiest way to do these is to use the - free verification service provided by BrowserID. - <p> - To use it, you send a request - to <tt>https://browserid.org/verify</tt> with two POST parameters: - </p> - <ol> - <li> <tt>assertion</tt>: The encoded assertion - <li> <tt>audience</tt>: The hostname and optional port of your site - </ol> - <p> - The verifier will check the the assertion was meant for your site and - is valid, here's an example: - </p> - <pre><code>$ curl -d "assertion=<ASSERTION>&audience=mysite.com" "https://browserid.org/verify" -{ - "status": "okay", - "email": "lloyd@mozilla.com", - "audience": "mysite.com", - "valid-until": 1308859352261, - "issuer": "browserid.org:443" -} -</pre></code> - </p> - <p> - <strong>NOTE:</strong> You may choose to validate assertions on your own - server. While a bit more complicated you can reduce your - dependencies on others. Refer - to <a href="https://wiki.mozilla.org/Identity/Verified_Email_Protocol">the - specification</a> and the <a href="https://github.com/mozilla/browserid/tree/master/verifier">source for the reference - validator</a>. - </p> - </li> - <li class="step"> - <h3>Complete the sign in!</h3> - Having completed the steps - above, you can trust that the present user really owns the - email address returned by the verifier. You don't need to - perform any additional authentication unless you want to! - From here, you can perform whatever post-authentication steps - you like. - </li> - </ol> - <div class="why"> - <p> - You're done! <strong>Welcome to BrowserID!</strong> For more details, have a look at - our <a href="http://myfavoritebeer.org/">demonstration</a>, and view - <a href="https://github.com/lloyd/myfavoritebeer.org/">the code</a> behind it. - </p> - </div> diff --git a/browserid/views/index.ejs b/browserid/views/index.ejs index a12cdc093..30474ac87 100644 --- a/browserid/views/index.ejs +++ b/browserid/views/index.ejs @@ -1,12 +1,58 @@ - <div class="why"> - <img style="float: right;" src="i/people.png"> - <p>For <b>users</b>, BrowserID provides a <b>safer and easier</b> way to sign in. <a href="/users">How it works.</a></p> + <div id="content" style="display:none;"> + <div id="manage"> + <h1 class="serif">Account Manager</h1> + <div class="edit cf"> + <strong>Your Accounts</strong> + + <a id="manageAccounts" href="javascript:void(0);">edit</a> + <a id="cancelManage" href="javascript:void(0);">done</a> + </div> + <ul id="emailList"> + <li class="cf"> + <div class="email">me@andychung.ca</div> + <div class="activity cf"> + <button class="delete">remove</button> + <span class="status">Last login at 15:55:57, 6/2/2011</span> + </div> + </li> + <li class="cf"> + <div class="email">animalyouth@gmail.com</div> + <div class="activity cf"> + <button class="delete">remove</button> + <span class="status">Last login at 8:34:31, 6/1/2011</span> + </div> + </li> + </ul> + <!-- <div id="disclaimer">You may, at any time, <a href="#">cancel your account</a></div> --> + </div> </div> - <div class="why"> - <img style="float: left;" src="i/developers.png"> - <p>For <b>developers</b>, BrowserID offers a world class sign-in experience with only a couple lines of code. <a href="developers">Get Started.</a></p> - </div> - <div class="why"> - <img style="float: right;" src="i/id.png"> - <p>For <b>identity providers</b>, BrowserID lets you give your users an identity they can <b>use everywhere</b>. <a href="primaries">Dig Deeper.</a> </p> + + <div id="vAlign"> + <div id="signUp"> + <div id="card"><img src="/i/slit.png"></div> + <div id="hint"></div> + <div id="status"></div> + + <p>Connect with <em>BrowserID</em>, the safest & easiest way to sign in.</p> + <p><a class="granted info" href="/about">Take the tour</a> or <button class="granted create">sign up</button></p> + </div> </div> + +<script type="text/javascript"> +$(document).ready(function () { + $('.granted').hover(function() { + $('#card').toggleClass('insert'); + $('#status').delay(400).toggleClass('green'); + }); + + $('.create').hover(function() { + $('#hint').addClass('signUp').removeClass('info'); + }).click(function () { + document.location = '/signup'; + }); + + $('.info').hover(function() { + $('#hint').removeClass('signUp').addClass('info'); + }); +}); +</script> diff --git a/browserid/views/layout.ejs b/browserid/views/layout.ejs index 969eaad11..50df1e2da 100644 --- a/browserid/views/layout.ejs +++ b/browserid/views/layout.ejs @@ -1,48 +1,54 @@ <!DOCTYPE html> <html> <head> - <meta charset=utf-8"> + <meta charset='utf-8'> + <meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; width=device-width;"> <title><%- title %></title> + <% if (production) { %> - <link rel="stylesheet" type="text/css" href="/css/browserid.min.css"> - <script src="/js/lib.min.js" type="text/javascript"></script> + <link rel="stylesheet" type="text/css" href="/css/browserid.min.css"> + <script src="/js/lib.min.js" type="text/javascript"></script> <% } else { %> - <link rel="stylesheet" type="text/css" href="/css/github.css"> - <link rel="stylesheet" type="text/css" href="/css/style.css"> - <script src="/js/jquery-1.6.2.min.js" type="text/javascript"></script> - <script src="/dialog/resources/storage.js" type="text/javascript"></script> - <script src="/dialog/resources/browserid-network.js" type="text/javascript"></script> - <script src="/dialog/resources/browserid-identities.js" type="text/javascript"></script> - <script src="/dialog/resources/underscore-min.js" type="text/javascript"></script> - <script src="/js/browserid.js" type="text/javascript"></script> + <link href='http://fonts.googleapis.com/css?family=Droid+Serif:400,400italic,700,700italic' rel='stylesheet' type='text/css'> + <link rel="stylesheet" href="/css/style.css" type="text/css" media="screen"> + + <script src="/js/jquery-1.6.2.min.js" type="text/javascript"></script> + <script src="/dialog/resources/storage.js" type="text/javascript"></script> + <script src="/dialog/resources/browserid-network.js" type="text/javascript"></script> + <script src="/dialog/resources/browserid-identities.js" type="text/javascript"></script> + <script src="/dialog/resources/underscore-min.js" type="text/javascript"></script> + <script src="/js/browserid.js" type="text/javascript"></script> <% } %> </head> <body> - <header class="<% if(fullpage) { %> half <% } else { %> quarter <% } %>"> - <a id="manageLink" href="manage">my account</a> - <hgroup> - <% if (fullpage) { %> - <span id="labslogo">Mozilla Labs</span> - <h1>BrowserID</h1> - <h2>A better way to sign in.</h2> - <% } else { %> - <h1><a href="/"><img src="i/browserid_logo_lil.png">BrowserID</a></h1> - <h2><%- title %></h2> - <% } %> - </hgroup> - </header> + +<div id="wrapper"> + + <header id="header"> + <ul class="cf"> + <li><a class="home" href="/"></a></li> + </ul> + <ul class="nav cf"> + <li><a href="/about">How it works</a></li> + <li><a href="https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site" target="_blank">Developers</a></li> + + <li><a class="signIn" href="/signin">Sign In</a></li> + </ul> + </header> + <%- body %> - <footer> - <div> - <div class="right"> - <p><img src="i/browserid_logo_sm.png"> is an <b>open source experiment</b><br />from the <a href="http://identity.mozilla.com">Identity Team</a> at - <a href="https://mozillalabs.com">Mozilla Labs</a>.</p> - </div> - <div class="left"> - <p> <a href="https://github.com/mozilla/browserid">Code</a> <a href="http://lloyd.io/how-browserid-works">Documentation</a> <a href="https://lists.mozilla.org/listinfo/dev-identity">Mailing list</a> <a href="/privacy">Privacy</a> <a href="/tos">TOS</a> </p> - <p class="copyright">Copyright © 2011 Mozilla. All rights reserved. </p> - </div> - </div> - </footer> + + <footer id="footer"> + <ul class="cf"> + <li>By the <a href="http://identity.mozilla.com">Identity Team</a> @ <a href="http://mozillalabs.com">Mozilla Labs</a></li> + <li>—</li> + <li><a href="/privacy">Privacy</a></li> + <li><a href="/tos">TOS</a></li> + <!--<li>Copyright © 2011 Mozilla. All rights reserved</li>--> + </ul> + </footer> + +</div> + </body> </html> diff --git a/browserid/views/manage.ejs b/browserid/views/manage.ejs deleted file mode 100644 index f48ac42d9..000000000 --- a/browserid/views/manage.ejs +++ /dev/null @@ -1,10 +0,0 @@ - <div class="why"> - <p> - Manage your email addresses in BrowserID. - </p> - </div> - <div id="emailList"> - </div> - <div id="cancelaccount"> - You may, at any time, <a href="#" id="cancellink">cancel your account</a>. - </div> diff --git a/browserid/views/primaries.ejs b/browserid/views/primaries.ejs deleted file mode 100644 index 93a1c4617..000000000 --- a/browserid/views/primaries.ejs +++ /dev/null @@ -1,12 +0,0 @@ - <div class="why"> - <p> - This page is dedicated to the <b>Identity Providers</b> who certify users' email addresses without requiring a mailback. These are dudes like Yahoo!, Google, Twitter, Facebook, and - even github. If someone new wants to join they party, hey, - they <a href="http://www.mozilla.org/about/manifesto">should - be able to</a>. - </p> - <p> - We'll have more information on this in the near future. - </p> - <br><br><br> - </div> diff --git a/browserid/views/privacy.ejs b/browserid/views/privacy.ejs index e3fe25f09..d775425d4 100644 --- a/browserid/views/privacy.ejs +++ b/browserid/views/privacy.ejs @@ -1,5 +1,6 @@ - <div class="legal"> - <h3>What You Should Know About Privacy & BrowserID</h3> +<div id="content"> + <div id="legal"> + <h2>Privacy & BrowserID</h2> <ul> <li>We need your verified email address to register a BrowserID Account, but we don't ask for other personal information.</li> @@ -88,3 +89,4 @@ </pre> </blockquote> </div> +</div> diff --git a/browserid/views/prove.ejs b/browserid/views/prove.ejs index d3fdddbd3..ef2d767fb 100644 --- a/browserid/views/prove.ejs +++ b/browserid/views/prove.ejs @@ -1,3 +1,4 @@ +<div id="content"> <div class="why"> <p> Email Verification @@ -6,6 +7,7 @@ <div class="status"> One moment while we attempt to confirm your email address... </div> +</div> <script> function getParameterByName( name ) { @@ -21,13 +23,11 @@ function getParameterByName( name ) function success() { $("div.status").text("Address confirmed!"); - setTimeout(function() { - $("body").fadeOut(1500, function() { - // if the close didn't work, then let's redirect the the management page where they'll - // get to see the ids that they've created. - document.location = '/manage'; - }); - }, 1000); + $("body").delay(1000).fadeOut(1500, function() { + // if the close didn't work, then let's redirect the the main page where they'll + // get to see the ids that they've created. + document.location = '/'; + }); } function failure(why) { diff --git a/browserid/views/signin.ejs b/browserid/views/signin.ejs new file mode 100644 index 000000000..3eae1fd67 --- /dev/null +++ b/browserid/views/signin.ejs @@ -0,0 +1,38 @@ +<div id="vAlign"> + <div id="signUpFormWrap"> + <!-- XXX this form submits to nowhere --> + <form id="signUpForm" class="cf"> + <h1 class="serif">Sign In</h1> + <ul class="inputs"> + <li> + <label class="serif" for="email">Email Address</label> + <input class="sans" id="email" placeholder="Your Email" type="text"> + </li> + <li> + <label class="serif half" for="password">Password</label> + <div class="half right"> + <!-- XXX: this needs to be fixed --> + <a class="forgot" href="/signup">forgot your password?</a> + </div> + <input class="sans" id="password" placeholder="Your Password" type="text"> + </li> + </ul> + <div class="submit cf"> + <div class="remember cf"> + <div class="checkAlign"> + <input id="memorize" type="checkbox"> + </div> + <label for="memorize">remember me</label> + </div> + <input type="submit" class="create" value="Sign In"/> + </div> + </form> + <a class="signUpIn space" href="/signup">New to BrowserID? Sign up today.</a> + </div> +</div> + +<script type="text/javascript"> + $(document).ready(function () { + $('form input:visible:first').focus(); + }); +</script> diff --git a/browserid/views/signup.ejs b/browserid/views/signup.ejs new file mode 100644 index 000000000..6207496ff --- /dev/null +++ b/browserid/views/signup.ejs @@ -0,0 +1,34 @@ +<div id="vAlign"> + <div id="signUpFormWrap"> + <!-- XXX this form submits to nowhere --> + <form id="signUpForm" class="cf"> + <h1 class="serif">Create Account</h1> + <ul class="inputs"> + <li> + <label class="serif" for="email">Email Address</label> + <input class="sans" id="email" placeholder="Your Email" type="text"> + </li> + <li> + <label class="serif" for="password">New Password</label> + <input class="sans" id="password" placeholder="Enter a Password" type="text"> + </li> + <li> + <label class="serif" for="vpassword">Verify Password</label> + <input class="sans" id="vpassword" placeholder="Repeat Password" type="text"> + </li> + </ul> + <div class="submit cf"> + <div class="remember cf"> + <a class="signUpIn" href="/signin">Existing account? Sign in.</a> + </div> + <input type="submit" class="create" value="Create Account"/> + </div> + </form> + </div> +</div> + +<script type="text/javascript"> + $(document).ready(function () { + $('form input:visible:first').focus(); + }); +</script> diff --git a/browserid/views/tos.ejs b/browserid/views/tos.ejs index 3a194fd99..53bae5ecb 100644 --- a/browserid/views/tos.ejs +++ b/browserid/views/tos.ejs @@ -1,5 +1,6 @@ -<div class="legal"> - <h3>Terms of Service — Overview</h3> +<div id="content"> + <div id="legal"> + <h2>Terms of Service — Overview</h2> <ul> <li> @@ -88,5 +89,5 @@ <h4>Miscellaneous</h4> <p>This TOS constitutes the entire agreement between you and Mozilla Corporation (“Mozilla†or we) concerning the Services. These terms are governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions. The United Nations Convention on Contracts for the International Sale of Goods is expressly disclaimed. If any portion of these terms is held to be invalid or unenforceable, the remaining portions will remain in full force and effect. In the event of a conflict between a translated version of these terms and the English language version, the English language version shall control.</p> - + </div> </div> diff --git a/browserid/views/users.ejs b/browserid/views/users.ejs deleted file mode 100644 index 97b25729d..000000000 --- a/browserid/views/users.ejs +++ /dev/null @@ -1,8 +0,0 @@ - <div class="why" style="height:500px;"> - <p> - As a user of BrowserID, you confirm your email addresses once. Then, you can sign into any web site that supports BrowserID with just two clicks. - </p> - - <center><iframe width="480" height="390" src="https://www.youtube.com/embed/l0t9yDLAmFo" frameborder="0" allowfullscreen></iframe></center> - - </div> -- GitLab