jekyll-theme-basically-basic 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -1
  3. data/README.md +233 -73
  4. data/_includes/scripts.html +12 -1
  5. data/_includes/search-form.html +13 -0
  6. data/_includes/search/algolia-search-scripts.html +52 -0
  7. data/_includes/search/lunr-search-scripts.html +106 -0
  8. data/_layouts/default.html +18 -3
  9. data/_sass/basically-basic.scss +2 -1
  10. data/_sass/basically-basic/_base.scss +5 -5
  11. data/_sass/basically-basic/_global.scss +5 -1
  12. data/_sass/basically-basic/_navicons.scss +148 -125
  13. data/_sass/basically-basic/_search.scss +101 -0
  14. data/_sass/basically-basic/_sidebar.scss +166 -142
  15. data/_sass/basically-basic/_syntax-highlighting.scss +6 -0
  16. data/_sass/basically-basic/_utilities.scss +6 -5
  17. data/_sass/basically-basic/utilities/_visibility.scss +32 -0
  18. data/assets/javascripts/lunr/lunr.da.min.js +18 -0
  19. data/assets/javascripts/lunr/lunr.de.min.js +18 -0
  20. data/assets/javascripts/lunr/lunr.du.min.js +18 -0
  21. data/assets/javascripts/lunr/lunr.es.min.js +18 -0
  22. data/assets/javascripts/lunr/lunr.fi.min.js +18 -0
  23. data/assets/javascripts/lunr/lunr.fr.min.js +18 -0
  24. data/assets/javascripts/lunr/lunr.hu.min.js +18 -0
  25. data/assets/javascripts/lunr/lunr.it.min.js +18 -0
  26. data/assets/javascripts/lunr/lunr.ja.min.js +1 -0
  27. data/assets/javascripts/lunr/lunr.jp.min.js +1 -0
  28. data/assets/javascripts/lunr/lunr.min.js +6 -0
  29. data/assets/javascripts/lunr/lunr.multi.min.js +1 -0
  30. data/assets/javascripts/lunr/lunr.no.min.js +18 -0
  31. data/assets/javascripts/lunr/lunr.pt.min.js +18 -0
  32. data/assets/javascripts/lunr/lunr.ro.min.js +18 -0
  33. data/assets/javascripts/lunr/lunr.ru.min.js +18 -0
  34. data/assets/javascripts/lunr/lunr.stemmer.support.min.js +1 -0
  35. data/assets/javascripts/lunr/lunr.sv.min.js +18 -0
  36. data/assets/javascripts/lunr/lunr.tr.min.js +18 -0
  37. data/assets/javascripts/main.js +11 -1
  38. data/assets/javascripts/search-data.json +27 -0
  39. metadata +27 -2
