jekyll-theme-basically-basic 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +19 -0
- data/LICENSE.md +21 -0
- data/README.md +582 -0
- data/_includes/author +31 -0
- data/_includes/contact-list.html +27 -0
- data/_includes/cv/awards.html +24 -0
- data/_includes/cv/basics.html +69 -0
- data/_includes/cv/education.html +36 -0
- data/_includes/cv/interests.html +20 -0
- data/_includes/cv/intro.html +18 -0
- data/_includes/cv/languages.html +20 -0
- data/_includes/cv/publications.html +30 -0
- data/_includes/cv/references.html +24 -0
- data/_includes/cv/skills.html +20 -0
- data/_includes/cv/volunteer.html +46 -0
- data/_includes/cv/work.html +46 -0
- data/_includes/disqus_comments.html +17 -0
- data/_includes/entry.html +29 -0
- data/_includes/footer.html +9 -0
- data/_includes/google-analytics.html +9 -0
- data/_includes/head-feed.html +1 -0
- data/_includes/head-seo.html +1 -0
- data/_includes/head.html +35 -0
- data/_includes/icon-arrow-left.svg +1 -0
- data/_includes/icon-arrow-right.svg +1 -0
- data/_includes/icon-bitbucket.html +4 -0
- data/_includes/icon-bitbucket.svg +1 -0
- data/_includes/icon-calendar.svg +1 -0
- data/_includes/icon-codepen.html +4 -0
- data/_includes/icon-codepen.svg +1 -0
- data/_includes/icon-download.svg +1 -0
- data/_includes/icon-dribbble.html +4 -0
- data/_includes/icon-dribbble.svg +1 -0
- data/_includes/icon-email.svg +1 -0
- data/_includes/icon-facebook.html +4 -0
- data/_includes/icon-facebook.svg +1 -0
- data/_includes/icon-flickr.html +4 -0
- data/_includes/icon-flickr.svg +1 -0
- data/_includes/icon-github.html +4 -0
- data/_includes/icon-github.svg +1 -0
- data/_includes/icon-gitlab.html +4 -0
- data/_includes/icon-gitlab.svg +1 -0
- data/_includes/icon-googleplus.html +4 -0
- data/_includes/icon-googleplus.svg +1 -0
- data/_includes/icon-instagram.html +4 -0
- data/_includes/icon-instagram.svg +1 -0
- data/_includes/icon-lastfm.html +4 -0
- data/_includes/icon-lastfm.svg +1 -0
- data/_includes/icon-linkedin.html +4 -0
- data/_includes/icon-linkedin.svg +1 -0
- data/_includes/icon-pdf.svg +1 -0
- data/_includes/icon-pinterest.html +4 -0
- data/_includes/icon-pinterest.svg +1 -0
- data/_includes/icon-rss.svg +1 -0
- data/_includes/icon-soundcloud.html +4 -0
- data/_includes/icon-soundcloud.svg +1 -0
- data/_includes/icon-stackoverflow.html +4 -0
- data/_includes/icon-stackoverflow.svg +1 -0
- data/_includes/icon-stopwatch.svg +1 -0
- data/_includes/icon-tumblr.html +4 -0
- data/_includes/icon-tumblr.svg +1 -0
- data/_includes/icon-twitter.html +4 -0
- data/_includes/icon-twitter.svg +1 -0
- data/_includes/icon-xing.html +4 -0
- data/_includes/icon-xing.svg +1 -0
- data/_includes/icon-youtube.html +4 -0
- data/_includes/icon-youtube.svg +1 -0
- data/_includes/masthead.html +27 -0
- data/_includes/navigation.html +25 -0
- data/_includes/page-intro.html +42 -0
- data/_includes/posts-all.html +3 -0
- data/_includes/posts-paginated.html +16 -0
- data/_includes/read-time.html +13 -0
- data/_includes/scripts.html +5 -0
- data/_includes/skip-links.html +8 -0
- data/_layouts/about.html +21 -0
- data/_layouts/cv.html +28 -0
- data/_layouts/default.html +38 -0
- data/_layouts/home.html +30 -0
- data/_layouts/page.html +17 -0
- data/_layouts/post.html +20 -0
- data/_sass/basically-basic.scss +37 -0
- data/_sass/basically-basic/_base.scss +110 -0
- data/_sass/basically-basic/_buttons.scss +39 -0
- data/_sass/basically-basic/_contact-lists.scss +11 -0
- data/_sass/basically-basic/_entries.scss +155 -0
- data/_sass/basically-basic/_footer.scss +13 -0
- data/_sass/basically-basic/_global.scss +36 -0
- data/_sass/basically-basic/_icons.scss +43 -0
- data/_sass/basically-basic/_intro.scss +65 -0
- data/_sass/basically-basic/_layout.scss +178 -0
- data/_sass/basically-basic/_mixins.scss +7 -0
- data/_sass/basically-basic/_navicons.scss +144 -0
- data/_sass/basically-basic/_navigation.scss +51 -0
- data/_sass/basically-basic/_reset.scss +522 -0
- data/_sass/basically-basic/_sidebar.scss +177 -0
- data/_sass/basically-basic/_syntax-highlighting.scss +127 -0
- data/_sass/basically-basic/_tables.scss +42 -0
- data/_sass/basically-basic/_utilities.scss +5 -0
- data/_sass/basically-basic/_variables.scss +84 -0
- data/_sass/basically-basic/mixins/_clearfix.scss +11 -0
- data/_sass/basically-basic/mixins/_color.scss +21 -0
- data/_sass/basically-basic/mixins/_float.scss +15 -0
- data/_sass/basically-basic/mixins/_fluid-type.scss +33 -0
- data/_sass/basically-basic/mixins/_image.scss +38 -0
- data/_sass/basically-basic/mixins/_lists.scss +9 -0
- data/_sass/basically-basic/mixins/_text-truncate.scss +10 -0
- data/_sass/basically-basic/themes/_default.scss +5 -0
- data/_sass/basically-basic/themes/_night.scss +12 -0
- data/_sass/basically-basic/themes/_plum.scss +12 -0
- data/_sass/basically-basic/themes/_sea.scss +12 -0
- data/_sass/basically-basic/themes/_soft.scss +12 -0
- data/_sass/basically-basic/themes/_steel.scss +12 -0
- data/_sass/basically-basic/utilities/_accessibility.scss +54 -0
- data/_sass/basically-basic/utilities/_align.scss +64 -0
- data/_sass/basically-basic/utilities/_clearfix.scss +7 -0
- data/_sass/basically-basic/utilities/_float.scss +7 -0
- data/_sass/basically-basic/utilities/_text.scss +28 -0
- data/_sass/basically-basic/vendor/_breakpoint.scss +114 -0
- data/_sass/basically-basic/vendor/_su.scss +4 -0
- data/_sass/basically-basic/vendor/_susy.scss +4 -0
- data/_sass/basically-basic/vendor/_susyone.scss +4 -0
- data/_sass/basically-basic/vendor/breakpoint/_context.scss +95 -0
- data/_sass/basically-basic/vendor/breakpoint/_helpers.scss +151 -0
- data/_sass/basically-basic/vendor/breakpoint/_legacy-settings.scss +50 -0
- data/_sass/basically-basic/vendor/breakpoint/_no-query.scss +15 -0
- data/_sass/basically-basic/vendor/breakpoint/_parsers.scss +215 -0
- data/_sass/basically-basic/vendor/breakpoint/_respond-to.scss +82 -0
- data/_sass/basically-basic/vendor/breakpoint/_settings.scss +71 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/_double.scss +33 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/_query.scss +82 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/_resolution.scss +31 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/_single.scss +26 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/_triple.scss +36 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default-pair.scss +21 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default.scss +22 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/double/_double-string.scss +22 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/single/_default.scss +13 -0
- data/_sass/basically-basic/vendor/breakpoint/parsers/triple/_default.scss +18 -0
- data/_sass/basically-basic/vendor/susy/_su.scss +7 -0
- data/_sass/basically-basic/vendor/susy/language/_susy.scss +24 -0
- data/_sass/basically-basic/vendor/susy/language/_susyone.scss +13 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_background.scss +385 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_bleed.scss +200 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_box-sizing.scss +47 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_breakpoint-plugin.scss +185 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_container.scss +81 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_context.scss +36 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_gallery.scss +94 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_grids.scss +64 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_gutters.scss +154 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_isolate.scss +77 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_margins.scss +94 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_padding.scss +74 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_rows.scss +138 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_settings.scss +216 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_span.scss +163 -0
- data/_sass/basically-basic/vendor/susy/language/susy/_validation.scss +16 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_background.scss +18 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_functions.scss +377 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_grid.scss +312 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_isolation.scss +51 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_margin.scss +93 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_media.scss +105 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_padding.scss +92 -0
- data/_sass/basically-basic/vendor/susy/language/susyone/_settings.scss +60 -0
- data/_sass/basically-basic/vendor/susy/output/_float.scss +9 -0
- data/_sass/basically-basic/vendor/susy/output/_shared.scss +15 -0
- data/_sass/basically-basic/vendor/susy/output/_support.scss +9 -0
- data/_sass/basically-basic/vendor/susy/output/float/_container.scss +16 -0
- data/_sass/basically-basic/vendor/susy/output/float/_end.scss +40 -0
- data/_sass/basically-basic/vendor/susy/output/float/_isolate.scss +22 -0
- data/_sass/basically-basic/vendor/susy/output/float/_span.scss +35 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_background.scss +26 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_container.scss +21 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_direction.scss +42 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_inspect.scss +25 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_margins.scss +23 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_output.scss +14 -0
- data/_sass/basically-basic/vendor/susy/output/shared/_padding.scss +23 -0
- data/_sass/basically-basic/vendor/susy/output/support/_background.scss +58 -0
- data/_sass/basically-basic/vendor/susy/output/support/_box-sizing.scss +19 -0
- data/_sass/basically-basic/vendor/susy/output/support/_clearfix.scss +18 -0
- data/_sass/basically-basic/vendor/susy/output/support/_prefix.scss +19 -0
- data/_sass/basically-basic/vendor/susy/output/support/_rem.scss +22 -0
- data/_sass/basically-basic/vendor/susy/output/support/_support.scss +85 -0
- data/_sass/basically-basic/vendor/susy/su/_grid.scss +103 -0
- data/_sass/basically-basic/vendor/susy/su/_settings.scss +73 -0
- data/_sass/basically-basic/vendor/susy/su/_utilities.scss +111 -0
- data/_sass/basically-basic/vendor/susy/su/_validation.scss +57 -0
- data/assets/javascripts/main.js +57 -0
- data/assets/stylesheets/main.scss +10 -0
- metadata +335 -0
@@ -0,0 +1,74 @@
|
|
1
|
+
// Padding Syntax
|
2
|
+
// ==============
|
3
|
+
|
4
|
+
// Prefix
|
5
|
+
// ------
|
6
|
+
// Add spanning-padding before an element.
|
7
|
+
// - $span : <span>
|
8
|
+
@mixin prefix(
|
9
|
+
$span
|
10
|
+
) {
|
11
|
+
$inspect : $span;
|
12
|
+
$span : map-merge((spread: wide), parse-span($span));
|
13
|
+
$flow : susy-get(flow, $span);
|
14
|
+
$width : span($span);
|
15
|
+
|
16
|
+
@if is-inside($span) {
|
17
|
+
$gutter: gutter($span);
|
18
|
+
$width: if($gutter and comparable($width, $gutter), $width + $gutter, $width);
|
19
|
+
}
|
20
|
+
|
21
|
+
@include susy-inspect(prefix, $inspect);
|
22
|
+
@include padding-output($width, null, $flow);
|
23
|
+
}
|
24
|
+
|
25
|
+
// Suffix
|
26
|
+
// ------
|
27
|
+
// Add spanning-padding after an element.
|
28
|
+
// - $span : <span>
|
29
|
+
@mixin suffix(
|
30
|
+
$span
|
31
|
+
) {
|
32
|
+
$inspect : $span;
|
33
|
+
$span : map-merge((spread: wide), parse-span($span));
|
34
|
+
$flow : susy-get(flow, $span);
|
35
|
+
$width : span($span);
|
36
|
+
|
37
|
+
@if is-inside($span) {
|
38
|
+
$gutter: gutter($span);
|
39
|
+
$width: if($gutter and comparable($width, $gutter), $width + $gutter, $width);
|
40
|
+
}
|
41
|
+
|
42
|
+
@include susy-inspect(suffix, $inspect);
|
43
|
+
@include padding-output(null, $width, $flow);
|
44
|
+
}
|
45
|
+
|
46
|
+
// Pad
|
47
|
+
// ---
|
48
|
+
// Add spanning-padding before and after an element.
|
49
|
+
// - $pre : <span>
|
50
|
+
// - [$post] : <span>
|
51
|
+
@mixin pad(
|
52
|
+
$pre,
|
53
|
+
$post: false
|
54
|
+
) {
|
55
|
+
$inspect : ($pre, $post);
|
56
|
+
$pre : map-merge((spread: wide), parse-span($pre));
|
57
|
+
|
58
|
+
@if $post {
|
59
|
+
$post: map-merge((spread: wide), parse-span($post));
|
60
|
+
} @else {
|
61
|
+
$span: susy-get(span, $pre);
|
62
|
+
@if length($span) > 1 {
|
63
|
+
$pre: map-merge($pre, (span: nth($span, 1)));
|
64
|
+
$post: map-merge($pre, (span: nth($span, 2)));
|
65
|
+
} @else {
|
66
|
+
$post: $pre;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
@include susy-inspect(pad, $inspect);
|
71
|
+
@include prefix($pre);
|
72
|
+
@include suffix($post);
|
73
|
+
|
74
|
+
}
|
@@ -0,0 +1,138 @@
|
|
1
|
+
// Row Start & End
|
2
|
+
// ===============
|
3
|
+
|
4
|
+
// Break
|
5
|
+
// -----
|
6
|
+
// Apply to any element that should force a line break.
|
7
|
+
@mixin break {
|
8
|
+
@include output((clear: both));
|
9
|
+
}
|
10
|
+
|
11
|
+
|
12
|
+
// NoBreak
|
13
|
+
// -------
|
14
|
+
// Cancel the break() effect, e.g. when using media queries.
|
15
|
+
@mixin nobreak {
|
16
|
+
@include output((clear: none));
|
17
|
+
}
|
18
|
+
|
19
|
+
|
20
|
+
// Full
|
21
|
+
// ----
|
22
|
+
// - [$context]: <layout shorthand>
|
23
|
+
@mixin full(
|
24
|
+
$context: $susy
|
25
|
+
) {
|
26
|
+
$inspect : $context;
|
27
|
+
@include susy-inspect(full, $inspect);
|
28
|
+
@include span(full of parse-grid($context) break);
|
29
|
+
}
|
30
|
+
|
31
|
+
|
32
|
+
// First
|
33
|
+
// -----
|
34
|
+
// - [$context]: <settings>
|
35
|
+
@mixin first(
|
36
|
+
$context: $susy
|
37
|
+
) {
|
38
|
+
$inspect : $context;
|
39
|
+
$context : parse-grid($context);
|
40
|
+
$flow : susy-get(flow, $context);
|
41
|
+
|
42
|
+
@include susy-inspect(first, $inspect);
|
43
|
+
@if not(is-split($context)) {
|
44
|
+
@include float-first($flow);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
@mixin alpha(
|
49
|
+
$context: $susy
|
50
|
+
) {
|
51
|
+
@include first($context);
|
52
|
+
}
|
53
|
+
|
54
|
+
|
55
|
+
// Last
|
56
|
+
// ----
|
57
|
+
// - [$context]: <settings>
|
58
|
+
@mixin last(
|
59
|
+
$context: $susy
|
60
|
+
) {
|
61
|
+
$inspect : $context;
|
62
|
+
$context : parse-grid($context);
|
63
|
+
|
64
|
+
@include susy-inspect(last, $inspect);
|
65
|
+
|
66
|
+
$output: (
|
67
|
+
flow: susy-get(flow, $context),
|
68
|
+
last-flow: susy-get(last-flow, $context),
|
69
|
+
margin: if(is-split($context), null, 0),
|
70
|
+
);
|
71
|
+
|
72
|
+
@include float-last($output...);
|
73
|
+
}
|
74
|
+
|
75
|
+
@mixin omega(
|
76
|
+
$context: $susy
|
77
|
+
) {
|
78
|
+
@include last($context);
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
// Get Edge
|
83
|
+
// --------
|
84
|
+
// Calculate edge value based on location, if possible
|
85
|
+
@function get-edge(
|
86
|
+
$span
|
87
|
+
) {
|
88
|
+
$span : parse-span($span);
|
89
|
+
$edge : susy-get(edge, $span);
|
90
|
+
|
91
|
+
@if not($edge) {
|
92
|
+
$count: susy-count(susy-get(columns, $span));
|
93
|
+
$location: susy-get(location, $span);
|
94
|
+
$n: susy-get(span, $span);
|
95
|
+
|
96
|
+
$number: if(type-of($location) == number, true, false);
|
97
|
+
$index: if($number and unitless($location), true, false);
|
98
|
+
|
99
|
+
@if $n == $count {
|
100
|
+
$edge: full;
|
101
|
+
} @else if $location and $n and $index {
|
102
|
+
@if $location == 1 {
|
103
|
+
$edge: if($n == $count, full, first);
|
104
|
+
} @else if $location + $n - 1 == $count {
|
105
|
+
$edge: last;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
@if $edge == alpha or $edge == omega {
|
111
|
+
$edge: if($edge == alpha, first, last);
|
112
|
+
}
|
113
|
+
|
114
|
+
@return $edge;
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
// Get Location
|
119
|
+
// ------------
|
120
|
+
// Calculate location value based on edge, if possible
|
121
|
+
@function get-location(
|
122
|
+
$span
|
123
|
+
) {
|
124
|
+
$span : parse-span($span);
|
125
|
+
$location : susy-get(location, $span);
|
126
|
+
$edge : get-edge($span);
|
127
|
+
$n : susy-get(span, $span);
|
128
|
+
|
129
|
+
@if $edge and not($location) and type-of($n) == number and unitless($n) {
|
130
|
+
@if $edge == first {
|
131
|
+
$location: 1;
|
132
|
+
} @else if $edge == last {
|
133
|
+
$location: susy-count(susy-get(columns, $span)) - $n + 1;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
@return $location
|
138
|
+
}
|
@@ -0,0 +1,216 @@
|
|
1
|
+
// Susy Settings
|
2
|
+
// =============
|
3
|
+
|
4
|
+
// Susy Language Defaults
|
5
|
+
// ----------------------
|
6
|
+
// - PRIVATE
|
7
|
+
@include susy-defaults((
|
8
|
+
container: auto,
|
9
|
+
math: fluid,
|
10
|
+
output: float,
|
11
|
+
container-position: center,
|
12
|
+
gutter-position: after,
|
13
|
+
global-box-sizing: content-box,
|
14
|
+
debug: (
|
15
|
+
image: hide,
|
16
|
+
color: rgba(#66f, .25),
|
17
|
+
output: background,
|
18
|
+
toggle: top right,
|
19
|
+
),
|
20
|
+
));
|
21
|
+
|
22
|
+
|
23
|
+
// Valid Keyword Values
|
24
|
+
// --------------------
|
25
|
+
// - PRIVATE: DONT'T TOUCH
|
26
|
+
$susy-keywords: (
|
27
|
+
container: auto,
|
28
|
+
math: static fluid,
|
29
|
+
output: isolate float,
|
30
|
+
container-position: left center right,
|
31
|
+
flow: ltr rtl,
|
32
|
+
gutter-position: before after split inside inside-static,
|
33
|
+
box-sizing: border-box content-box,
|
34
|
+
span: full,
|
35
|
+
edge: first alpha last omega full,
|
36
|
+
spread: narrow wide wider,
|
37
|
+
gutter-override: no-gutters no-gutter,
|
38
|
+
role: nest,
|
39
|
+
clear: break nobreak,
|
40
|
+
debug image: show hide show-columns show-baseline,
|
41
|
+
debug output: background overlay,
|
42
|
+
);
|
43
|
+
|
44
|
+
|
45
|
+
// Parse Susy Keywords and Maps
|
46
|
+
// ----------------------------
|
47
|
+
@function parse-settings(
|
48
|
+
$short: $susy
|
49
|
+
) {
|
50
|
+
$_return: ();
|
51
|
+
|
52
|
+
@if type-of($short) == map {
|
53
|
+
$_return: $short;
|
54
|
+
} @else {
|
55
|
+
@each $item in $short {
|
56
|
+
// strings
|
57
|
+
@if type-of($item) == string {
|
58
|
+
@each $key, $value in $susy-keywords {
|
59
|
+
@if index($value, $item) {
|
60
|
+
$_key-value: append($key, $item);
|
61
|
+
$_return: _susy-deep-set($_return, $_key-value...);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
// maps
|
65
|
+
} @else if type-of($item) == map {
|
66
|
+
$_return: map-merge($_return, $item);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
@return $_return;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
// Parse Columns & Gutters
|
76
|
+
// -----------------------
|
77
|
+
@function parse-layout(
|
78
|
+
$short
|
79
|
+
) {
|
80
|
+
$_return: ();
|
81
|
+
$_columns: ();
|
82
|
+
$_gutters: null;
|
83
|
+
|
84
|
+
@if not(unitless(nth(nth($short, 1), 1))) {
|
85
|
+
$_gutters: nth($short, 1);
|
86
|
+
} @else {
|
87
|
+
$_columns: (columns: nth($short, 1));
|
88
|
+
$_gutters: if(length($short) > 1, nth($short, 2), $_gutters);
|
89
|
+
}
|
90
|
+
|
91
|
+
@if type-of($_gutters) == list and length($_gutters) > 0 {
|
92
|
+
$_gutters: (
|
93
|
+
gutters: nth($_gutters, 2) / nth($_gutters, 1),
|
94
|
+
column-width: nth($_gutters, 1),
|
95
|
+
);
|
96
|
+
} @else {
|
97
|
+
$_gutters: if($_gutters, (gutters: $_gutters), ());
|
98
|
+
}
|
99
|
+
|
100
|
+
$_return: map-merge($_return, $_columns);
|
101
|
+
$_return: map-merge($_return, $_gutters);
|
102
|
+
|
103
|
+
@return $_return;
|
104
|
+
}
|
105
|
+
|
106
|
+
|
107
|
+
// Parse Grid/Context
|
108
|
+
// ------------------
|
109
|
+
@function parse-grid(
|
110
|
+
$short: $susy
|
111
|
+
) {
|
112
|
+
$_return: parse-settings($short);
|
113
|
+
$_layout: ();
|
114
|
+
|
115
|
+
@if type-of($short) == map {
|
116
|
+
$_return: $short;
|
117
|
+
} @else {
|
118
|
+
@each $item in $short {
|
119
|
+
// number or list
|
120
|
+
@if type-of($item) == number or type-of($item) == list {
|
121
|
+
@if type-of($item) == list or unitless($item) {
|
122
|
+
$_layout: append($_layout, $item);
|
123
|
+
} @else {
|
124
|
+
$_return: map-merge($_return, (container: $item));
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
$_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout);
|
130
|
+
}
|
131
|
+
|
132
|
+
@return map-merge($_return, $_layout);
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
// Parse Span
|
137
|
+
// ----------
|
138
|
+
@function parse-span(
|
139
|
+
$short,
|
140
|
+
$key: span
|
141
|
+
) {
|
142
|
+
$_return: ();
|
143
|
+
|
144
|
+
@if type-of($short) == map {
|
145
|
+
$_return: $short;
|
146
|
+
} @else {
|
147
|
+
$_at: index($short, at);
|
148
|
+
|
149
|
+
@if $_at {
|
150
|
+
$_loci: $_at + 1;
|
151
|
+
$_location: nth($short, $_loci);
|
152
|
+
$_return: map-merge($_return, (location: $_location));
|
153
|
+
$short: set-nth($short, $_at, null);
|
154
|
+
$short: set-nth($short, $_loci, null);
|
155
|
+
}
|
156
|
+
|
157
|
+
$_i: 1;
|
158
|
+
$_span: ();
|
159
|
+
|
160
|
+
@while $_i <= length($short) {
|
161
|
+
$_this: nth($short, $_i);
|
162
|
+
|
163
|
+
@if type-of($_this) == number {
|
164
|
+
$_span: append($_span, $_this);
|
165
|
+
$short: set-nth($short, $_i, null);
|
166
|
+
} @else if $_this == of {
|
167
|
+
$short: set-nth($short, $_i, null);
|
168
|
+
$_i: length($short) + 1;
|
169
|
+
}
|
170
|
+
|
171
|
+
$_i: $_i + 1;
|
172
|
+
}
|
173
|
+
|
174
|
+
@if length($_span) > 0 {
|
175
|
+
$_span: if(length($_span) == 1, nth($_span, 1), $_span);
|
176
|
+
$_return: map-merge($_return, ($key: $_span));
|
177
|
+
}
|
178
|
+
|
179
|
+
$_return: map-merge($_return, parse-grid($short));
|
180
|
+
}
|
181
|
+
|
182
|
+
@return $_return;
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
// Parse Gutters
|
187
|
+
// -------------
|
188
|
+
@function parse-gutters(
|
189
|
+
$short: $susy
|
190
|
+
) {
|
191
|
+
$_gutters: parse-span($short, gutter-override);
|
192
|
+
$_span: susy-get(gutter-override, $_gutters);
|
193
|
+
|
194
|
+
@if $_span and not(map-get($_gutters, columns)) {
|
195
|
+
$_context: ();
|
196
|
+
$_new: ();
|
197
|
+
|
198
|
+
@each $item in $_span {
|
199
|
+
@if type-of($item) == number and unitless($item) {
|
200
|
+
$_context: append($_context, $item);
|
201
|
+
} @else {
|
202
|
+
$_new: append($_new, $item);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
$_context: parse-grid($_context);
|
207
|
+
$_new: if(length($_new) == 0, null, $_new);
|
208
|
+
$_new: if(length($_new) == 1, nth($_new, 1), $_new);
|
209
|
+
$_new: (gutter-override: if($_new != $_span, $_new, $_span));
|
210
|
+
|
211
|
+
$_gutters: map-merge($_gutters, $_new);
|
212
|
+
$_gutters: map-merge($_gutters, $_context);
|
213
|
+
}
|
214
|
+
|
215
|
+
@return $_gutters;
|
216
|
+
}
|
@@ -0,0 +1,163 @@
|
|
1
|
+
// Span Syntax
|
2
|
+
// ===========
|
3
|
+
|
4
|
+
// Span [mixin]
|
5
|
+
// ------------
|
6
|
+
// Set a spanning element using shorthand syntax.
|
7
|
+
// - $span : <span>
|
8
|
+
@mixin span(
|
9
|
+
$span
|
10
|
+
) {
|
11
|
+
$inspect: $span;
|
12
|
+
$span: parse-span($span);
|
13
|
+
$output: span-math($span);
|
14
|
+
$nesting: susy-get(span, $span);
|
15
|
+
$clear: susy-get(clear, $span);
|
16
|
+
|
17
|
+
$box: susy-get(box-sizing, $span);
|
18
|
+
$content-box: if(susy-get(global-box-sizing) != 'border-box', true, false);
|
19
|
+
$box: $box or if(is-inside($span) and $content-box, border-box, null);
|
20
|
+
|
21
|
+
@if $clear == break {
|
22
|
+
@include break;
|
23
|
+
} @else if $clear == nobreak {
|
24
|
+
@include nobreak;
|
25
|
+
}
|
26
|
+
|
27
|
+
@include susy-inspect(span, $inspect);
|
28
|
+
@include output((box-sizing: $box));
|
29
|
+
@include float-span-output($output...);
|
30
|
+
|
31
|
+
@if valid-columns($nesting, silent) {
|
32
|
+
@include nested($span) { @content; }
|
33
|
+
} @else {
|
34
|
+
@content;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
// Span [function]
|
39
|
+
// ---------------
|
40
|
+
// Return the width of a span.
|
41
|
+
// - $span : <span>
|
42
|
+
@function span(
|
43
|
+
$span
|
44
|
+
) {
|
45
|
+
@return get-span-width($span);
|
46
|
+
}
|
47
|
+
|
48
|
+
// Span Math
|
49
|
+
// ---------
|
50
|
+
// Get all the span results.
|
51
|
+
// - $span: <map>
|
52
|
+
@function span-math(
|
53
|
+
$span
|
54
|
+
) {
|
55
|
+
$nest : if(susy-get(role, $span) == nest, true, false);
|
56
|
+
$split-nest : if(is-split($span) and $nest, true, false);
|
57
|
+
$edge : get-edge($span);
|
58
|
+
$location : get-location($span);
|
59
|
+
|
60
|
+
$float : from;
|
61
|
+
$padding-before : null;
|
62
|
+
$padding-after : null;
|
63
|
+
$margin-before : null;
|
64
|
+
$margin-after : null;
|
65
|
+
|
66
|
+
// calculate widths
|
67
|
+
$spread: index(map-values($span), spread);
|
68
|
+
$span: if($split-nest and not($spread), map-merge($span, (spread: wide)), $span);
|
69
|
+
$width: get-span-width($span);
|
70
|
+
$gutters: get-gutters($span);
|
71
|
+
|
72
|
+
// apply gutters
|
73
|
+
@if is-inside($span) {
|
74
|
+
@if not(susy-get(role, $span)) {
|
75
|
+
$padding-before: map-get($gutters, before);
|
76
|
+
$padding-after: map-get($gutters, after);
|
77
|
+
}
|
78
|
+
} @else {
|
79
|
+
@if not($split-nest) {
|
80
|
+
$margin-before: map-get($gutters, before);
|
81
|
+
$margin-after: map-get($gutters, after);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
// special margin handling
|
86
|
+
@if susy-get(output, $span) == isolate and $location {
|
87
|
+
$margin-before: get-isolation($span);
|
88
|
+
$margin-after: -100%;
|
89
|
+
} @else if $edge {
|
90
|
+
$is-split: is-split($span);
|
91
|
+
$pos: susy-get(gutter-position, $span);
|
92
|
+
|
93
|
+
@if $edge == last {
|
94
|
+
$float: susy-get(last-flow, $span);
|
95
|
+
}
|
96
|
+
|
97
|
+
@if not($is-split) {
|
98
|
+
@if $edge == full or ($edge == first and $pos == before) {
|
99
|
+
$margin-before: 0;
|
100
|
+
}
|
101
|
+
@if $edge == full or ($edge == last and $pos == after) {
|
102
|
+
$margin-after: 0;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
}
|
107
|
+
|
108
|
+
@return (
|
109
|
+
width : $width,
|
110
|
+
float : $float,
|
111
|
+
margin-before : $margin-before,
|
112
|
+
margin-after : $margin-after,
|
113
|
+
padding-before : $padding-before,
|
114
|
+
padding-after : $padding-after,
|
115
|
+
flow : susy-get(flow, $span),
|
116
|
+
);
|
117
|
+
}
|
118
|
+
|
119
|
+
// Get Span Width
|
120
|
+
// --------------
|
121
|
+
// Return span width.
|
122
|
+
// - $span: <map>
|
123
|
+
@function get-span-width(
|
124
|
+
$span
|
125
|
+
) {
|
126
|
+
$span : parse-span($span);
|
127
|
+
|
128
|
+
$n : susy-get(span, $span);
|
129
|
+
$location : get-location($span);
|
130
|
+
$columns : susy-get(columns, $span);
|
131
|
+
$gutters : susy-get(gutters, $span);
|
132
|
+
$spread : susy-get(spread, $span);
|
133
|
+
|
134
|
+
$context : null;
|
135
|
+
$span-sum : null;
|
136
|
+
$width : null;
|
137
|
+
|
138
|
+
@if $n == 'full' {
|
139
|
+
$pos: susy-get(gutter-position, $span);
|
140
|
+
$role: susy-get(role, $span);
|
141
|
+
$n: if($pos == split and $role != nest, susy-count($columns), 100%);
|
142
|
+
}
|
143
|
+
|
144
|
+
@if type-of($n) != number {
|
145
|
+
@warn "(#{type-of($n)}) #{$n} is not a valid span.";
|
146
|
+
} @else if unitless($n) {
|
147
|
+
$context: susy-sum($columns, $gutters, if(is-split($span), wide, narrow));
|
148
|
+
$spread: if(is-inside($span), $spread or wide, $spread);
|
149
|
+
$span-sum: susy($n, $location, $columns, $gutters, $spread);
|
150
|
+
|
151
|
+
$_math: susy-get(math, $span);
|
152
|
+
$_column-width: susy-get(column-width, $span);
|
153
|
+
@if $_math == static {
|
154
|
+
$width: $span-sum * valid-column-math($_math, $_column-width);
|
155
|
+
} @else {
|
156
|
+
$width: percentage($span-sum / $context);
|
157
|
+
}
|
158
|
+
} @else {
|
159
|
+
$width: $n;
|
160
|
+
}
|
161
|
+
|
162
|
+
@return $width;
|
163
|
+
}
|