edge_framework 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +16 -2
  3. data/assets/kitchensink.html +8 -9
  4. data/assets/sass/_edge.scss +3 -2
  5. data/assets/sass/_edgemail.scss +1 -1
  6. data/assets/sass/edge/_base.scss +71 -280
  7. data/assets/sass/edge/_component.scss +12 -0
  8. data/assets/sass/edge/_helpers.scss +1 -7
  9. data/assets/sass/edge/_user.scss +5 -0
  10. data/assets/sass/edge/_utility.scss +7 -0
  11. data/assets/sass/edge/{components → component}/_animate.scss +0 -0
  12. data/assets/sass/edge/{components → component}/_button.scss +0 -0
  13. data/assets/sass/edge/{components → component}/_code.scss +0 -0
  14. data/assets/sass/edge/{components → component}/_form.scss +0 -0
  15. data/assets/sass/edge/{components → component}/_grid.scss +26 -34
  16. data/assets/sass/edge/{components → component}/_normalize.scss +0 -11
  17. data/assets/sass/edge/{components → component}/_print.scss +26 -12
  18. data/assets/sass/edge/{components → component}/_tile.scss +6 -6
  19. data/assets/sass/edge/component/_typography.scss +98 -0
  20. data/assets/sass/edge/utility/_em.scss +35 -0
  21. data/assets/sass/edge/utility/_media.scss +70 -0
  22. data/assets/sass/edge/utility/_other.scss +44 -0
  23. data/assets/sass/edge/{helpers → utility}/_sprites.scss +3 -3
  24. data/assets/sass/edge/{helpers → utility}/_sticky-footer.scss +0 -0
  25. data/assets/sass/edge/utility/_triangle.scss +83 -0
  26. data/assets/sass/edgemail/_base.scss +5 -5
  27. data/assets/sass/edgemail/_component.scss +2 -0
  28. data/assets/sass/edgemail/{_helpers.scss → _user.scss} +0 -0
  29. data/assets/sass/edgemail/{components → component}/_generic.scss +0 -0
  30. data/assets/sass/edgemail/{components → component}/_normalize.scss +0 -0
  31. data/assets/test/kitchensink-email.scss +1 -1
  32. data/assets/test/kitchensink.scss +1 -2
  33. data/lib/edge/message.rb +17 -7
  34. data/lib/edge/version.rb +1 -1
  35. data/template/base/assets/js/vendor/edge.js +1 -1
  36. data/template/base/assets/sass/_setting.scss +19 -17
  37. data/template/base/assets/sass/app.scss +1 -1
  38. data/template/base/config.rb +1 -1
  39. data/template/email/assets/sass/app.scss +1 -1
  40. data/template/wordpress/views/layout.twig +1 -0
  41. metadata +24 -18
  42. data/assets/sass/edge/_components.scss +0 -12
  43. data/assets/sass/edge/components/_typography.scss +0 -171
  44. data/assets/sass/edgemail/_components.scss +0 -2
@@ -0,0 +1,12 @@
1
+ @import "component/normalize";
2
+ @import "component/typography";
3
+
4
+ @import "component/grid";
5
+ @import "component/tile";
6
+
7
+ @import "component/button";
8
+ @import "component/form";
9
+ @import "component/animate";
10
+
11
+ @import "component/print";
12
+ @import "component/code";
@@ -1,7 +1 @@
1
- @import "base";
2
- @import "helpers/sprites";
3
- @import "helpers/sticky-footer";
4
-
5
- $user-mode : true;
6
-
7
- @import "components";
1
+ @import "user";
@@ -0,0 +1,5 @@
1
+ $user-mode : true; // disable the ouput from component
2
+
3
+ @import "base";
4
+ @import "utility";
5
+ @import "component";
@@ -0,0 +1,7 @@
1
+ @import "utility/em";
2
+ @import "utility/media";
3
+ @import "utility/triangle";
4
+ @import "utility/other";
5
+
6
+ @import "utility/sprites";
7
+ @import "utility/sticky-footer";
@@ -2,12 +2,6 @@
2
2
  // EDGE GRID
3
3
  // =============
4
4
 
5
- $row-max-width : $medium-screen !default;
6
- $total-columns : 12 !default;
7
- $column-gutter : 20px !default;
8
-
9
- $adaptive-breakpoints : $medium-screen, $small-screen !default;
10
-
11
5
  // Calculate percentages for grid