@@ -0,0 +1,52 @@
1
+ <!-- Including InstantSearch.js library and styling -->
2
+ <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script>
3
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css">
4
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css">
5
+
6
+ <script>
7
+ // Instanciating InstantSearch.js with Algolia credentials
8
+ const search = instantsearch({
9
+ appId: '{{ site.algolia.application_id }}',
10
+ apiKey: '{{ site.algolia.search_only_api_key }}',
11
+ indexName: '{{ site.algolia.index_name }}',
12
+ searchParameters: {
13
+ restrictSearchableAttributes: [
14
+ 'title',
15
+ 'content'
16
+ ]
17
+ }
18
+ });
19
+
20
+ const hitTemplate = function(hit) {
21
+ const url = hit.url;
22
+ const title = hit._highlightResult.title.value;
23
+ const content = hit._highlightResult.html.value;
24
+
25
+ return `
26
+ <article class="entry">
27
+ <h3 class="entry-title"><a href="{{ site.baseurl }}${url}">${title}</a></h3>
28
+ <div class="entry-excerpt">${content}</div>
29
+ </article>
30
+ `;
31
+ }
32
+
33
+ // Adding searchbar and results widgets
34
+ search.addWidget(
35
+ instantsearch.widgets.searchBox({
36
+ container: '.search-searchbar',
37
+ {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %}
38
+ placeholder: '{{ site.data.theme.t.menu.search_placeholder_text | default: "Enter your search term..." }}'
39
+ })
40
+ );
41
+ search.addWidget(
42
+ instantsearch.widgets.hits({
43
+ container: '.search-hits',
44
+ templates: {
45
+ item: hitTemplate
46
+ }
47
+ })
48
+ );
49
+
50
+ // Starting the search
51
+ search.start();
52
+ </script>
@@ -0,0 +1,106 @@
1
+ {%- assign lang = site.lang | slice: 0, 2 | default: "en" -%}
2
+ {%- case lang -%}
3
+ {%- when "da" -%}
4
+ {%- assign lang = "da" -%}
5
+ {%- when "de" -%}
6
+ {%- assign lang = "de" -%}
7
+ {%- when "du" -%}
8
+ {%- assign lang = "du" -%}
9
+ {-% when "es" -%}
10
+ {%- assign lang = "es" -%}
11
+ {%- when "fi" -%}
12
+ {%- assign lang = "fi" -%}
13
+ {%- when "fr" -%}
14
+ {%- assign lang = "fr" -%}
15
+ {%- when "hu" -%}
16
+ {%- assign lang = "hu" -%}
17
+ {%- when "it" -%}
18
+ {%- assign lang = "it" -%}
19
+ {%- when "ja" -%}
20
+ {%- assign lang = "ja" -%}
21
+ {%- when "jp" -%}
22
+ {%- assign lang = "jp" -%}
23
+ {%- when "no" -%}
24
+ {%- assign lang = "no" -%}
25
+ {%- when "pt" -%}
26
+ {%- assign lang = "pt" -%}
27
+ {%- when "ro" -%}
28
+ {%- assign lang = "ro" -%}
29
+ {%- when "ru" -%}
30
+ {%- assign lang = "ru" -%}
31
+ {%- when "sv" -%}
32
+ {%- assign lang = "sv" -%}
33
+ {%- when "tr" -%}
34
+ {%- assign lang = "tr" -%}
35
+ {%- else -%}
36
+ {%- assign lang = "en" -%}
37
+ {%- endcase -%}
38
+ <script src="{{ '/assets/javascripts/lunr/lunr.min.js' | absolute_url }}"></script>
39
+ <script src="{{ '/assets/javascripts/search-data.json' | absolute_url }}"></script>
40
+ {%- unless lang == "en" -%}
41
+ <script src="{{ '/assets/javascripts/lunr/lunr.stemmer.support.min.js' | absolute_url }}"></script>
42
+ <script src="{{ '/assets/javascripts/lunr/lunr.' | append: lang | append: '.min.js' | absolute_url }}"></script>
43
+ {%- endunless %}
44
+ <script>
45
+ var idx = lunr(function () {
46
+ {% unless lang == "en" %}
47
+ // use the language
48
+ this.use(lunr.{{ lang }});
49
+ {% endunless %}
50
+ // the, the normal lunr index initialization
51
+ this.field('title')
52
+ this.field('excerpt')
53
+ this.field('categories')
54
+ this.field('tags')
55
+ this.ref('id')
56
+
57
+ this.pipeline.remove(lunr.trimmer)
58
+
59
+ // add documents to index
60
+ for (var item in store) {
61
+ this.add({
62
+ title: store[item].title,
63
+ excerpt: store[item].excerpt,
64
+ categories: store[item].categories,
65
+ tags: store[item].tags,
66
+ id: item
67
+ })
68
+ }
69
+ });
70
+
71
+ console.log(jQuery.type(idx));
72
+
73
+ $(document).ready(function () {
74
+ $('input#search').on('keyup', function () {
75
+ var resultdiv = $('#results');
76
+ var query = $(this).val().toLowerCase();
77
+ var result =
78
+ idx.query(function (q) {
79
+ query.split(lunr.tokenizer.separator).forEach(function (term) {
80
+ q.term(term, { boost: 100 })
81
+ if (query.lastIndexOf(" ") != query.length - 1) {
82
+ q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 })
83
+ }
84
+ if (term != "") {
85
+ q.term(term, { usePipeline: false, editDistance: 1, boost: 1 })
86
+ }
87
+ })
88
+ });
89
+ resultdiv.empty();
90
+ resultdiv.prepend('<p class="results-found">' + result.length + ' {{ site.data.theme.t.menu.results_found | default: "Result(s) found" }}</p>');
91
+ for (var item in result) {
92
+ var ref = result[item].ref;
93
+ var searchitem =
94
+ '<article class="entry">' +
95
+ '<h3 class="entry-title">' +
96
+ '<a href="' + store[ref].url + '">' + store[ref].title + '</a>' +
97
+ '</h3>' +
98
+ '<div class="entry-excerpt">' +
99
+ '<p>' + store[ref].excerpt.split(" ").splice(0, 20).join(" ") + '...</p>' +
100
+ '</div>' +
101
+ '</article>';
102
+ resultdiv.append(searchitem);
103
+ }
104
+ });
105
+ });
106
+ </script>
@@ -1,6 +1,6 @@
1
1
  <!DOCTYPE html>
