dsm-portfolio-theme 0.1.4 → 0.3.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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -18
  3. data/_includes/breadcrumbs.html +11 -0
  4. data/_includes/competencies.html +28 -0
  5. data/_includes/navigation.html +42 -0
  6. data/_includes/notice.html +7 -0
  7. data/_includes/project-list.html +65 -21
  8. data/_includes/projects.html +32 -0
  9. data/_includes/scripts.html +5 -1
  10. data/_layouts/default.html +14 -16
  11. data/_layouts/examples/summary-example.md +17 -0
  12. data/_layouts/examples/vignette-example.md +8 -0
  13. data/_layouts/generate/about.html +180 -0
  14. data/_layouts/generate/api/documentation.html +313 -0
  15. data/_layouts/generate/api/v1/competencies.json +4 -0
  16. data/_layouts/generate/api/v1/portfolio.json +24 -0
  17. data/_layouts/generate/api/v1/progression.json +4 -0
  18. data/_layouts/generate/api/v1/projects.json +4 -0
  19. data/_layouts/generate/api/v1/summaries.json +14 -0
  20. data/_layouts/generate/api/v1/vignettes.json +14 -0
  21. data/_layouts/generate/competencies.md +9 -0
  22. data/_layouts/generate/progression.html +95 -0
  23. data/_layouts/generate/projects.md +9 -0
  24. data/_layouts/portfolio.html +28 -24
  25. data/_layouts/summary.html +67 -48
  26. data/_layouts/vignette.html +69 -34
  27. data/assets/scripts/vignette.js +204 -18
  28. data/assets/styles/main.scss +15 -29
  29. metadata +20 -23
  30. data/_includes/anaytics.html +0 -0
  31. data/_includes/footer.html +0 -0
  32. data/_includes/header.html +0 -13
  33. data/_layouts/project.html +0 -5
  34. data/_sass/atoms/_forms.scss +0 -0
  35. data/_sass/atoms/_images.scss +0 -0
  36. data/_sass/atoms/_links.scss +0 -0
  37. data/_sass/atoms/_lists.scss +0 -0
  38. data/_sass/atoms/_tables.scss +0 -0
  39. data/_sass/atoms/_typography.scss +0 -0
  40. data/_sass/base/_colours.scss +0 -0
  41. data/_sass/base/_fonts.scss +0 -0
  42. data/_sass/base/_normalize.scss +0 -0
  43. data/_sass/base/_spacing.scss +0 -0
  44. data/_sass/layouts/_evaluation.scss +0 -0
  45. data/_sass/layouts/_page.scss +0 -0
  46. data/_sass/layouts/_portfolio.scss +0 -0
  47. data/_sass/molecules/_footer.scss +0 -0
  48. data/_sass/molecules/_header.scss +0 -0
  49. data/_sass/organisms/_vignette-blocks.scss +0 -9
  50. data/_sass/organisms/_vignette-tabs.scss +0 -11
@@ -1,62 +1,81 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
- <div class="">
5
- <div class="">
6
- <a class="" href="{{ '/' | relative_url }}">Portfolio</a> &gt;
7
- {{ page.project_title }} &gt;
8
- {{ page.type | capitalize }}
9
- </div>
10
- <div class="">
4
+
5
+ {% include breadcrumbs.html %}
6
+ <div class="row">
7
+ <div class="col">
11
8
  <h1>
12
9
  {{ page.project_title }}
13
10
  </h1>
14
11
  </div>
15
12
  </div>
16
- <div class="">
17
- <div class="">
18
- <h3>
19
- Summary
20
- </h3>
21
- {{ content }}
13
+ <div class="row">
14
+ <div class="col">
15
+ <div class="row">
16
+ <div class="container">
17
+ <h3>
18
+ Summary
19
+ </h3>
20
+ {{ content }}
21
+ </div>
22
+ </div>
22
23
  </div>
23
- <div class="">
24
- <div class="">
25
- <h3>
26
- Length
27
- </h3>
28
- {{ page.length }}
24
+ <div class="col">
25
+ {% if page.length %}
26
+ <div class="row">
27
+ <div class="container mb-3">
28
+ <h3>
29
+ Length
30
+ </h3>
31
+ {{ page.length }}
32
+ </div>
29
33
  </div>