12
6
  @function gridCalc($colNumber, $totalColumns) {
13
7
  // If column specified is not fraction
@@ -226,15 +220,21 @@ $adaptive-breakpoints : $medium-screen, $small-screen !default;
226
220
 
227
221
  // Sizing
228
222
  @if $size > 0 {
229
- @include base-column($size, $total:$total);
223
+ @include base-column($size, $offset:$offset, $total:$total);
224
+
225
+ // Reset offset if more than 0
226
+ $reset-offset: $offset;
227
+ @if $offset {
228
+ $reset-offset: 0;
229
+ }
230
230
 
231
231
  @if $small > 0 {
232
232
  @include below(small) {
233
- @include base-column($small, $total:$total);
233
+ @include base-column($small, $offset:$reset-offset, $total:$total);
234
234
  }
235
- } @else if $responsive and not $in-media { // else, become 100% width on small screen (if responsive)
235
+ } @else if not $in-media { // else, become 100% width on small screen
236
236
  @include below(small) {
237
- @include base-column($total, $total:$total);
237
+ @include base-column($total, $offset:$reset-offset, $total:$total);
238
238
  }
239
239
  }
240
240
 
@@ -252,16 +252,6 @@ $adaptive-breakpoints : $medium-screen, $small-screen !default;
252
252
  $gutter: $gutter,
253
253
  $total: $total
254
254
  );
255
-
256
- // Source Ordering, follow base column
257
- @if $responsive and not $in-media {
258
- // make Offset not inherited in small screen
259
- @include above(small) {
260
- @include base-column($offset:$offset, $total:$total);
261
- }
262
- } @else {
263
- @include base-column($offset:$offset, $total:$total);
264
- }
265
255
  }
266
256
 
267
257
  // ----------------------------------------------
@@ -314,11 +304,11 @@ $adaptive-breakpoints : $medium-screen, $small-screen !default;
314
304
  EDGE Grid
315
305
  ------------ */
316
306
 
317
- @if not $responsive {
318
- body {
319
- min-width: $row-max-width + ($column-gutter * 2);
320
- }
321
- }
307
+ // @if not $responsive {
308
+ // body {
309
+ // min-width: $row-max-width + ($column-gutter * 2);
310
+ // }
311
+ // }
322
312
 
323
313
  // normal row
