ratchet_design 0.1.19 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ratchet/_esvg.js +72 -0
  3. data/app/assets/javascripts/ratchet/_icons.js +19 -0
  4. data/app/assets/javascripts/ratchet/_topology.js +19 -0
  5. data/app/assets/javascripts/ratchet/base/form.js +4 -4
  6. data/app/assets/javascripts/ratchet/core.js +15 -8
  7. data/app/assets/javascripts/ratchet/enhancement/{_collapse.js → collapse.js} +3 -3
  8. data/app/assets/javascripts/ratchet/enhancement/lightbox.js +52 -118
  9. data/app/assets/javascripts/ratchet/enhancement/modal.js +185 -0
  10. data/app/assets/javascripts/ratchet/enhancement/smooth-scroll.js +21 -0
  11. data/app/assets/javascripts/ratchet/utility/once.js +42 -0
  12. data/app/assets/stylesheets/ratchet/_colors.yml +54 -0
  13. data/app/assets/stylesheets/ratchet/_core.scss +8 -1
  14. data/app/assets/stylesheets/ratchet/base/_button.scss +22 -31
  15. data/app/assets/stylesheets/ratchet/base/_document.scss +66 -53
  16. data/app/assets/stylesheets/ratchet/base/_form.scss +0 -1
  17. data/app/assets/stylesheets/ratchet/base/_list.scss +6 -15
  18. data/app/assets/stylesheets/ratchet/base/_media.scss +22 -6
  19. data/app/assets/stylesheets/ratchet/base/_section.scss +8 -257
  20. data/app/assets/stylesheets/ratchet/base/_slider.scss +388 -0
  21. data/app/assets/stylesheets/ratchet/base/_table.scss +1 -2
  22. data/app/assets/stylesheets/ratchet/base/_text.scss +13 -29
  23. data/app/assets/stylesheets/ratchet/enhancement/_deployments.scss +26 -0
  24. data/app/assets/stylesheets/ratchet/enhancement/_hero.scss +1 -1
  25. data/app/assets/stylesheets/ratchet/enhancement/_lightbox.scss +35 -76
  26. data/app/assets/stylesheets/ratchet/enhancement/_modal.scss +125 -0
  27. data/app/assets/stylesheets/ratchet/utility/_animations.scss +8 -0
  28. data/app/assets/stylesheets/ratchet/utility/_color.scss +25 -105
  29. data/app/assets/stylesheets/ratchet/utility/_global.scss +30 -24
  30. data/app/assets/stylesheets/ratchet/utility/_grid.scss +152 -15
  31. data/app/assets/svgs/ratchet/_icons/backup.svg +9 -0
  32. data/app/assets/svgs/ratchet/_icons/block.svg +7 -0
  33. data/app/assets/svgs/ratchet/_icons/compose-logomark.svg +8 -0
  34. data/app/assets/svgs/ratchet/_icons/connecting-in.svg +46 -0
  35. data/app/assets/svgs/ratchet/_icons/connecting-out.svg +33 -0
  36. data/app/assets/svgs/ratchet/_icons/customer-buffer.svg +28 -0
  37. data/app/assets/svgs/ratchet/_icons/customer-citrix.svg +12 -0
  38. data/app/assets/svgs/ratchet/_icons/customer-guardian.svg +31 -0
  39. data/app/assets/svgs/ratchet/_icons/customer-roximity.svg +16 -0
  40. data/app/assets/svgs/ratchet/_icons/customer-upworthy.svg +13 -0
  41. data/app/assets/svgs/ratchet/_icons/db-money.svg +31 -0
  42. data/app/assets/svgs/ratchet/_icons/deployment.svg +1 -0
  43. data/app/assets/svgs/ratchet/{facebook.svg → _icons/facebook.svg} +0 -0
  44. data/app/assets/svgs/ratchet/_icons/gear.svg +12 -0
  45. data/app/assets/svgs/ratchet/{github.svg → _icons/github.svg} +0 -0
  46. data/app/assets/svgs/ratchet/{google-plus.svg → _icons/google-plus.svg} +0 -0
  47. data/app/assets/svgs/ratchet/{ibm.svg → _icons/ibm.svg} +0 -0
  48. data/app/assets/svgs/ratchet/{inbox.svg → _icons/inbox.svg} +0 -0
  49. data/app/assets/svgs/ratchet/_icons/index.svg +3 -0
  50. data/app/assets/svgs/ratchet/_icons/keylock.svg +8 -0
  51. data/app/assets/svgs/ratchet/_icons/life-preserver.svg +17 -0
  52. data/app/assets/svgs/ratchet/{linkedin.svg → _icons/linkedin.svg} +0 -0
  53. data/app/assets/svgs/ratchet/_icons/metrics.svg +7 -0
  54. data/app/assets/svgs/ratchet/_icons/money-stack.svg +60 -0
  55. data/app/assets/svgs/ratchet/_icons/notepad.svg +12 -0
  56. data/app/assets/svgs/ratchet/_icons/notepad2.svg +14 -0
  57. data/app/assets/svgs/ratchet/_icons/one-click.svg +6 -0
  58. data/app/assets/svgs/ratchet/{ratchet.svg → _icons/ratchet.svg} +0 -0
  59. data/app/assets/svgs/ratchet/_icons/reliability.svg +12 -0
  60. data/app/assets/svgs/ratchet/_icons/safe.svg +26 -0
  61. data/app/assets/svgs/ratchet/_icons/scaling.svg +16 -0
  62. data/app/assets/svgs/ratchet/{search.svg → _icons/search.svg} +0 -0
  63. data/app/assets/svgs/ratchet/{subscribe.svg → _icons/subscribe.svg} +0 -0
  64. data/app/assets/svgs/ratchet/{twitter.svg → _icons/twitter.svg} +0 -0
  65. data/app/assets/svgs/ratchet/{y-combinator.svg → _icons/y-combinator.svg} +0 -0
  66. data/app/assets/svgs/ratchet/_icons/youtube.svg +3 -0
  67. data/app/assets/svgs/ratchet/_topology/arbiter.svg +1 -0
  68. data/app/assets/svgs/ratchet/_topology/backup.svg +1 -0
  69. data/app/assets/svgs/ratchet/_topology/config.svg +1 -0
  70. data/app/assets/svgs/ratchet/_topology/haproxy-2.svg +1 -0
  71. data/app/assets/svgs/ratchet/_topology/haproxy-storage.svg +1 -0
  72. data/app/assets/svgs/ratchet/_topology/haproxy.svg +1 -0
  73. data/app/assets/svgs/ratchet/_topology/memory.svg +1 -0
  74. data/app/assets/svgs/ratchet/_topology/portal-2.svg +1 -0
  75. data/app/assets/svgs/ratchet/_topology/portal.svg +1 -0
  76. data/app/assets/svgs/ratchet/_topology/sentinel-memory.svg +1 -0
  77. data/app/assets/svgs/ratchet/_topology/sentinel.svg +1 -0
  78. data/app/assets/svgs/ratchet/_topology/storage.svg +1 -0
  79. data/app/helpers/ratchet/application_helper.rb +10 -2
  80. data/app/helpers/ratchet/form_helper.rb +84 -1
  81. data/app/helpers/ratchet/icon_helper.rb +113 -0
  82. data/app/helpers/ratchet/pricing_helper.rb +133 -0
  83. data/app/helpers/ratchet/toggle_nav_helper.rb +101 -0
  84. data/app/views/layouts/ratchet/default.html.slim +3 -3
  85. data/app/views/shared/ratchet/_defs.html.slim +30 -88
  86. data/app/views/shared/ratchet/_fonts.html.slim +88 -0
  87. data/app/views/shared/ratchet/_footer.html.slim +1 -1
  88. data/app/views/shared/ratchet/_header.html.slim +5 -5
  89. data/app/views/shared/ratchet/_icons.html.slim +190 -5
  90. data/lib/ratchet_design/config_data.rb +29 -0
  91. data/lib/ratchet_design/version.rb +1 -1
  92. data/lib/ratchet_design.rb +27 -10
  93. data/public/core-0.1.20.js +22627 -0
  94. data/public/{fonts-woff-0.1.19.css → fonts-woff-0.1.20.css} +0 -0
  95. data/public/{fonts-woff2-0.1.19.css → fonts-woff2-0.1.20.css} +0 -0
  96. metadata +84 -22
  97. data/app/assets/javascripts/ratchet/_svg.js +0 -55
  98. data/public/core-0.1.19.js +0 -138
  99. data/public/core-0.1.19.js.gz +0 -0
  100. data/public/core-0.1.19.map.json +0 -1
  101. data/public/fonts-woff-0.1.19.css.gz +0 -0
  102. data/public/fonts-woff2-0.1.19.css.gz +0 -0
