3scale/porta

View on GitHub
app/assets/stylesheets/provider/themes/wizard.scss

Summary

Maintainability
Test Coverage
// library
@import "provider/typography";
@import "compass";
@import "compass/reset";
@import "font-awesome";
@import "provider/logo";
@import "compass/css3/box-sizing";



// typography
@function calculateRem($size) {
  $remSize: $size / 16px;
  @return $remSize * 1rem;
}

@mixin font-size($size) {
  font-size: $size;
  font-size: calculateRem($size);
}

//sizes
$font-size-x-small: 12px;
$font-size-small: 14px;
$font-size: 16px;
$font-size-large: 18px;
$font-size-x-large: 24px;
$font-size-xx-large: 32px;
$font-size-xxx-large: 48px;

// line height
$line-height: $font-size * 1.5;

//weights
$font-weight-light: 300;
$font-weight-normal: 400;
$font-weight-bold: 600;

//families
$font-family-text: $font-family-base;

// colors
$color-grey-1: $font-color;
$color-grey-2: $label-color;
$color-grey-3: $disabled-color;
$color-grey-4: $border-color;
$color-success: $success-color;
$success-color: $color-success;
$color-failure: $error-color;
$error-color: $color-failure;
$color-disabled: $color-grey-3;

//
$color-text-primary: $color-grey-1;
$color-text-secondary: $color-grey-2;
$color-text-tertiary: $color-grey-3;

$color-border: $color-grey-4;
$color-brand-primary: $brand-orange;
$color-brand-secondary: $highlight-color; // blue
$color-link: $color-brand-secondary;
$color-link-hover: $color-text-primary;

// vertical rythm
$base-font-size: $font-size;
$base-line-height: $line-height;
$default-rhythm-border-width: 2px;
$rhythm-unit: "rem";
$rem-with-px-fallback: true;

@import "provider/flash";

#flashWrapper {
  @include leader(1);
}

// elements

html {
  @include box-sizing(border-box);
  font-family: $font-family-text;
  font-size: adjust-font-size-to($font-size);
  line-height: $line-height;
  color: $color-text-primary;
  @include establish-baseline;
  //@include debug-vertical-alignment;
}

body {
  text-align: center;
}

hr {
  @include box-sizing(border-box);
  height: 24px;
  margin: 0 0 0 0;
  border: none;
  border-bottom: 1px solid $color-border;
}

strong {
  font-weight: $font-weight-bold;
}

header, main {
  margin: 0 auto;
  text-align: left;
  max-width: 50em;
  min-width: 20em;
  position: relative;
}

a, .link {
  color: $color-link;
  cursor: pointer;

  &:hover {
    color: $color-link-hover;
  }
}
header {
  @include leader(1);
  @include trailer(2);
}

h1 {
  @include adjust-font-size-to($font-size-x-large);
  font-weight: $font-weight-normal;
  @include trailer(1);
}

p {
  @include leader(0);
  @include trailer(1);
}

h1 + p {
  @include leader(-1);
}

.wizard-close {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 30;
  @include adjust-font-size-to($font-size-xx-large);
  line-height: 0;
  color: $color-border;
}

.success {
  color: $color-success;
}

.failure {
  color: $color-failure
}

// button
$button-color-border: $color-brand-secondary;
$button-color: $button-color-border;
$button-color-hover: white;

.button {
  @include box-sizing(border-box);
  @include leader(1);
  @include trailer(1);
  text-decoration: none;
  color: $button-color;
  line-height: 0;
  @include border-radius(6px);
  float: right;
  background-color: white;
  cursor: pointer;
  font-size: $font-size;
  @include rhythm-borders;
  border-color: $button-color-border;

  &:hover {
    background-color: $button-color-border;
    color: $button-color-hover;
  }
}

.button--next:after {
  content: " ›";
}

.button[disabled] {
  color: $color-disabled;
  border-color: $color-disabled;

  &:after {
    content: normal;
  }

  &:hover {
    background-color: $button-color-hover;
  }
}

// button nudge animation
@include keyframes(button-nudge) {
  0%, 100% {
    background-color: $button-color-hover;
    color: $button-color;
  }

  50% {
    background-color: $button-color-border;
    color: $button-color-hover;
  }
}


input {
  outline: none;
}