324
314
  h-row {
@@ -355,13 +345,7 @@ h-column {
355
345
  }
356
346
 
357
347
  @include h-sizing("large");
358
-
359
- @if $responsive {
360
- @include above(small) { @include h-offset("offset"); }
361
- } @else {
362
- // Not inside media query. So when it reach the breakpoint, the offset isn't gone.
363
- @include h-offset("offset");
364
- }
348
+ @include h-offset("offset");
365
349
 
366
350
  // centered column
367
351
  .centered {
@@ -370,8 +354,16 @@ h-column {
370
354
 
371
355
  // small screen and below
372
356
  @include below(small) {
373
- [class^="large-"] {
374
- @include base-column($total-columns);
357
+ // reset large sizing
358
+ %large-reset { @include base-column($total-columns); }
359
+ @for $i from 1 through $total-columns {
360
+ .large-#{$i} { @extend %large-reset; }
361
+ }
362
+
363
+ // reset large offset
364
+ %offset-reset { @include base-column($offset: 0); }
365
+ @for $i from 1 through ($total-columns - 1) {
366
+ .offset-#{$i} { @extend %offset-reset; }
375
367
  }
376
368
 
377
369
  @include h-sizing("small");
@@ -23,10 +23,6 @@
23
23
  padding: 0;
24
24
  }
25
25
 
26
- body {
27
- height: 100%;
28
- }
29
-
30
26
  // Chrome Sibling Selector Fix
31
27
  body { -webkit-animation: bugfix infinite 1s; }
32
28
  @-webkit-keyframes bugfix {
@@ -35,7 +31,6 @@ body { -webkit-animation: bugfix infinite 1s; }
35
31
  }
36
32
 
37
33
  html {
38
- height: 100%;
39
34
  font-family: sans-serif;
40
35
  -webkit-text-size-adjust: 100%;
41
36
  -ms-text-size-adjust: 100%;
@@ -176,12 +171,6 @@ table {
176
171
 
177
172
  /* Miscellaneous useful HTML classes */
178
173
 
179
- .left { float: left !important; }
180
- .right { float: right !important; }
181
- .text-left { text-align: left !important; }
182
- .text-right { text-align: right !important; }
183
- .text-center { text-align: center !important; }
184
- .text-justify { text-align: justify !important; }
185
174
  .hide { display: none !important; visibility: hidden !important; }
186
175
  .visual-hide {
187
176
  border: 0 !important;
@@ -4,48 +4,52 @@
4
4
 
5
5
  @if $include-print and not $user-mode {
6
6
 
7
- /* --------------
7
+ /* ---------------------
8
8
  EDGE Print
9
- -------------- */
9
+ - HTML5 Boilerplate
10
+ --------------------- */
10
11
 
11
12
  @include print {
12
13
  * {
13
- background: transparent !important;
14
- color: #000 !important; // Black prints faster: h5bp.com/s
14
+ @if $override-color {
15
+ color: #000 !important;
16
+ }
15
17
  box-shadow: none !important;
16
18
  text-shadow: none !important;
17
19
  }
18
20
 
19
21
  a,
20
22
  a:visited {
21
- color: #000 !important;
23
+ @if $override-color {
24
+ color: #000 !important;
25
+ }
22
26
  text-decoration: underline;
23
27
  }
24
28
 
25
- a[href]:after {
29
+ a[href]::after {
26
30
  content: " (" attr(href) ")";
27
31
  }
28
32
 
29
- abbr[title]:after {
33
+ abbr[title]::after {
30
34
  content: " (" attr(title) ")";
31
35
  }
32
36
 
33
37
  // Don't show links for images, or javascript/internal links
34
38
 
35
- .ir a:after,
36
- a[href^="javascript:"]:after,
37
- a[href^="#"]:after {
39
+ .ir a::after,
40
+ a[href^="javascript:"]::after,
41
+ a[href^="#"]::after,
42
+ .button::after {
38
43
  content: "";
39
44
  }
40
45
 
41
46
  pre,
42
47
  blockquote {
43
- border: 1px solid #999;
44
48
  page-break-inside: avoid;
45
49
  }
46
50
 
47
51
  thead {
48
- display: table-header-group; /* h5bp.com/t */
52
+ display: table-header-group;
49
53
  }
50
54
 
51
55
  tr,
@@ -71,6 +75,16 @@
71
75
  h2,
72
76
  h3 {
73
77
  page-break-after: avoid;
78
+ }
79
+
80
+ // set the page size
81
+
82
+ h-row {
83
+ min-width: $row-max-width + $column-gutter;
84
+
85
+ h-row {
86
+ min-width: 0;
87
+ }
74
88
  }
75
89
  }
76
90
 
@@ -2,9 +2,6 @@
2
2
  // EDGE TILE
3
3
  // ==============
4
4
 
5
- $max-tiles : 12 !default;
6
- $tile-gutter : 20px !default;
7
-
8
5
  // ------------------------------
9
6
  // BASE TILE
10
7
  // - Styling for base framework
@@ -26,6 +23,8 @@ $tile-gutter : 20px !default;
26
23
  @if $collapse {
27
24
  margin-right: 0;
28
25
  margin-left: 0;
26
+ padding-right: 0; // override grid's .collapse
27
+ padding-left: 0;
29
28
  }
30
29
 
31
30
  @if $gutter > 0 {
@@ -121,9 +120,10 @@ h-tile {
121
120
  }
122
121
 
123
122
  @include below(small) {
124
- // Make large-tile 100% width
125
- [class^="block-"] {
126
- @include base-tile(1, $clear:true);
123
+ // reset large block
124
+ %block-reset { @include base-tile(1, $clear:true); }
125
+ @for $i from 1 through $max-tiles {
126
+ .block-#{$i} { @extend %block-reset; }
127
127
  }
128
128
 
129
129
  @for $i from 1 through $max-tiles {
@@ -0,0 +1,98 @@
1
+ // ==================
2
+ // EDGE TYPOGRAPHY
3
+ // ==================
4
+
5
+ // ------------------------------
6
+ // BASELINE
7
+ // - Create notebook-like row
8
+ // ------------------------------
9
+ @mixin baseline($lh : $body-line-height) {
10
+
11
+ @include background(
12
+ linear-gradient(to bottom, rgba(black, 0) 95%, rgba(black, .1) 100%)
13
+ );
14
+ background-size: 100% ($lh * 1em);
15
+ }
16
+
17
+ // ----------------------
18
+ // Create Inline List
19
+ // ----------------------
20
+ @mixin inline-list() {
21
+ @include clearfix();
22
+
23
+ > li {
24
+ display: inline-block;
25
+ float: left;
26
+ vertical-align: top;
27
+ }
28
+ }
29
+
30
+ @if $include-typography and not $user-mode {
31
+
32
+ /* -----------------
33
+ EDGE Typography
34
+ ----------------- */
35
+
36
+ body {
37
+ position: relative;
38
+ background: $body-background;
39
+ font-size: $body-font-size;
40
+ font-family: $body-font-family;
41
+ font-weight: $body-font-weight;
42
+ line-height: $body-line-height;
43
+ color: $body-font-color;
44
+ }
45
+
46
+ h1, h2, h3, h4, h5, h6 {
47
+ color: $header-font-color;
48
+ font-family: $header-font-family;
49
+ font-weight: $header-font-weight;
50
+ line-height: $header-line-height;
51
+ }
52
+
53
+ a {
54
+ color: $link-color;
55
+ }
56
+
57
+ h1 { font-size: em($h1-font-size); }
58
+ h2 { font-size: em($h2-font-size); }
59
+ h3 { font-size: em($h3-font-size); }
60
+ h4 { font-size: em($h4-font-size); }
61
+ h5 { font-size: em($h5-font-size); }
62
+ h6 { font-size: em($h6-font-size); }
63
+
64
+ p {
65
+ margin-top: 0;
66
+ margin-bottom: 0;
67
+ }
68
+
69
+ // -----------
70
+ // LIST
71
+ // -----------
72
+
73
+ ul {
74
+ list-style-type: $ul-parent-style;
75
+ padding-left: 20px;
76
+
77
+ ul {
78
+ list-style-type: $ul-child-style;
79
+ }
80
+ }
81
+
82
+ ol {
83
+ list-style-type: $ol-parent-style;
84
+ padding-left: 25px;
85
+
86
+ ol {
87
+ list-style-type: $ol-child-style;
88
+ }
89
+ }
90
+
91
+ blockquote {
92
+ cite {
93
+ display: block;
94
+ font-style: italic;
95
+ }
96
+ }
97
+
98
+ } // include-typography
@@ -0,0 +1,35 @@
1
+ // --------------
2
+ // EM CONVERTER
3
+ // --------------
4
+
5
+ // Strips unit and return plain number
6
+ @function _stripUnit($num) {
7
+ @return $num / ($num * 0 + 1);
8
+ }
9
+
10
+ // Convert the number to EM
11
+ @function _convertToEm($value, $context: $body-font-size) {
12
+ // if not number, return it as is
13
+ @if type-of($value) != number { @return $value; }
14
+
15
+ $value: _stripUnit($value) / _stripUnit($context) * 1em;
16
+ // turn 0em into 0
17
+ @if ($value == 0em) {
18
+ $value: 0;
19
+ }
20
+ @return $value;
21
+ }
22
+
23
+ @function em($values, $context: $body-font-size) {
24
+ // if only contain single number, convert it directly
25
+ @if type-of($values) == number {
26
+ @return _convertToEm($values, $context);
27
+ }
28
+
29
+ // if contains multiple values, loop through it
30
+ $emValues : ();
31
+ @each $val in $values {
32
+ $emValues: append($emValues, hConvertToEm($val, $context) );
33
+ }
34
+ @return join((), $emValues, space );
35
+ }
@@ -0,0 +1,70 @@
1
+ // ---------------
2
+ // MEDIA QUERY
3
+ // ---------------
4
+
5
+ @function _translateSize($size) {
6
+ // if number, return it as it is
7
+ @if type-of($size) == number {
8
+ @return $size;
9
+ }
10
+ // if keyword, translate from the map
11
+ @else {
12
+ @return map-get($_media-sizes, $size);
13
+ }
14
+ }
15
+
16
+ @mixin below($named-size) {
17
+ @if $responsive {
18
+ $in-media: true !global;
19
+ $size: _translateSize($named-size);
20
+
21
+ @if $named-size == retina {
22
+ @media only screen and (-webkit-max-device-pixel-ratio: 2), (max-resolution: $size) {
23
+ @content;
24
+ }
25
+ }
26
+ @else {
27
+ @media only screen and (max-width: $size) { @content; }
28
+ }
29
+
30
+ $in-media: false !global;
31
+ }
32
+ }
33
+
34
+ @mixin above($named-size) {
35
+ @if $responsive {
36
+ $in-media: true !global;
37
+ $size: _translateSize($named-size) + 1px;
38
+
39
+ @if $named-size == retina {
40
+ @media only screen and (-webkit-min-device-pixel-ratio: 2), (min-resolution: $size) {
41
+ @content;
42
+ }
43
+ }
44
+ @else {
45
+ @media (min-width: $size) { @content; }
46
+ }
47
+
48
+ $in-media: false !global;
49
+ }
50
+ }
51
+
52
+ @mixin between($smaller-size, $larger-size) {
53
+ @if $responsive {
54
+ $in-media: true !global;
55
+ $smaller-size: _translateSize($smaller-size);
56
+ $larger-size: _translateSize($larger-size);
57
+
58
+ @media only screen and (min-width: $smaller-size) and (max-width: $larger-size) {
59
+ @content;
60
+ }
61
+
62
+ $in-media: false !global;
63
+ }
64
+ }
65
+
66
+ @mixin print {
67
+ @media only print {
68
+ @content;
69
+ }
70
+ }