susy 2.2.14 → 3.0.0.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{docs/changelog.rst → CHANGELOG.md} +0 -34
- data/README.md +135 -10
- data/VERSION +1 -1
- data/sass/_prefix.scss +10 -0
- data/sass/_susy.scss +4 -3
- data/sass/susy/_api.scss +134 -0
- data/sass/susy/_grids.scss +192 -0
- data/sass/susy/_parser.scss +284 -0
- data/sass/susy/_settings.scss +120 -0
- data/sass/susy/_unprefix.scss +53 -0
- data/sass/susy/_validation.scss +132 -0
- metadata +26 -75
- data/sass/_su.scss +0 -4
- data/sass/_susyone.scss +0 -4
- data/sass/susy/_su.scss +0 -7
- data/sass/susy/language/_susy.scss +0 -24
- data/sass/susy/language/_susyone.scss +0 -13
- data/sass/susy/language/susy/_background.scss +0 -385
- data/sass/susy/language/susy/_bleed.scss +0 -200
- data/sass/susy/language/susy/_box-sizing.scss +0 -47
- data/sass/susy/language/susy/_breakpoint-plugin.scss +0 -185
- data/sass/susy/language/susy/_container.scss +0 -81
- data/sass/susy/language/susy/_context.scss +0 -36
- data/sass/susy/language/susy/_gallery.scss +0 -94
- data/sass/susy/language/susy/_grids.scss +0 -64
- data/sass/susy/language/susy/_gutters.scss +0 -154
- data/sass/susy/language/susy/_isolate.scss +0 -77
- data/sass/susy/language/susy/_margins.scss +0 -94
- data/sass/susy/language/susy/_padding.scss +0 -74
- data/sass/susy/language/susy/_rows.scss +0 -138
- data/sass/susy/language/susy/_settings.scss +0 -216
- data/sass/susy/language/susy/_span.scss +0 -163
- data/sass/susy/language/susy/_validation.scss +0 -16
- data/sass/susy/language/susyone/_background.scss +0 -18
- data/sass/susy/language/susyone/_functions.scss +0 -377
- data/sass/susy/language/susyone/_grid.scss +0 -312
- data/sass/susy/language/susyone/_isolation.scss +0 -51
- data/sass/susy/language/susyone/_margin.scss +0 -93
- data/sass/susy/language/susyone/_media.scss +0 -105
- data/sass/susy/language/susyone/_padding.scss +0 -92
- data/sass/susy/language/susyone/_settings.scss +0 -60
- data/sass/susy/output/_float.scss +0 -9
- data/sass/susy/output/_shared.scss +0 -15
- data/sass/susy/output/_support.scss +0 -9
- data/sass/susy/output/float/_container.scss +0 -16
- data/sass/susy/output/float/_end.scss +0 -40
- data/sass/susy/output/float/_isolate.scss +0 -22
- data/sass/susy/output/float/_span.scss +0 -35
- data/sass/susy/output/shared/_background.scss +0 -26
- data/sass/susy/output/shared/_container.scss +0 -21
- data/sass/susy/output/shared/_direction.scss +0 -42
- data/sass/susy/output/shared/_inspect.scss +0 -25
- data/sass/susy/output/shared/_margins.scss +0 -23
- data/sass/susy/output/shared/_output.scss +0 -14
- data/sass/susy/output/shared/_padding.scss +0 -23
- data/sass/susy/output/support/_background.scss +0 -58
- data/sass/susy/output/support/_box-sizing.scss +0 -19
- data/sass/susy/output/support/_clearfix.scss +0 -18
- data/sass/susy/output/support/_prefix.scss +0 -19
- data/sass/susy/output/support/_rem.scss +0 -22
- data/sass/susy/output/support/_support.scss +0 -95
- data/sass/susy/su/_grid.scss +0 -103
- data/sass/susy/su/_settings.scss +0 -73
- data/sass/susy/su/_utilities.scss +0 -111
- data/sass/susy/su/_validation.scss +0 -57
- data/templates/project/_grids.scss +0 -9
- data/templates/project/manifest.rb +0 -15
- data/templates/project/style.scss +0 -4
@@ -0,0 +1,284 @@
|
|
1
|
+
// Parser
|
2
|
+
// ======
|
3
|
+
// - susy-parse [function]
|
4
|
+
// - susy-normalize [function]
|
5
|
+
// - susy-normalize-columns [function]
|
6
|
+
// - susy-normalize-span [function]
|
7
|
+
// - susy-normalize-spread [function]
|
8
|
+
// - susy-normalize-location [function]
|
9
|
+
|
10
|
+
|
11
|
+
// Parse
|
12
|
+
// -----
|
13
|
+
/// Parse shorthand span expression
|
14
|
+
///
|
15
|
+
/// @access private
|
16
|
+
///
|
17
|
+
/// @param {List} $shorthand -
|
18
|
+
/// Shorthand expression to define the width of the span —
|
19
|
+
/// containing a unitless column-span;
|
20
|
+
/// 'of $n' for available grid columns [optional];
|
21
|
+
/// 'at $n', 'first', or 'last' for location on asymmetrical grids;
|
22
|
+
/// and 'narrow', 'wide', or 'wider' for
|
23
|
+
/// optionally spreading over adjacent gutters
|
24
|
+
/// with either the `span` or `columns` value
|
25
|
+
///
|
26
|
+
/// @return {Map} -
|
27
|
+
/// Map of span settings
|
28
|
+
/// (`span`, `location`, `columns`, `spread`, `container-spread`)
|
29
|
+
/// parsed from shorthand input
|
30
|
+
@function susy-parse(
|
31
|
+
$shorthand
|
32
|
+
) {
|
33
|
+
$span-error: 'Not able to determine column-span from `#{$shorthand}`';
|
34
|
+
$parse-error: 'Unknown span property:';
|
35
|
+
$options: (
|
36
|
+
'first': 'location',
|
37
|
+
'last': 'location',
|
38
|
+
'alpha': 'location',
|
39
|
+
'omega': 'location',
|
40
|
+
'narrow': 'spread',
|
41
|
+
'wide': 'spread',
|
42
|
+
'wider': 'spread',
|
43
|
+
);
|
44
|
+
|
45
|
+
$return: ();
|
46
|
+
$span: null;
|
47
|
+
$columns: null;
|
48
|
+
|
49
|
+
$of: false;
|
50
|
+
$next: false;
|
51
|
+
|
52
|
+
@for $i from 1 through length($shorthand) {
|
53
|
+
$item: nth($shorthand, $i);
|
54
|
+
$type: type-of($item);
|
55
|
+
|
56
|
+
@if $next {
|
57
|
+
@if ($next == 'column-width') {
|
58
|
+
@if ($type == 'number') and (not unitless($item)) {
|
59
|
+
@if $columns {
|
60
|
+
$columns: join($columns, ('x' $item));
|
61
|
+
} @else {
|
62
|
+
$span: join($span, ('x' $item));
|
63
|
+
}
|
64
|
+
} @else {
|
65
|
+
@error '`#{item}` is not a valid column-width';
|
66
|
+
}
|
67
|
+
} @else {
|
68
|
+
$return: map-merge($return, ($next: $item));
|
69
|
+
}
|
70
|
+
|
71
|
+
$next: false;
|
72
|
+
} @else {
|
73
|
+
@if ($type == 'string') {
|
74
|
+
@if map-has-key($options, $item) {
|
75
|
+
$setting: map-get($options, $item);
|
76
|
+
|
77
|
+
@if ($setting == 'spread') and $of {
|
78
|
+
$return: map-merge($return, ('container-spread': $item));
|
79
|
+
} @else {
|
80
|
+
$return: map-merge($return, ($setting: $item));
|
81
|
+
}
|
82
|
+
} @else if $item == 'all' {
|
83
|
+
$span: 'all';
|
84
|
+
} @else if not $span {
|
85
|
+
@error $span-error;
|
86
|
+
} @else if ($item == 'at') {
|
87
|
+
$next: 'location';
|
88
|
+
} @else if ($item == 'x') {
|
89
|
+
$next: 'column-width';
|
90
|
+
} @else if ($item == 'of') {
|
91
|
+
$of: true;
|
92
|
+
} @else {
|
93
|
+
@error '#{$parse-error} `#{$item}`';
|
94
|
+
}
|
95
|
+
} @else if ($type == 'number') or ($type == 'list') {
|
96
|
+
@if not $span {
|
97
|
+
$span: $item;
|
98
|
+
} @else if $of {
|
99
|
+
$columns: $item;
|
100
|
+
} @else {
|
101
|
+
@error '#{$parse-error} `#{$item}`';
|
102
|
+
}
|
103
|
+
} @else {
|
104
|
+
@error '#{$parse-error} `#{$item}`';
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
@if $span {
|
110
|
+
$return: map-merge($return, ('span': $span));
|
111
|
+
} @else {
|
112
|
+
@error $span-error;
|
113
|
+
}
|
114
|
+
|
115
|
+
@if $columns {
|
116
|
+
$return: map-merge($return, ('columns': $columns));
|
117
|
+
}
|
118
|
+
|
119
|
+
@return $return;
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
// Susy Normalize
|
124
|
+
// --------------
|
125
|
+
/// Normalize the values in a configuration map
|
126
|
+
///
|
127
|
+
/// @access private
|
128
|
+
///
|
129
|
+
/// @param {Map} $config -
|
130
|
+
/// Map of Susy configuration settings to normalize
|
131
|
+
///
|
132
|
+
/// @return {Map} -
|
133
|
+
/// Map of Susy configuration settings, with all values normalized
|
134
|
+
@function susy-normalize(
|
135
|
+
$config
|
136
|
+
) {
|
137
|
+
@each $setting in ('columns', 'spread', 'container-spread') {
|
138
|
+
$value: map-get($config, $setting);
|
139
|
+
|
140
|
+
@if $value {
|
141
|
+
$function: if(($setting == 'container-spread'), 'spread', $setting);
|
142
|
+
$value: call('susy-normalize-#{$function}', $value);
|
143
|
+
}
|
144
|
+
|
145
|
+
$config: map-merge($config, ($setting: $value));
|
146
|
+
}
|
147
|
+
|
148
|
+
$span: map-get($config, 'span');
|
149
|
+
$location: map-get($config, 'location');
|
150
|
+
$columns: map-get($config, 'columns');
|
151
|
+
|
152
|
+
@if $span {
|
153
|
+
$span: susy-normalize-span($span, $columns);
|
154
|
+
$config: map-merge($config, ('span': $span));
|
155
|
+
}
|
156
|
+
|
157
|
+
@if $location {
|
158
|
+
$location: susy-normalize-location($span, $location, $columns);
|
159
|
+
$config: map-merge($config, ('location': $location));
|
160
|
+
}
|
161
|
+
|
162
|
+
@return $config;
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
// Normalize Columns
|
167
|
+
// -----------------
|
168
|
+
/// Normalize `columns` shorthand for Su
|
169
|
+
///
|
170
|
+
/// @access private
|
171
|
+
///
|
172
|
+
/// @param {Number | List} $columns -
|
173
|
+
/// Columns value to normalize
|
174
|
+
///
|
175
|
+
/// @return {List} -
|
176
|
+
/// List value for `$columns`
|
177
|
+
@function susy-normalize-columns(
|
178
|
+
$columns
|
179
|
+
) {
|
180
|
+
$return: ();
|
181
|
+
|
182
|
+
@if (type-of($columns) == 'number') and unitless($columns) {
|
183
|
+
@for $i from 1 through $columns {
|
184
|
+
$return: append($return, 1);
|
185
|
+
}
|
186
|
+
|
187
|
+
@return $return;
|
188
|
+
} @else if index($columns, 'x') and length($columns) == 3 {
|
189
|
+
$width: nth($columns, -1);
|
190
|
+
|
191
|
+
@for $i from 1 through nth($columns, 1) {
|
192
|
+
$return: append($return, $width);
|
193
|
+
}
|
194
|
+
|
195
|
+
@return $return;
|
196
|
+
}
|
197
|
+
|
198
|
+
@return $columns;
|
199
|
+
}
|
200
|
+
|
201
|
+
|
202
|
+
// Normalize Span
|
203
|
+
// --------------
|
204
|
+
/// Normalize `span` shorthand for Su
|
205
|
+
///
|
206
|
+
/// @access private
|
207
|
+
///
|
208
|
+
/// @param {Number | List | 'all'} $span -
|
209
|
+
/// Span value to normalize
|
210
|
+
/// @param {List} $columns -
|
211
|
+
/// Normalized list of columns in the grid
|
212
|
+
///
|
213
|
+
/// @return {Number | List} -
|
214
|
+
/// Number or list value for `$span`
|
215
|
+
@function susy-normalize-span(
|
216
|
+
$span,
|
217
|
+
$columns: susy-get('columns')
|
218
|
+
) {
|
219
|
+
@if (type-of($span) == 'number') {
|
220
|
+
@return $span;
|
221
|
+
} @else if $span == 'all' {
|
222
|
+
@return length($columns);
|
223
|
+
}
|
224
|
+
|
225
|
+
@return susy-normalize-columns($span);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
229
|
+
// Normalize Spread
|
230
|
+
// ----------------
|
231
|
+
/// Normalize `spread` shorthand for Su
|
232
|
+
///
|
233
|
+
/// @access private
|
234
|
+
///
|
235
|
+
/// @param {0 | 1 | -1 | 'narrow' | 'wide' | 'wider'} $spread -
|
236
|
+
/// Spread across adjacent gutters, relative to a column-count —
|
237
|
+
/// either `narrow` (-1), `wide` (0), or `wider` (1)
|
238
|
+
///
|
239
|
+
/// @return {Number} -
|
240
|
+
/// Numeric value for `$spread`
|
241
|
+
@function susy-normalize-spread(
|
242
|
+
$spread
|
243
|
+
) {
|
244
|
+
$normal-spread: (
|
245
|
+
'narrow': -1,
|
246
|
+
'wide': 0,
|
247
|
+
'wider': 1,
|
248
|
+
);
|
249
|
+
|
250
|
+
@return map-get($normal-spread, $spread) or $spread;
|
251
|
+
}
|
252
|
+
|
253
|
+
|
254
|
+
// Normalize Location
|
255
|
+
// ------------------
|
256
|
+
/// Normalize `location` shorthand for Su
|
257
|
+
///
|
258
|
+
/// @access private
|
259
|
+
///
|
260
|
+
/// @param {Number} $span -
|
261
|
+
/// Number of grid-columns to be spanned
|
262
|
+
/// @param {Integer | 'first' | 'last'} $location -
|
263
|
+
/// Starting (1-indexed) column position of a span,
|
264
|
+
/// or a named location keyword
|
265
|
+
/// @param {List} $columns -
|
266
|
+
/// Normalized list of columns in the grid
|
267
|
+
///
|
268
|
+
/// @return {Integer} -
|
269
|
+
/// Numeric value for `$location`
|
270
|
+
@function susy-normalize-location(
|
271
|
+
$span,
|
272
|
+
$location,
|
273
|
+
$columns
|
274
|
+
) {
|
275
|
+
$count: length($columns);
|
276
|
+
$normal-locations: (
|
277
|
+
'first': 1,
|
278
|
+
'alpha': 1,
|
279
|
+
'last': $count - $span + 1,
|
280
|
+
'omega': $count - $span + 1,
|
281
|
+
);
|
282
|
+
|
283
|
+
@return map-get($normal-locations, $location) or $location;
|
284
|
+
}
|
@@ -0,0 +1,120 @@
|
|
1
|
+
// Settings
|
2
|
+
// ========
|
3
|
+
// - susy [variable]
|
4
|
+
// - susy-defaults [variable]
|
5
|
+
// - susy-settings [function]
|
6
|
+
// - susy-get [function]
|
7
|
+
|
8
|
+
|
9
|
+
// Susy
|
10
|
+
// ----
|
11
|
+
/// Custom user configuration map for Susy
|
12
|
+
///
|
13
|
+
/// @group a-config
|
14
|
+
///
|
15
|
+
/// @type Map
|
16
|
+
///
|
17
|
+
/// @see $susy-defaults
|
18
|
+
///
|
19
|
+
/// @prop {Number | List} columns [4] -
|
20
|
+
/// Description of the columns in a grid,
|
21
|
+
/// their number, realtive sizes (if asymmetrical),
|
22
|
+
/// and optional static widths
|
23
|
+
/// @prop {Number} gutters [0.25] -
|
24
|
+
/// Ratio of a gutter to a column,
|
25
|
+
/// or static width of a single gutter
|
26
|
+
/// @prop {String} spread ['narrow'] -
|
27
|
+
/// Spread of an element across adjacent gutters:
|
28
|
+
/// either `narrow` (none), `wide` (one), or `wider` (two)
|
29
|
+
/// @prop {String} container-spread ['narrow'] -
|
30
|
+
/// Spread of a container around adjacent gutters:
|
31
|
+
/// either `narrow` (none), `wide` (one), or `wider` (two)
|
32
|
+
///
|
33
|
+
/// @example scss - All available options (to their default value)
|
34
|
+
/// $susy: (
|
35
|
+
/// 'columns': 4,
|
36
|
+
/// 'gutters': 0.25,
|
37
|
+
/// 'spread': 'narrow',
|
38
|
+
/// 'container-spread': 'narrow',
|
39
|
+
/// );
|
40
|
+
$susy: () !default;
|
41
|
+
|
42
|
+
|
43
|
+
// Susy Defaults
|
44
|
+
// -------------
|
45
|
+
/// Configuration map of Susy factory defaults
|
46
|
+
///
|
47
|
+
/// @access private
|
48
|
+
///
|
49
|
+
/// @type Map
|
50
|
+
///
|
51
|
+
/// @prop {Number | List} columns [4] -
|
52
|
+
/// Description of the columns in a grid,
|
53
|
+
/// their number, realtive sizes (if asymmetrical),
|
54
|
+
/// and optional static widths
|
55
|
+
/// @prop {Number} gutters [0.25] -
|
56
|
+
/// Ratio of a gutter to a column,
|
57
|
+
/// or static width of a single gutter
|
58
|
+
/// @prop {String} spread ['narrow'] -
|
59
|
+
/// Spread of an element across adjacent gutters:
|
60
|
+
/// either `narrow` (none), `wide` (one), or `wider` (two)
|
61
|
+
/// @prop {String} container-spread ['narrow'] -
|
62
|
+
/// Spread of a container around adjacent gutters:
|
63
|
+
/// either `narrow` (none), `wide` (one), or `wider` (two)
|
64
|
+
$susy-defaults: (
|
65
|
+
'columns': 4,
|
66
|
+
'gutters': 0.25,
|
67
|
+
'spread': 'narrow',
|
68
|
+
'container-spread': 'narrow',
|
69
|
+
);
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
// Susy Settings
|
74
|
+
// -------------
|
75
|
+
/// Return a combined map of Susy settings
|
76
|
+
///
|
77
|
+
/// @group a-config
|
78
|
+
///
|
79
|
+
/// @param {Map | Arglist} $overrides... -
|
80
|
+
/// Optional map override of global configuration settings
|
81
|
+
///
|
82
|
+
/// @return {Map} -
|
83
|
+
/// Combined map of Susy configuration settings, in order of specificity:
|
84
|
+
/// `$overrides...`, `$susy`, then `$susy-defaults`
|
85
|
+
@function susy-settings(
|
86
|
+
$overrides...
|
87
|
+
) {
|
88
|
+
$settings: map-merge($susy-defaults, $susy);
|
89
|
+
|
90
|
+
@each $config in $overrides {
|
91
|
+
$settings: map-merge($settings, $config);
|
92
|
+
}
|
93
|
+
|
94
|
+
@return $settings;
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
// Susy Get
|
99
|
+
// --------
|
100
|
+
/// Return the current value of any Susy setting
|
101
|
+
///
|
102
|
+
/// @group a-config
|
103
|
+
///
|
104
|
+
/// @param {String} $key -
|
105
|
+
/// Setting to retrieve from the configuration
|
106
|
+
///
|
107
|
+
/// @return {*} -
|
108
|
+
/// Value mapped to `$key` in the configuration maps, in order of specificity:
|
109
|
+
/// `$susy`, then `$susy-defaults`
|
110
|
+
@function susy-get(
|
111
|
+
$key
|
112
|
+
) {
|
113
|
+
$settings: susy-settings();
|
114
|
+
|
115
|
+
@if not map-has-key($settings, $key) {
|
116
|
+
@error 'There is no Susy setting called `#{$key}`';
|
117
|
+
}
|
118
|
+
|
119
|
+
@return map-get($settings, $key);
|
120
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
// Unprefix Susy
|
2
|
+
// =============
|
3
|
+
|
4
|
+
|
5
|
+
// Span
|
6
|
+
// ----
|
7
|
+
/// Un-prefixed alias for `susy-span`
|
8
|
+
///
|
9
|
+
/// @group unprefix
|
10
|
+
/// @alias susy-span
|
11
|
+
///
|
12
|
+
/// @param {List} $span
|
13
|
+
/// @param {Map} $config [()]
|
14
|
+
@function span(
|
15
|
+
$span,
|
16
|
+
$config: ()
|
17
|
+
) {
|
18
|
+
@return susy-span($span, $config);
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
// Gutter
|
23
|
+
// ------
|
24
|
+
/// Un-prefixed alias for `susy-gutter`
|
25
|
+
///
|
26
|
+
/// @group unprefix
|
27
|
+
/// @alias susy-gutter
|
28
|
+
///
|
29
|
+
/// @param {Integer | List} $nested [null] -
|
30
|
+
/// @param {Map} $config [()]
|
31
|
+
@function gutter(
|
32
|
+
$nested: null,
|
33
|
+
$config: ()
|
34
|
+
) {
|
35
|
+
@return susy-gutter($nested, $config);
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
// Slice
|
40
|
+
// -----
|
41
|
+
/// Un-prefixed alias for `susy-slice`
|
42
|
+
///
|
43
|
+
/// @group unprefix
|
44
|
+
/// @alias susy-slice
|
45
|
+
///
|
46
|
+
/// @param {List} $span
|
47
|
+
/// @param {Map} $config [()]
|
48
|
+
@function slice(
|
49
|
+
$span,
|
50
|
+
$config: ()
|
51
|
+
) {
|
52
|
+
@return susy-slice($span, $config);
|
53
|
+
}
|