@@ -0,0 +1,125 @@
1
+ /* ========================================================================== *
2
+ * Modal
3
+ * -------------------------------------------------------------------------- */
4
+
5
+ /* ===================================== *
6
+ * Utility
7
+ * ------------------------------------- */
8
+
9
+ $modal-padding: 3vw;
10
+
11
+ // Animations
12
+ @keyframes scale-up {
13
+ 0% { transform: translateZ(0) scale(0); }
14
+ 100% { transform: translateZ(0) scale(1); }
15
+ }
16
+
17
+ @keyframes scale-down {
18
+ 0% { transform: translateZ(0) scale(1); }
19
+ 100% { transform: translateZ(0) scale(0); }
20
+ }
21
+
22
+ // Modal button placeholder styles
23
+ @mixin modal-button {
24
+ display: flex;
25
+ width: vr(4); // 60px;
26
+ height: vr(4); // 60px;
27
+ flex-direction: column;
28
+ justify-content: center;
29
+ align-items: center;
30
+ text-align: center;
31
+ }
32
+
33
+ /* ===================================== *
34
+ * Common
35
+ * ------------------------------------- */
36
+
37
+ // Main modal
38
+ [data-modal] {
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: center;
42
+ position: fixed;
43
+ left: 0;
44
+ top: 0;
45
+ width: 100%;
46
+ height: 100%;
47
+ z-index: -1;
48
+ color: $white;
49
+ overflow: auto;
50
+ padding: $modal-padding;
51
+
52
+ // Push immediate children down a bit
53
+ > * {
54
+ opacity: 0;
55
+ transform: translateY(vr(1));
56
+ transition:
57
+ opacity $duration,
58
+ transform $duration;
59
+ }
60
+
61
+ // Modal close button
62
+ [data-close-modal] {
63
+ @include modal-button;
64
+ position: absolute;
65
+ top: $modal-padding;
66
+ right: $modal-padding;
67
+ color: $white;
68
+ font-size: 12px;
69
+ letter-spacing: .05em;
70
+ line-height: 1em;
71
+ border-radius: 50%;
72
+ transition: $duration;
73
+ -webkit-font-smoothing: subpixel-antialiased; // Webkit sucks so much
74
+ background: $steel;
75
+
76
+ // Active state
77
+ &:hover,
78
+ &:focus,
79
+ &:active {
80
+ color: $azure;
81
+ background: $white;
82
+ }
83
+
84
+ // SVG styles
85
+ svg {
86
+ flex: 0 1 auto;
87
+ margin: 2px 0 5px 0;
88
+ }
89
+ }
90
+
91
+ &:after {
92
+ content: '';
93
+ position: fixed;
94
+ background: rgba($space, .97);
95
+ border-radius: 50%;
96
+ z-index: -1;
97
+ }
98
+ }
99
+
100
+ [data-modal='in'],
101
+ [data-modal='out'],
102
+ [data-modal='visible'] {
103
+ z-index: 15;
104
+ }
105
+
106
+ [data-modal='in']:after {
107
+ animation: scale-up .5s cubic-bezier(0.7,0,0.3,1);
108
+ }
109
+
110
+ [data-modal='out']:after {
111
+ animation: scale-down .5s cubic-bezier(0.7,0,0.3,1);
112
+ }
113
+
114
+ [data-modal='visible'] > * {
115
+ opacity: 1;
116
+ transform: translateY(0);
117
+ }
118
+
119
+ [data-modal-content] {
120
+ display: flex;
121
+ flex-direction: column;
122
+ width: 100%;
123
+ height: 100%;
124
+ align-items: center;
125
+ }
@@ -0,0 +1,8 @@
1
+ @keyframes fade-in {
2
+ 0% {
3
+ opacity: 0;
4
+ }
5
+ 100% {
6
+ opacity: 1;
7
+ }
8
+ }
@@ -2,109 +2,20 @@
2
2
  * a. Color module
