tungsten 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/tungsten/_form_helpers.js +21 -0
- data/app/assets/javascripts/tungsten/code.js +20 -0
- data/app/assets/javascripts/tungsten/tungsten.js +4 -20
- data/app/assets/stylesheets/tungsten/_code-color.scss +0 -0
- data/app/assets/stylesheets/tungsten/_colors.yml +68 -4
- data/app/assets/stylesheets/tungsten/_index.scss +5 -0
- data/app/assets/stylesheets/tungsten/code/_codemirror.scss +56 -0
- data/app/assets/stylesheets/tungsten/code/_color.scss +58 -0
- data/app/assets/stylesheets/tungsten/code/_highlighted.scss +64 -0
- data/app/assets/stylesheets/tungsten/code/_index.scss +3 -0
- data/app/assets/stylesheets/tungsten/core/_buttons.scss +144 -0
- data/app/assets/stylesheets/tungsten/core/_cards.scss +90 -0
- data/app/assets/stylesheets/tungsten/core/_colors.scss +20 -0
- data/app/assets/stylesheets/tungsten/core/_globals.scss +172 -0
- data/app/assets/stylesheets/tungsten/core/_grid.scss +164 -0
- data/app/assets/stylesheets/tungsten/core/_index.scss +7 -13
- data/app/assets/stylesheets/tungsten/core/_layout.scss +47 -0
- data/app/assets/stylesheets/tungsten/core/_text.scss +219 -0
- data/app/assets/stylesheets/tungsten/form/_base.scss +235 -0
- data/app/assets/stylesheets/tungsten/form/_check-radio.scss +154 -0
- data/app/assets/stylesheets/tungsten/form/_check-switch.scss +104 -0
- data/app/assets/stylesheets/tungsten/form/_index.scss +4 -0
- data/app/assets/stylesheets/tungsten/form/_label-placeholder.scss +98 -0
- data/app/assets/stylesheets/tungsten/tungsten.scss +1 -3
- data/app/helpers/tungsten/card_helper.rb +76 -0
- data/app/helpers/tungsten/deployments_helper.rb +59 -0
- data/app/helpers/tungsten/form_helper.rb +509 -0
- data/app/helpers/tungsten/layout_helper.rb +7 -0
- data/app/helpers/tungsten/toggle_nav_helper.rb +84 -0
- data/app/views/layouts/tungsten/default.html.slim +47 -0
- data/app/views/shared/tungsten/_defs.html.slim +6 -0
- data/app/views/shared/tungsten/_footer.html.slim +2 -0
- data/app/views/shared/tungsten/_header.html.slim +2 -0
- data/config/data/deployments.yml +110 -0
- data/lib/tungsten.rb +26 -2
- data/lib/tungsten/helper.rb +4 -0
- data/lib/tungsten/version.rb +1 -1
- data/public/{tungsten-0.1.0.js → code-0.1.1.js} +43 -69
- data/public/code-0.1.1.js.gz +0 -0
- data/public/code-0.1.1.map.json +1 -0
- data/public/tungsten-0.1.1.css +1523 -0
- data/public/tungsten-0.1.1.css.gz +0 -0
- data/public/tungsten-0.1.1.js +79 -0
- data/public/tungsten-0.1.1.js.gz +0 -0
- data/public/tungsten-0.1.1.map.json +1 -0
- metadata +120 -16
- data/app/helpers/tungsten/application_helper.rb +0 -4
- data/app/views/layouts/tungsten/default.html.erb +0 -17
- data/public/tungsten-0.1.0.css +0 -17
- data/public/tungsten-0.1.0.css.gz +0 -0
- data/public/tungsten-0.1.0.js.gz +0 -0
- data/public/tungsten-0.1.0.map.json +0 -1
| @@ -0,0 +1,90 @@ | |
| 1 | 
            +
            /* ========================================================================== *
         | 
| 2 | 
            +
             * Card module
         | 
| 3 | 
            +
             * -------------------------------------------------------------------------- */
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            @mixin card {
         | 
| 6 | 
            +
              background: $white;
         | 
| 7 | 
            +
              border-radius: $radius;
         | 
| 8 | 
            +
              box-shadow:
         | 
| 9 | 
            +
                0 0 0 1px rgba($gray-11, .05),
         | 
| 10 | 
            +
                0 1px 3px rgba($gray-11, .15);
         | 
| 11 | 
            +
            }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            .card {
         | 
| 14 | 
            +
              display: flex;
         | 
| 15 | 
            +
              flex-direction: column;
         | 
| 16 | 
            +
              position: relative;
         | 
| 17 | 
            +
              padding: $card-padding;
         | 
| 18 | 
            +
              font-size: 14px;
         | 
| 19 | 
            +
              @include collapse-top;
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              &-actions {
         | 
| 22 | 
            +
                display: flex;
         | 
| 23 | 
            +
                align-items: baseline;
         | 
| 24 | 
            +
                margin-top: $card-padding;
         | 
| 25 | 
            +
                flex-direction: row-reverse;
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                > *:last-child {
         | 
| 28 | 
            +
                  margin: 0;
         | 
| 29 | 
            +
                }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                &.centered {
         | 
| 32 | 
            +
                  justify-content: center;
         | 
| 33 | 
            +
                }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                a,
         | 
| 36 | 
            +
                button {
         | 
| 37 | 
            +
                  margin-left: 10px;
         | 
| 38 | 
            +
                }
         | 
| 39 | 
            +
              }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              #{$block-elements} {
         | 
| 42 | 
            +
                margin-top: 15px;
         | 
| 43 | 
            +
              }
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              &:not([class*='columns']) {
         | 
| 46 | 
            +
                @include card;
         | 
| 47 | 
            +
              }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              &[class*='columns'] {
         | 
| 50 | 
            +
                flex-direction: row;
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                &:before {
         | 
| 53 | 
            +
                  content: '';
         | 
| 54 | 
            +
                  @include card;
         | 
| 55 | 
            +
                  position: absolute;
         | 
| 56 | 
            +
                  z-index: -1;
         | 
| 57 | 
            +
                  left: 0;
         | 
| 58 | 
            +
                  top: 0;
         | 
| 59 | 
            +
                  right: 0;
         | 
| 60 | 
            +
                  bottom: 0;
         | 
| 61 | 
            +
                }
         | 
| 62 | 
            +
              }
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              &-heading {
         | 
| 65 | 
            +
                font-size: 16px;
         | 
| 66 | 
            +
              }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              &-footer {
         | 
| 69 | 
            +
                display: flex;
         | 
| 70 | 
            +
                align-items: baseline;
         | 
| 71 | 
            +
                @include collapse-top;
         | 
| 72 | 
            +
                font-size: 12px;
         | 
| 73 | 
            +
                padding: $card-padding;
         | 
| 74 | 
            +
                background: $gray-01;
         | 
| 75 | 
            +
                border-radius: 0 0 $radius $radius;
         | 
| 76 | 
            +
                box-shadow: 0 1px rgba($gray-11, .1) inset;
         | 
| 77 | 
            +
                background-clip: padding-box;
         | 
| 78 | 
            +
                border-top: $card-padding solid transparent;
         | 
| 79 | 
            +
                margin: auto $card-padding * -1 $card-padding * -1 $card-padding * -1;
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                .card-actions {
         | 
| 82 | 
            +
                  margin-top: 0;
         | 
| 83 | 
            +
                  margin-left: auto;
         | 
| 84 | 
            +
                }
         | 
| 85 | 
            +
              }
         | 
