edge_framework 2.0.0 → 2.1.0

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.
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
+ }