30
- <div class="">
31
- <h3>
32
- Tags
33
- </h3>
34
- <ul class="">
35
- {% for tag in page.tags %}
36
- <li>
37
- {{ tag }}
38
- </li>
39
- {% endfor %}
40
- </ul>
34
+ {% endif %}
35
+ {% if page.tags.size > 0 %}
36
+ <div class="row">
37
+ <div class="container">
38
+ <h3>
39
+ Tags
40
+ </h3>
41
+ <ul>
42
+ {% for tag in page.tags %}
43
+ <li>
44
+ {{ tag }}
45
+ </li>
46
+ {% endfor %}
47
+ </ul>
48
+ </div>
41
49
  </div>
42
- <div class="">
43
- <h3>
44
- External Resources
45
- </h3>
46
- <ul class="">
47
- {% for external_resource in page.external_resources %}
48
- <li>
49
- <a class="" href="{{ external_resource.url }}" target="_blank">
50
- {{ external_resource.title }}
51
- </a>
52
- </li>
53
- {% endfor %}
54
- </ul>
50
+ {% endif %}
51
+ {% if page.external_resources.size > 0 %}
52
+ <div class="row">
53
+ <div class="container">
54
+ <h3>
55
+ External Resources
56
+ </h3>
57
+ <ul>
58
+ {% for external_resource in page.external_resources %}
59
+ <li>
60
+ <a href="{{ external_resource.url }}" target="_blank">
61
+ {{ external_resource.title }}
62
+ </a>
63
+ </li>
64
+ {% endfor %}
65
+ </ul>
66
+ </div>
55
67
  </div>
68
+ {% endif %}
56
69
  </div>
57
- {% if page.notebook_file %}
58
- <div class="">
59
- {% jupyter_notebook site.notebook_base_path | append: page.notebook_file | relative_url %}
70
+ </div>
71
+ {% if page.notebook_file %}
72
+ <div class="row">
73
+ <div class="col">
74
+ <div class="row">
75
+ <div class="container">
76
+ {% jupyter_notebook site.notebook_base_path | append: page.notebook_file | relative_url %}
77
+ </div>
60
78
  </div>
61
- {% endif %}
62
- </div>
79
+ </div>
80
+ </div>
81
+ {% endif %}
@@ -2,43 +2,78 @@
2
2
  layout: default
3
3
  ---
4
4
 
5
- <!-- Vignette tabs -->
6
- <div class="o-vignette-tabs">
7
- <h3>
8
- Iterations
9
- </h3>
10
- <ul class="o-vignette-tabs__container">
11
- {% for vignette in page.vignettes %}
12
- {% if forloop.index == 1 %}
13
- {% assign classString = 'o-vignette-tabs__tab--active' %}
14
- {% else %}
15
- {% assign classString = '' %}
5
+ {% include breadcrumbs.html %}
6
+ {% assign linked_project = site.data.projects | where:"id", page.project_code | first %}
7
+ {% if page.project_code and linked_project %}
8
+ <div class="container mb-4">
9
+ <p class="lead">
10
+ Linked to academic project <a href="{{ '/projects#' | append: page.project_code | relative_url }}">{{ page.project_code }}</a>
11
+ {% if linked_project.deadline %}
12
+ with a deadline of {{ linked_project.deadline }}
13
+ {% endif %}
14
+ </p>
15
+ {% if linked_project.description %}
16
+ <em>"{{ linked_project.description }}"</em>
16
17
  {% endif %}
17
- <li id="tab-{{ forloop.index | minus: 1 }}" class="o-vignette-tabs__tab {{ classString }}" onclick="javascript:$vignette.updateVignette({{ forloop.index | minus: 1 }})">
18
- {{ forloop.index }}
19
- </li>
20
- {% endfor %}
21
- </ul>
18
+ </div>
19
+ {% else %}
20
+ <div class="alert alert-warning alert-dismissible fade show" role="alert">
21
+ <strong>There is no academic project linked.</strong> This is assumed to be a personal project. See <a href="{{ '/about' | relative_url }}">about</a> for more information.
22
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
23
+ <span aria-hidden="true">&times;</span>
24
+ </button>
25
+ </div>
26
+ {% endif %}
27
+ <div class="row">
28
+ <div class="col">
29
+ <div class="table-responsive">
30
+ <table class="table table-hover" id="table">
31
+ <!-- Dynamically generated content -->
32
+ </table>
33
+ </div>
34
+ </div>
22
35
  </div>