3
3
  * -------------------------------------------------------------------------- */
4
4
 
5
- // Passive colors
6
- $space: #1f2b54; // Blue-Black
7
- $shark: #30446e; // Dark Blue-Gray
8
- $steel: #576e91; // Blue-Gray
9
- $pewter: #869ebc; // Light Blue-Gray
10
- $dolphin: #b4c1d2; // Lighter Blue
11
- $alabaster: #c3cdda; // Light Blue
12
- $isabella: #d6dde7; // Off-Cream
13
- $smoke: #edf5f7; // Cream
14
- $white: #FFFFFF; // White
15
-
16
- // Passive (dark to light)
17
- $rhino: #263D53;
18
- $bayou: #445D75;
19
- $smalt: #58728A;
20
- $bali: #87A0B8;
21
- $boticelli: #C3D4E4;
22
- $catskill: #EDF5F7;
23
-
24
- // Active
25
- $azure: #0094FD; // Blue
26
- $cornflower: #625ff9; // Blue purple
27
- $medium: #8F52EA; // Purple
28
- $shocking: #C60CA5; // Pink
29
- $shamrock: #25C894; // Mint green
30
- $poppy: #F69523; // Light orange
31
- $orange: #F96623; // Orange
32
- $crimson: #DD2F41; // Red
33
- // Active colors
34
- $azure: #0094fd; // Blue
35
- $cerulean: #0FA7DB; // Softer Blue
36
- $byzantine: #c60ca5; // Magenta
37
- $mulberry: #8f52ea; // Purple
38
- $majorelle: #625ff9; // Indigo
39
- $caribbean: #25c894; // Mint
40
- $grass: #2ac84f; // Green
41
- $gold: #f69523; // Yellow
42
- $tangelo: #f96623; // Orange
43
- $rusty: #dd2f41; // Red
44
- $orchid: #a346ce; // Purple
45
-
46
- // Banner-specific colors
47
- $lochmara: #008BC3; // Default
48
- $akaroa: #D2C9A7; // Error
49
- $turquoise: #5CC6E4; // NTTW
50
- $terracotta: #A81C27; // Thanksgiving
51
- $cobalt: #006dff; // Royal blue
52
- $capri: #00d2fe; // Deep sky blue
53
-
54
- // Active color gradients
55
- $active-gradients: (
56
- earthrise: ( start: $azure, end: $majorelle ), // Blue to Indigo | PostgreSQL
57
- royalty: ( start: $majorelle, end: $mulberry ), // Indigo to Purple | Elasticsearch
58
- lagoon: ( start: $azure, end: $caribbean ), // Blue to Mint | RethinkDB
59
- pearlescent: ( start: $azure, end: $mulberry ), // Blue to Purple | MySQL
60
- firestorm: ( start: $gold, end: $tangelo ), // Yellow to Orange | RabbitMQ
61
- sunset: ( start: $tangelo, end: $rusty ), // Orange to Red | Redis
62
- berries: ( start: $byzantine, end: $rusty ), // Magenta to Red | etcd
63
- supernova: ( start: $byzantine, end: $mulberry ), // Magenta to Purple | ScyllaDB
64
- emerald: ( start: $caribbean, end: $grass ), // Mint to Green | MongoDB
65
- aurora: ( start: $grass, end: $mulberry ), // Green to Indigo
66
- tidal: ( start: $cobalt, end: $capri ) // Hero Gradient Only
67
- );
68
-
69
- // Gradient (passive)
70
- $passive-gradients: (
71
- blackhole: ( start: $space, end: $steel ), // Hero Gradient Only
72
- midnight: ( start: $shark, end: $pewter ), // Hero Gradient Only
73
- shady: ( start: $steel, end: $alabaster ), // Hero Gradient Only
74
- grayscale: ( start: $pewter, end: $isabella ), // Hero Gradient Only
75
- polar: ( start: $alabaster, end: $smoke ), // Hero Gradient Only
76
- eggshell: ( start: $isabella, end: $white ) // Hero Gradient Only
77
- );
78
-
79
5
  // Translucent colors