input[type="text"] {
  @include input-placeholder {
    color: $color-text-tertiary;
    font-style: italic;
    height: 1.5rem;

    &:before {
      content: 'e.g. '
    }
  }
}



input[type="text"] {
  @include box-sizing(border-box);
  text-decoration: none;
  color: $button-color;
  //line-height: 24px;
  height: 3.125rem;
  //@include border-radius(6px);
  float: right;
  background-color: white;
  font-size: $font-size;
  border: none;
  @include padding-leader;
  @include trailing-border;
  padding: 0 0 0 0;
  border-color: $color-border;
  width: 60%;

  &:hover {
    border-color: $color-text-tertiary;
  }

  &:focus {
    border-color: $color-brand-secondary;
  }

  //border-color: $button-color-border;

}

.error input {
  border-color: $color-failure;
}

.inline-errors {
  float: right;
  width: 60%;
  color: $color-failure;
  font-style: italic;
}

form li {
  display: block;
  width: 100%;
  float: left;
  clear: both;
  @include trailer(1);


  &.slim {
    display: inline;
    @include trailer(-0.5);
    max-width: 80%;

    label {
      text-align: left;
      width: auto;
      padding-left: 0;
    }

    input {
      float: left;
    }
  }


  &.hidden { display: none; }

}

fieldset {
  border: none;

  &:hover {
    color: $color-text-primary;
  }
}

label {
  @include box-sizing(border-box);
  display: block;
  width: 40%;
  float: left;
  text-align: right;
  line-height: 0;
  height: $line-height;
  @include rhythm-borders;
  border-color: transparent;
}


.fa-ul {
  margin-left: 0;
}

// logo
.logo-3scale {
  margin: 0 0 0 0;
  padding: 0 0 0 0;
  float: none;
}

.logo-3scale--svg {
  height: $line-height * 1.5;
}

.explain {
  @include leader;

  .text {
    @include padding-leader(0.5);
  }


  .text--down {
    @include padding-leader(1);
  }

  .text--up {
    @include padding-leader(0);
  }

  .is-transparent {
    @include opacity(0);
  }

  .explain__step--1 {
    @include animation( focus 1s ease-out 1s forwards,
                        focus_border 1s ease-out 1s forwards,
                        unfocus 1s ease-out 5s forwards,
                        unfocus_border 1s ease-out 5s forwards,
                        success 1s ease-out 15s forwards,
                        success_border 1s ease-out 15s forwards );

    .icon {
      @include animation( focus 1s ease-out 1s forwards,
                          unfocus 1s ease-out 5s forwards,
                          success 1s ease-out 15s forwards );
    }

    .text {
      @include animation( reveal 1s ease-out 1s forwards );
    }

    .code-example {
      @include animation( reveal 1s ease-out 1s forwards );

      * {
        @include animation( unfocus 1s ease-out 5s forwards );
      }

      &:hover {
        * {
          @include animation( clean 0.2s ease-out 0 forwards );
        }
      }
    }
  }

  .explain__step--2 {
    @include animation( focus 1s ease-out 5s forwards,
                        focus_border 1s ease-out 5s forwards,
                        unfocus 1s ease-out 10s forwards,
                        unfocus_border 1s ease-out 10s forwards,
                        success 1s ease-out 15s forwards,
                        success_border 1s ease-out 15s forwards );

    .icon {
      @include animation( focus 1s ease-out 5s forwards,
                          unfocus 1s ease-out 10s forwards,
                          success 1s ease-out 15s forwards );
    }

    .text {
      @include animation( reveal 1s ease-out 5s forwards );
    }

    .code-example {
      @include animation( reveal 1s ease-out 5s forwards );

      * {
        @include animation( unfocus 1s ease-out 10s forwards );
      }

      &:hover {
        * {
          @include animation( clean 0.2s ease-out 0 forwards );
        }
      }
    }
  }

  .explain__step--3 {
    @include animation( focus 1s ease-out 10s forwards,
                        unfocus 1s ease-out 15s forwards,
                        success 1s ease-out 15s forwards );

    .icon {
      @include animation( focus 1s ease-out 10s forwards,
                          unfocus 1s ease-out 15s forwards,
                          success 1s ease-out 15s forwards );
    }

    .text {
      @include animation( reveal 1s ease-out 10s forwards );
    }
  }
}



