stratum 0.3.6 → 0.4

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.
@@ -1,25 +1,29 @@
1
1
  // Grid defaults settings
2
2
  // ----------------------
3
3
 
4
- $grid-responsive: false !default;
5
-
6
4
  $grid-size: 980px !default;
7
-
5
+ $grid-min-width: 320px !default;
8
6
  $grid-type: fluid !default;
9
7
  $grid-total-columns: 12 !default;
10
8
  $grid-desired-gutter: 20px !default;
11
9
  $grid-baseline: 18px !default;
12
10
 
13
- // Grid guides
11
+ // Scaffolding
12
+ $scaffolding-debug: true !default; // Highlight disabled features that are used
13
+
14
+ // Responsive defaults
15
+ $grid-responsive-screen-small: 480px !default;
16
+ $grid-responsive-screen-medium: 980px !default;
17
+ $grid-responsive-screen-large: 1280px !default;
18
+ $grid-responsive-screen-x-large: 1800px !default;
19
+
20
+ // Grid guides settings
21
+ $grid-guides: true !default;
14
22
  $grid-guides-class: false !default; // Adds `.m-show-guides` and `.m-show-guides.m-front` to scaffolding
15
23
  $grid-guides-color: #8aa8c0 !default;
16
24
  $grid-guides-opacity: .2 !default;
17
25
  $grid-guides-position: back !default;
18
26
 
19
- // Scaffolding
20
- $scaffolding-debug: true !default; // Highlight disabled features that are used
21
-
22
-
23
27
  // Various semantic grid features can be disabled per project by
24
28
  // setting the following variables to false. This will result in
25
29
  // smaller CSS file and quicker compilation
@@ -29,6 +33,9 @@ $scaffolding-debug: true !default; // Highlight disabled features
29
33
  // $grid-overrides: false;
30
34
  // $grid-subdivisions: false;
31
35
 
36
+ // Responsiveness
37
+ $grid-responsive: true !default; // Should default grid columns have basic responsive properties (collapsing)
38
+
32
39
  @import "stratum";
33
40
 
34
41
  @import "grid/functions";
@@ -1,52 +1,3 @@
1
- $grid-responsive: true;
2
-
3
- @mixin smartphone {
4
- @media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
5
- @content;
6
- }
7
- }
8
- @mixin smartphone-landscape {
9
- @media only screen and (min-width : 321px) {
10
- @content;
11
- }
12
- }
13
- @mixin smartphone-portrait {
14
- @media only screen and (max-width : 320px) {
15
- @content;
16
- }
17
- }
18
- @mixin tablet {
19
- @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) {
20
- @content;
21
- }
22
- }
23
- @mixin tablet-landscape {
24
- @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation: landscape) {
25
- @content;
26
- }
27
- }
28
- @mixin tablet-portrait {
29
- @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation: portrait) {
30
- @content;
31
- }
32
- }
33
- @mixin retina {
34
- @media only screen and (-webkit-min-device-pixel-ratio : 1.5), only screen and (min-device-pixel-ratio : 1.5) {
35
- @content;
36
- }
37
- }
38
- @mixin medium-screen {
39
- @media only screen and (min-width : 1024px) {
40
- @content;
41
- }
42
- }
43
- @mixin large-screen {
44
- @media only screen and (min-width : 1300px) {
45
- @content;
46
- }
47
- }
48
- @mixin x-large-screen {
49
- @media only screen and (min-width : 1824px) {
50
- @content;
51
- }
52
- }
1
+ @import "responsive/feature-detection";
2
+ @import "responsive/overrides";
3
+ @import "responsive/helper-classes";
@@ -15,6 +15,7 @@ $grid-column: grid-column-width();
15
15
  @extend %-clearfix;
16
16
  @include box-sizing(content-box);
17
17
  width: $width;
