.create-backer-page
  .hero
    h3
      text-align: center
      color: white
      text-transform: uppercase
      font-weight: bold

Add some styles on payment page

.create-backer-page
  .hero
    h3
      text-align: center
      color: white
      text-transform: uppercase
      font-weight: bold

  section.content, aside
    margin-top: +emCalc(50px)

  .payment
    .methods
      label
        margin-right: +emCalc(40px)
        img
          margin-left: +emCalc(5px)
          &.echeck_net-payment-method
            filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40)
            opacity: 0.4

    section.conteiner
      margin-top: +emCalc(50px)
      margin-bottom: +emCalc(30px)
      min-height: +emCalc(300px)
      border-top: 1px solid $border-color
      padding-top: +emCalc(5px)

      .catarse-credit-card-net-form
        .button
          margin-top: +emCalc(25px)


// Based on Redmine from the redmine.css
// begin
table.list
  border: 1px solid #e4e4e4
  border-collapse: collapse
  width: 100%
  margin-bottom: 4px
  th
    background-color: #eeeeee
    padding: 4px
    white-space: nowrap
  td
    vertical-align: top
    &.id
      width: 2%
      text-align: center
    &.checkbox
      width: 15px
      padding: 0px

// end

Add .number style for table lists.

// Based on Redmine from the redmine.css
// begin
table.list
  border: 1px solid #e4e4e4
  border-collapse: collapse
  width: 100%
  margin-bottom: 4px
  th
    background-color: #eeeeee
    padding: 4px
    white-space: nowrap
  td
    vertical-align: top
    &.id
      width: 2%
      text-align: center
    &.checkbox
      width: 15px
      padding: 0px

// end

table.list
  th, td
    &.number
      text-align: right


=overview-icon-48($ident, $icon: $ident)
  ul.overview-list li
    &#overview-#{$ident}, &.#{$ident}
      +icon($icon, 48)

ul.overview-list.level-1
  +no-bullets
  +horizontal-list
  li // All items
    a
      border-bottom: 1px solid black
      display: block
    &#overview-overview
      display: none
  >li
    // Top level
    background: no-repeat 0.4em 0.8em
    // Fix horizontal-list to not drop padding in first and last item
    &, .first, &:first-child, .last, &:last-child
      padding-left: 60px
      padding-right: 40px
    min-height: 58px
    +border-radius($border_radius)
    background-color: #f6f6f6
    border: 1px solid #e4e4e4
    color: #505050
    margin: 1em
    padding-top: 0.8em
    padding-bottom: 0.8em
    width: 20%
  ul // Level > 1
    margin-top: 5px
    li
      display: block
      float: none
      padding-left: 0px
      width: inherit
      min-height: 1em
      a
        border-bottom: none

Add all needed includes in content/overview.sass partial.

@import "compass/utilities/lists/bullets"
@import "compass/utilities/lists/horizontal-list"
@import "compass/css3/border-radius"

=overview-icon-48($ident, $icon: $ident)
  ul.overview-list li
    &#overview-#{$ident}, &.#{$ident}
      +icon($icon, 48)

ul.overview-list.level-1
  +no-bullets
  +horizontal-list
  li // All items
    a
      border-bottom: 1px solid black
      display: block
    &#overview-overview
      display: none
  >li
    // Top level
    background: no-repeat 0.4em 0.8em
    // Fix horizontal-list to not drop padding in first and last item
    &, .first, &:first-child, .last, &:last-child
      padding-left: 60px
      padding-right: 40px
    min-height: 58px
    +border-radius($border_radius)
    background-color: #f6f6f6
    border: 1px solid #e4e4e4
    color: #505050
    margin: 1em
    padding-top: 0.8em
    padding-bottom: 0.8em
    width: 20%
  ul // Level > 1
    margin-top: 5px
    li
      display: block
      float: none
      padding-left: 0px
      width: inherit
      min-height: 1em
      a
        border-bottom: none


.activity-list
  color: $body-copy

.activity-list__title
  color: $feature-copy
  margin-bottom: 20px

.activity-list__container
  list-style: none

.activity-list__item
  +font-size(15)
  line-height: 1em
  margin-bottom: 12px

.activity-list__icon
  &:before
    +size(20px)
    display: inline-block
    margin-right: 0.2em
    position: relative
    top: 5px

.activity-list__link
  font-weight: bold
  &:before
    font-weight: normal

Fix up activity list a touch

.activity-list
  color: $body-copy

.activity-list__title
  color: $feature-copy
  margin-bottom: 20px

.activity-list__container
  list-style: none

.activity-list__item
  +font-size(15)
  line-height: 1em
  margin-bottom: 12px

.activity-list__icon
  &:before
    +size(20px)
    display: inline-block
    margin-right: 0.2em
    margin-top: -0.5px
    position: relative
    top: 5px

.activity-list__link
  font-weight: bold
  &:before
    font-weight: normal

.activity-list__time
  margin-left: 20px


Bring back some of the basic shape mixins

@mixin shape($width:6rem, $height:4rem, $border-radii:false)
  width: $width
  height: $height
  @if $border-radii != false
    border-radius: $border-radii

@mixin rectangle($width:6rem, $height:4rem, $border-radii:false)
  +shape($width, $height, $border-radii)

@mixin square($size:4rem, $border-radii:false)
  +shape($size, $size, $border-radii)

@mixin circle($size:4rem)
  +shape($size, $size, $size)

@mixin oval($width:6rem, $height:4rem)
  $_radii: #{$height} / #{$height * 0.5}
  +shape($width, $height, $_radii)


#main, .posts
  +outer-container

.soundcloud-player-small
  margin:
    top: $small-margin

.index-article
  margin:
    bottom: $large-margin

.topic-list
  color: $medium-gray
  line-height: 1.8em

.posts, .article-detail
  p
    font-size: 1.05em
    line-height: 1.35em

.detail-post-date, .post-date
  font-size: 1em

.post-date
  margin:
    left: em(-111px)
    right: em(10px)
  +media(max-width 830px)
    display: block
    margin:
      left: em(0px)
      right: em(0px)
      bottom: $small-margin

.recent-posts li:before, .article-detail li:before
  content: "• "
  color: $brand-color

.article-detail h3
  -webkit-margin-after: 0em
  -webkit-margin-before: 0em
  margin:
    top: 83px
    bottom: $small-margin
  line-height: 1em

h3.detail-post-topic-list
  margin:
    top: 0px

Add hover for date on index page

#main, .posts
  +outer-container

.soundcloud-player-small
  margin:
    top: $small-margin

.index-article
  margin:
    bottom: $large-margin
  &:hover
    .post-date
      color: $medium-gray

.topic-list
  color: $medium-gray
  line-height: 1.8em

.posts, .article-detail
  p
    font-size: 1.05em
    line-height: 1.35em

.detail-post-date, .post-date
  font-size: 1em

.post-date
  margin:
    left: em(-111px)
    right: em(10px)
  +media(max-width 830px)
    display: block
    margin:
      left: em(0px)
      right: em(0px)
      bottom: $small-margin

.recent-posts li:before, .article-detail li:before
  content: "• "
  color: $brand-color

.article-detail h3
  -webkit-margin-after: 0em
  -webkit-margin-before: 0em
  margin:
    top: 83px
    bottom: $small-margin
  line-height: 1em

h3.detail-post-topic-list
  margin:
    top: 0px


@import compass
@import compass/reset
@import compass/css3/text-shadow
@import compass/css3/box
body
  font-family: 'Open Sans', Helvetica, Arial, sans-serif
  +text-shadow

.flash_errors
  width: 100%
  +display-box
  +box-align('center')
  +box-orient('vertical')
  padding: 10px
  background-color: #a20
  color: white
  font-size: 14px
  font-weight: bold

  .error-block
    margin-top: 8px

  ul
    padding-left: 10px
    list-style: circle
section
  padding: 16px
  h1
    font-size: 24px
    font-weight: bold
  div.instructions
    margin-top: 32px
  form
    input#email
      width: 240px
      margin-top: 8px
    .field_with_errors
      display: inline

Fix for issue with for builder

@import compass
@import compass/reset
@import compass/css3/text-shadow
@import compass/css3/box
body
  font-family: 'Open Sans', Helvetica, Arial, sans-serif
  +text-shadow

.flash_errors
  width: 100%
  +display-box
  +box-align('center')
  +box-orient('vertical')
  padding: 10px
  background-color: #a20
  color: white
  font-size: 14px
  font-weight: bold

  .error-block
    margin-top: 8px

  ul
    padding-left: 10px
    list-style: circle
section
  h1
    font-size: 24px
    font-weight: bold
  div.instructions
    margin-top: 32px
  div.input
    label
      // FIXME: Quickfix for layout issue
      width: 200px
  form
    input#email
      width: 240px
      margin-top: 8px
    .field_with_errors
      display: inline


body.notificationsAreActive
  overflow: hidden

.NotificationsContainer
  position: absolute
  top: 100%
  right: rem(20)
  width: rem(360)
  padding-bottom: rem(10)
  background-color: white
  border: 1px solid #aaa
  border-top: 0
  overflow: hidden

.NotificationsContainer > .Scrollable
  max-height: rem(300)
  overflow-y: auto
  -webkit-overflow-scrolling: touch

.NotificationsContainerTabs > .IconTab
  width: (100% / 6)