80
6
  $translucent-white: rgba($white, .5);
81
7
 
82
- // Active Variable List
83
- $active-colors: $azure, $cerulean, $byzantine, $mulberry, $majorelle, $caribbean, $grass, $gold, $tangelo, $rusty, $orchid;
84
- $active-color-names: azure, cerulean, byzantine, mulberry, majorelle, caribbean, grass, gold, tangelo, rusty, orchid;
85
-
86
- // Passive Variable List
87
- $passive-colors: $space, $shark, $steel, $pewter, $dolphin, $alabaster, $isabella, $smoke, $white;
88
- $passive-color-names: space, shark, steel, pewter, dolphin, alabaster, isabella, smoke, white;
89
-
90
- // // Active Gradient Variable List
91
- // $gradient-colors: $earthrise, $royalty, $lagoon, $pearlescent, $firestorm, $sunset, $berries, $supernova, $emerald, $aurora, $tidal, $blackhole, $midnight, $shady, $grayscale, $polar, $eggshell;
92
- // $gradient-color-names: earthrise, royalty, lagoon, pearlescent, firestorm, sunset, berries, supernova, emerald, aurora, tidal, blackhole, midnight, shady, grayscale, polar, eggshell;
93
-
94
- // Active and Passive List
95
- $full-solid-color-list: zip( join($active-color-names, $passive-color-names), join($active-colors, $passive-colors));
96
-
97
8
  // Solid color classes
98
- @each $name, $color in $full-solid-color-list {
9
+ @each $name, $color in $colors {
99
10
  // Assign a `.[color]-text` class with a color of [color]
100
11
  .#{$name}-text {
101
12
  color: $color;
102
13
  }
103
14
 
104
15
  .#{$name}-bg {
105
- &:before {
16
+ // &:before {
106
17
  background-color: $color;
107
- }
18
+ // }
108
19
  }