23
-
24
- <!-- Competencies block -->
25
- <div class="o-vignette-table">
26
- <h3>
27
- Competencies
28
- </h3>
29
- <table id="table">
30
- <!-- Dynamically generated content -->
31
- </table>
36
+ <div class="row">
37
+ <div class="col">
38
+ {{ content }}
39
+ </div>
32
40
  </div>
33
-
34
- <!-- Vignette content blocks -->
35
- <div class="o-vignette-blocks">
36
- {{ content }}
41
+ <div class="row mt-4">
42
+ <div class="col">
43
+ <nav aria-label="...">
44
+ <ul class="pagination">
45
+ <li id="tab-previous" class="page-item disabled">
46
+ <a class="page-link" onclick="javascript:$vignette.previousVignette()">Previous</a>
47
+ </li>
48
+ {% for vignette in page.vignettes %}
49
+ {% if forloop.index == 1 %}
50
+ {% assign classString = 'page-item active' %}
51
+ {% else %}
52
+ {% assign classString = 'page-item' %}
53
+ {% endif %}
54
+ <li id="tab-{{ forloop.index | minus: 1 }}" class="{{ classString }}">
55
+ <a class="page-link" onclick="javascript:$vignette.updateVignette({{ forloop.index | minus: 1 }})">
56
+ {{ forloop.index }}
57
+ </a>
58
+ </li>
59
+ {% endfor %}
60
+ {% if page.vignettes.size > 0 %}
61
+ {% assign classString = 'page-item' %}
62
+ {% else %}
63
+ {% assign classString = 'page-item disabled' %}
64
+ {% endif %}
65
+ <li id="tab-next" class="{{ classString }}">
66
+ <a class="page-link" onclick="javascript:$vignette.nextVignette()">Next</a>
67
+ </li>
68
+ </ul>
69
+ </nav>
70
+ </div>
37
71
  </div>
38
-
39
- <!-- Inject data variables into page context for JavaScript -->
40
72
  <script>
41
- // Store raw data in ubiquitous object.
42
- this.window['vignettes'] = {{ page.vignettes | jsonify }};
43
- this.window['targets'] = {{ page.targets | jsonify }};
73
+ // Inject data variables into page context for JavaScript.
74
+ this.window['vignette_vignettes'] = {{ page.vignettes | jsonify }};
75
+ this.window['vignette_targets'] = {{ page.targets | jsonify }};
76
+ this.window['vignette_c_url'] = "{{ '/competencies' | relative_url }}";
77
+ this.window['vignette_sort_competencies'] = true;
78
+ this.window['vignette_mark_table'] = true;
44
79
  </script>