| 86 | 
            +
            }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            table.card {
         | 
| 89 | 
            +
              display: table;
         | 
| 90 | 
            +
            }
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            // Solid color classes
         | 
| 2 | 
            +
            @each $name, $color in $colors {
         | 
| 3 | 
            +
              // Assign a `.[color]-text` class with a color of [color]
         | 
| 4 | 
            +
              .#{$name}-text {
         | 
| 5 | 
            +
                color: $color;
         | 
| 6 | 
            +
              }
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              .#{$name}-bg {
         | 
| 9 | 
            +
                background-color: $color;
         | 
| 10 | 
            +
              }
         | 
| 11 | 
            +
            }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            @each $name, $colors in $gradients {
         | 
| 14 | 
            +
              $start: nth($colors, 1);
         | 
| 15 | 
            +
              $end:   nth($colors, 2);
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              .#{$name}-gradient-bg {
         | 
| 18 | 
            +
                background: linear-gradient(135deg, #{$start}, #{$end}) left top/100% 100% no-repeat;
         | 
| 19 | 
            +
              }
         | 
| 20 | 
            +
            }
         | 
| @@ -0,0 +1,172 @@ | |
| 1 | 
            +
            /* ========================================================================== *
         | 
| 2 | 
            +
             * Globals module
         | 
| 3 | 
            +
             * -------------------------------------------------------------------------- */
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            /* ===================================== *
         | 
| 6 | 
            +
             * Fonts
         | 
| 7 | 
            +
             * ------------------------------------- */
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            // Font size & spacing
         | 
