Mailspring/internal_packages/onboarding/stylesheets/onboarding.less
Jackie Luo 6a628102ba feat(self-hosting): Add onboarding flow for self-hosted sync engine
Summary:
Adds a fun new UI for adding accounts to the sync engine. After creating your sync engine instance, all you have to do is auth your accounts on the command line and then enter the URL/port number in this flow. That pulls all of your accounts from the `/accounts` endpoint, mocks an identity token, and edits your `config.json` properly.

TODO: Update the docs in the repo and revert the PR with the temporary fix.

Test Plan: Tested locally.

Reviewers: bengotow, halla, juan

Reviewed By: halla, juan

Differential Revision: https://phab.nylas.com/D3114
2016-07-21 14:25:30 -07:00

630 lines
11 KiB
Plaintext

@import "onboarding-reset";
@-webkit-keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
.alpha-fade-enter {
opacity: 0.01;
transition: all .15s ease-out;
}
.alpha-fade-enter.alpha-fade-enter-active {
opacity: 1;
}
.alpha-fade-leave {
opacity: 1;
transition: all .15s ease-in;
}
.alpha-fade-leave.alpha-fade-leave-active {
opacity: 0.01;
}
.page-frame {
text-align: center;
flex: 1;
.page-container {
display: flex;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.page {
background-color: #F3F3F3;
flex: 1;
}
h1 {
font-weight: 100;
font-size: 40pt;
margin:0;
}
h2 {
line-height: 1.3em;
font-size: 30pt;
font-weight: 200;
}
h4 {
font-weight: 400;
font-size: 20pt;
}
.logo-container {
width: 117px;
height: 117px;
display: inline-block;
padding-top: 40px;
box-sizing: content-box;
}
.btn-add-account {
width: 170px;
margin-left: 10px;
transition: width 150ms ease-in-out;
}
.btn-add-account.spinning {
img { vertical-align: middle; margin-right: 5px; margin-bottom: 2px; }
}
.prompt {
color:#5D5D5D;
font-size:1.07em;
font-weight:300;
margin-top:20px;
margin-bottom:14px;
}
.close {
position: fixed;
z-index: 100;
top: 1px;
left: 6px;
}
.back {
position: fixed;
top: 15px;
left: 15px;
padding: 10px;
}
.message {
margin-bottom:15px;
max-width: 600px;
margin: auto;
&.error {
color: #A33;
-webkit-user-select: text;
a {
color: #A33;
}
}
&.empty {
color: gray;
}
}
form.settings {
padding: 0 20px;
padding-bottom: 20px;
}
input {
display: inline-block;
width: 100%;
padding: 7px;
margin-bottom: 10px;
background: #FFF;
color: #333;
text-align: left;
border: 1px solid #AAA;
&::-webkit-input-placeholder {
color: #C6C6C6;
}
&[type=checkbox] {
width: initial;
margin-right: 5px;
}
&:disabled {
background: fadeout(@input-bg, 40%);
}
&.error {
border: 1px solid #A33;
}
}
label {
display: inline-block;
white-space: nowrap;
width: 100%;
color: #888;
text-align: left;
padding:3px 0;
}
label[for=subscribe-check] {
color: black;
white-space: inherit;
}
label.checkbox {
width: inherit;
}
.toggle-advanced {
display: inline-block;
width: 100%;
font-size: 0.94em;
text-align: right;
padding: 0;
}
.btn {
margin-top:8px;
}
}
.page.authenticate {
flex: 1;
display: flex;
webview {
display: flex;
flex: 1;
}
.webview-loading-spinner {
position: absolute;
right: 17px;
top: 17px;
opacity: 0;
transition: opacity 200ms ease-in-out;
transition-delay: 200ms;
&.loading-true {
opacity: 1;
}
}
.webview-cover {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #F3F3F3;
opacity: 1;
transition: opacity 200ms ease-out;
display: flex;
flex-direction: column;
align-items: center;
.message {
color: #444;
opacity: 0;
margin-top: 20px;
transition: opacity 200ms ease-out;
}
.try-again {
opacity: 0;
transition: opacity 200ms ease-out;
}
}
.webview-cover.slow,
.webview-cover.error {
.message {
opacity: 1;
max-width: 400px;
}
}
.webview-cover.error {
.spinner { visibility: hidden;}
.try-again {
opacity: 1;
}
}
.webview-cover.ready {
pointer-events: none;
opacity: 0;
}
}
.page.account-choose {
h2 {
margin-top: 70px;
}
.provider-list {
margin:auto;
width: 400px;
}
.cloud-sync-note {
margin-bottom: 20px;
cursor: default;
color: @text-color-very-subtle;
}
.provider-name {
font-size: 18px;
font-weight: 300;
color: rgba(0,0,0,0.7);
}
.provider {
text-align: left;
cursor: default;
line-height: 63px;
.icon-container {
width: 50px;
height: 50px;
display: inline-block;
box-sizing: content-box;
padding: 0 15px 0 20px;
vertical-align: top;
zoom: 0.9;
}
}
.provider:hover{
background: rgba(255,255,255,0.4);
}
}
.page.account-setup {
form {
width: 400px;
padding-top: 20px;
margin: auto;
}
.twocol {
display: flex;
flex-direction: row;
width: 700px;
margin: auto;
transition: width 400ms ease-in-out;
}
.twocol.hide-second-column {
width: 400px;
.col:nth-child(2) {
opacity: 0;
flex: 0;
padding: 0;
flex-shrink: 1;
}
.col:first-child {
}
}
.col {
flex: 1;
padding: 0 20px;
opacity: 1;
border-left: 1px solid #ddd;
overflow: hidden;
transition: all 400ms ease-in-out;
}
.col:first-child {
border-left: none;
}
.col-heading {
text-align: left;
padding-bottom: 15px;
}
}
.page.account-setup.AccountExchangeSettingsForm {
.logo-container {
padding-top: 36px;
}
.twocol {
padding-top: 10px;
padding-bottom: 10px;
}
}
.page.account-setup.AccountIMAPSettingsForm {
h2 {
padding-top: 36px;
}
.logo-container {
display: none;
}
.twocol {
padding-top: 20px;
padding-bottom: 10px;
}
}
.page.account-setup.gmail {
.logo-container {
padding-top: 160px;
}
}
.page.tutorial {
display: flex;
flex-direction: column;
&.appeared-false {
.tutorial-container .left {
transform: translate3d(-30px, 0, 0);
opacity: 0;
}
.tutorial-container .right {
transform: translate3d(30px, 0, 0);
opacity: 0;
}
}
.tutorial-container {
background-color: #F9F9F9;
display: flex;
flex-direction: row;
flex: 1;
.left {
align-self: center;
flex: 2;
opacity: 1;
transform: translate3d(0, 0, 0);
transition: all ease-in-out 400ms;
.screenshot {
width: 523px;
height: 385px;
background:url(nylas://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
background-size: contain;
margin:auto;
position: relative;
.overlay {
position: absolute;
width:40px;
height:40px;
border: 2px solid rgba(0,0,0,0.7);
border-radius: 20px;
transform:translate3d(-50%, -50%, 0);
transition: all cubic-bezier(0.65, 0.05, 0.36, 1) 260ms;
.overlay-content {
transition: all cubic-bezier(0.65, 0.05, 0.36, 1) 260ms;
transform: translate3d(-67px,-67px,0) scale(0.21);
background:url(nylas://onboarding/assets/app-screenshot@2x.png) top left no-repeat;
background-position: 10% 20%;
border-radius: 73px;
width: 146px;
height: 146px;
opacity: 0;
display: block;
position: absolute;
}
}
.overlay.seen {
border: 2px solid rgba(0,0,0,0.3);
}
.overlay.expanded {
width:150px;
height:150px;
border: 2px solid rgba(0,0,0,0.7);
border-radius: 75px;
box-shadow: 0 0 15px fade(#2673D1, 50%);
z-index: 2;
.overlay-content {
transform:scale(1);
opacity: 1;
}
}
}
}
.right {
flex: 1;
padding: 30px;
padding-left: 0;
opacity: 1;
transform:translate3d(0, 0, 0);
transition: all ease-in-out 400ms;
h2 {
font-size: 28px;
font-weight: 300;
text-align: center;
}
p {
font-size: 16px;
line-height: 1.85em;
text-align: left;
padding: 10px 0;
color: #333;
}
}
}
}
.page.welcome {
display: flex;
flex-direction: column;
.footer {
background-image: linear-gradient(to right, rgba(167,214,134,1) 0%,rgba(122,201,201,1) 100%);
}
@-webkit-keyframes slideIn {
from {
transform: translate3d(20,0,0);
opacity: 0;
}
to {
transform: translate3d(0,0,0);
opacity: 1;
}
}
a {
color: white;
border-bottom: 1px solid white;
text-decoration: none;
font-weight: 300;
&:hover {
background-color: rgba(255,255,255,0.1);
}
}
.steps-container {
position: relative;
flex: 1;
background-image: linear-gradient(to right, rgba(149,205,107,1) 0%,rgba(60,176,176,1) 100%);
color: white;
}
.hero-text {
font-size: 34px;
line-height: 41px;
font-weight: 200;
cursor: default;
-webkit-font-smoothing: subpixel-antialiased;
}
.sub-text {
font-size: 17px;
font-weight: 300;
}
img.icons {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
}
.btn-self-hosting {
cursor: pointer;
font-weight: 300;
margin-bottom: 20px;
color: white;
}
}
.page.welcome.is-first-account-false {
.footer {
background-image: linear-gradient(to left, rgba(167,214,134,1) 0%,rgba(122,201,201,1) 100%);
}
.steps-container {
background-image: linear-gradient(to left, rgba(149,205,107,1) 0%,rgba(60,176,176,1) 100%);
}
}
.page.welcome,
.page.tutorial {
.footer {
text-align: center;
background-color: #ececec;
border-top: 1px solid rgba(0,0,0,0.10);
box-shadow: 0 1px 1px solid rgba(255,255,255,0.25);
.btn-next,
.btn-prev {
width: 160px;
margin: 20px 10px;
}
.btn-continue {
font-weight: 300;
margin: 20px 0;
width: 296px;
line-height: 2.5em;
height: 2.5em;
}
}
}
.page.self-hosting {
text-align: center;
cursor: default;
h2 {
margin-top: 70px;
}
input {
display: inline-block;
width: 100%;
padding: 7px;
margin-bottom: 10px;
background: #FFF;
color: #333;
text-align: left;
border: 1px solid #AAA;
&:focus {
border: 1px solid @accent-primary;
}
&.error {
border: 1px solid #A33;
}
}
.message {
margin-top: 20px;
}
.self-hosting-container {
width: 400px;
display: block;
margin: 40px auto;
.section {
margin: 20px 0;
}
.api-root {
margin: 20px 5px 0 5px;
}
}
}
body.platform-win32 {
.page-frame {
.alpha-fade-enter {
transition: all .01s ease-out;
}
.alpha-fade-leave {
transition: opacity .01s ease-in;
}
}
}
// Individual Components
.appearance-mode {
background-color:#f7f9f9;
border-radius: 10px;
border: 1px solid #c6c7c7;
text-align: center;
flex: 1;
padding:9px;
padding-top:10px;
margin:10px;
margin-top:0;
img {
background-color: #c6c7c7;
}
div {
margin-top: 10px;
text-transform: capitalize;
cursor: default;
}
}
.appearance-mode.active {
border:1px solid @component-active-color;
color: @component-active-color;
img { background-color: @component-active-color; }
}