109
20
 
110
21
  linearGradient##{$name} {
@@ -121,18 +32,18 @@ $full-solid-color-list: zip( join($active-color-names, $passive-color-names), jo
121
32
  }
122
33
 
123
34
 
124
- // Create active gradients
125
- @each $key, $val in $active-gradients {
126
- $start: map-get($val, start);
127
- $end: map-get($val, end);
35
+ // Create gradients
36
+ @each $name, $colors in $gradients {
37
+ $start: nth($colors, 1);
38
+ $end: nth($colors, 2);
128
39
 
129
- // .#{$key}-bg {
130
- // &:before {
131
- // background: linear-gradient(135deg, #{$start}, #{$end}) left top/100% 100% no-repeat;
132
- // }
133
- // }
40
+ .#{$name}-bg {
41
+ // &:before {
42
+ background: linear-gradient(135deg, #{$start}, #{$end}) left top/100% 100% no-repeat;
43
+ // }
44
+ }
134
45
 
135
- linearGradient##{$key} {
46
+ linearGradient##{$name} {
136
47
  stop:nth-child(1) {
137
48
  stop-color: $start;
138
49
  }
@@ -141,7 +52,7 @@ $full-solid-color-list: zip( join($active-color-names, $passive-color-names), jo
141
52
  }
142
53
  }
143
54
 
144
- linearGradient##{$key}-darken {
55
+ linearGradient##{$name}-darken {
145
56
  stop:nth-child(1) {
146
57
  stop-color: darken($start, 10%);
147
58
  }
@@ -150,7 +61,7 @@ $full-solid-color-list: zip( join($active-color-names, $passive-color-names), jo
150
61
  }
151
62
  }
152
63
 
153
- linearGradient##{$key}-lighten {
64
+ linearGradient##{$name}-lighten {
154
65
  stop:nth-child(1) {
155
66
  stop-color: lighten($start, 10%);
156
67
  }
@@ -158,4 +69,13 @@ $full-solid-color-list: zip( join($active-color-names, $passive-color-names), jo
158
69
  stop-color: lighten($end, 10%);
159
70
  }
160
71
  }
161
- }
72
+
73
+ // linearGradient##{$name}-reverse {
74
+ // stop:nth-child(1) {
75
+ // stop-color: $end;
76
+ // }
77
+ // stop:nth-child(2) {
78
+ // stop-color: $start;
79
+ // }
80
+ // }
81
+ }
@@ -1,15 +1,15 @@
1
1
  /* ========================================================================== *
2
- * a. Global module
2
+ * Global module
3
3
  * -------------------------------------------------------------------------- */
4
4
 
5
5
  /* ===================================== *
6
- * i. Color
6
+ * Color
7
7
  * ------------------------------------- */
8
8
 
9
9
  @import 'color';
10
10
 
11
11
  /* ===================================== *
12
- * ii. Fonts
12
+ * Fonts
13
13
  * ------------------------------------- */
14
14
 
15
15
  // Cap height declaration
@@ -107,14 +107,14 @@ $amp-font: Baskerville, Palatino, 'Book Antiqua', serif;
107
107
  $mono-font: 'Nitti', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
108
108
 
109
109
  /* ===================================== *
110
- * iii. Animations
110
+ * Animations
111
111
  * ------------------------------------- */
112
112
 
113
113
  // Transition duration
114
114
  $duration: .2s;
115
115
 
116
116
  /* ===================================== *
117
- * iv. Layout
117
+ * Layout
118
118
  * ------------------------------------- */
119
119
 
120
120
  // Border radius
@@ -126,6 +126,9 @@ $header-height: vr(6); // 90px
126
126
  // Universal padding unit
127
127
  $content-padding: vr(2); // 30px
128
128
 
129
+ // Site Width
130
+ $site-width: 1100px;
131
+
129
132
  // Angle
130
133
 
131
134
  $deg: 30deg;
@@ -174,27 +177,34 @@ $deg: 30deg;
174
177
  }
175
178
  }
176
179
 
180
+ // Center an element to the viewport regardless of nesting
181
+ @mixin center-to-viewport {
182
+ margin-left: calc(-50vw + 50%);
183
+ transform: translateX(calc(50vw - 50%));
184
+ }
185
+
177
186
  // Modules with max-width and padding