| 10 | 
            +
            $base-size: 14px;
         | 
| 11 | 
            +
            $base-line-height: 1.5;
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            // Fonts stacks
         | 
| 14 | 
            +
            $base-font: -apple-system, BlinkMacSystemFont, 'Avenir Next', Avenir, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
         | 
| 15 | 
            +
            $mono-font: 'Roboto Mono', Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', 'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Liberation Mono', 'Nimbus Mono L', Monaco, 'Courier New', Courier, monospace;
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            // Smooth fonts are smooth
         | 
| 18 | 
            +
            @mixin font-smoothing($value: on) {
         | 
| 19 | 
            +
              @if $value == on {
         | 
| 20 | 
            +
                -webkit-font-smoothing: antialiased;
         | 
| 21 | 
            +
                -moz-osx-font-smoothing: grayscale;
         | 
| 22 | 
            +
              } @else {
         | 
| 23 | 
            +
                -webkit-font-smoothing: subpixel-antialiased;
         | 
| 24 | 
            +
                -moz-osx-font-smoothing: auto;
         | 
| 25 | 
            +
              }
         | 
| 26 | 
            +
            }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            // Inline links
         | 
| 29 | 
            +
            @mixin inline-link($default: $blue-03, $hover: $blue-04) {
         | 
| 30 | 
            +
              text-decoration: underline;
         | 
| 31 | 
            +
              text-decoration-color: rgba($default, .5);
         | 
| 32 | 
            +
              transition: color $duration;
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              // Default state
         | 
| 35 | 
            +
              @include normal {
         | 
| 36 | 
            +
                color: $default;
         | 
| 37 | 
            +
              }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              // Active state
         | 
| 40 | 
            +
              @include active {
         | 
| 41 | 
            +
                color: $hover;
         | 
| 42 | 
            +
              }
         | 
| 43 | 
            +
            }
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            /* ===================================== *
         | 
| 46 | 
            +
             * Animations
         | 
| 47 | 
            +
             * ------------------------------------- */
         | 
| 48 | 
            +
             | 
| 49 | 
            +
             // Transition duration
         | 
| 50 | 
            +
            $duration: .25s;
         | 
| 51 | 
            +
            $timing: cubic-bezier(0.4, 0.0, 0.2, 1);
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            // Class to prevent transitions
         | 
| 54 | 
            +
            .full-stop * {
         | 
| 55 | 
            +
              &,
         | 
| 56 | 
            +
              &:after,
         | 
| 57 | 
            +
              &:before {
         | 
| 58 | 
            +
                transition: none !important;
         | 
| 59 | 
            +
                animation: none !important;
         | 
| 60 | 
            +
              }
         | 
| 61 | 
            +
            }
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            /* ===================================== *
         | 
| 64 | 
            +
             * Layout
         | 
| 65 | 
            +
             * ------------------------------------- */
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            // Block-level elements that get vertical margin
         | 
| 68 | 
            +
            $block-elements: p, ul, ol, h1, h2, h3, h4, h5, h6, pre, table;
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            // Border radius
         | 
| 71 | 
            +
            $radius: 2px;
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            // Card padding
         | 
| 74 | 
            +
            $card-padding: 20px;
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            // Inner content padding
         | 
| 77 | 
            +
            $content-padding: 40px;
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            // Main header height
         | 