18
+ min-width: $grid-min-width;
18
19
  margin: {
19
20
  left: auto;
20
21
  right: auto;
@@ -57,8 +58,12 @@ $grid-column: grid-column-width();
57
58
 
58
59
 
59
60
  // Calculate single column width (in pixels) multipled by number of columns it spans (indluding gutters)
60
- @mixin grid-column-width($span: 1, $type: $grid-type, $gutter: $grid-gutter, $total-columns: $grid-total-columns) {
61
- width: grid-columns-width($span, $grid-column, $gutter, $type, $total-columns);
61
+ @mixin grid-column-width($span: 1, $type: $grid-type, $gutter: $grid-gutter, $total-columns: $grid-total-columns, $max: null) {
62
+ $l-width: grid-columns-width($span, $grid-column, $gutter, $type, $total-columns);
63
+ @if $max and $l-width > $max {
64
+ $l-width: $max;
65
+ }
66
+ width: $l-width;
62
67
  }
63
68
 
64
69
 
@@ -0,0 +1,89 @@
1
+ $responsive-features:
2
+ smartphone "(min-device-width: 320px) and (max-device-width: 480px)",
3
+ tablet "(min-device-width : 768px) and (max-device-width : 1024px)",
4
+ // Due to comma in the list should be the last item when combined with other in 'and' sequence
5
+ retina "(-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5)",
6
+
7
+ landscape "(orientation: landscape)",
8
+ portrait "(orientation: portrait)",
9
+
10
+ x-large-screen "(min-width: #{$grid-responsive-screen-x-large})",
11
+ large-screen "(min-width: #{$grid-responsive-screen-large}) and (max-width: #{$grid-responsive-screen-x-large - 1})",
12
+ medium-screen "(min-width: #{$grid-responsive-screen-medium}) and (max-width: #{$grid-responsive-screen-large - 1})",
13
+ small-screen "(min-width: #{$grid-responsive-screen-small}) and (max-width: #{$grid-responsive-screen-medium - 1})",
14
+ x-small-screen "(max-width: #{$grid-responsive-screen-small - 1})"
15
+ ;
16
+
17
+ // Get the feature from available map and return its query
18
+
19
+ @function -get-media-feature($requested-feature) {
20
+ $-result: null;
21
+
22
+ @each $feature in $responsive-features {
23
+ $-name: nth($feature, 1);
24
+ $-query: nth($feature, 2);
25
+
26
+ @if $-name == $requested-feature {
27
+ $-result: $-query;
28
+ }
29
+ }
30
+
31
+ @if not $-result {
32
+ @warn "❗ '#{$requested-feature}'' is not a recognised responsive feature"
33
+ }
34
+
35
+ @return $-result;
36
+ }
37
+
38
+ // Combine media features frome supplied parameters
39
+ // comma separate for 'or' sequence. To group in 'and' sequence wrap in (braces)
40
+
41
+ @function -combine-media-features($features...) {
42
+ $-features: "";
43
+ @each $or-feature in $features {
44
+ // 'either/or' features
45
+ @if type-of($or-feature) == string {
46
+ $-index: index($features, $or-feature);
47
+ $-is-last: $-index == length($features);
48
+ $-features: $-features + -get-media-feature($or-feature) + if(not $-is-last, ", ", "");
49
+
50
+ // combined 'and' features
51
+ } @else {
52
+ $and-features: $or-feature;
53
+ $-and-result: "";
54
+
55
+ @each $and-feature in $and-features {
56
+ $-index: index($and-features, $and-feature);
57
+ $-is-last: $-index == length($and-features);
58
+ $-and-result: $-and-result + -get-media-feature($and-feature) + if(not $-is-last, " and ", "");
59
+ }
60
+
61
+ $-features: $-features + $-and-result;
62
+ }
63
+ }
64
+
65
+ @return $-features;
66
+ }
67
+
68
+
69
+ // Respond to media features mixin
70
+ // -------------------------------
71
+
72
+ // Usage:
73
+
74
+ // Comma-separate for either (or) and space-separate for each (and) feature
75
+
76
+ // ```
77
+ // @include respond-to(large-screen, medium-screen, smartphone portrait retina) {
78
+ // background: red;
79
+ // }
80
+ // ```
81
+
82
+ // Results in styles targeting either large screens or medium screens or retina smarthphones in portrait orientation only
83
+
84
+ @mixin respond-to($features...) {
85
+ // @debug -combine-media-features($features...);
86
+ @media only screen and #{-combine-media-features($features...)} {
87
+ @content;
88
+ }
89
+ }
@@ -0,0 +1,74 @@
1
+ // Overrides for default grid column definitions
2
+ // ---------------------------------------------
3
+
4
+ $grid-responsive: null !default;
5
+
6
+ @if $grid-responsive != false {
7
+
8
+ // Small screen
9
+ @include respond-to(small-screen) {
10
+
11
+ @for $i from 1 through $grid-total-columns {
12
+
13
+ %l-col-#{$i} {
14
+ // Columns with gutters
15
+ %l-row & {
16
+ $i: if($i % 2 > 0, $i + 1, $i);
17
+ @include grid-column-width($i * 2, fluid, $max: 100%);
18
+
19
+ &:last-child:nth-child(odd) {
20
+ @include grid-column-width(1, fluid, $total-columns: 1);
21
+ }
22
+ }
23
+
24
+ // Columns without gutters
25
+ %l-container &,
26
+ %l-gutterless & {
27
+ @include grid-column-width($i * 2, fluid, $gutter: 0, $max: 100%);
28
+
29
+ &:last-child:nth-child(odd) {
30
+ @include grid-column-width(1, fluid, $gutter: 0, $total-columns: 1);
31
+ }
32
+ }
33
+
34
+ }
35
+
36
+ }
37
+
38
+ }
39
+
40
+
41
+ // Tiny screen
42
+ @include respond-to(x-small-screen) {
43
+
44
+ @for $i from 1 through $grid-total-columns {
45
+
46
+ %l-col-#{$i} {
47
+ // Columns with gutters
48
+ %l-row & {
49
+ @include grid-column-width(1, fluid, $total-columns: 1);
50
+ }
51
+
52
+ // Columns without gutters
53
+ %l-container &,
54
+ %l-gutterless & {
55
+ @include grid-column-width(1, fluid, $gutter: 0, $total-columns: 1);
56
+ }
57
+
58
+ }
59
+
60
+ // Subdivisions
61
+ @if $grid-subdivisions != false {
62
+ // Column size ratios
63
+ @for $n from 1 through $grid-total-columns {
64
+ %l-col-#{$i}-of-#{$n} {
65
+ @include grid-column-width(1, fluid, $gutter: 0, $total-columns: 1);
66
+ }
67
+ }
68
+ }
69
+
70
+ }
71
+
72
+ }
73
+
74
+ }
@@ -0,0 +1,25 @@
1
+ // Responsive layout helper classes
2
+ // --------------------------------
3
+
4
+ // Each feature in `$responsive-feature` can be directly controlled
5
+ // with a helper class in the format:
6
+ // `.l-#{feature-name}-hide`
7
+ // `.l-#{feature-name}-show`
8
+
9
+ // Example:
10
+ // ```
11
+ // <div class="hero l-smartphone-hide">…</div>
12
+ // ```
13
+
14
+ @each $feature in $responsive-features {
15
+ $-feature-name: nth($feature, 1);
16
+
17
+ @include respond-to($-feature-name) {
18
+ .l-#{$-feature-name}-hide {
19
+ display: none !important;
20
+ }
21
+ .l-#{$-feature-name}-show {
22
+ display: inherit !important;
23
+ }
24
+ }
25
+ }
@@ -1,3 +1,3 @@
1
1
  module Stratum
2
- VERSION = "0.3.6"
2
+ VERSION = "0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stratum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: '0.4'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70316948833360 !ruby/object:Gem::Requirement
16
+ requirement: &70094945051220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70316948833360
24
+ version_requirements: *70094945051220
25
25
  description: Stratum is a collection of SASS mixins and utilities for your web development
26
26
  needs.
27
27
  email: tyom@semonov.com
@@ -67,6 +67,9 @@ files:
67
67
  - assets/stylesheets/layout/grid/semantics/_offsets.scss
68
68
  - assets/stylesheets/layout/grid/semantics/_overrides.scss
69
69
  - assets/stylesheets/layout/grid/semantics/_subdivisions.scss
70
+ - assets/stylesheets/layout/responsive/_feature-detection.scss
71
+ - assets/stylesheets/layout/responsive/_overrides.scss
72
+ - assets/stylesheets/layout/responsive/helper-classes.scss
70
73
  - assets/stylesheets/layout/scaffolding.scss
71
74
  - bin/stratum
72
75
  - lib/stratum.rb