// Block: code example

// colors
$code-color-base: $color-success;
$code-color-path: $color-brand-secondary;
$code-color-params: $color-brand-primary;

.code-example {
  display: block;
  @include adjust-font-size-to(14px);
  color: $color-text-secondary;

  .code-example__base {
    color: $code-color-base;
  }

  .code-example__path {
    color: $code-color-path;
  }

  .code-example__params {
    color: $code-color-params;

    &:before {
      content: '?';
      color: $color-text-secondary;
    }
  }

  .code-example--slash:after {
    content: '/';
    color: $color-brand-secondary;
  }

  .feedback--inactive .code-example--slash:after {
    color: $color-text-secondary;
  }
 
  .code-example--optional {

    &:before {
      content: '(';
      color: $color-text-secondary;
    }

    &:after {
      content: ')';
      color: $color-text-secondary;
    }
  }

  .code-example__params.code-example--optional {
    &:before {
      content: '(?';
    }
  }
}


$feedback-color-active: $color-brand-secondary;
$feedback-color-success: $color-success;
$feedback-color-failure: $color-failure;
$feedback-color-inactive: $color-text-secondary;


.feedback {
  border-left: 5px solid transparent;
  padding-left: 72px;
  margin-left: 24px;
  border-color: transparent;
  //position: relative;
  @include padding-trailer(3);
  min-height: $line-height * 2;
  @include adjust-font-size-to($font-size-large);

  .code-example {
    //position: absolute;
    //top: $line-height * 3;
    //@include padding-leader(6);
    //margin-left: $line-height * -2;
    //@extend %vertical-align;

    position: relative;
    top: $line-height * 2;
    left: $line-height * -2;
  }

  &.feedback--connect {
    padding-bottom: 0;
  }

  &.feedback--sec {
    @include padding-trailer(0);
    min-height: auto;
  }

  &.feedback--success {
    border-color: $feedback-color-success
  }

  &.feedback--failure {
    border-color: $feedback-color-failure;
  }

  &.feedback--active {
    border-color: $feedback-color-active;
  }

  &.feedback--inactive {
    border-color: $feedback-color-inactive;
  }


  .icon {
    color: $color-text-secondary;
  }

  .icon--sec {
    color: $color-text-primary;
  }
  .icon--focus {
    color: $feedback-color-active;
    //margin-top: 0 !important;
  }

  .icon--success {
    color: $feedback-color-success;
  }

  .icon--failure {
    color: $feedback-color-failure;
  }

  &>[class*="fa-li"] {
    font-size: 40px;
    background-color: white;

    //margin-left: -60px;

    margin-left: 59px;
    padding: 4px 0 4px 0;
    /* margin-right: 10px; */
    margin-top: -6px;
    width: 48px;
  }

  .fa-mobile {
    font-size: 64px;
    margin-left: 111px;
    margin-top: -9px;
    //margin-left: -57px;
  }

  .fa-hdd-o {
  }

  .fa-puzzle-piece {
    text-indent: 10px;
  }


}


// reveal animation
@include keyframes(reveal) {
  0%, 100% {
    visibility: visible;
    @include opacity(1);
  }
}

// focus animation
@include keyframes(focus) {
  0%, 100% {
    color: $color-brand-secondary;
  }
}

// unfocus animation
@include keyframes(unfocus) {
  0%, 100% {
    color: $color-text-secondary;
  }
}

// focus border animation
@include keyframes(focus_border) {
  0%, 100% {
    border-color: $color-brand-secondary;
  }
}

// unfocus border animation
@include keyframes(unfocus_border) {
  0%, 100% {
    border-color: $color-text-secondary;
  }
}

// success animation
@include keyframes(success) {
  0%, 100% {
    color: $color-success;
  }
}

// success border animation
@include keyframes(success_border) {
  0%, 100% {
    border-color: $color-success;
  }
}

// clean animation
@include keyframes(clean) {
  0%, 100% {
    color: auto;
  }
}

//icons grey
//blue icon + text: step-1
//blue to grey: step-1
//blue icon + text: step-2
//blue to grey: step-2
//blue icon + text: step-3
//all to green


.response {
  overflow-y: auto;
  max-height: $base-line-height * 20;
  display: block;
}

.is-hidden {
  display: none;
}