@@ -12,10 +12,14 @@ $vignette = (function () {
12
12
  var _targetsHit = [];
13
13
  var _index = 0;
14
14
  var _tableData = [];
15
+ var _cUrl = '/competencies';
16
+ var _markTable = false;
15
17
 
16
18
  // UI elements
17
19
  var _blocks = [];
18
20
  var _tabs = [];
21
+ var _next = {};
22
+ var _previous = {};
19
23
  var _table = undefined;
20
24
 
21
25
  /**
@@ -26,8 +30,10 @@ $vignette = (function () {
26
30
  */
27
31
  function initialize() {
28
32
  // Presume access to page variables.
29
- _vignettes = window['vignettes'];
30
- _targets = window['targets'];
33
+ _vignettes = window['vignette_vignettes'];
34
+ _targets = window['vignette_targets'];
35
+ _cUrl = window['vignette_c_url'];
36
+ _markTable = window['vignette_mark_table'];
31
37
 
32
38
  // Defensive checking.
33
39
  if(!_vignettes) {
@@ -59,8 +65,11 @@ $vignette = (function () {
59
65
  // Expose functions.
60
66
  return {
61
67
  dump: _dump,
68
+ combine: _combine,
62
69
  updateVignette: _updateVignette,
63
- combine: _combine
70
+ nextVignette: _nextVignette,
71
+ previousVignette: _previousVignette,
72
+ sort: _sortCurrentVignette
64
73
  };
65
74
  }
66
75
 
@@ -69,12 +78,18 @@ $vignette = (function () {
69
78
  * for manipulation.
70
79
  */
71
80
  function registerUI() {
72
- for(var i = 0; i < vignettes.length; i++) {
81
+ // Get omnipresent pagination components.
82
+ _previous = document.getElementById('tab-previous');
83
+ _next = document.getElementById('tab-next');
84
+
85
+ // Get all dynamic elements.
86
+ for(var i = 0; i < _vignettes.length; i++) {
73
87
  // Get tab and content block elements.
74
88
  _blocks.push(document.getElementById('block-' + i.toString()));
75
89
  _tabs.push(document.getElementById('tab-' + i.toString()));
76
90
  }
77
91
 
92
+ // Get table.
78
93
  _table = document.getElementById('table');
79
94
  }
80
95
 
@@ -86,30 +101,56 @@ $vignette = (function () {
86
101
  * @param {*} index
87
102
  * @returns
88
103
  */
89
- function _updateVignette(index) {
104
+ function _updateVignette(index, override = false) {
90
105
  // Redundancy check.
91
- if(_index === index) {
106
+ if(_index === index && !override) {
92
107
  return;
93
108
  }
94
109
 
110
+ let activeClass = 'active';
111
+
95
112
  // Update previous tab element.
96
- _tabs[_index].classList.remove('o-vignette-tabs__tab--active');
113
+ _tabs[_index].classList.remove(activeClass);
97
114
 
98
115
  // Update previous block element.
99
- _blocks[_index].classList.remove('o-vignette-blocks__block--active');
116
+ _blocks[_index].classList.remove(activeClass);
117
+
118
+ if(index === 0) {
119
+ _previous.classList.add('disabled');
120
+ } else {
121
+ _previous.classList.remove('disabled');
122
+ }
123
+
124
+ if(index === _vignettes.length - 1) {
125
+ _next.classList.add('disabled');
126
+ } else {
127
+ _next.classList.remove('disabled');
128
+ }
100
129
 
101
130
  // Update data model.
102
131
  _index = index;
103
132
 
104
133
  // Update tab element.
105
- _tabs[_index].classList.add('o-vignette-tabs__tab--active');
134
+ _tabs[_index].classList.add(activeClass);
106
135
 
107
136
  // Update block element.
108
- _blocks[_index].classList.add('o-vignette-blocks__block--active');
137
+ _blocks[_index].classList.add(activeClass);
109
138
 
110
139
  // Update competency table.
111
140
  _updateTable(index);
112
141
  }
142
+
143
+ function _nextVignette() {
144
+ if(_index != _vignettes.length - 1) {
145
+ _updateVignette(_index + 1);
146
+ }
147
+ }
148
+
149
+ function _previousVignette() {
150
+ if(_index != 0) {
151
+ _updateVignette(_index - 1);
152
+ }
153
+ }
113
154
 
114
155
  /**
115
156
  * Update the skill table based
@@ -124,6 +165,10 @@ $vignette = (function () {
124
165
  _table.innerHTML = _tableData[index];
125
166
  }
126
167
 
168
+ function _sortTable() {
169
+ // Perform sort on current table using key (column).
170
+ }
171
+
127
172
  // Define utility functions.
128
173
 
129
174
  /**
@@ -149,14 +194,36 @@ $vignette = (function () {
149
194
  }
150
195
  }
151
196
 
152
- function _tableify(index) {
197
+ function _sortCurrentVignette(sortKey, ascending) {
198
+ // Sort the table.
199
+ for(var i = 0; i < _vignettes.length; i++) {
200
+ // Recompute table data ahead of time.
201
+ _tableData[i] = _tableify(i, sortKey, ascending);
202
+ }
203
+
204
+ // Update table HTML.
205
+ _updateVignette(_index, true);
206
+ }
207
+
208
+ function _tableify(index, sortKey = 'competencyId', ascending = true) {
153
209
  // Build HTML for all unique skills...
210
+ var tableRowsData = [];
154
211
  var tableRowsHTML = [];
155
212
 
156
213
  for(let competency of _all) {
157
214
  // Build table row data.
158
215
  var tableRowData = {
159
216
  competencyId: competency,
217
+ linked: (linked => {
218
+ for(let v of _vignettes) {
219
+ for(let c of v['competencies']) {
220
+ if(c['id'] === competency) {
221
+ return c['linked'];
222
+ }
223
+ }
224
+ }
225
+ return false;
226
+ })(),
160
227
  target: _targets.indexOf(competency) != -1,
161
228
  count: (total => {
162
229
  for(let c of _vignettes[index]['competencies']) {
@@ -166,22 +233,116 @@ $vignette = (function () {
166
233
  }
167
234
  return 0;
168
235
  })(),
169
- removed: _indexDiffWithType(competency, index, 'removed'),
236
+ removed: Math.abs(_indexDiffWithType(competency, index, 'removed')),
170
237
  unchanged: _indexDiffWithType(competency, index, 'unchanged'),
171
238
  added: _indexDiffWithType(competency, index, 'added')
172
239
  };
240
+ tableRowsData.push(tableRowData);
241
+ }
242
+
243
+ // Sort rows by Id (default).
244
+ tableRowsData.sort(function(a, b){
245
+ var nameA = a[sortKey], nameB = b[sortKey];
246
+ if(nameA < nameB) {
247
+ if(ascending) {
248
+ return -1;
249
+ }
250
+ else {
251
+ return 1;
252
+ }
253
+ }
254
+ if(nameA > nameB) {
255
+ if(ascending) {
256
+ return 1;
257
+ } else {
258
+ return -1;
259
+ }
260
+ }
261
+ return 0;
262
+ });
263
+
264
+ for(let tableRowData of tableRowsData) {
173
265
  // Convert table row data into HTML.
174
266
  tableRowsHTML.push(_tableRowDataToHTML(tableRowData));
175
267
  }
176
268
 
177
269
  // Create new table.
178
- var headerRow = '<tr id="table-header"><th>Competency</th>';
270
+ var headerRow = '<tr id="table-header"><th>Competency ';
271
+ if(sortKey === 'competencyId') {
272
+ if(ascending) {
273
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'competencyId\', false)"></i>';
274
+ } else {
275
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'competencyId\', true)"></i>'
276
+ }
277
+ } else {
278
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'competencyId\', false)"></i>';
279
+ }
280
+ headerRow += '</th>';
281
+
179
282
  if(_targets) {
180
- headerRow += '<th>Target</th>'
283
+ headerRow += '<th>Target ';
284
+ if(sortKey === 'target') {
285
+ if(ascending) {
286
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'target\', false)"></i>';
287
+ } else {
288
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'target\', true)"></i>'
289
+ }
290
+ } else {
291
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'target\', false)"></i>';
292
+ }
293
+ headerRow += '</th>';
294
+ }
295
+
296
+ headerRow += '<th>Count ';
297
+ if(sortKey === 'count') {
298
+ if(ascending) {
299
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'count\', false)"></i>';
300
+ } else {
301
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'count\', true)"></i>'
302
+ }
303
+ } else {
304
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'count\', false)"></i>';
181
305
  }
182
- headerRow += '<th>Count</th><th>Removed</th><th>Unchanged</th><th>Added</th></tr>';
306
+ headerRow += '</th>';
307
+
308
+ headerRow += '<th>Removed ';
309
+ if(sortKey === 'removed') {
310
+ if(ascending) {
311
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'removed\', false)"></i>';
312
+ } else {
313
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'removed\', true)"></i>'
314
+ }
315
+ } else {
316
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'removed\', false)"></i>';
317
+ }
318
+ headerRow += '</th>';
319
+
320
+ headerRow += '<th>Unchanged ';
321
+ if(sortKey === 'unchanged') {
322
+ if(ascending) {
323
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'unchanged\', false)"></i>';
324
+ } else {
325
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'unchanged\', true)"></i>'
326
+ }
327
+ } else {
328
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'unchanged\', false)"></i>';
329
+ }
330
+ headerRow += '</th>';
331
+
332
+ headerRow += '<th>Added ';
333
+ if(sortKey === 'added') {
334
+ if(ascending) {
335
+ headerRow += '<i class="fas fa-sort-down" onclick="javascript:$vignette.sort(\'added\', false)"></i>';
336
+ } else {
337
+ headerRow += '<i class="fas fa-sort-up" onclick="javascript:$vignette.sort(\'added\', true)"></i>'
338
+ }
339
+ } else {
340
+ headerRow += '<i class="fas fa-sort" onclick="javascript:$vignette.sort(\'added\', false)"></i>';
341
+ }
342
+ headerRow += '</th></tr>';
183
343
 
184
344
  var finalHTML = headerRow;
345
+
185
346
  for(let row of tableRowsHTML) {
186
347
  finalHTML += row;
187
348
  }
@@ -213,9 +374,26 @@ $vignette = (function () {
213
374
  * @param {*} tableRowData HTML to inject.
214
375
  */
215
376
  function _tableRowDataToHTML(tableRowData) {
216
- var encoded = '<tr><td><span class="a-pill">' +
377
+ var encoded = '<tr';
378
+
379
+ if(_markTable && tableRowData.target && tableRowData.count > 0) {
380
+ encoded += ' class="table-success"';
381
+ }
382
+
383
+ encoded += '><td>';
384
+ if(tableRowData['linked']) {
385
+ encoded += '<a href="' +
386
+ _cUrl +
387
+ '#' +
388
+ tableRowData['competencyId'] +
389
+ '">' +
390
+ tableRowData['competencyId'] +
391
+ '</a></td><td>';
392
+ } else {
393
+ encoded += '<span>' +
217
394
  tableRowData['competencyId'] +
218
395
  '</span></td><td>';
396
+ }
219
397
  if(_targets) {
220
398
  if(tableRowData['target']) {
221
399
  encoded += 'Yes';
@@ -225,11 +403,19 @@ $vignette = (function () {
225
403
  encoded += '</td><td>';
226
404
  }
227
405
  encoded += tableRowData['count'] +
228
- '</td><td>' +
406
+ '</td><td';
407
+ if(_markTable && tableRowData['removed'] < 0) {
408
+ encoded += ' class="table-danger"';
409
+ }
410
+ encoded += '>' +
229
411
  tableRowData['removed'] +
230
412
  '</td><td>' +
231
413
  tableRowData['unchanged'] +
232
- '</td><td>' +
414
+ '</td><td';
415
+ if(_markTable && tableRowData['added'] > 0) {
416
+ encoded += ' class="table-success"';
417
+ }
418
+ encoded += '>' +
233
419
  tableRowData['added'] +
234
420
  '</td></tr>';
235
421
  return encoded;
@@ -1,38 +1,24 @@
1
1
  ---
2
2
  # Front matter hyphens tell Jekyll pre-processor this is the main SCSS file.
3
3
  ---
4
-
5
4
  /***
6
- * This file imports all partials required by the site.
7
- * The design philosphy employed is 'atomic design'.
8
- *
9
- * Jekyll does not natively support 'globbing', so paths
10
- * to new files must be specified manually.
5
+ * Override default library styles.
11
6
  */
12
7
 
13
- // Base styles.
14
- @import "base/colours";
15
- @import "base/fonts";
16
- @import "base/normalize";
17
- @import "base/spacing";
18
-
19
- // Atoms.
20
- @import "atoms/forms";
21
- @import "atoms/images";
22
- @import "atoms/links";
23
- @import "atoms/lists";
24
- @import "atoms/tables";
25
- @import "atoms/typography";
8
+ .vignette-block {
9
+ display: none;
26
10
 
27
- // Molecules.
28
- @import "molecules/header";
29
- @import "molecules/footer";
11
+ &.active {
12
+ display: block;
13
+ }
14
+ }
30
15
 
31
- // Organisms.
32
- @import "organisms/vignette-blocks";
33
- @import "organisms/vignette-tabs";
16
+ tr:target {
17
+ background-color: #dee2e6;
18
+ }
34
19
 
35
- // Layouts.
36
- @import "layouts/evaluation";
37
- @import "layouts/page";
38
- @import "layouts/portfolio";
20
+ .fa-sort,
21
+ .fa-sort-up,
22
+ .fa-sort-down {
23
+ cursor: pointer;
24
+ }