@media(min-width: #{$break-4})
  .NotificationsContainer
    right: rem(40)

// MIN HEIGHTS!
@media(min-height: #{em(660)})
  .NotificationsContainer > .Scrollable
    max-height: rem(505)

@media(min-height: #{em(760)})
  .NotificationsContainer > .Scrollable
    max-height: rem(605)

Set an absolute height on the notification popover

body.notificationsAreActive
  overflow: hidden

.NotificationsContainer
  position: absolute
  top: 100%
  right: rem(20)
  width: rem(360)
  padding-bottom: rem(10)
  background-color: white
  border: 1px solid #aaa
  border-top: 0
  overflow: hidden

.NotificationsContainer > .Scrollable
  height: rem(300)
  overflow-y: auto
  -webkit-overflow-scrolling: touch

.NotificationsContainerTabs > .IconTab
  width: (100% / 6)

@media(min-width: #{$break-4})
  .NotificationsContainer
    right: rem(40)

// MIN HEIGHTS!
@media(min-height: #{em(660)})
  .NotificationsContainer > .Scrollable
    height: rem(505)

@media(min-height: #{em(760)})
  .NotificationsContainer > .Scrollable
    height: rem(605)


.contribution-page, .match-page
  &.waiting-bankaccount
    .hero
      min-height: +emCalc(235px)
  .hero
    h3
      text-align: center
      font-weight: bold

    .status
      padding-top: +emCalc(10px)
      .pledged
        font-size: 200%
        padding-top: +emCalc(10px)
      .progress
        margin-top: +emCalc(10px)
        background: $secondary-color
        +radius(10px)
        height: +emCalc(20px)
        span
          display: block
          background: white
          height: +emCalc(20px)
          +radius(10px)
  .bankaccount
    padding: +emCalc(50px, 0)
    .buttons
      padding-top: +emCalc(30px)
    .button
      width: 100%

  .share
    @extend .white
    padding: +emCalc(50px, 0)
    .buttons
      padding-top: +emCalc(30px)
    .button
      width: 100%

  .recommended-projects
    margin-top: +emCalc(50px)

    [class*="column"]:last-child
      float: left

  .recommended-projects, .share
    h3
      text-align: center

Adjust style when we do not have share section on payment success page

.contribution-page, .match-page
  &.waiting-bankaccount
    .hero
      min-height: +emCalc(235px)
  .hero
    h3
      text-align: center
      font-weight: bold

    .status
      padding-top: +emCalc(10px)
      .pledged
        font-size: 200%
        padding-top: +emCalc(10px)
      .progress
        margin-top: +emCalc(10px)
        background: $secondary-color
        +radius(10px)
        height: +emCalc(20px)
        span
          display: block
          background: white
          height: +emCalc(20px)
          +radius(10px)
  .bankaccount
    padding: +emCalc(50px, 0)
    .buttons
      padding-top: +emCalc(30px)
    .button
      width: 100%

  .share
    @extend .white
    padding: +emCalc(50px, 0)
    .buttons
      padding-top: +emCalc(30px)
    .button
      width: 100%

  .recommended-projects
    margin-top: +emCalc(50px)

    [class*="column"]:last-child
      float: left

  .recommended-projects, .share
    h3
      text-align: center

.match-page
  .recommended-projects
    margin-top: 0


.ptz_fileinput
  width: 0.1px
  height: 0.1px
  z-index: -1
  opacity: 0
  overflow: hidden
  position: absolute

  & + label
    color: black
    font-size: 15px
    line-height: 18px

    padding: 7px 10px
    border-radius: 3px
    vertical-align: top
    border: 1px solid rgba(0, 0, 0, 0.2)

    text-align: center
    white-space: nowrap
    display: inline-block

    cursor: pointer
    background: white
    transition: background-color .2s ease

  &:disabled + label
    color: #eee
    background: white
    cursor: not-allowed

  &:required + label

Comment out empty css class

.ptz_fileinput
  width: 0.1px
  height: 0.1px
  z-index: -1
  opacity: 0
  overflow: hidden
  position: absolute

  & + label
    color: black
    font-size: 15px
    line-height: 18px

    padding: 7px 10px
    border-radius: 3px
    vertical-align: top
    border: 1px solid rgba(0, 0, 0, 0.2)

    text-align: center
    white-space: nowrap
    display: inline-block

    cursor: pointer
    background: white
    transition: background-color .2s ease

  &:disabled + label
    color: #eee
    background: white
    cursor: not-allowed

  // &:required + label


@import "_mixins/all"

#repo
  position: relative
  width: 100%
  overflow-x: hidden
  padding-right: 10px

  h3
    display: inline-block
    margin-right: 5px

  .github-icon
    width: 21px
    height: 21px
    display: inline-block

  .github-icon
    img
      margin-top: 2px

  .not-found
    display: block
    padding: 10px 5px
    font-size: 12px

  .description, .language
    font-weight: normal
    color: $color-text-light

  .language
    display: none
    padding-right: 5px

  .github-stats
    position: absolute
    top: 15px
    right: 10px
    > *
      float: left
    a
      height: 16px
      display: block
      font-size: $font-size-smaller
      font-weight: bold
      text-decoration: none
      margin-left: 10px
      padding-left: 20px
      background: no-repeat 0px 2px
      color: $color-text-light
      &.watchers
        background-image: inline-image('ui/github-watchers.png')
      &.forks
        background-image: inline-image('ui/github-forks.png')

Add GitHub mark to GitHub links

@import "_mixins/all"

#repo
  position: relative
  width: 100%
  overflow-x: hidden
  padding-right: 10px

  h3
    display: inline-block
    margin-right: 5px

  .github-icon
    width: 21px
    height: 21px
    display: inline-block

  .github-icon
    img
      margin-top: 2px

  .not-found
    display: block
    padding: 10px 5px
    font-size: 12px

  .description, .language
    font-weight: normal
    color: $color-text-light

  .language
    display: none
    padding-right: 5px

  .github-stats
    position: absolute
    top: 15px
    right: 10px
    > *
      float: left
    a
      height: 16px
      display: block
      font-size: $font-size-smaller
      font-weight: bold
      text-decoration: none
      margin-left: 10px
      padding-left: 20px
      background: no-repeat 0px 2px
      color: $color-text-light
      &.watchers
        background-image: inline-image('ui/github-watchers.png')
      &.forks
        background-image: inline-image('ui/github-forks.png')

  .tab
    a[href^="https://github.com"],
    a[href^="http://github.com"],
    a[href^="https://www.github.com"],
    a[href^="http://www.github.com"]
      &:hover
        background: transparent url(/images/icons/github.png) center right no-repeat
        background-size: 12px
      padding-right: 16px


#basic-info-view
  .network-login
    width: 175px
    height: 40px
    border: solid 0.5px darkgray

    span
      visibility: hidden

  // Forms

  .basic-info
    display: flex
    flex-direction: column

    .form-group
      text-align: left
      margin: 0

      input
        max-height: 5vh

      .help-block
        float: right

      .fancy-error
        padding-top: 29px
        line-height: 14px

    .form-container
      > .form-group, > .row
        max-height: 84px
        max-height: calc(29px + 29px + 5vh)
        flex-grow: 1
        align-self: flex-start

  .btn-illustrated img
    // Undo previous opacity-toggling hover behavior
    opacity: 1

  label
    margin-bottom: 0

  .help-block
    margin: 0

  .optional-help-block
    font-style: italic

  .form-container
    width: 800px

Fix signup input padding in Safari

#basic-info-view
  .network-login
    width: 175px
    height: 40px
    border: solid 0.5px darkgray

    span
      visibility: hidden

  // Forms

  .basic-info
    display: flex
    flex-direction: column

    .form-group
      text-align: left
      margin: 0

      input
        max-height: 5vh

      .help-block
        float: right

      .fancy-error
        padding-top: 29px
        line-height: 14px

    .form-container
      > .form-group, > .row
        max-height: 84px
        max-height: calc(29px + 29px + 5vh)
        flex-grow: 1
        align-self: flex-start

  .btn-illustrated img
    // Undo previous opacity-toggling hover behavior
    opacity: 1

  label
    margin-bottom: 0

  .help-block
    margin: 0

  .optional-help-block
    font-style: italic

  .form-container
    width: 800px

  .input-lg
    padding-top: 0
    padding-bottom: 0


.card
  &__avatar
    height: 70px
    width: 70px

    &--school
      border-radius: 4px
      box-shadow: 0 1px 2px 0 get-color((color: dark, opacity: .1))
      height: 45px
      margin-left: 20px
      margin-top: -30px
      width: 45px

    &--school-big
      border-radius: 4px
      box-shadow: 0 1px 2px 0 get-color((color: dark, opacity: .1))
      height: 90px
      margin-top: -45px
      width: 90px

    &--teacher
      border: 5px solid get-color(air)
      border-radius: 50%
      margin: -35px auto 0

    &--list
      left: -35px
      margin-top: 15px
      position: absolute

    +grid-media($breakpoint-medium)
      &--school
        height: 65px
        margin-left: 0
        width: 65px

      &--teacher
        background-color: get-color(raiz)
        display: block
        left: initial
        margin: 0 auto -35px
        position: relative
        top: -35px
        text-indent: -9999px

Change avatar sass property positions

.card
  &__avatar
    height: 70px
    width: 70px

    &--school
      border-radius: 4px
      box-shadow: 0 1px 2px 0 get-color((color: dark, opacity: .1))
      height: 45px
      margin-left: 20px
      margin-top: -30px
      width: 45px

    &--school-big
      border-radius: 4px
      box-shadow: 0 1px 2px 0 get-color((color: dark, opacity: .1))
      height: 90px
      margin-top: -45px
      width: 90px

    &--teacher
      background-color: get-color(raiz)
      border-radius: 50%
      border: 5px solid get-color(air)
      margin: -35px auto 0
      text-indent: -9999px

    &--list
      left: -35px
      margin-top: 15px
      position: absolute

    +grid-media($breakpoint-medium)
      &--school
        height: 65px
        margin-left: 0
        width: 65px

      &--teacher
        display: block
        left: initial
        margin: 0 auto -35px
        position: relative
        top: -35px


.neighborly-balanced-creditcard-form,
.neighborly-balanced-bankaccount-form
  .card-box:not(.new-card),
  .bank-box:not(.new-bank)
    border: 1px solid $border-color
    border-radius: $global-radius
    padding: +emCalc(15px)
    background: white
    margin-bottom: +emCalc(5px)
    dt,
    dd
      display: inline
    .expiration dt
      margin-left: +emCalc(15px)
    .expiration dd
      margin-left: +emCalc(40px)

  .add-new-creditcard-form.with-others-cards,
  .add-new-bankaccount-form.with-other-bank
    margin-top: +emCalc(25px)

  span.checkbox
    margin-right: +emCalc(5px)
  .balanced-seal
    padding-top: +emCalc(5px)
  .button
    margin-top: +emCalc(5px)
  .terms
    margin-bottom: +emCalc(15px)
  .update-address
    margin-bottom: +emCalc(15px)
    margin-top: +emCalc(-15px)

.neighborly-balanced-bankaccount-form
  .check-numbers
    margin-bottom: +emCalc(20px)
    text-align: center
  .radio_buttons
    label.radio
      float: left
      padding-right: +emCalc(15px)
      padding-top: +emCalc(15px)
      span
        margin-right: +emCalc(5px)

Fix spacing with input radio on payment screen

.neighborly-balanced-creditcard-form,
.neighborly-balanced-bankaccount-form
  .card-box:not(.new-card),
  .bank-box:not(.new-bank)
    border: 1px solid $border-color
    border-radius: $global-radius
    padding: +emCalc(15px)
    background: white
    margin-bottom: +emCalc(5px)
    dt,
    dd
      display: inline
    .expiration dt
      margin-left: +emCalc(15px)
    .expiration dd
      margin-left: +emCalc(40px)

    input[type="radio"]
      margin-bottom: +emCalc(5px)

  .add-new-creditcard-form.with-others-cards,
  .add-new-bankaccount-form.with-other-bank
    margin-top: +emCalc(25px)

  span.checkbox
    margin-right: +emCalc(5px)
  .balanced-seal
    padding-top: +emCalc(5px)
  .button
    margin-top: +emCalc(5px)
  .terms
    margin-bottom: +emCalc(15px)
  .update-address
    margin-bottom: +emCalc(15px)
    margin-top: +emCalc(-15px)

.neighborly-balanced-bankaccount-form
  .check-numbers
    margin-bottom: +emCalc(20px)
    text-align: center
  .radio_buttons
    label.radio
      float: left
      padding-right: +emCalc(15px)
      padding-top: +emCalc(15px)
      span
        margin-right: +emCalc(5px)


//- 💫 CSS > COMPONENTS > TOOLTIPS

[data-tooltip]
    position: relative

    @include breakpoint(min, sm)
        &:before
            @include position(absolute, top, left, 125%, 50%)
            display: inline-block
            content: attr(data-tooltip)
            background: $color-front
            border-radius: 2px
            color: $color-back
            font-family: inherit
            font-size: 1.3rem
            line-height: 1.25
            opacity: 0
            padding: 0.5em 0.75em
            transform: translateX(-50%) translateY(-2px)
            transition: opacity 0.1s ease-out, transform 0.1s ease-out
            visibility: hidden
            //white-space: nowrap
            min-width: 200px
            max-width: 300px
            z-index: 200

        &:hover:before
            opacity: 1
            transform: translateX(-50%) translateY(0)
            visibility: visible

Fix resetting of tooltip font

//- 💫 CSS > COMPONENTS > TOOLTIPS

[data-tooltip]
    position: relative

    @include breakpoint(min, sm)
        &:before
            @include position(absolute, top, left, 125%, 50%)
            display: inline-block
            content: attr(data-tooltip)
            background: $color-front
            border-radius: 2px
            color: $color-back
            font: normal 1.3rem/#{1.25} $font-primary
            text-transform: none
            opacity: 0
            padding: 0.5em 0.75em
            transform: translateX(-50%) translateY(-2px)
            transition: opacity 0.1s ease-out, transform 0.1s ease-out
            visibility: hidden
            //white-space: nowrap
            min-width: 200px
            max-width: 300px
            z-index: 200

        &:hover:before
            opacity: 1
            transform: translateX(-50%) translateY(0)
            visibility: visible


// *************************************
//
//   Dropdown
//   -> Consecutive menu items
//
// *************************************

.dropdown
  position: relative

// -------------------------------------
//   Modifiers
// -------------------------------------

.dropdown--e
  .dropdown-menu
    left: auto
    right: 0

// -------------------------------------
//   Modifiers
// -------------------------------------

.dropdown.is-active
  .dropdown-menu
    display: block

// -------------------------------------
//   Scaffolding
// -------------------------------------

// ----- Item ----- //

.dropdown-item
  border-bottom: $b-border
  color: $c-subdue
  font-size: $b-fontSize-m
  margin: 0
  &:last-child
    border-bottom: 0
  &:hover,
  &:focus
    background: $c-background
    color: $c-subdue

// Link

.dropdown-item-link
  color: inherit
  display: block
  padding: $b-space-s
  &:hover,
  &:focus
    color: inherit

// ----- Menu ----- //

.dropdown-menu
  @extend .lr
  background: $c-background-invert
  border: $b-border
  border-radius: $b-borderRadius
  box-shadow: $b-boxShadow-s
  display: none
  left: 0
  margin-top: $b-space-s
  min-width: em(140px)
  position: absolute
  top: 100%
  z-index: 1

Add Dropdown Structure Haml template

// *************************************
//
//   Dropdown
//   -> Consecutive menu items
//
// -------------------------------------
//   Template (Haml)
// -------------------------------------
//
// .dropdown[.dropdown--e](.is-active)
//   .dropdown-menu
//     .dropdown-item
//     .dropdown-item
//       .dropdown-item-link
//
// *************************************

.dropdown
  position: relative

// -------------------------------------
//   Modifiers
// -------------------------------------

.dropdown--e
  .dropdown-menu
    left: auto
    right: 0

// -------------------------------------
//   Modifiers
// -------------------------------------

.dropdown.is-active
  .dropdown-menu
    display: block

// -------------------------------------
//   Scaffolding
// -------------------------------------

// ----- Item ----- //

.dropdown-item
  border-bottom: $b-border
  color: $c-subdue
  font-size: $b-fontSize-m
  margin: 0
  &:last-child
    border-bottom: 0
  &:hover,
  &:focus
    background: $c-background
    color: $c-subdue

// Link

.dropdown-item-link
  color: inherit
  display: block
  padding: $b-space-s
  &:hover,
  &:focus
    color: inherit

// ----- Menu ----- //

.dropdown-menu
  @extend .lr
  background: $c-background-invert
  border: $b-border
  border-radius: $b-borderRadius
  box-shadow: $b-boxShadow-s
  display: none
  left: 0
  margin-top: $b-space-s
  min-width: em(140px)
  position: absolute
  top: 100%
  z-index: 1


Add concentric circles background animation

// Background animation with dots moving along 3 circular rings

$background-color: #131313

$num-rings: 3
$dots-per-ring: 5

$base-ring-size: 65vh
$ring-size-step: 10vh

$base-ring-opacity: .075
$ring-opacity-step: -1 / 50

@keyframes spin
  from
    transform: translate(-50%, -50%) rotate(0deg)

  to
    transform: translate(-50%, -50%) rotate(360deg)

// Properties for rings

.ring
  position: absolute
  top: 50vh
  left: 50vw
  transform: translate(-50%, -50%)
  border: .25vh solid $white
  border-radius: 50%

  // Some properties change between rings
  @for $i from 0 to $num-rings
    &:nth-child(#{$i + 1})
      $size: $base-ring-size + $ring-size-step * $i
      width: $size
      height: $size
      opacity: $base-ring-opacity + $ring-opacity-step * $i
      // Animations
      animation: spin linear infinite
      animation-duration: 80s - 15s * $i
      // Even go forward; odd backwards
      animation-direction: if($i % 2 == 0, normal, reverse)

// Dots

.dot
  position: absolute
  left: 50%
  top: 0
  // Outer rings have smaller dots
  width: calc(3.5vh - 2.5%)
  height: calc(3.5vh - 2.5%)
  // This was 1000% when width and height were 5%. Once I changed width and height to calc()
  // functions this new value was entirely guesswork
  transform-origin: 0%  calc(70vh - 2000%)
  // Shouldn't be able to see the ring underneath
  background: $background-color
  // Outlines don't go circular and borders increase element size, so box-shadow it is. If it
  // wasn't inset the shadow would overlap with the underlying ring and cause a lighter square
  // at the intersection.
  box-shadow: inset 0 0 0 .25vh $white
  // Round :)
  border-radius: 50%

  // Dots should be evenly spaced along their ring.
  @for $i from 0 to $dots-per-ring
    &:nth-child(#{$i + 1})
      // translation centers the dots on their rings
      transform: rotate(#{(360 / $dots-per-ring) * $i}deg) translate(-50%, -50%)


@import compass/css3

@import offline-theme-base-indicator

$green: #80d580
$red: #e24949

.offline-ui
    +box-shadow(0 0 0 1px rgba(0, 0, 0, .15))
    +border-radius(4px 4px 0 0)
    font-family: "Helvetica Neue", sans-serif
    font-weight: 300
    white-space: nowrap
    padding: 1em
    width: 6.3em
    background: #000
    color: #ccc
    bottom: 0
    left: 20px

    .offline-ui-content
        padding-left: 1.5em

        &:after
            +border-radius(50%)
            content: " "
            display: block
            position: absolute
            top: 0
            bottom: 0
            left: 1em
            margin: auto
            height: .8em
            width: .8em

    &.offline-ui-up

        .offline-ui-content:after
            background: $green

    &.offline-ui-down

        .offline-ui-content:after
            background: $red


// *************************************
//
//   Guide
//   -> A guide card
//
// -------------------------------------
//   Template (Haml)
// -------------------------------------
//
// .guide
//   .guide-content
//     .guide-title
//     .guide-meta
//
// *************************************

.guide
  animation: guide-slide 5s infinite linear
  animation-play-state: paused
  background-image: image-url('bg-pattern.svg')
  background-position: 0 0
  background-repeat: repeat
  min-height: 150px
  position: relative

  +state
    animation-play-state: running

// -------------------------------------
//   Scaffolding
// -------------------------------------

// ----- Content ----- //

.guide-content
  left: 50%
  position: absolute
  text-align: center
  top: 50%
  transform: translate(-50%, -50%)
  width: 90%

// ----- Meta ----- //

.guide-meta
  color: rgba($c-text-invert, 0.45)
  font-weight: normal
  margin-bottom: 0

// ----- Title ----- //

.guide-title
  color: $c-text-invert
  font-size: 160%
  margin-bottom: 0

// -------------------------------------
//   Animation
// -------------------------------------

@keyframes guide-slide
  from
    background-position: 0 0
  to
    background-position: 320px 0

Reduce height of guide images

// *************************************
//
//   Guide
//   -> A guide card
//
// -------------------------------------
//   Template (Haml)
// -------------------------------------
//
// .guide
//   .guide-content
//     .guide-title
//     .guide-meta
//
// *************************************

.guide
  animation: guide-slide 5s infinite linear
  animation-play-state: paused
  background-image: image-url('bg-pattern.svg')
  background-position: 0 0
  background-repeat: repeat
  min-height: 5em
  position: relative

  +state
    animation-play-state: running

// -------------------------------------
//   Scaffolding
// -------------------------------------

// ----- Content ----- //

.guide-content
  left: 50%
  position: absolute
  text-align: center
  top: 50%
  transform: translate(-50%, -50%)
  width: 90%

// ----- Meta ----- //

.guide-meta
  color: rgba($c-text-invert, 0.45)
  font-weight: normal
  margin-bottom: 0

// ----- Title ----- //

.guide-title
  color: $c-text-invert
  font-size: 160%
  margin-bottom: 0

// -------------------------------------
//   Animation
// -------------------------------------

@keyframes guide-slide
  from
    background-position: 0 0
  to
    background-position: 320px 0


Add basic style for balanced credit card payment view

.neighborly-balanced-creditcard-form
  span.checkbox
    margin-right: +emCalc(5px)
  .use-previously-card
    margin-bottom: +emCalc(25px)
    .card
      border: 1px solid $border-color
      border-radius: $global-radius
      padding: +emCalc(15px)
      background: white
      .expiration
        padding-left: +emCalc(20px)

  .balanced-seal
    padding-top: +emCalc(5px)
  .button
    margin-top: +emCalc(5px)
  .terms
    margin-bottom: +emCalc(15px)
  .update-address
    margin-bottom: +emCalc(15px)
    margin-top: +emCalc(-15px)


#admin-dashboard
  .download-statistics-report
    margin-right: 16px
  .box
    width: 288px
    min-height: 170px
    margin: 15px
    border: 1px solid #ccc
    border-top: 5px solid $pink
    float: left
    &.large
      width: auto
      float: none
    .title
      width: auto !important
      margin: 0 !important
      height: 30px !important
      padding-bottom: 0 !important
      float: none !important
      display: block !important
      background: #f0f0f0
      border-bottom: 1px solid #ccc
      font-weight: bold
      font-size: 120%
      padding-top: 10px !important
    .title, p, .hint
      padding: 5px
      text-align: center
    p
      margin: 20px 0
      font-weight: bold
      font-size: 40px
    .hint
      font-size: 80%
      color: #666


Add pallet of colors, but we need to change this


#overview
  ul
    +no-bullets
    +horizontal-list
    li#accounting,
    li#invoicing,
    li#basic_claims_data
      width: 120px
    li
      background: no-repeat top left
      padding-left: 58px
      padding-right: 40px
      min-height: 58px
      a
        border-bottom: 1px solid black
        display: block
      &#overview
        display: none
      &#store
        background-image: url(/images/48x48/store.png)
      &#accounting
        background-image: url(/images/48x48/accounting.png)
      &#invoicing
        background-image: url(/images/48x48/invoicing.png)
      &#basic_claims_data
        background-image: url(/images/48x48/basic_claims_data.png)
      &#user_settings
        background-image: url(/images/48x48/user_settings.png)
    ul
      width: inherit
      margin-top: 5px
      li
        padding-left: 0px
        width: inherit
        min-height: 1em
        a
          border-bottom: none

Fix overview styling to not put more than one item on a line.

#overview
  ul
    +no-bullets
    +horizontal-list
    li#accounting,
    li#invoicing,
    li#basic_claims_data
      width: 120px
    li
      background: no-repeat top left
      padding-left: 58px
      padding-right: 40px
      min-height: 58px
      a
        border-bottom: 1px solid black
        display: block
      &#overview
        display: none
      &#store
        background-image: url(/images/48x48/store.png)
      &#accounting
        background-image: url(/images/48x48/accounting.png)
      &#invoicing
        background-image: url(/images/48x48/invoicing.png)
      &#basic_claims_data
        background-image: url(/images/48x48/basic_claims_data.png)
      &#user_settings
        background-image: url(/images/48x48/user_settings.png)
    ul
      width: inherit
      margin-top: 5px
      li
        display: block
        float: none
        padding-left: 0px
        width: inherit
        min-height: 1em
        a
          border-bottom: none


// Media print specific styles ****

// Navigation elements
.navbar,
.tabs,
.sidebar,
.pagination,
.search-form,
.footer
  display: none

// Sidebar fix
.row-fluid
  width: 120%
.row-fluid .row-fluid
  width: 100%

// Content
.container-fluid .content
  margin-right: 20px

// Alerts
.alert
  display: none

// Actions
.contextual,
.action-links,
.btn
  display: none

// Elements
a
  color: #484848

input,
textarea,
select
  border: 0px none
  box-shadow: none

.ui-widget-content
  border: none

Drop .tabs from display: none classes in printing. Not used anymore.

// Media print specific styles ****

// Navigation elements
.navbar,
.sidebar,
.pagination,
.search-form,
.footer
  display: none

// Sidebar fix
.row-fluid
  width: 120%
.row-fluid .row-fluid
  width: 100%

// Content
.container-fluid .content
  margin-right: 20px

// Alerts
.alert
  display: none

// Actions
.contextual,
.action-links,
.btn
  display: none

// Elements
a
  color: #484848

input,
textarea,
select
  border: 0px none
  box-shadow: none

.ui-widget-content
  border: none


=offline-keyframes($name)
    @keyframes #{$name}
        @content
    @-webkit-keyframes #{$name}
        @content
    @-moz-keyframes #{$name}
        @content
    @-ms-keyframes #{$name}
        @content
    @-o-keyframes #{$name}
        @content

=offline-animation($animation)
    animation: $animation
    -webkit-animation: $animation
    -moz-animation: $animation
    -ms-animation: $animation
    -o-animation: $animation
    -webkit-backface-visibility: hidden

=offline-transform($transform)
    transform: $transform
    -webkit-transform: $transform
    -moz-transform: $transform
    -ms-transform: $transform
    -o-transform: $transform

=offline-preserve-3d
    -webkit-transform-style: preserve-3d
    -moz-transform-style: preserve-3d
    transform-style: preserve-3d


@import mixins
@import branding
@import "compass/css3/user-interface"

.cart
  @include user-select(none)
  .cart-span, .cart-span a
    display: inline-block
  .cart-span
    float: left
  .joyride-tip-guide
    display: block
    right: 10px
    top: 55px
    width: 400px
    @media screen and (max-width: 640px)
      width: 96%

    .joyride-nub
      right: 22px !important
      left: auto

    ul, li
      list-style: none
      margin-left: 0

    li
      float: none

      .row .columns
        padding-left: 0.25rem
        padding-right: 0.25rem

    li.total-cart
      background-color: #424242
    li.product-cart
      border-top: 1px solid #424242

#cart-detail
  .cart-item-delete
    a.delete
      font-size: 1.125em

#edit-cart
  button, .button
    margin: 0

Make shopping cart wider by default

@import mixins
@import branding
@import "compass/css3/user-interface"

.cart
  @include user-select(none)
  .cart-span, .cart-span a
    display: inline-block
  .cart-span
    float: left
  .joyride-tip-guide
    display: block
    right: 10px
    top: 55px
    width: 480px
    @media screen and (max-width: 640px)
      width: 96%

    .joyride-nub
      right: 22px !important
      left: auto

    ul, li
      list-style: none
      margin-left: 0

    li
      float: none

      .row .columns
        padding-left: 0.25rem
        padding-right: 0.25rem

    li.total-cart
      background-color: #424242
    li.product-cart
      border-top: 1px solid #424242

#cart-detail
  .cart-item-delete
    a.delete
      font-size: 1.125em

#edit-cart
  button, .button
    margin: 0


$site-min-width: 1000px

$form-label-bg-color: #edeff0
$form-input-bg-color: #eff5fd

$light-grey-color: #b8bcbd
$medium-grey-color: #999
$medium-dark-grey-color: #52555d
$dark-grey-color: #4A4A4A

$button-white-color: #fff

$light-blue-color: #69b2e2
$medium-blue-color: #2E96DB
$dark-blue-color: #0a4887

$warning-color: #fddd00

$error-color: #d62d0d
$light-red-color: #e56148

$success-color: #28c425
$light-green-color: #52bb68

$green-color: #299d59

$sidebar-background-color: #353942
$text-color: #333
$inactive-color: $medium-grey-color
$active-color: $medium-blue-color
$hover-color: $medium-blue-color

$header-height: 76px
$footer-height: 60px

Add status colors from mockup

$site-min-width: 1000px

$form-label-bg-color: #edeff0
$form-input-bg-color: #eff5fd

$light-grey-color: #b8bcbd
$medium-grey-color: #999
$medium-dark-grey-color: #52555d
$dark-grey-color: #4A4A4A

$button-white-color: #fff

$light-blue-color: #69b2e2
$medium-blue-color: #2E96DB
$dark-blue-color: #0a4887

$warning-color: #FF9900

$error-color: #d62d0d
$critical-color: #CF2A27
$light-red-color: #e56148

$success-color: #28c425
$ok-color: #009E0F
$light-green-color: #52bb68

$green-color: #299d59

$unknown-color: #FFD966

$sidebar-background-color: #353942
$text-color: #333
$inactive-color: $medium-grey-color
$active-color: $medium-blue-color
$hover-color: $medium-blue-color

$header-height: 76px
$footer-height: 60px


@import partials/content/invoice
@import partials/content/accounting

// Misc
// ====
.right, td.right, th.right
  text-align: right

// Overview
// ========
ul.overview-list.level-1 >li
  min-height: 11em

+overview-icon-48("store")
+overview-icon-48("accounting")
+overview-icon-48("invoicing")
+overview-icon-48("basic_claims_data")
+overview-icon-48("settings")
+overview-icon-48("nav_users")
+overview-icon-48("contacts")
+overview-icon-48("salaries")
+overview-icon-48("stocks")
+overview-icon-48("projects")

// Icons
// =====
// Actions
+icon-text("new", "add")
+icon-text("copy")
+icon-class("new", "add")
+icon-class("copy")
+icon-class("only_credit_bookings", "filter")
+icon-class("only_debit_bookings", "filter")
+icon-class("all_bookings", "filter")
+icon-class("print")

// MIME-types
+icon-class("pdf", "pdf")

// Linkified Container
// ===================
@import 'compass/typography/links/unstyled-link'
a.linkified_element
  +unstyled-link
tr.linkified_container:hover
  background-color: #DDF4FB

// Content
.container-fluid
  min-height: 700px

Use heigher boxes for overview parts.

@import partials/content/invoice
@import partials/content/accounting

// Misc
// ====
.right, td.right, th.right
  text-align: right

// Overview
// ========
ul.overview-list.level-1 >li
  min-height: 15em

+overview-icon-48("store")
+overview-icon-48("accounting")
+overview-icon-48("invoicing")
+overview-icon-48("basic_claims_data")
+overview-icon-48("settings")
+overview-icon-48("nav_users")
+overview-icon-48("contacts")
+overview-icon-48("salaries")
+overview-icon-48("stocks")
+overview-icon-48("projects")

// Icons
// =====
// Actions
+icon-text("new", "add")
+icon-text("copy")
+icon-class("new", "add")
+icon-class("copy")
+icon-class("only_credit_bookings", "filter")
+icon-class("only_debit_bookings", "filter")
+icon-class("all_bookings", "filter")
+icon-class("print")

// MIME-types
+icon-class("pdf", "pdf")

// Linkified Container
// ===================
@import 'compass/typography/links/unstyled-link'
a.linkified_element
  +unstyled-link
tr.linkified_container:hover
  background-color: #DDF4FB

// Content
.container-fluid
  min-height: 700px


body[data-namespace="channels"]
  #header
    nav.menu
      width: auto
    #guidelines_header_modal, .blog, .actions, .search
      display: none
  #on_press
    display: none


// Accounting
.currency
  text-align: right

// Balance and Profit Sheet
#balance-sheet table table, #profit-sheet table table
  border-spacing: 0px

#balance-sheet table table td, #profit-sheet table table td
  padding: 0.4em

#balance-sheet td, #profit-sheet td
  vertical-align: top
  color: black

#balance-sheet a, #profit-sheet a
  color: black

#balance-sheet tr.total
  td, th
    color: white
    background-color: #444444

#profit-sheet tr.total
  td, th
    color: white
    background-color: #444444

// Accounting **
tr.currency, th.currency
  text-align: right

.booking_list tr
  td
    background-color: white
    border-left: 0px none
    border-right: 0px none
    border-bottom: 1px solid
  border-left: 0px none
  border-right: 0px none

Use white-space: pre on currency text.

// Accounting
.currency
  text-align: right
  white-space: pre

// Balance and Profit Sheet
#balance-sheet table table, #profit-sheet table table
  border-spacing: 0px

#balance-sheet table table td, #profit-sheet table table td
  padding: 0.4em

#balance-sheet td, #profit-sheet td
  vertical-align: top
  color: black

#balance-sheet a, #profit-sheet a
  color: black

#balance-sheet tr.total
  td, th
    color: white
    background-color: #444444

#profit-sheet tr.total
  td, th
    color: white
    background-color: #444444

// Accounting **
tr.currency, th.currency
  text-align: right

.booking_list tr
  td
    background-color: white
    border-left: 0px none
    border-right: 0px none
    border-bottom: 1px solid
  border-left: 0px none
  border-right: 0px none


// --------------------------------------
//
//   #base.type
//   Typographical base selectors.
//
// --------------------------------------

// Headings 1–6.
+headings()
  +font-weight(bold)
  color: $color-headings

// A generic heading style which can be applied to any headings.
.heading
  +inuit-font-size(22px)

.heading-sub
  +inuit-font-size(16px)
  +font-weight(bold)
  margin-bottom: 0
  color: $color-heading-sub

// Emboldened elements.
a,
strong, b,
dt
  +font-weight(bold)

// Code-like elements.
code, kbd, samp
  color: $color-code
  font-family: $monospace

pre
  white-space: pre
  word-wrap: normal
  overflow: auto
  padding: $inuit-base-spacing-unit--small
  background-color: $color-pre-background
  border-radius: $base-radius

  &,
  code, kbd, samp
    color: $color-pre

// Horizontal rules.
hr
  border: none
  border-bottom: 1px solid $color-gray-ui
  margin-bottom: $inuit-base-spacing-unit - 1px

// Highlighted text.
mark
  pre &
    background: none
    border-bottom: 1px solid
    color: inherit

// Text-alignment.
.text-banner
  text-align: center

Remove bold font-style from a element.

// --------------------------------------
//
//   #base.type
//   Typographical base selectors.
//
// --------------------------------------

// Headings 1–6.
+headings()
  +font-weight(bold)
  color: $color-headings

// A generic heading style which can be applied to any headings.
.heading
  +inuit-font-size(22px)

.heading-sub
  +inuit-font-size(16px)
  +font-weight(bold)
  margin-bottom: 0
  color: $color-heading-sub

// Emboldened elements.
strong, b, dt
  +font-weight(bold)

// Code-like elements.
code, kbd, samp
  color: $color-code
  font-family: $monospace

pre
  white-space: pre
  word-wrap: normal
  overflow: auto
  padding: $inuit-base-spacing-unit--small
  background-color: $color-pre-background
  border-radius: $base-radius

  &,
  code, kbd, samp
    color: $color-pre

// Horizontal rules.
hr
  border: none
  border-bottom: 1px solid $color-gray-ui
  margin-bottom: $inuit-base-spacing-unit - 1px

// Highlighted text.
mark
  pre &
    background: none
    border-bottom: 1px solid
    color: inherit

// Text-alignment.
.text-banner
  text-align: center


//
// Variables
//
$font-size-base: 16!default
$line-height-base: 1.4

$margin-base-vertical:  $font-size-base/2!default
$margin-base-horizontal: $font-size-base/2!default

.mb-#{$margin-base-vertical}
  margin-bottom: $margin-base-vertical+px

.mb-#{$margin-base-vertical*2}
  margin-bottom: $margin-base-vertical*2+px

.mb-#{$margin-base-vertical*3}
  margin-bottom: $margin-base-vertical*3+px

.mb-#{$margin-base-vertical*4}
  margin-bottom: $margin-base-vertical*4+px

.mb-#{$margin-base-vertical*5}
  margin-bottom: $margin-base-vertical*5+px


@import 'variables'

@include global-reset

*
  @include box-sizing(border-box)

.clearfix
  +clearfix

html
  -webkit-font-smoothing: antialiased
  font-family: $font-stack
  height: 100%
  background-color: $background-color

body
  background-color: #6a7e8a
  width: 100%
  height: 100%
  font-family: $font-stack
  color: #fff
  text-align: center

#error-code
  font-size: 200px
  font-weight: 100
  margin-bottom: 60px

#container
  position: relative
  top: 50%
  transform: translateY(-50%)

a.btn
  text-decoration: none
  font-weight: bold
  color: #fff
  border: 2px solid #fff
  padding: 10px 20px
  @include border-radius(6px)
  transition: 0.1s linear all

  &:hover
    color: #6a7e8a
    background-color: #fff
    transition: 0.1s linear all

Add errors to asset pipeline

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require_self
 */

@import 'variables'

@include global-reset

*
  @include box-sizing(border-box)

.clearfix
  +clearfix

html
  -webkit-font-smoothing: antialiased
  font-family: $font-stack
  height: 100%
  background-color: $background-color

body
  background-color: #6a7e8a
  width: 100%
  height: 100%
  font-family: $font-stack
  color: #fff
  text-align: center

#error-code
  font-size: 200px
  font-weight: 100
  margin-bottom: 60px

#container
  position: relative
  top: 50%
  transform: translateY(-50%)

a.btn
  text-decoration: none
  font-weight: bold
  color: #fff
  border: 2px solid #fff
  padding: 10px 20px
  @include border-radius(6px)
  transition: 0.1s linear all

  &:hover
    color: #6a7e8a
    background-color: #fff
    transition: 0.1s linear all


.outline-default
  outline-color: $color4 !important

.settings-item
  position: relative
  overflow: hidden !important
  padding-right: 60px
  height: 35px
  line-height: 35px
  border-bottom: 1px dashed rgba(0, 0, 0, 0.1)

.settings-value
  margin-left: 5px
  color: $color2

.settings-edit-btn
  +position(absolute, 0 0 null null)

.settings-input
  display: inline-block !important
  >input
    outline-color: red
    max-width: 150px

.settings-input.outline-default
  >input
    outline-color: $color7 !important


Add config file, for now just contain colors vars

//

// Colors

//

$white: #fff
$near-white: #f4f4f4
$light-gray: #aaa
$silver: #999
$gray: #777
$mid-gray: #555
$dark-gray: #333
$near-black: #111
$black: #000

$yellow: #ffec1a
$washed-yellow: #fff7a3
$blue: #1976d2
$light-blue: #2196f3
$washed-blue: #c2e2fb
$green: #388e3c
$light-green: #4caf50
$washed-green: #c8e6c9
$orange: #ffa000
$light-orange: #ffc107
$washed-orange: #ffecb3
$red: #d32f2f
$light-red: #f44336
$washed-red: #ffcdd2
$purple: #800055


.loader
  z-index: 10000
  position: fixed
  top: 0
  right: 0
  width: 300px
  height: 300px
  background: #2980B9
  transition: transform 0.3s
  transform: translateX(100%) translateY(-100%) rotate(45deg)

  &.loader-active
    transform: translateX(50%) translateY(-50%) rotate(45deg)

  &::before, &::after
    position: absolute
    bottom: 30px
    left: 50%
    display: block
    border: 5px solid #fff
    border-radius: 50%
    content: ''

  &::before
    margin-left: -40px
    width: 80px
    height: 80px
    border-right-color: darken(#2980B9, 5%)
    border-left-color: darken(#2980B9, 5%)
    animation: rotation 3s linear infinite

  &::after
    bottom: 50px
    margin-left: -20px
    width: 40px
    height: 40px
    border-top-color: darken(#2980B9, 5%)
    border-bottom-color: darken(#2980B9, 5%)
    animation: rotation 1s linear infinite

@keyframes rotation
	0%
    transform: rotate(0deg)
	50%
    transform: rotate(180deg)
	100%
    transform: rotate(360deg)


@import "app/styles/style-flat-variables"

#hero-select-modal
  .modal-dialog
    width: auto
    max-width: 900px

  .modal-header, .modal-body:not(.secret), .modal-footer
    display: flex
    flex-direction: column
    align-items: center

  .modal-footer
    margin: 30px

  h4
    max-width: 500px

  .hero-list
    display: flex
    flex-wrap: wrap
    justify-content: center
    margin-bottom: -50px

  .hero-option
    display: flex
    flex-direction: column
    align-items: center
    margin: 0 50px 50px

  .hero-avatar
    margin: 6px
    background-color: #f8f8f8
    box-shadow: 0 0 0 1px gray

  .current .hero-avatar
    box-shadow: 0 0 0 6px gray

  .selected .hero-avatar
    box-shadow: 0 0 0 6px $gold

Fix hero select modal spacing

@import "app/styles/style-flat-variables"

#hero-select-modal
  .modal-dialog
    width: auto
    max-width: 900px

  .modal-header, .modal-body:not(.secret), .modal-footer
    display: flex
    flex-direction: column
    align-items: center

  .modal-footer
    margin: 30px

  h4
    max-width: 500px

  .hero-list
    display: flex
    flex-wrap: wrap
    justify-content: center
    margin-bottom: -50px

  .hero-option
    display: flex
    flex-direction: column
    align-items: center
    margin: 0 48px 50px

  .hero-avatar
    margin: 6px
    background-color: #f8f8f8
    box-shadow: 0 0 0 1px gray

  .current .hero-avatar
    box-shadow: 0 0 0 6px gray

  .selected .hero-avatar
    box-shadow: 0 0 0 6px $gold


Add the stylesheet for the previous commit

#verifier-view
  .verifier-row
    margin-top: 20px

    .alert
      padding: 5px

  .campaign-mix, .code-language-mix
    padding: 5px 20px 5px 5px

    input
      margin-right: 8px

  .test-running
    color: orange

  .test-success
    color: green

  .test-failed
    color: red


Add Grodek's styles for color legend and menus

#search
  position: relative
  padding-left: 125px
  padding-bottom: 1em

#search_input
  width: 450px
  padding: .25em
  font-size: 1.25em

#search_button
  height: 3em
  width: 25px

#search_input, #search_button
  border: 1px solid #cccccc
  border-radius: 3px
  background-color: #eeeeee

.metadata_list_section
  padding-bottom: 1.5em

.data
  padding-bottom: .5em
  h2
    font-size: 1.5em
    margin-top: .25em
    margin-bottom: -.15em
    font-weight: 400
  h2 + h3
    padding-top: 0
  h3
    font-size: .8em
    font-weight: 600
    display: inline
  a
    font-weight: 600
    //padding-right: 2em
    background-color: #ccc
    color: white
    font-size: 1em
    letter-spacing: .02em
    padding: .1em .2em
    border-radius: 1px
  ul li
    display: inline-block
    padding-top: .5em
    //padding-left: 2em
  dl
    display: inline-block
  dl + h3
    display: inline
  dt:after
    content: ":"
  dd:after
    content: ""

#select
  color: #666666
  font-weight: 400
  font-size: 1em
  opacity: .65
  padding-top: .75em
  padding-bottom: -.25em

.legend-data
  font-size: .8em

.legend_region
  font-size: .9em

.nav_dropdown
  display: inline-block
  position: relative
  padding: 0 1em
  ul
    background-color: #fff
    position: absolute
    top: 100%
    left: 0
    display: none
    list-style-type: none
  &:hover ul
    display: inline
  input[type=range]
    position: relative
    top: .5em
    margin: .5em .5em 0

.drop
  padding: 0 1em .5em
  color: #666666
  &.special
    margin-top: .5em
  &.slide label span
    display: block
  input[type=range]
    margin: 0 .1em 0 0
    padding-top: 0
  label
    padding: 0 0 .3em

#pixel_pointer
  padding-left: 15em

#legend_settings
  padding-left: 2em
  cursor: pointer

.color_scheme
  cursor: pointer
  color: #666666
  opacity: 100
  &:hover img
    opacity: .5
  &:hover li
    color: #ccc

#input_buckets
  margin-left: .5em
  border: 1px solid lightgrey
  text-align: right
  &:focus
    border: 1px solid darkgray


// Fixed Sidebar
.container-fluid > .sidebar
  position: fixed
  top:      66px
  right:    20px
  left:     initial

.container-fluid > .content
  margin-left:  20px
  margin-right: 240px

Fix right side sidebar for firefox.

// Fixed Sidebar
.container-fluid > .sidebar
  position: fixed
  top:      66px
  right:    20px
  left:     initial // Chrome
  left:     auto // Firefox

.container-fluid > .content
  margin-left:  20px
  margin-right: 240px


=overview-icon-48($ident)
  ul.overview-list li
    &#overview-#{$ident}
      +icon($ident, 48)

ul.overview-list
  +no-bullets
  +horizontal-list
  li#overview-accounting,
  li#overview-invoicing,
  li#overview-basic_claims_data
    width: 120px
  li
    background: no-repeat top left
    padding-left: 58px
    padding-right: 40px
    min-height: 58px
    a
      border-bottom: 1px solid black
      display: block
    &#overview-overview
      display: none
    +overview-icon-48('store')
    +overview-icon-48('accounting')
    +overview-icon-48('invoicing')
    +overview-icon-48('basic_claims_data')
    +overview-icon-48('user_settings')
  ul
    width: inherit
    margin-top: 5px
    li
      display: block
      float: none
      padding-left: 0px
      width: inherit
      min-height: 1em
      a
        border-bottom: none

Drop overview-icon definitions from overview.sass, they moved to application.sass.

=overview-icon-48($ident)
  ul.overview-list li
    &#overview-#{$ident}
      +icon($ident, 48)

ul.overview-list
  +no-bullets
  +horizontal-list
  li#overview-accounting,
  li#overview-invoicing,
  li#overview-basic_claims_data
    width: 120px
  li
    background: no-repeat top left
    padding-left: 58px
    padding-right: 40px
    min-height: 58px
    a
      border-bottom: 1px solid black
      display: block
    &#overview-overview
      display: none
  ul
    width: inherit
    margin-top: 5px
    li
      display: block
      float: none
      padding-left: 0px
      width: inherit
      min-height: 1em
      a
        border-bottom: none


fish_vi_key_bindings

for word in "$HOME/"{bin,.local/bin,Library/Python/2.7/bin,go/bin}
    if not contains $word $PATH
        set PATH $word $PATH
    end
end

set -x GOPATH "$HOME/go"

set fish_complete_path "$HOME/git/github.fish-pip-completion" $fish_complete_path

switch (uname)
    case Linux
        source /usr/share/autojump/autojump.fish
    case Darwin
        source /usr/local/share/autojump/autojump.fish
end
source (pew shell_config)

Move darwin specific pathing to case

fish_vi_key_bindings

for word in "$HOME/"{bin,.local/bin,go/bin}
    if not contains $word $PATH
        set PATH $word $PATH
    end
end

set -x GOPATH "$HOME/go"

set fish_complete_path "$HOME/git/github.fish-pip-completion" $fish_complete_path

switch (uname)
    case Linux
        source /usr/share/autojump/autojump.fish
    case Darwin
        source /usr/local/share/autojump/autojump.fish
        for word in {"$HOME/Library/Python/2.7/bin",/usr/local/sbin}
            if not contains $word $PATH
                set PATH $word $PATH
            end
        end
end
source (pew shell_config)


function fonts.install -a name

  if not contains $name (__fonts.repo.list)
    echo "Font $name not available for installing"
    return 1
  end

  if test -e "$FONTS_CONFIG/$name"
    echo "Font $name already installed"
    return 1
  end

  if set tmpdir (mktemp -d "/tmp/font-$name.XXXXXX" ^&-)
    if wget -P $tmpdir -q --show-progress -- (__fonts.repo.urls "$name")
      echo 'Fonts downloaded with success'
    else
      echo 'Failed downloading font file'
      rm -rf $tmpdir
      return 1
    end

    basename $tmpdir/* > $FONTS_CONFIG/$name

    mkdir -p $FONTS_PATH

    if not mv $tmpdir/* $FONTS_PATH
      rm -rf $FONTS_CONFIG/$name
      echo 'Error installing font files'
    end

    rm -rf $tmpdir
  end

end

Return error when mv fails

function fonts.install -a name

  if not contains $name (__fonts.repo.list)
    echo "Font $name not available for installing"
    return 1
  end

  if test -e "$FONTS_CONFIG/$name"
    echo "Font $name already installed"
    return 1
  end

  if set tmpdir (mktemp -d "/tmp/font-$name.XXXXXX" ^&-)
    if wget -P $tmpdir -q --show-progress -- (__fonts.repo.urls "$name")
      echo 'Fonts downloaded with success'
    else
      echo 'Failed downloading font file'
      rm -rf $tmpdir
      return 1
    end

    basename $tmpdir/* > $FONTS_CONFIG/$name

    mkdir -p $FONTS_PATH

    if not mv $tmpdir/* $FONTS_PATH ^&-
      rm -rf $FONTS_CONFIG/$name
      echo 'Error installing font files'
      return 1
    end

    rm -rf $tmpdir
  end

end


# Path to Oh My Fish install.
set -gx OMF_PATH "/home/e4r7hbug/.local/share/omf"

# Customize Oh My Fish configuration path.
#set -gx OMF_CONFIG "/home/e4r7hbug/.config/omf"

# Load oh-my-fish configuration.
source $OMF_PATH/init.fish

fish_vi_mode

set PATH \
    "$HOME/bin" \
    "$HOME/.local/bin" \
    "$HOME/Library/Python/2.7/bin" \
    "$HOME/go/bin" \
        $PATH

set -x GOPATH "$HOME/go"

set fish_complete_path "$HOME/git/github.fish-pip-completion" $fish_complete_path

source /usr/share/autojump/autojump.fish
source (pew shell_config)

Use $HOME in OMF variables

# Path to Oh My Fish install.
set -gx OMF_PATH "$HOME/.local/share/omf"

# Customize Oh My Fish configuration path.
#set -gx OMF_CONFIG "$HOME/.config/omf"

# Load oh-my-fish configuration.
source $OMF_PATH/init.fish

fish_vi_mode

set PATH \
    "$HOME/bin" \
    "$HOME/.local/bin" \
    "$HOME/Library/Python/2.7/bin" \
    "$HOME/go/bin" \
        $PATH

set -x GOPATH "$HOME/go"

set fish_complete_path "$HOME/git/github.fish-pip-completion" $fish_complete_path

source /usr/share/autojump/autojump.fish
source (pew shell_config)


alias axel="axel -a"
alias dotfiles="git --git-dir=$HOME/dev/.files.git/ --work-tree=$HOME"
alias dl="wget -r -l 1 -np -nd"
alias g=git
alias killaudio="sudo kill `ps -ax | grep 'coreaudiod' | grep 'sbin' |awk '{print $1}'`"
#alias lyrist="/Users/sahil/Documents/dev/lyrist/lyrist.js | less -XRq"
alias mou="open -a Mou"
alias new="open -n"
alias psgrep="ps aux | grep"
alias ql="qlmanage -p"
alias week="date +%V"

Add alias for `find . -iname`

alias axel="axel -a"
alias dotfiles="git --git-dir=$HOME/dev/.files.git/ --work-tree=$HOME"
alias dl="wget -r -l 1 -np -nd"
alias fn="find . -iname"
alias g=git
alias killaudio="sudo kill `ps -ax | grep 'coreaudiod' | grep 'sbin' |awk '{print $1}'`"
#alias lyrist="/Users/sahil/Documents/dev/lyrist/lyrist.js | less -XRq"
alias mou="open -a Mou"
alias new="open -n"
alias psgrep="ps aux | grep"
alias ql="qlmanage -p"
alias week="date +%V"


# Colorized ls output
set --export CLICOLOR 1
set --export LSCOLORS Exfxcxdxbxegedabagacad

# Ensure the HOSTNAME environment variable is set so that `rcm` works properly
if test -z $HOSTNAME
  set --export HOSTNAME (hostname -s)
end

if status --is-interactive
  set --global fish_user_abbreviations

  abbr --add ex 'exercism'
  abbr --add gg 'git graph'
  abbr --add guf 'git update-fork'
  abbr --add p 'project'
end

set --global fish_prompt_pwd_dir_length 0

for init in (command ls ~/.config/fish/init)
  source ~/.config/fish/init/$init
end

Use fish-standard way of checking if an environment variable is set

# Colorized ls output
set --export CLICOLOR 1
set --export LSCOLORS Exfxcxdxbxegedabagacad

# Ensure the HOSTNAME environment variable is set so that `rcm` works properly
if ! set --query HOSTNAME
  set --export HOSTNAME (hostname -s)
end

if status --is-interactive
  set --global fish_user_abbreviations

  abbr --add ex 'exercism'
  abbr --add gg 'git graph'
  abbr --add guf 'git update-fork'
  abbr --add p 'project'
end

set --global fish_prompt_pwd_dir_length 0

for init in (command ls ~/.config/fish/init)
  source ~/.config/fish/init/$init
end


function sway_autotiling
  swaymsg --type subscribe "['window']" --monitor | while read --local line
    string length --quiet "$line"
    or continue

    set focused_container (swaymsg -t get_tree | jq -r '[null,.]|recurse(.[1] as $parent|try (.[1].nodes[]|[($parent|del(.nodes)),.]) catch empty) | select(.[1].focused)')
    set con (echo "$focused_container" | jq '.[1]')
    set parent (echo "$focused_container" | jq '.[1]')

    string length --quiet "$con"
    or continue

    test (echo "$con" | jq '.type') = "floating_con"
    and continue
    test (echo "$con" | jq '.fullscreen_mode') -ne 0
    and continue
    test (echo "$parent" | jq '.fullscreen_mode') -ne 0
    and continue

    set cur_layout (echo $parent | jq '.layout')
    test "$cur_layout" = "tabbed"
    and continue
    test "$cur_layout" = "stacked"
    and continue

    set height (echo $con | jq '.rect.height')
    set width (echo $con | jq '.rect.width')

    test "$height" -gt "$width"
    and set new_layout "splitv"
    or set new_layout "splith"

    test "$cur_layout" != "$new_layout"
    and swaymsg "$new_layout"
  end
end


# pyenv fish
set -gx PYENV_ROOT "$HOME/.pyenv"
set -x PATH $PATH "$PYENV_ROOT/bin"
status --is-interactive; and . (pyenv init - | psub)

# peco
function peco_select_history
    if set -q $argv
        history | peco | read line; commandline $line
    else
        history | peco --query $argv | read line; commandline $line
    end
end

function fish_user_key_bindings
    bind \cr peco_select_history
end

# emacs alias
alias e="emacs -nw"
alias sue='sudo emacs -nw'

# rmでゴミ箱へ移す
alias rm=trash

# git alias
alias g=git
alias ga='git add'
alias ga.='git add .'
alias gaA='git add -A'
alias gc-m='git commit -m'
alias gcam='git commit -a -m'
alias gs='git status'
alias gp='git push'
alias gd='git diff'
alias gb='git branch'
alias gm='git merge'
alias gc='git checkout'
alias gcm='git checkout master'
alias gf='git fetch'
alias gl='git pull'

Add alias gcb='git checkout -b'

# pyenv fish
set -gx PYENV_ROOT "$HOME/.pyenv"
set -x PATH $PATH "$PYENV_ROOT/bin"
status --is-interactive; and . (pyenv init - | psub)

# peco
function peco_select_history
    if set -q $argv
        history | peco | read line; commandline $line
    else
        history | peco --query $argv | read line; commandline $line
    end
end

function fish_user_key_bindings
    bind \cr peco_select_history
end

# emacs alias
alias e="emacs -nw"
alias sue='sudo emacs -nw'

# rmでゴミ箱へ移す
alias rm=trash

# git alias
alias g=git
alias ga='git add'
alias ga.='git add .'
alias gaA='git add -A'
alias gc-m='git commit -m'
alias gcam='git commit -a -m'
alias gs='git status'
alias gp='git push'
alias gd='git diff'
alias gb='git branch'
alias gm='git merge'
alias gc='git checkout'
alias gcm='git checkout master'
alias gcb='git checkout -b'
alias gf='git fetch'
alias gl='git pull'


Create custom fish prompt based on fish_config template

function fish_prompt --description 'Write out the prompt'
	set -l last_status $status

    # User
    set_color $fish_color_user
    echo -n (whoami)
    set_color normal

    echo -n '@'

    # Host
    set_color $fish_color_host
    echo -n (prompt_hostname)
    set_color normal

    echo -n ':'

    # PWD
    set_color blue
    echo -n (prompt_pwd)
    set_color normal

    __terlar_git_prompt
    __fish_hg_prompt

    # Newline
    echo

    # Background jobs
    set -l jobs (jobs | wc -l | tr -d '. ')
    echo -n -
    if not test $jobs -eq 0
        set_color red
    end
    echo -n $jobs
    set_color normal
    echo -n -

    # Current time H:M
    echo -n (date "+%H:%M")

    # Pass/Fail prompt character
    if not test $last_status -eq 0
        set_color $fish_color_error
    else
        set_color green
    end

    echo -n ' λ '
    set_color normal
end


set --export EDITOR vim
set --export PATH /usr/local/bin $PATH
set --export PATH /usr/local/sbin $PATH

set fish_color_command white
set fish_color_autosuggestion yellow
set fish_pager_color_description yellow
set fish_color_param white

status --is-interactive; and . (rbenv init -|psub)

Enable true colors on neovim

set --export EDITOR vim
set --export PATH /usr/local/bin $PATH
set --export PATH /usr/local/sbin $PATH

set fish_color_command white
set fish_color_autosuggestion yellow
set fish_pager_color_description yellow
set fish_color_param white

status --is-interactive; and . (rbenv init -|psub)

set --export NVIM_TUI_ENABLE_TRUE_COLOR 1


# Source asdf
source ~/.asdf/asdf.fish
set -x ERL_AFLAGS "-kernel shell_history enabled"

Add sbin to fish path

source ~/.asdf/asdf.fish
set -x ERL_AFLAGS "-kernel shell_history enabled"
set -g fish_user_paths "/usr/local/sbin" $fish_user_paths


# show info about repo status
set -g __fish_git_prompt_show_informative_status true

# git status chars
set -g __fish_git_prompt_char_stateseparator ""
set -g __fish_git_prompt_char_dirtystate " !"
set -g __fish_git_prompt_char_invalidstate " X"
set -g __fish_git_prompt_char_stagedstate " ●"
set -g __fish_git_prompt_char_untrackedfiles " ?"
set -g __fish_git_prompt_char_cleanstate ""
set -g __fish_git_prompt_char_upstream_ahead " ↑"
set -g __fish_git_prompt_char_upstream_behind " ↓"

Make staged state char a delta

# show info about repo status
set -g __fish_git_prompt_show_informative_status true

# git status chars
set -g __fish_git_prompt_char_stateseparator ""
set -g __fish_git_prompt_char_dirtystate " !"
set -g __fish_git_prompt_char_invalidstate " X"
set -g __fish_git_prompt_char_stagedstate " Δ"
set -g __fish_git_prompt_char_untrackedfiles " ?"
set -g __fish_git_prompt_char_cleanstate ""
set -g __fish_git_prompt_char_upstream_ahead " ↑"
set -g __fish_git_prompt_char_upstream_behind " ↓"


function d -d 'Trash'
  if type -q trash-put > /dev/null
    set_color $yellow
    printf 'Trashing file \"%s\"\n' $argv
    set_color normal
    trash-put $argv
  else if type -q trash > /dev/null
    trash -av $argv
  else
    log warn 'No trash program is available'
    rm -ri $argv
  end
end

function ddd -d 'Remove directory without prompt'
  rm -rf $argv
end

Update `trash` arguments for version 0.9.2

function d -d 'Trash'
  if type -q trash-put > /dev/null
    set_color $yellow
    printf 'Trashing file \"%s\"\n' $argv
    set_color normal
    trash-put $argv
  else if type -q trash > /dev/null
    trash -v $argv
  else
    log warn 'No trash program is available'
    rm -ri $argv
  end
end

function ddd -d 'Remove directory without prompt'
  rm -rf $argv
end


function expand:execute -d "Executes word expansion on the current token"
  # Iterate available expansions for one that matches the current token.
  for expansion in $__word_expansions
    set -l expansion (echo $expansion)

    # If the expansion matches, execute the expander and use its output as the replacement.
    if eval "$expansion[1]" > /dev/null
      if set -l replacement (eval "$expansion[2]")
        commandline -t -r "$replacement"
        return 0
      end
    end
  end

  # Defer to regular completion.
  commandline -f complete
end

Add support for filtering available expansions

function expand:execute -d "Executes word expansion on the current token"
  # Choose a filter.
  if not set -q FILTER
    if type -q peco
      set FILTER 'peco --prompt ">" --layout bottom-up'
    else if type -q percol
      set FILTER 'percol'
    else if type -q fzf
      set FILTER 'fzf'
    else if type -q selecta
      set FILTER 'selecta'
    end
  end

  # Iterate available expansions for one that matches the current token.
  for expansion in $__word_expansions
    set -l expansion (echo $expansion)

    # Check if the expansion condition matches the token.
    if eval "$expansion[1]" > /dev/null
      # If the expansion matches, execute the expander and use its output as replacements.
      if set -l new (eval "$expansion[2]")
        set replacements $replacements $new
      end
    end
  end

  # If a filter is specified and more than one replacement is available, use it to filter through the available
  # replacements.
  if begin; set -q replacements[2]; and set -q FILTER; end
    for line in $replacements
      echo $line
    end | eval "$FILTER" | read replacement

    # Interactive filters will cause Fish to need a repaint.
    commandline -f repaint

    # If a replacement was chosen, use it.
    if test -n "$replacement"
      commandline -t -r "$replacement"
    end

  # If only one replacement is available, just use it without prompt.
  else if set -q replacements[1]
    # No filter is specified, so just use the top replacement.
    commandline -t -r "$replacements[1]"

  # No replacements are available for the current token, so defer to regular completion.
  else
    commandline -f complete
  end
end


# Uncomment this if the modal indicator becomes annoying
#function fish_mode_prompt; end

# Path to dotfiles repo
set -x DOTFILES (dirname (readlink "$HOME/.config"))

# Target stuff
set -x DRONE_SERVER drone6.target.com

#set -gx PATH \$PATH ~/
set -gx PATH $HOME/.bin $PATH
# abrew
set -gx PATH /opt/homebrew/bin $PATH
# ibrew
set -gx PATH $HOME/usr/local/sbin $PATH
# go
set -gx PATH $HOME/go/bin $PATH
# rust
set -Ua fish_user_paths $HOME/.cargo/bin

set -x EDITOR nvim

# Source all fish files
for file in $DOTFILES/**/fish/*.fish
  switch $file
  case "*config.fish"
    # Don't source the config itself
  case '*'
    source $file
  end
end

## rbenv
. (rbenv init -|psub)

# Special one-off for scmpuff
source $DOTFILES/**/fish/conf.d/scmpuff.fish

#set -x RUBY_CONFIGURE_OPTS (echo "--with-openssl-dir=" (brew --prefix openssl@1.1))

source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.fish.inc

set -g fish_user_paths "/opt/homebrew/opt/node@14/bin" $fish_user_paths

Add Slack to Fish PATH

# Uncomment this if the modal indicator becomes annoying
#function fish_mode_prompt; end

# Path to dotfiles repo
set -x DOTFILES (dirname (readlink "$HOME/.config"))

# Target stuff
set -x DRONE_SERVER drone6.target.com

#set -gx PATH \$PATH ~/
set -gx PATH $HOME/.bin $PATH
# abrew
set -gx PATH /opt/homebrew/bin $PATH
# ibrew
set -gx PATH $HOME/usr/local/sbin $PATH
# go
set -gx PATH $HOME/go/bin $PATH
# slack
set -gx PATH $HOME/dev/slack-objc/bin $PATH
# rust
set -Ua fish_user_paths $HOME/.cargo/bin

set -x EDITOR nvim

# Source all fish files
for file in $DOTFILES/**/fish/*.fish
  switch $file
  case "*config.fish"
    # Don't source the config itself
  case '*'
    source $file
  end
end

## rbenv
. (rbenv init -|psub)

# Special one-off for scmpuff
source $DOTFILES/**/fish/conf.d/scmpuff.fish

#set -x RUBY_CONFIGURE_OPTS (echo "--with-openssl-dir=" (brew --prefix openssl@1.1))

source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.fish.inc

set -g fish_user_paths "/opt/homebrew/opt/node@14/bin" $fish_user_paths


Add fish completions for the brew binary

# This script contains basic completion of brew commands for
# fish (http://fishshell.org). To install it either put it
# in <your-fish-install-location>/share/fish/completions
# or ~/.config/fish/completions - and name it 'brew.fish'
# e.g.:
#   mkdir -p ~/.config/fish/completions
#   cp brew_fish_completion.fish ~/.config/fish/completions/brew.fish

function __fish_complete_homebrew_formula
  set arguments (commandline -opc)
  for cmd in $arguments

    if contains -- $cmd edit install homepage home
      ls (brew --prefix)/Library/Formula | sed s/\.rb//
      return 0
    end

    if contains -- $cmd abv info list link ls ln rm remove uninstall
      ls (brew --prefix)/Cellar
      return 0
    end

  end
end

function __fish_complete_brew_has_command
  set arguments (commandline -opc)

  if [ (count $arguments) = 1 ]
    return 1
  end

  for cmd in $arguments
    if contains -- $cmd abv info list link ls ln rm remove uninstall edit install homepage home prune gen
      return 0
    end
  end
  return 1

end

function __fish_complete_brew_command
  set arguments (commandline -opc)
  set cmd $argv[1]

  if contains -- $cmd abv info list link ls ln rm remove uninstall edit install homepage home prune gen
    return 0
  end
  return 1
end

function __fish_complete_brew_no_command
  for cmd in (commandline -opc)
    if contains -- $cmd abv info list link ls ln rm remove uninstall edit install homepage home prune gen
      return 1
    end
  end
  return 0
end

complete -c brew -x -a "abv info list link ls ln rm remove uninstall edit install homepage home prune gen" -n '__fish_complete_brew_no_command'
complete -c brew -x -a '(__fish_complete_homebrew_formula)' -n '__fish_complete_brew_has_command'

complete -c brew -s d -l debug -n '__fish_complete_brew_command install'
complete -c brew -s i -l interactive -n '__fish_complete_brew_command install'

complete -c brew -l github -n '__fish_complete_brew_command info'

complete -c brew -l prefix  -n '__fish_complete_brew_no_command'
complete -c brew -l version -n '__fish_complete_brew_no_command'
complete -c brew -l cache   -n '__fish_complete_brew_no_command'

complete -c brew -s v -l verbose


function users-not-in-group --argument group
    if empty "$group"
        usage users-not-in-group '<group>'
        return (false)
    end

    comm -13 (users-in-group $group | psub) (get users | psub)
end

Sort results before sending to comm

function users-not-in-group --argument group
    if empty "$group"
        usage users-not-in-group '<group>'
        return (false)
    end

    comm -13 (users-in-group $group | sort | psub) (get users | sort | psub)
end


# Create a new function.
function fn --argument-names function_name
    if functions --query $function_name
        yn $function_name" already exists. Edit?"
            and fe $function_name
        return
    end

    set -l file ~/.config/fish/functions/$function_name.fish

    # Function template
    echo \
"# $function_name
function $function_name --argument-names arg1
    if test -z arg1
        echo "Usage: $function_name arg1"
        return 1
    end
end"\
    >$file

    editw $file
    echo $function_name function created.
end

Add switch to function template

# Create a new function.
function fn --argument-names function_name
    if functions --query $function_name
        yn $function_name" already exists. Edit?"
            and fe $function_name
        return
    end

    set -l file ~/.config/fish/functions/$function_name.fish

    # Function template
    echo \
"# $function_name
function $function_name --argument-names arg1
    if test -z \"\$arg1\"
        echo \"Usage: $function_name arg1\"
        return 1
    end
    switch \$arg1
        case on ON On
        case off OFF Off
        case '*'
    end
end"\
    >$file

    editw $file
    echo $function_name function created.
end


# Launch Google Chrome.
function chrome
    open -a "Google Chrome" --args --new-window $argv
end

Add not about 1Password extension

# Launch Google Chrome.
#
# When Chrome is launched via this function the 1Password extension reports
#
# > Browser could not be verified.
#
function chrome
    open -a "Google Chrome" --args --new-window $argv
end


Add function to assign an IP to an instance

function assign-ip --argument vpc instance
    print-status assign-ip "$argv"
    if empty "$vpc" "$instance"
        usage assign-ip '<vpc>' '<instance>'
        return (false)
    end

    set --local ip (get vpcs/$vpc/instances/$instance/ip)

    empty $ip
    and set ip (unassigned-ips | head -n 1)

    empty $ip
    and set ip (create-ip)

    empty $ip
    and return 2

    echo aws ec2 associate-address --public-ip $ip --instance-id (lookup instance "$instance-$vpc")
end


if status --is-login
    eval (brew shellenv)
    for py_version in 3.9 3.8 3.7
        set PATH $PATH $HOMEBREW_PREFIX/opt/python@$py_version/bin
    end

    # Volta <https://volta.sh>
    set -x VOLTA_HOME $HOME/.volta
    set PATH $VOLTA_HOME/bin $PATH

    # Cargo
    set PATH $HOME/.cargo/bin $PATH

    # shivs
    set PATH $HOME/.local/bin $PATH

    # scripts
    set PATH $PATH $HOME/bin

    set -x PATH $PATH
end

Use fish_add_path to manage $PATH

if status --is-login
    set -gx HOMEBREW_PREFIX (brew --prefix)

    for py_version in 3.9 3.8 3.7
        fish_add_path --append $HOMEBREW_PREFIX/opt/python@$py_version/bin
    end

    # Volta <https://volta.sh>
    set -x VOLTA_HOME $HOME/.volta
    fish_add_path --prepend $VOLTA_HOME/bin

    # Cargo
    fish_add_path --prepend $HOME/.cargo/bin

    # shivs
    fish_add_path --prepend $HOME/.local/bin

    # scripts
    fish_add_path --append $HOME/bin
end


# A workaround for Fish re-reading config for non-interactive execution:
# https://git.io/yj4KoA
if not status --is-interactive
  exit
end

# fundle
fundle plugin 'edc/bass'
fundle plugin 'brgmnn/fish-docker-compose'
fundle init

# rbenv
if which rbenv > /dev/null
  source (rbenv init -|psub)
end

# pyenv
if which pyenv > /dev/null
  source (pyenv init -|psub)
end

# Default editor
set --export EDITOR "code --wait"

# Go
if which go
  set --export GOPATH ~/code/go
  set PATH $PATH ~/code/go/bin
end

# ImageMagick
if test -d /usr/local/opt/imagemagick@6
  set PATH $PATH "/usr/local/opt/imagemagick@6/bin"
end

# Personal bin scripts
if test -d $HOME/bin
  set PATH $PATH $HOME/bin
end

Fix bug where `which go` output printed to terminal

# A workaround for Fish re-reading config for non-interactive execution:
# https://git.io/yj4KoA
if not status --is-interactive
  exit
end

# fundle
fundle plugin 'edc/bass'
fundle plugin 'brgmnn/fish-docker-compose'
fundle init

# rbenv
if which rbenv > /dev/null
  source (rbenv init -|psub)
end

# pyenv
if which pyenv > /dev/null
  source (pyenv init -|psub)
end

# Default editor
set --export EDITOR "code --wait"

# Go
if which go > /dev/null
  set --export GOPATH ~/code/go
  set PATH $PATH ~/code/go/bin
end

# ImageMagick
if test -d /usr/local/opt/imagemagick@6
  set PATH $PATH "/usr/local/opt/imagemagick@6/bin"
end

# Personal bin scripts
if test -d $HOME/bin
  set PATH $PATH $HOME/bin
end


function enable-mfa --argument user code1 code2
    trace (status --current-filename) $argv

    if empty "$user" "$code1" "$code2"
        usage enable-mfa '<user>' '<code-1>' '<code-2>'
        return (false)
    end

    print-status enable-mfa "$argv"

    if not mfa-enabled $user
        aws iam enable-mfa-device --user-name $user --serial-number (mfa-serial $user) --authentication-code-1 $code1 --authentication-code-2 $code2
    end
end


function __clone_exec --argument-names {project}
  set --local result (string match --regex "https://github.com/([^/]+)/([^./]+)" $project)
  or set --local result (string match --regex "git@github.com/([^/]+)/([^./]+)" $project)
  or set --local result (string match --regex "([^/]+)/([^./]+)" $project)
  or return 1

  set --local owner $result[2]
  set --local repo $result[3]

  if not command --quiet --search hub
    echo "`hub` tool is not installed"

    return 1
  end

  if not test -d $REPO_HOME/$owner
    command mkdir -p $REPO_HOME/$owner
  end

  hub clone $owner/$repo $REPO_HOME/$owner/$repo
end

function clone --description 'Clones GitHub repositories into the structure to which I\'ve become accustomed'
  if not set --query REPO_HOME
    echo 'REPO_HOME environment variable is not set'

    return 1
  end

  for project in $argv
    __clone_exec $project
  end
end

Fix regular SSH regular expression

function __clone_exec --argument-names project
  if set --local result (string match --regex "https://github.com/([^/]+)/([^./]+)" $project)
  else if set --local result (string match --regex "git@github.com:([^/]+)/([^./]+)" $project)
  else if set --local result (string match --regex "([^/]+)/([^./]+)" $project)
  else
    echo "`$project` does not match a repository specification, cannot clone it"
    return 1
  end

  set --local owner $result[2]
  set --local repo $result[3]

  if not command --quiet --search hub
    echo "`hub` tool is not installed"

    return 1
  end

  if not test -d $REPO_HOME/$owner
    command mkdir -p $REPO_HOME/$owner
  end

  hub clone $owner/$repo $REPO_HOME/$owner/$repo
end

function clone --description "Clones GitHub repositories into the structure to which I've become accustomed"
  if not set --query REPO_HOME
    echo 'REPO_HOME environment variable is not set'

    return 1
  end

  for project in $argv
    __clone_exec $project
  end
end


function shift_scheme
  set fish_color_autosuggestion 3a3a3a brblack
  set fish_color_cancel -r
  set fish_color_command ffbf00
  set fish_color_comment 7f7f7f
  # These colors are not used in the prompt
  set fish_color_cwd normal
  set fish_color_cwd_root normal
  set fish_color_end --bold ff7f00
  set fish_color_error ff0000
  set fish_color_escape 00bf00
  set fish_color_history_current normal
  # This color is not used
  set fish_color_host normal
  # TODO: Setting this didn't seem to have any effect?
  set fish_color_match normal
  set fish_color_normal normal
  set fish_color_operator d5d500
  set fish_color_param bfff00
  set fish_color_quote --bold ffffff
  set fish_color_redirection d5d500
  # TODO: What does this do again
  set fish_color_search_match ffff00
  set fish_color_selection c0c0c0
  set fish_color_status red
  set fish_color_user normal
  set fish_color_valid_path --underline
end

Fix some colors in the scheme

function shift_scheme
  set fish_color_autosuggestion 7f7f7f brblack
  set fish_color_cancel -r
  set fish_color_command ffbf00
  set fish_color_comment 7f7f7f
  # These colors are not used in the prompt
  set fish_color_cwd normal
  set fish_color_cwd_root normal
  set fish_color_end --bold ff7f00
  set fish_color_error ff0000
  set fish_color_escape 00bf00
  set fish_color_history_current --reverse
  # This color is not used
  set fish_color_host normal
  # TODO: Setting this didn't seem to have any effect?
  set fish_color_match  --reverse
  set fish_color_normal normal
  set fish_color_operator d5d500
  set fish_color_param bfff00
  set fish_color_quote --bold ffffff
  set fish_color_redirection d5d500
  # TODO: What does this do again
  set fish_color_search_match --background=3f3f3f
  set fish_color_selection c0c0c0
  set fish_color_status red
  set fish_color_user normal
  set fish_color_valid_path --underline
  # Pager
  set fish_pager_color_progress --reverse brwhite
  set fish_pager_color_prefix brwhite --underline
  set fish_pager_color_description brwhite
  set fish_pager_color_completion 7f7f7f brblack
  return 0
end


function ra --description 'Adds a git remote' --argument name url
    git remote add $name $url
end

Print new remotes after one is added

function ra --description 'Adds a git remote' --argument name url
    git remote add $name $url
    rv
end


function _git_branch_name
  echo (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end

function _is_git_dirty
  echo (git status -s --ignore-submodules=dirty ^/dev/null)
end

function fish_prompt
  set -l cyan (set_color -o cyan)
  set -l yellow (set_color -o yellow)
  set -l red (set_color -o red)
  set -l blue (set_color -o blue)
  set -l green (set_color -o green)
  set -l normal (set_color normal)

  set -l cwd $cyan(basename (prompt_pwd))

  if [ (_git_branch_name) ]
    set -l git_branch (_git_branch_name)
    set git_info "$green$git_branch "

    if [ (_is_git_dirty) ]
      set -l dirty "$yellow ✗"
      set git_info "$git_info$dirty"
    end
  end

  echo -n -s $cwd $red '|'$git_info $normal⇒ ' '$normal
end

Fix prompt so it shows the red pipe even when in the home directory

function _git_branch_name
  echo (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end

function _is_git_dirty
  echo (git status -s --ignore-submodules=dirty ^/dev/null)
end

function fish_prompt
  set -l cyan (set_color -o cyan)
  set -l yellow (set_color -o yellow)
  set -l red (set_color -o red)
  set -l blue (set_color -o blue)
  set -l green (set_color -o green)
  set -l normal (set_color normal)

  set -l cwd $cyan(basename (prompt_pwd))

  if [ (_git_branch_name) ]
    set -l git_branch (_git_branch_name)
    set git_info "$green$git_branch "

    if [ (_is_git_dirty) ]
      set -l dirty "$yellow✗"
      set git_info "$git_info$dirty"
    end
  end

  echo -n -s $cwd $red '|' $git_info $normal ⇒ ' ' $normal
end


set -gx LANGUAGE en_US.UTF-8
set -gx LANG $LANGUAGE
set -gx LC_ALL $LANGUAGE
set -gx LC_CTYPE $LANGUAGE

set -gx PATH $HOME/bin $PATH $GOPATH/bin

set -gx EDITOR vim
set -gx PAGER less

set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://192.168.99.100:2376";
set -gx DOCKER_CERT_PATH "$HOME/.docker/machine/machines/default";
set -gx DOCKER_MACHINE_NAME "default";

set -gx GOPATH $HOME/work
set -gx PATH $PATH $GOPATH/bin

set -gx FZF_DEFAULT_OPTS --reverse

if test -d $HOME/opt/oracle
  set -gx ORACLE_HOME $HOME/opt/oracle
  set -gx OCI_DIR $ORACLE_HOME/instantclient_11_2
end

set -gx XDG_CONFIG_HOME $HOME/.config

alias ag "ag --stats -S"
alias emacs nvim
alias g git
alias r rails
alias vi nvim
alias vim nvim

rbenv init - | source

Add alias of bundle command

set -gx LANGUAGE en_US.UTF-8
set -gx LANG $LANGUAGE
set -gx LC_ALL $LANGUAGE
set -gx LC_CTYPE $LANGUAGE

set -gx PATH $HOME/bin $PATH $GOPATH/bin

set -gx EDITOR vim
set -gx PAGER less

set -gx DOCKER_TLS_VERIFY "1";
set -gx DOCKER_HOST "tcp://192.168.99.100:2376";
set -gx DOCKER_CERT_PATH "$HOME/.docker/machine/machines/default";
set -gx DOCKER_MACHINE_NAME "default";

set -gx GOPATH $HOME/work
set -gx PATH $PATH $GOPATH/bin

set -gx FZF_DEFAULT_OPTS --reverse

if test -d $HOME/opt/oracle
  set -gx ORACLE_HOME $HOME/opt/oracle
  set -gx OCI_DIR $ORACLE_HOME/instantclient_11_2
end

set -gx XDG_CONFIG_HOME $HOME/.config

alias ag "ag --stats -S"
alias be "bundle exec"
alias bi="bundle install"
alias bo="bundle open"
alias bu="bundle update"
alias emacs nvim
alias g git
alias r rails
alias vi nvim
alias vim nvim

rbenv init - | source


function init --on-event init_grc
  set -l execs cat cvs df diff dig gcc g++ ls ifconfig \
               make mount mtr netstat ping ps tail traceroute \
               wdiff

  if not available grc
    echo 'You need to install grc!'
    return 0
  end

  if set -q grc_plugin_execs
    set execs $grc_plugin_execs
  end

  for executable in $execs
    if available $executable
      function $executable --inherit-variable executable --wraps=$executable
        grc.wrap $executable $argv
      end
    end
  end

end

Replace `available` usage with `type -q`

function init --on-event init_grc
  set -l execs cat cvs df diff dig gcc g++ ls ifconfig \
               make mount mtr netstat ping ps tail traceroute \
               wdiff

  if not type -q grc
    echo 'You need to install grc!'
    return 0
  end

  if set -q grc_plugin_execs
    set execs $grc_plugin_execs
  end

  for executable in $execs
    if type -q $executable
      function $executable --inherit-variable executable --wraps=$executable
        grc.wrap $executable $argv
      end
    end
  end

end


set -gx PATH $PATH $HOME/bin

set -gx N_PREFIX $HOME/n
set -gx PATH $PATH $N_PREFIX/bin

set -gx fish_prompt_pwd_dir_length 3

set -gx GOENV_ROOT $HOME/.goenv
set -gx PATH $GOENV_ROOT/bin $PATH

Use g for Go env var setup, running n again won't replace it

set -gx PATH $PATH $HOME/bin

set -gx N_PREFIX $HOME/n
set -gx PATH $PATH $N_PREFIX/bin

set -gx fish_prompt_pwd_dir_length 3

set -gx GOPATH $HOME/go; set -gx GOROOT $HOME/.go; set -gx PATH $GOPATH/bin $PATH; # g-install: do NOT edit, see https://github.com/stefanmaric/g


function add-tag-to-vpc --argument-names resource key value
    print-status vpc/add-tag "$argv"
    for argument in resource key value
        if test -z "$$argument"
            print-status usage "add-tag-to-vpc <vpc-id> <key> <value>"
            return -1
        end
    end

    and aws ec2 create-tags --resources $resource --tags Key=$key,Value=$value
end


set -x VIRTUAL_ENV_DISABLE_PROMPT 1
set -x PIP_REQUIRE_VIRTUALENV 1
set -x HOMEBREW_NO_ANALYTICS 1
set -x HOMEBREW_NO_AUTO_UPDATE 1

status --is-interactive; and source (pyenv init - | psub)
status --is-interactive; and source (pyenv virtualenv-init - | psub)
set PATH "$HOME/.local/bin" $PATH
# https://docs.python-guide.org/dev/pip-virtualenv/#requiring-an-active-virtual-environment-for-pip
set -x PIP_REQUIRE_VIRTUALENV true

if type -q subl
  set -x EDITOR subl
else
  set -x EDITOR vi
end;

Set global flag on environment variables

set -gx VIRTUAL_ENV_DISABLE_PROMPT 1
set -gx PIP_REQUIRE_VIRTUALENV 1
set -gx HOMEBREW_NO_ANALYTICS 1
set -gx HOMEBREW_NO_AUTO_UPDATE 1

status --is-interactive; and source (pyenv init - | psub)
status --is-interactive; and source (pyenv virtualenv-init - | psub)
set PATH "$HOME/.local/bin" $PATH
# https://docs.python-guide.org/dev/pip-virtualenv/#requiring-an-active-virtual-environment-for-pip
set -x PIP_REQUIRE_VIRTUALENV true

if type -q subl
  set -x EDITOR subl
else
  set -x EDITOR vi
end;


Add function to deactivate MFA for a user

function deactivate-mfa --argument user
    if empty "$user"
        usage deactivate-mfa '<user>'
        return (false)
    end

    aws iam deactivate-mfa-device --user-name "$user" --serial-number (mfa-serial "$user")
end


# Wrap hub in `git`
eval (hub alias -s)

# Path party
set PATH "/usr/local/sbin" $PATH

Update path for newer Homebrew installs.

# Wrap hub in `git`
eval (hub alias -s)

# Path party
set PATH "/opt/homebrew/bin /usr/local/sbin" $PATH


set normal (set_color normal)
set magenta (set_color magenta)
set yellow (set_color yellow)
set green (set_color green)
set red (set_color red)
set gray (set_color -o black)

# Interactive/login shells {{{

set fish_plugins brew rvm
# rvm default

if status --is-login
  source ~/.config/fish/env.fish

  # Load TCS file, if applicable/available
  if test -e ~/.config/fish/tcs.env
    source ~/.config/fish/tcs.env
  end
end

# }}}

abbr -a gs git status
abbr -a gc git commit
abbr -a gpom git push origin master
abbr -a gcm git checkout master
abbr -a be bundle exec
abbr -a ber bundle exec rake
abbr -a gd 'git diff --color | sed "s/^\([^-+ ]*\)[-+ ]/\\1/" | less -r'

Add another abbreviation for fish

set normal (set_color normal)
set magenta (set_color magenta)
set yellow (set_color yellow)
set green (set_color green)
set red (set_color red)
set gray (set_color -o black)

# Interactive/login shells {{{

set fish_plugins brew rvm
# rvm default

if status --is-login
  source ~/.config/fish/env.fish

  # Load TCS file, if applicable/available
  if test -e ~/.config/fish/tcs.env
    source ~/.config/fish/tcs.env
  end
end

# }}}

abbr -a gs git status
abbr -a gc git commit
abbr -a gpom git push origin master
abbr -a gcm git checkout master
abbr -a be bundle exec
abbr -a ber bundle exec rake
abbr -a beg bundle exec rails g
abbr -a gd 'git diff --color | sed "s/^\([^-+ ]*\)[-+ ]/\\1/" | less -r'


function init --on-event init_weather
  # Set the default temperature units to use. Options are:
  #   default
  #   celsius
  #   fahrenheit
  #   kelvin
  #
  # "default" will cause both Celsius and Fahrenheit units to be displayed, and
  # is the default setting.
  config weather -q temperature-units
    or config weather -s temperature-units default

  # Set the default API key to use for OpenWeatherMap. This default key has been
  # approved by OpenWeatherMap to be used for free, open-source software only.
  config weather -q api-key
    or config weather -s api-key 34da4a18e8fdacda2ce10061f1cd6340

  # Set the default cache expiry time. Expiry time is in minutes, and is used to
  # invalidate the cache automatically.
  config weather -q cache-age
    or config weather -s cache-age 30
end

Initialize immediately, rather than waiting for an event.


set -x PATH $PATH ~/.config/mybin
set -x PATH $PATH $BRAZIL_CLI_BIN

Add Rust libs to ldlibrary path

set -x PATH $PATH ~/.config/mybin
set -x PATH $PATH /apollo/env/SDETools/bin/
set -x PATH $PATH ~/.cargo/bin/
set -x PATH $PATH ~/.local/bin/

set -x LD_LIBRARY_PATH $LD_LIBRARY_PATH (rustc --print sysroot)/lib


# New Start: A modern Arch workflow built with an emphasis on functionality.
# Copyright (C) 2017-2018 Donovan Glover

function fish_prompt

    # Use a more informative and non-unicode prompt for ttys
    if status --is-login; and test -z "$DISPLAY"
        set hostname (hostname)

        set_color yellow;   echo -n "$USER@$hostname"
        set_color normal;   echo -n " "
        set_color magenta;  echo -n "($PWD)"
    else
        set pwd (basename $PWD)
        set branch (git branch ^/dev/null | sed -n '/\* /s///p')

        if [ $pwd = $USER ]
            set pwd "~"
        end

        set_color magenta;  echo -n "$pwd"

        if [ "$branch" ]
            set_color normal;   echo -n " on "
            set_color yellow;   echo -n "$branch"
        end

        set_color normal;   echo -n " "
        set_color red;      echo -n "➤"
        set_color green;    echo -n "➤"
        set_color blue;     echo -n "➤"
    end

    set_color normal;   echo -n " "
end

Add git tag information to fish prompt

# New Start: A modern Arch workflow built with an emphasis on functionality.
# Copyright (C) 2017-2018 Donovan Glover

function fish_prompt

    # Use a more informative and non-unicode prompt for ttys
    if status --is-login; and test -z "$DISPLAY"
        set hostname (hostname)

        set_color yellow;   echo -n "$USER@$hostname"
        set_color normal;   echo -n " "
        set_color magenta;  echo -n "($PWD)"
    else
        set pwd (basename $PWD)
        set branch (git branch ^/dev/null | sed -n '/\* /s///p')

        if [ $pwd = $USER ]
            set pwd "~"
        end

        set_color magenta;  echo -n "$pwd"

        if [ "$branch" ]
            set_color normal;   echo -n " on "
            set_color yellow;   echo -n "$branch"

            set tag (git describe ^/dev/null | sed 's/-\w*$//')

            if [ "$tag" ]
                set_color normal;   echo -n "/"
                set_color cyan;     echo -n "$tag"
            end
        end

        set_color normal;   echo -n " "
        set_color red;      echo -n "➤"
        set_color green;    echo -n "➤"
        set_color blue;     echo -n "➤"
    end

    set_color normal;   echo -n " "
end


function weather.fetch -d "Fetches data from a URL backed by a cache"
  set md5 (__md5 "$argv")

  if test (count $argv) -gt 1
    for param in $argv[2..-1]
      set flags $flags --data-urlencode $param
    end
  end

  if not find /tmp/$md5.url -mmin +$weather_cache_age > /dev/null ^ /dev/null
    curl -Gs $flags $argv[1] > /tmp/$md5.url
      or return 1
  end

  cat /tmp/$md5.url
end

function __md5
  # Use GNU coreutils if available.
  if available md5sum
    echo $argv[1] | md5sum | cut -d ' ' -f 1
    return 0
  end

  # Use BSD md5 utility if available.
  if available md5
    md5 -s "$argv[1]" -q
    return 0
  end

  # Try using openssl.
  if available openssl
    echo $argv[1] | openssl md5 -r | cut -d ' ' -f 1
    return 0
  end

  return 1
end

Fix flag order for BSD md5 command

function weather.fetch -d "Fetches data from a URL backed by a cache"
  set md5 (__md5 "$argv")

  if test (count $argv) -gt 1
    for param in $argv[2..-1]
      set flags $flags --data-urlencode $param
    end
  end

  if not find /tmp/$md5.url -mmin +$weather_cache_age > /dev/null ^ /dev/null
    curl -Gs $flags $argv[1] > /tmp/$md5.url
      or return 1
  end

  cat /tmp/$md5.url
end

function __md5
  # Use GNU coreutils if available.
  if available md5sum
    echo $argv[1] | md5sum | cut -d ' ' -f 1
    return 0
  end

  # Use BSD md5 utility if available.
  if available md5
    md5 -q -s "$argv[1]"
    return 0
  end

  # Try using openssl.
  if available openssl
    echo $argv[1] | openssl md5 -r | cut -d ' ' -f 1
    return 0
  end

  return 1
end


# Atom
set -x ATOM_REPOS_HOME /Projects/2014/ryansobol

# exa
if command --search exa >/dev/null
  alias ls exa
  alias tree "exa -T"
end

# terraform
if command --search docker >/dev/null
  alias terraform='docker run -it hashicorp/terraform:0.12.1'
end

Comment out the Terraform alias

# Atom
set -x ATOM_REPOS_HOME /Projects/2014/ryansobol

# exa
if command --search exa >/dev/null
  alias ls exa
  alias tree "exa -T"
end

# terraform
# if command --search docker >/dev/null
#   alias terraform="docker run -it -v $PWD:/app -w /app hashicorp/terraform:0.12.1"
# end


function fish_prompt
	echo
	switch $IN_NIX_SHELL
		case pure
			set_color green
			echo -n ">>> "
		case impure
			set_color yellow
			echo -n ">> "
		case '*'
			set_color cyan
			echo -n "> "
	end
	set_color normal
end

Use fish emojis as prompt

function fish_prompt
	echo
	switch $IN_NIX_SHELL
		case pure
			echo -n "🐡 "
		case impure
			echo -n "🐠 "
		case '*'
			echo -n "🐟 "
	end
	set_color normal
end


Add function for renaming a tarball to its md5sum

function ruby2md5sum
  for arg in $argv
    set -lx hash (md5sum $arg | cut -d ' ' -f 1)
    set -lx ruby (md5sum $arg | cut -d ' ' -f 3)
    mv $ruby $hash
  end
end