178
- @mixin padded-module($width: 1100px, $padding: $content-padding, $nested: true) {
179
- padding-left: calc(50vw - #{$width / 2});
180
- padding-right: calc(50vw - #{$width / 2});
187
+ @mixin padded-module($width: 1100px, $padding: $content-padding, $overflow: false, $offset: null) {
188
+ $half-width: if($overflow, 50vw, 50%);
189
+ $margin: if($offset, calc(-50vw + 50% + #{$offset / 2}), calc(-50vw + 50%));
190
+ $transform: if($offset, translateX(calc(50vw - 50% - #{$offset})), translateX(calc(50vw - 50%)));
181
191
 
182
- @if $nested {
192
+ // Overflows container and center
193
+ @if $overflow {
183
194
  width: 100vw;
195
+ margin-left: $margin;
196
+ transform: $transform;
184
197
  }
185
198
 
199
+ padding-left: calc(#{$half-width} - #{$width / 2});
200
+ padding-right: calc(#{$half-width} - #{$width / 2});
201
+
186
202
  @media (max-width: $width + $padding * 2) {
187
203
  padding-left: $padding;
188
204
  padding-right: $padding;
189
205
  }
190
206
  }
191
207
 
192
- // Center an element to the viewport regardless of nesting
193
- @mixin center-to-viewport {
194
- margin-left: calc(-50vw + 50%);
195
- transform: translateX(calc(50vw - 50%));
196
- }
197
-
198
208
  // Width-agnostic module backgrounds
199
209
  @mixin cover-background($background: transparent, $offset: null) {
200
210
  &,
@@ -222,7 +232,7 @@ $deg: 30deg;
222
232
  }
223
233
 
224
234
  /* ===================================== *
225
- * v. Context
235
+ * Context
226
236
  * ------------------------------------- */
227
237
 
228
238
  // Normal link state mixin
@@ -273,26 +283,22 @@ $deg: 30deg;
273
283
  }
274
284
 
275
285
  /* ===================================== *
276
- * vi. Visibility
286
+ * Visibility
277
287
  * ------------------------------------- */
278
288
 
279
289
  // Visually hidden mixin
280
290
  @mixin hidden() {
281
- position: absolute;
282
- top: -9999px;
283
- left: -9999px;
291
+ display: none !important;
284
292
  }
285
293
 
286
294
  // Visually hidden placeholder
287
- %hidden {
295
+ .hidden, %hidden {
288
296
  @include hidden;
289
297
  }
290
298
 
291
299
  // Visually shown mixin
292
300
  @mixin shown() {
293
- position: initial;
294
- top: initial;
295
- left: initial;
301
+ display: initial;
296
302
  }
297
303
 
298
304
  // Visually shown placeholder
@@ -9,6 +9,7 @@
9
9
  // Display breakpoints
10
10
  $breakpoint-xlg: 1500px;
11
11
  $breakpoint-lg: 1100px;
12
+ $breakpoint-med: 950px;
12
13
  $breakpoint: 800px;
13
14
  $breakpoint-sm: 550px;
14
15
  $breakpoint-xsm: 400px;
@@ -19,7 +20,7 @@ $grid-no-gutter: 0;
19
20
  $grid-small-gutter: vr(2); // 30px
20
21
  $grid-large-gutter: vr(4); // 60px
21
22
 
22
- // Grid init mixin (use on parent elements)
23
+ // Grid init mixin (use on parent elements)
23
24
  @mixin grid($direction: row) {
24
25
  display: flex;
25
26
  flex: 0 1 auto;
@@ -28,16 +29,22 @@ $grid-large-gutter: vr(4); // 60px
28
29
  }
29
30
 
30
31
  // Grid gutter mixin (use on parent elements)
31
- @mixin gutter($amount: 0) {
32
- // margin-top: -$amount;
33
- // margin-left: $amount * -.5;
34
- // margin-right: $amount * -.5;
32
+ @mixin gutter($amount: 0, $both: off) {
33
+ margin-left: $amount * -.5;
34
+ margin-right: $amount * -.5;
35
+
36
+ @if $both == on {
37
+ margin-top: -$amount;
38
+ }
35
39
 
36
40
  > * {
37
- margin-bottom: 0;
38
- margin-top: $amount;
39
41
  padding-left: $amount * .5;
40
42
  padding-right: $amount * .5;
43
+
44
+ @if $both == on {
45
+ margin-bottom: 0;
46
+ margin-top: $amount;
47
+ }
41
48
  }
42
49
  }
43
50
 
@@ -78,17 +85,13 @@ $grid-large-gutter: vr(4); // 60px
78
85
  @mixin span($cols: auto, $breakpoint: auto) {
79
86
 
80
87
  // Universal styles
81
- display: flex;
82
- flex-flow: column nowrap;
83
- align-items: flex-start;
84
- // justify-content: center;
85
88
  flex: 0 0 auto;
86
89
  max-width: inherit;
87
90
 
88
91
  // Full width
89
92
  @if $cols == auto {
90
93
  flex-grow: 1;
91
- flex-basis: 0;
94
+ flex-basis: 100%;
92
95
  width: 100%;
93
96
  }
94
97
 
@@ -127,19 +130,39 @@ $grid-large-gutter: vr(4); // 60px
127
130
 
128
131
  &.small-gutter {
129
132
  @include gutter($grid-small-gutter);
133
+
134
+ &-all {
135
+ @include gutter($grid-small-gutter, on);
136
+ }
130
137
  }
131
138
 
132
139
  &.large-gutter {
133
140
  @include gutter($grid-large-gutter);
141
+
142
+ &-all {
143
+ @include gutter($grid-large-gutter, on);
144
+ }
145
+ }
146
+
147
+ &.v-center {
148
+ align-items: center;
134
149
  }
135
150
  }
136
151
 
137
- $cell-sizes: (1:one, 2:two, 3:three, 4:four, 5:five, 6:six);
152
+ $cell-sizes: (1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven);
138
153
 
139
154
  @mixin grid-cell($num) {
140
155
  @for $i from 1 through length($cell-sizes) {
141
156
  .#{map-get($cell-sizes, $i)}-of-#{map-get($cell-sizes, $num)} {
142
- @include span($i of $num);
157
+ @include span($i of $num, $breakpoint);
158
+
159
+ @media (max-width: $breakpoint) {
160
+ @include span(1 of 1);
161
+
162
+ // &.spacer {
163
+ // margin-bottom: vr(2);
164
+ // }
165
+ }
143
166
  }
144
167
  }
145
168
  }
@@ -148,4 +171,118 @@ $cell-sizes: (1:one, 2:two, 3:three, 4:four, 5:five, 6:six);
148
171
  @include grid-cell(3);
149
172
  @include grid-cell(4);
150
173
  @include grid-cell(5);
151
- @include grid-cell(6);
174
+ @include grid-cell(6);
175
+ @include grid-cell(7);
176
+
177
+
178
+
179
+
180
+
181
+ /* ========================================================================== *
182
+ * b. Grid module
183
+ * -------------------------------------------------------------------------- */
184
+
185
+ /* ===================================== *
186
+ * i. Utilities
187
+ * ------------------------------------- */
188
+
189
+ // // Grid init mixin (use on parent elements)
190
+ // @mixin grid($direction: row) {
191
+ // display: flex;
192
+ // flex: 0 1 auto;
193
+ // flex-wrap: wrap;
194
+ // flex-direction: $direction;
195
+ // }
196
+
197
+ // // Grid gutter mixin (use on parent elements)
198
+ // @mixin gutter($amount: 0, $both: off) {
199
+ // margin-left: $amount * -.5;
200
+ // margin-right: $amount * -.5;
201
+
202
+ // @if $both == on {
203
+ // margin-top: -$amount;
204
+ // }
205
+
206
+ // > * {
207
+ // padding-left: $amount * .5;
208
+ // padding-right: $amount * .5;
209
+
210
+ // @if $both == on {
211
+ // margin-bottom: 0;
212
+ // margin-top: $amount;
213
+ // }
214
+ // }
215
+ // }
216
+
217
+ // // Grid alignment mixin (use on parent elements)
218
+ // @mixin align($x-axis: left, $y-axis: top) {
219
+
220
+ // // Map horizontal params
221
+ // $horizontal: (
222
+ // left: flex-start,
223
+ // center: center,
224
+ // right: flex-end
225
+ // );
226
+
227
+ // // Map vertical params
228
+ // $vertical: (
229
+ // top: flex-start,
230
+ // middle: center,
231
+ // bottom: flex-end
232
+ // );
233
+
234
+ // // Assign appropriate horizontal property
235
+ // @if map-has-key($horizontal, $x-axis) {
236
+ // justify-content: map-get($horizontal, $x-axis);
237
+ // }
238
+
239
+ // // Assign appropriate vertical property
240
+ // @if map-has-key($vertical, $y-axis) {
241
+ // align-items: map-get($vertical, $y-axis);
242
+ // }
243
+ // }
244
+
245
+ // // Column span function (use for the maths)
246
+ // @function span($cols) {
247
+ // @return nth($cols, 1) / nth($cols, 3) * 100%;
248
+ // }
249
+
250
+ // // Column span mixin (use on child elements)
251
+ // @mixin span($cols: auto, $breakpoint: 34em) {
252
+
253
+ // // Universal styles
254
+ // flex: 0 0 auto;
255
+ // max-width: inherit;
256
+
257
+ // // Full width
258
+ // @if $cols == auto {
259
+ // flex-grow: 1;
260
+ // flex-basis: 0;
261
+ // width: 100%;
262
+ // }
263
+
264
+ // // 1 - 8 of 8 columns
265
+ // @elseif length($cols) > 1 {
266
+ // flex-basis: span($cols);
267
+ // width: span($cols);
268
+ // }
269
+
270
+ // // Explicit column width
271
+ // @else {
272
+ // flex-basis: $cols;
273
+ // width: $cols;
274
+ // }
275
+
276
+ // // Stack cells at breakpoint
277
+ // @media (max-width: $breakpoint) {
278
+ // flex-basis: 100%;
279
+ // width: auto;
280
+ // max-width: unset;
281
+ // margin-left: 0;
282
+ // }
283
+ // }
284
+
285
+ // // Column offset mixin (use on child elements)
286
+ // @mixin offset($offset: 1) {
287
+ // margin-left: span($offset);
288
+ // }
@@ -0,0 +1,9 @@
1
+ <svg viewBox="0 0 37.8 34.6">
2
+ <g fill="url(#azure)" opacity="0.5">
3
+ <polygon points="20.3,21.3 18.5,20.5 18.5,9 20.7,9 20.7,18.3 25.3,14.9 26.6,16.6 "/>
4
+ </g>
5
+ <path fill="url(#azure)" d="M37.3,13.2c-1.1-4.5-3.9-8.3-7.8-10.7c-3.9-2.4-8.6-3.1-13.1-2C12,1.6,8.2,4.4,5.8,8.3l0,0
6
+ c-1.6,2.6-2.5,5.6-2.5,8.9H0l3,5.4l3,5.3l3-5.3l3.1-5.4H8.7c0-2.3,0.7-4.5,1.9-6.3c1.6-2.5,4.1-4.3,7.1-5.1c3.1-0.8,6.2-0.3,8.9,1.4
7
+ c2.7,1.6,4.6,4.2,5.4,7.3c0.8,3.1,0.3,6.2-1.4,8.9c-3.4,5.6-10.7,7.4-16.2,4l-2.8,4.7c2.8,1.7,5.9,2.5,8.9,2.5
8
+ c5.9,0,11.6-3,14.8-8.3C37.7,22.3,38.4,17.6,37.3,13.2z"/>
9
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg viewBox="0 0 29.9 34.6">
2
+
3
+ <polygon fill="url(#azure)" points="29.9,25.9 15,34.6 0,25.9 0,8.6 15,17.3 29.9,8.6 "/>
4
+ <polygon fill="url(#azure)" opacity="0.5" points="0,8.6 15,17.3 29.9,8.6 15,0 "/>
5
+ <path fill="url(#azure)" d="M19.7,7.5c-2.6,1.5-6.8,1.5-9.4,0C9,6.8,8.4,5.8,8.4,4.8v3.8c0,1,0.6,2,1.9,2.7
6
+ c2.6,1.5,6.8,1.5,9.4,0c1.3-0.7,1.9-1.7,1.9-2.7V4.8C21.6,5.8,20.9,6.8,19.7,7.5z"/>
7
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg fill="currentColor" viewBox="0 0 210 120" width="50" height="29">
2
+ <path d="M158.1 23.1h-.1l-38.8-22.6-38.3 22.3-39.3-22.8-41.6 24.2v44l80.3 46.8 38.4-22.2 39.4 22.8 41.9-24.2v-44l-41.9-24.3zm-.2 45.1l-32.9-19.1 33.2-19.4 32.9 19.3-33.2 19.2zm-77.9-38.8l33.2 19.2-32.8 19.1-33.1-19.3 32.7-19zm72.2-3l-32.5 18.9-33.1-19.2 32.6-19 33 19.3zm-77.5-.6l-6.7 3.9-27.1 15.3-32.3-19.2 33.1-19.2 33 19.2zm-68.9 4.8l32.5 19.6v34.6l-32.5-19.8v-34.4zm39 23l32.5 19.3v34.5l-32.5-19.3v-34.5zm77.3.4l33.1 19.5v34.2l-33.1-19.7v-34z"/>
3
+ <g opacity=".5">
4
+ <polygon points="44.8,88.2 77.3,107.3 77.3,72.9 44.8,53.6"/>
5
+ <polygon points="5.8,64.9 38.3,84.7 38.3,50.2 5.8,30.6"/>
6
+ <polygon points="122.1,88.1 155.2,107.8 155.2,73.5 122.1,54"/>
7
+ </g>
8
+ </svg>