2
2
  <!--
3
- Basically Basic Jekyll Theme 1.2.0
3
+ Basically Basic Jekyll Theme 1.3.0
4
4
  Copyright 2017-2018 Michael Rose - mademistakes.com | @mmistakes
5
5
  Free for personal and commercial use under the MIT license
6
6
  https://github.com/mmistakes/jekyll-basically-theme/blob/master/LICENSE.md
@@ -13,9 +13,18 @@
13
13
  {% include skip-links.html %}
14
14
 
15
15
  <div class="sidebar-toggle-wrapper">
16
+ {% if site.search %}
17
+ <button class="search-toggle" type="button">
18
+ <svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16">
19
+ <title>{{ site.data.theme.t.search | default: 'Search' }}</title>
20
+ <path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path>
21
+ </svg>
22
+ </button>
23
+ {% endif %}
24
+
16
25
  <button class="toggle navicon-button larr" type="button">
17
26
  <span class="toggle-inner">
18
- <span class="sidebar-toggle-label">{{ site.data.theme.t.menu | default: 'Menu' }}</span>
27
+ <span class="sidebar-toggle-label visually-hidden">{{ site.data.theme.t.menu | default: 'Menu' }}</span>
19
28
  <span class="navicon"></span>
20
29
  </span>
21
30
  </button>
@@ -31,7 +40,13 @@
31
40
  <div class="canvas">
32
41
  <div class="wrapper">
33
42
  {% include masthead.html %}
34
- {{ content }}
43
+ <div class="initial-content">
44
+ {{ content }}
45
+ </div>
46
+
47
+ <div class="search-content">
48
+ {% include search-form.html %}
49
+ </div>
35
50
  </div>
36
51
  </div>
37
52
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Basically Basic Jekyll Theme 1.2.0
2
+ * Basically Basic Jekyll Theme 1.3.0
3
3
  * Copyright 2017-2018 Michael Rose - mademistakes | @mmistakes
4
4
  * Free for personal and commercial use under the MIT license
5
5
  * https://github.com/mmistakes/jekyll-theme-basically-basic/blob/master/LICENSE.md
@@ -22,6 +22,7 @@
22
22
  @import "basically-basic/global";
23
23
  @import "basically-basic/sidebar";
24
24
  @import "basically-basic/navigation";
25
+ @import "basically-basic/search";
25
26
  @import "basically-basic/footer";
26
27
  @import "basically-basic/entries";
27
28
  @import "basically-basic/buttons";
@@ -111,8 +111,8 @@ a {
111
111
  }
112
112
  }
113
113
 
114
- *:focus {
115
- border-color: $accent-color;
116
- outline: none;
117
- box-shadow: 0 0 10px $accent-color;
118
- }
114
+ // *:focus {
115
+ // border-color: $accent-color;
116
+ // outline: none;
117
+ // box-shadow: 0 0 10px $accent-color;
118
+ // }
@@ -6,7 +6,9 @@
6
6
  @include fluid-type($min-vw, $max-vw, 20px, 24px);
7
7
  margin: 0;
8
8
  padding: 1.8125rem 1rem;