| 80 | 
            +
            $header-height: 84px;
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            // Collapse top margin
         | 
| 83 | 
            +
            @mixin collapse-top {
         | 
| 84 | 
            +
              > *:first-child,
         | 
| 85 | 
            +
              > *:first-child > *:first-child,
         | 
| 86 | 
            +
              > *:first-child > *:first-child > *:first-child {
         | 
| 87 | 
            +
                margin-top: 0;
         | 
| 88 | 
            +
              }
         | 
| 89 | 
            +
            }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            // Collapse bottom margin
         | 
| 92 | 
            +
            @mixin collapse-bottom {
         | 
| 93 | 
            +
              > *:last-child,
         | 
| 94 | 
            +
              > *:last-child > *:last-child,
         | 
| 95 | 
            +
              > *:last-child > *:last-child > *:last-child {
         | 
| 96 | 
            +
                margin-bottom: 0;
         | 
| 97 | 
            +
              }
         | 
| 98 | 
            +
            }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            // Modules with max-width and padding
         | 
| 101 | 
            +
            @mixin padded-module($width: 1100px, $padding: null, $nested: true) {
         | 
| 102 | 
            +
              padding-left: calc(50vw - #{$width / 2});
         | 
| 103 | 
            +
              padding-right: calc(50vw - #{$width / 2});
         | 
| 104 | 
            +
             | 
| 105 | 
            +
              @if $nested {
         | 
| 106 | 
            +
                width: 100vw;
         | 
| 107 | 
            +
              }
         | 
| 108 | 
            +
             | 
| 109 | 
            +
              @if $padding {
         | 
| 110 | 
            +
                @media (max-width: $width + $padding * 2) {
         | 
| 111 | 
            +
                  padding-left: $padding;
         | 
| 112 | 
            +
                  padding-right: $padding;
         | 
| 113 | 
            +
                }
         | 
| 114 | 
            +
              }
         | 
| 115 | 
            +
            }
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            // Center an element to the viewport regardless of nesting
         | 
| 118 | 
            +
            @mixin center-to-viewport {
         | 
| 119 | 
            +
              margin-left: calc(-50vw + 50%);
         | 
| 120 | 
            +
              transform: translateX(calc(50vw - 50%));
         | 
| 121 | 
            +
            }
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            /* ===================================== *
         | 
| 124 | 
            +
             * Context
         | 
| 125 | 
            +
             * ------------------------------------- */
         | 
| 126 | 
            +
             | 
| 127 | 
            +
            // Normal link state mixin
         | 
| 128 | 
            +
            @mixin normal {
         | 
| 129 | 
            +
              &,
         | 
| 130 | 
            +
              &:visited {
         | 
| 131 | 
            +
                @content;
         | 
| 132 | 
            +
              }
         | 
| 133 | 
            +
            }
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            // Active link state mixin
         | 
| 136 | 
            +
            @mixin active {
         | 
| 137 | 
            +
              &:hover,
         | 
| 138 | 
            +
              &:focus,
         | 
| 139 | 
            +
              &:active {
         | 
| 140 | 
            +
                @content;
         | 
| 141 | 
            +
              }
         | 
| 142 | 
            +
            }
         | 
| 143 | 
            +
             | 
| 144 | 
            +
            // Until width media query mixin
         | 
| 145 | 
            +
            @mixin until($width) {
         | 
| 146 | 
            +
              $width: $width - 1;
         | 
| 147 | 
            +
              @media all and (max-width: $width) {
         | 
| 148 | 
            +
                @content;
         | 
| 149 | 
            +
              }
         | 
| 150 | 
            +
            }
         | 
| 151 | 
            +
             | 
| 152 | 
            +
            // At least width media query mixin
         | 
| 153 | 
            +
            @mixin at-least($width) {
         | 
| 154 | 
            +
              @media all and (min-width: $width) {
         | 
| 155 | 
            +
                @content;
         | 
| 156 | 
            +
              }
         | 
| 157 | 
            +
            }
         | 
| 158 | 
            +
             | 
| 159 | 
            +
            // Between widths media query mixin
         | 
| 160 | 
            +
            @mixin between($small-width, $large-width) {
         | 
| 161 | 
            +
              $large-width: $large-width - 1;
         | 
| 162 | 
            +
              @media (max-width: $large-width) and (min-width: $small-width) {
         | 
| 163 | 
            +
                @content;
         | 
| 164 | 
            +
              }
         | 
| 165 | 
            +
            }
         | 
| 166 | 
            +
             | 
| 167 | 
            +
            // HDPI screens media query mixin
         | 
| 168 | 
            +
            @mixin hdpi {
         | 
| 169 | 
            +
              @media (min-device-pixel-ratio: 1.3), (min-resolution: 120dpi), (min-resolution: 1.3dppx) {
         | 
| 170 | 
            +
                @content;
         | 
| 171 | 
            +
              }
         | 
| 172 | 
            +
            }
         | 
| @@ -0,0 +1,164 @@ | |
| 1 | 
            +
            /* ========================================================================== *
         | 
| 2 | 
            +
             * Grid module
         | 
| 3 | 
            +
             * -------------------------------------------------------------------------- */
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            /* ===================================== *
         | 
| 6 | 
            +
             * Utilities
         | 
| 7 | 
            +
             * ------------------------------------- */
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            $small-gutter : 7.5px;
         | 
| 10 | 
            +
            $medium-gutter: 15px;
         | 
| 11 | 
            +
            $large-gutter : 30px;
         | 
| 12 | 
            +
            $columns      : 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve';
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            // Horizontal gutter mixin
         | 
| 15 | 
            +
            @mixin horizontal-gutter($amount) {
         | 
| 16 | 
            +
              margin-left:  -$amount / 2;
         | 
| 17 | 
            +
              margin-right: -$amount / 2;
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              > * {
         | 
| 20 | 
            +
                margin-left:  $amount / 2;
         | 
| 21 | 
            +
                margin-right: $amount / 2;
         | 
| 22 | 
            +
              }
         | 
| 23 | 
            +
            }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            // Vertical gutter mixin
         | 
| 26 | 
            +
            @mixin vertical-gutter($amount) {
         | 
| 27 | 
            +
              margin-bottom:   -$amount;
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              > * {
         | 
| 30 | 
            +
                margin-bottom:   $amount;
         | 
| 31 | 
            +
              }
         | 
| 32 | 
            +
            }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            /* ===================================== *
         | 
| 35 | 
            +
             * Common
         | 
| 36 | 
            +
             * ------------------------------------- */
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            // Columns container
         | 
| 39 | 
            +
            [class*='columns'] {
         | 
| 40 | 
            +
              display: flex;
         | 
| 41 | 
            +
              flex-flow: row wrap;
         | 
| 42 | 
            +
            }
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            // Top-align columns in certain contexts
         | 
| 45 | 
            +
            form [class*='columns'] {
         | 
| 46 | 
            +
              align-items: flex-start;
         | 
| 47 | 
            +
            }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            // Normal gutter
         | 
| 50 | 
            +
            .gutter {
         | 
| 51 | 
            +
              @include horizontal-gutter($medium-gutter);
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              &.match {
         | 
| 54 | 
            +
                @include vertical-gutter($medium-gutter);
         | 
| 55 | 
            +
              }
         | 
| 56 | 
            +
            }
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            // Small gutter
         | 
| 59 | 
            +
            .small-gutter {
         | 
| 60 | 
            +
              @include horizontal-gutter($small-gutter);
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              &.match {
         | 
| 63 | 
            +
                @include vertical-gutter($small-gutter);
         | 
| 64 | 
            +
              }
         | 
| 65 | 
            +
            }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            // Large gutter
         | 
| 68 | 
            +
            .large-gutter {
         | 
| 69 | 
            +
              @include horizontal-gutter($large-gutter);
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              &.match {
         | 
| 72 | 
            +
                @include vertical-gutter($large-gutter);
         | 
| 73 | 
            +
              }
         | 
| 74 | 
            +
            }
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            // Flexible columns
         | 
| 77 | 
            +
            .span {
         | 
| 78 | 
            +
              flex: 1;
         | 
| 79 | 
            +
            }
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            // Loop through columns
         | 
| 82 | 
            +
            @for $a from 1 through length($columns) {
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              // Define column expanse
         | 
| 85 | 
            +
              $span: (length($columns) / $a);
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              // No gutter placeholders
         | 
| 88 | 
            +
              %span-#{nth($columns, $a)} {
         | 
| 89 | 
            +
                flex: 0 1 100% / $span;
         | 
| 90 | 
            +
              }
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              // Regular gutter placeholders
         | 
| 93 | 
            +
              %span-#{nth($columns, $a)}-gutter {
         | 
| 94 | 
            +
                flex: 0 1 calc(#{100% / $span} - #{$medium-gutter});
         | 
| 95 | 
            +
              }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              // Small gutter placeholders
         | 
| 98 | 
            +
              %span-#{nth($columns, $a)}-small-gutter {
         | 
| 99 | 
            +
                flex: 0 1 calc(#{100% / $span} - #{$small-gutter});
         | 
| 100 | 
            +
              }
         | 
| 101 | 
            +
             | 
| 102 | 
            +
              // Large gutter placeholders
         | 
| 103 | 
            +
              %span-#{nth($columns, $a)}-large-gutter {
         | 
| 104 | 
            +
                flex: 0 1 calc(#{100% / $span} - #{$large-gutter});
         | 
| 105 | 
            +
              }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
              @if length($columns) % $a == 0 {
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                // Container-declared columns
         | 
| 110 | 
            +
                .#{nth($columns, $a)}-columns {
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  // No gutter
         | 
| 113 | 
            +
                  > * {
         | 
| 114 | 
            +
                    @extend %span-#{nth($columns, $span)};
         | 
| 115 | 
            +
                  }
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                  // Regular gutter
         | 
| 118 | 
            +
                  &.gutter > * {
         | 
| 119 | 
            +
                    @extend %span-#{nth($columns, $span)}-gutter;
         | 
| 120 | 
            +
                  }
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                  // Small gutter
         | 
| 123 | 
            +
                  &.small-gutter > * {
         | 
| 124 | 
            +
                    @extend %span-#{nth($columns, $span)}-small-gutter;
         | 
| 125 | 
            +
                  }
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                  // Large gutter
         | 
| 128 | 
            +
                  &.large-gutter > * {
         | 
| 129 | 
            +
                    @extend %span-#{nth($columns, $span)}-large-gutter;
         | 
| 130 | 
            +
                  }
         | 
| 131 | 
            +
                }
         | 
| 132 | 
            +
              }
         | 
| 133 | 
            +
             | 
| 134 | 
            +
              // Loop through columns again
         | 
| 135 | 
            +
              @for $b from 1 through length($columns) {
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                // Only create usable classnames
         | 
| 138 | 
            +
                @if $a <= $b and length($columns) % $b == 0 {
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                  // Define placeholder key
         | 
| 141 | 
            +
                  $key: length($columns) * ($a / $b);
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  // No gutter
         | 
| 144 | 
            +
                  .#{nth($columns, $a)}-of-#{nth($columns, $b)} {
         | 
| 145 | 
            +
                    @extend %span-#{nth($columns, $key)};
         | 
| 146 | 
            +
                  }
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                  // Regular gutter
         | 
| 149 | 
            +
                  .gutter > .#{nth($columns, $a)}-of-#{nth($columns, $b)} {
         | 
| 150 | 
            +
                    @extend %span-#{nth($columns, $key)}-gutter;
         | 
| 151 | 
            +
                  }
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                  // Small gutter
         | 
| 154 | 
            +
                  .small-gutter > .#{nth($columns, $a)}-of-#{nth($columns, $b)} {
         | 
| 155 | 
            +
                    @extend %span-#{nth($columns, $key)}-small-gutter;
         | 
| 156 | 
            +
                  }
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                  // Large gutter
         | 
| 159 | 
            +
                  .large-gutter > .#{nth($columns, $a)}-of-#{nth($columns, $b)} {
         | 
| 160 | 
            +
                    @extend %span-#{nth($columns, $key)}-large-gutter;
         | 
| 161 | 
            +
                  }
         | 
| 162 | 
            +
                }
         | 
| 163 | 
            +
              }
         | 
| 164 | 
            +
            }
         |