9
- padding-right: calc(10vw + #{$navicon-width}); /* make room for sidebar toggle */
9
+ padding-right: calc(
10
+ 10vw + (2 * #{$navicon-width})
11
+ ); /* make room for sidebar toggle */
10
12
  font-family: $base-font-family;
11
13
  font-weight: bold;
12
14
  line-height: 1;
@@ -21,8 +23,10 @@
21
23
 
22
24
  a {
23
25
  display: -ms-flexbox;
26
+ display: -webkit-box;
24
27
  display: flex;
25
28
  -ms-flex-align: center;
29
+ -webkit-box-align: center;
26
30
  align-items: center;
27
31
  min-height: $site-image-height;
28
32
  color: $text-color;
@@ -1,125 +1,148 @@
1
- /* ==========================================================================
2
- Navicons
3
- ========================================================================== */
4
-
5
- .navicon-button {
6
- display: inline-block;
7
- position: relative;
8
- margin: 0.90625rem 0;
9
- padding: 0.90625rem 1rem;
10
- transition: $navicon-duration / 2;
11
- border: 0;
12
- outline: none;
13
- background-color: $navicon-nav-bg-close;
14
- line-height: 5 * $navicon-height;
15
- cursor: pointer;
16
- -moz-user-select: none;
17
- -ms-user-select: none;
18
- -webkit-user-select: none;
19
- user-select: none;
20
-
21
- @include breakpoint($medium) {
22
- margin-right: 2rem;
23
- }
24
-
25
- @include breakpoint($large) {
26
- margin-right: 5vw;
27
- }
28
-
29
- &.open {
30
- background-color: $navicon-nav-bg-open;
31
- }
32
-
33
- .navicon::before,
34
- .navicon::after {
35
- transition-duration: $navicon-duration / 2;
36
- }
37
-
38
- &:hover {
39
- transition-duration: $navicon-duration;
40
-
41
- .navicon::before,
42
- .navicon::after {
43
- transition-duration: $navicon-duration / 2;
44
- }
45
-
46
- .navicon::before { top: (2.5 * $navicon-height); }
47
- .navicon::after { top: (-2.5 * $navicon-height); }
48
- }
49
- }
50
-
51
- .navicon {
52
- position: relative;
53
- width: $navicon-width;
54
- height: $navicon-height;
55
- transition-duration: $navicon-duration;
56
- border-radius: $navicon-width;
57
- background: $navicon-content-bg;
58
-
59
- &::before,
60
- &::after {
61
- display: block;
62
- position: absolute;
63
- width: $navicon-width;
64
- height: $navicon-height;
65
- transition-duration: $navicon-duration $navicon-duration / 2;
66
- border-radius: $navicon-width;
67
- background: $navicon-content-bg;
68
- content: '';
69
- }
70
-
71
- &::before { top: (2 * $navicon-height); }
72
- &::after { top: (-2 * $navicon-height); }
73
- }
74
-
75
- .open:not(.steps) .navicon::before,
76
- .open:not(.steps) .navicon::after {
77
- top: 0 !important;
78
- }
79
-
80
- .open {
81
- transform: scale($navicon-toggled-size);
82
-
83
- .navicon::before,
84
- .navicon::after {
85
- transition-duration: $navicon-duration;
86
- }
87
-
88
- /* Arrows */
89
- &.larr .navicon,
90
- &.rarr .navicon,
91
- &.uarr .navicon {
92
-
93
- &::before,
94
- &::after {
95
- width: (0.6 * $navicon-width);
96
- }
97
-
98
- &::before {
99
- transform: rotate(35deg);
100
- transform-origin: left top;
101
- }
102
-
103
- &::after {
104
- transform: rotate(-35deg);
105
- transform-origin: left bottom;
106
- }
107
- }
108
-
109
- &.uarr {
110
- transform: scale($navicon-toggled-size) rotate(90deg);
111
- }
112
-
113
- &.rarr .navicon {
114
-
115
- &::before {
116
- transform: translate3d(1em, 0, 0) rotate(-35deg);
117
- transform-origin: right top;
118
- }
119
-
120
- &::after {
121
- transform: translate3d(1em, 0, 0) rotate(35deg);
122
- transform-origin: right bottom;
123
- }
124
- }
125
- }
1
+ /* ==========================================================================
2
+ Navicons
3
+ ========================================================================== */
4
+
5
+ .navicon-button {
6
+ display: inline-block;
7
+ position: relative;
8
+ padding: 0.90625rem 0;
9
+ min-height: $site-image-height;
10
+ -webkit-transition: $navicon-duration / 2;
11
+ transition: $navicon-duration / 2;
12
+ border: 0;
13
+ outline: none;
14
+ background-color: $navicon-nav-bg-close;
15
+ line-height: 5 * $navicon-height;
16
+ cursor: pointer;
17
+ -moz-user-select: none;
18
+ -ms-user-select: none;
19
+ -webkit-user-select: none;
20
+ user-select: none;
21
+
22
+ &.open {
23
+ background-color: $navicon-nav-bg-open;
24
+ }
25
+
26
+ .navicon::before,
27
+ .navicon::after {
28
+ -webkit-transition-duration: $navicon-duration / 2;
29
+ transition-duration: $navicon-duration / 2;
30
+ }
31
+
32
+ &:hover {
33
+ -webkit-transition-duration: $navicon-duration;
34
+ transition-duration: $navicon-duration;
35
+
36
+ .navicon::before,
37
+ .navicon::after {
38
+ -webkit-transition-duration: $navicon-duration / 2;
39
+ transition-duration: $navicon-duration / 2;
40
+ }
41
+
42
+ .navicon::before {
43
+ top: (2.5 * $navicon-height);
44
+ }
45
+ .navicon::after {
46
+ top: (-2.5 * $navicon-height);
47
+ }
48
+ }
49
+ }
50
+
51
+ .navicon {
52
+ position: relative;
53
+ width: $navicon-width;
54
+ height: $navicon-height;
55
+ -webkit-transition-duration: $navicon-duration;
56
+ transition-duration: $navicon-duration;
57
+ border-radius: $navicon-width;
58
+ background: $navicon-content-bg;
59
+
60
+ &::before,
61
+ &::after {
62
+ display: block;
63
+ position: absolute;
64
+ width: $navicon-width;
65
+ height: $navicon-height;
66
+ -webkit-transition-duration: $navicon-duration $navicon-duration / 2;
67
+ transition-duration: $navicon-duration $navicon-duration / 2;
68
+ border-radius: $navicon-width;
69
+ background: $navicon-content-bg;
70
+ content: "";
71
+ }
72
+
73
+ &::before {
74
+ top: (2 * $navicon-height);
75
+ }
76
+ &::after {
77
+ top: (-2 * $navicon-height);
78
+ }
79
+ }
80
+
81
+ .open:not(.steps) .navicon::before,
82
+ .open:not(.steps) .navicon::after {
83
+ top: 0 !important;
84
+ }
85
+
86
+ .open {
87
+ -webkit-transform: scale($navicon-toggled-size);
88
+ -ms-transform: scale($navicon-toggled-size);
89
+ transform: scale($navicon-toggled-size);
90
+
91
+ .navicon::before,
92
+ .navicon::after {
93
+ -webkit-transition-duration: $navicon-duration;
94
+ transition-duration: $navicon-duration;
95
+ }
96
+
97
+ /* Arrows */
98
+ &.larr .navicon,
99
+ &.rarr .navicon,
100
+ &.uarr .navicon {
101
+ &::before,
102
+ &::after {
103
+ width: (0.6 * $navicon-width);
104
+ }
105
+
106
+ &::before {
107
+ -webkit-transform: rotate(35deg);
108
+ -ms-transform: rotate(35deg);
109
+ transform: rotate(35deg);
110
+ -webkit-transform-origin: left top;
111
+ -ms-transform-origin: left top;
112
+ transform-origin: left top;
113
+ }
114
+
115
+ &::after {
116
+ -webkit-transform: rotate(-35deg);
117
+ -ms-transform: rotate(-35deg);
118
+ transform: rotate(-35deg);
119
+ -webkit-transform-origin: left bottom;
120
+ -ms-transform-origin: left bottom;
121
+ transform-origin: left bottom;
122
+ }
123
+ }
124
+
125
+ &.uarr {
126
+ -webkit-transform: scale($navicon-toggled-size) rotate(90deg);
127
+ -ms-transform: scale($navicon-toggled-size) rotate(90deg);
128
+ transform: scale($navicon-toggled-size) rotate(90deg);
129
+ }
130
+
131
+ &.rarr .navicon {
132
+ &::before {
133
+ -webkit-transform: translate3d(1em, 0, 0) rotate(-35deg);
134
+ transform: translate3d(1em, 0, 0) rotate(-35deg);
135
+ -webkit-transform-origin: right top;
136
+ -ms-transform-origin: right top;
137
+ transform-origin: right top;
138
+ }
139
+
140
+ &::after {
141
+ -webkit-transform: translate3d(1em, 0, 0) rotate(35deg);
142
+ transform: translate3d(1em, 0, 0) rotate(35deg);
143
+ -webkit-transform-origin: right bottom;
144
+ -ms-transform-origin: right bottom;
145
+ transform-origin: right bottom;
146
+ }
147
+ }
148
+ }