bas-jekyll-theme-bas-style-kit 0.12.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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +278 -0
  3. data/CONTRIBUTING.md +15 -0
  4. data/LICENSE.md +8 -0
  5. data/README.md +774 -0
  6. data/_config.yml +90 -0
  7. data/_data/bas-style-kit/bsk-css.yml +8 -0
  8. data/_data/bas-style-kit/bsk-js.yml +9 -0
  9. data/_data/bas-style-kit/bsk-vars.yml +3 -0
  10. data/_data/menus.yml +19 -0
  11. data/_includes/bas-style-kit/body.html +3 -0
  12. data/_includes/bas-style-kit/bsk--pattern--item-type-header.html +7 -0
  13. data/_includes/bas-style-kit/bsk--pattern--orcid-id.html +1 -0
  14. data/_includes/bas-style-kit/bsk-body--analytics-script.html +9 -0
  15. data/_includes/bas-style-kit/bsk-body--back-to-top.html +2 -0
  16. data/_includes/bas-style-kit/bsk-body--core-scripts.html +11 -0
  17. data/_includes/bas-style-kit/bsk-body--page-header.html +7 -0
  18. data/_includes/bas-style-kit/bsk-body--standard-footer.html +26 -0
  19. data/_includes/bas-style-kit/bsk-body--standard-header.html +17 -0
  20. data/_includes/bas-style-kit/bsk-body--standard.html +15 -0
  21. data/_includes/bas-style-kit/bsk-body--toc.html +1 -0
  22. data/_includes/bas-style-kit/bsk-body.html +9 -0
  23. data/_includes/bas-style-kit/bsk-footer--back-to-top.html +3 -0
  24. data/_includes/bas-style-kit/bsk-footer--contents.html +0 -0
  25. data/_includes/bas-style-kit/bsk-footer--governance.html +5 -0
  26. data/_includes/bas-style-kit/bsk-footer--is-something-wrong.html +3 -0
  27. data/_includes/bas-style-kit/bsk-footer--legal-policies.html +8 -0
  28. data/_includes/bas-style-kit/bsk-head--core-meta.html +4 -0
  29. data/_includes/bas-style-kit/bsk-head--core-styles.html +9 -0
  30. data/_includes/bas-style-kit/bsk-head--favicon.html +12 -0
  31. data/_includes/bas-style-kit/bsk-head--seo-meta.html +4 -0
  32. data/_includes/bas-style-kit/bsk-head.html +6 -0
  33. data/_includes/bas-style-kit/bsk-header--cookie-notice.html +9 -0
  34. data/_includes/bas-style-kit/bsk-header--development-phase.html +15 -0
  35. data/_includes/bas-style-kit/bsk-header--site-navigation.html +6 -0
  36. data/_includes/bas-style-kit/bsk-nav--collapse.html +4 -0
  37. data/_includes/bas-style-kit/bsk-nav--header.html +4 -0
  38. data/_includes/bas-style-kit/bsk-nav-collapse--primary-navigation.html +32 -0
  39. data/_includes/bas-style-kit/bsk-nav-collapse--secondary-navigation.html +20 -0
  40. data/_includes/bas-style-kit/bsk-nav-header--brand.html +8 -0
  41. data/_includes/bas-style-kit/bsk-nav-header--collapse-trigger.html +3 -0
  42. data/_includes/bas-style-kit/head.html +1 -0
  43. data/_includes/bas-style-kit/toc.html +85 -0
  44. data/_layouts/bas-style-kit/blank.html +4 -0
  45. data/_layouts/bas-style-kit/bsk--base.html +8 -0
  46. data/_layouts/bas-style-kit/bsk--standard-page.html +22 -0
  47. data/_layouts/bas-style-kit/bsk--standard.html +8 -0
  48. data/_layouts/bas-style-kit/html.html +8 -0
  49. data/_layouts/views/bas-style-kit/bsk--page-not-found.html +10 -0
  50. data/_layouts/views/bas-style-kit/bsk--problem-with-service.html +10 -0
  51. data/_layouts/views/bas-style-kit/bsk--service-unavailable.html +20 -0
  52. data/_layouts/views/bas-style-kit/bsk--sign-in-microsoft.html +21 -0
  53. data/_layouts/views/bas-style-kit/bsk--start.html +9 -0
  54. data/_sass/main.scss +1 -0
  55. data/assets/empty +1 -0
  56. data/screenshot.png +0 -0
  57. metadata +197 -0
data/README.md ADDED
@@ -0,0 +1,774 @@
1
+ # BAS Style Kit Jekyll Theme
2
+
3
+ Jekyll theme for the [BAS Style Kit](https://style-kit.web.bas.ac.uk).
4
+
5
+ ![Screenshot of theme](screenshot.png)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your Jekyll site's `Gemfile`:
10
+
11
+ ```ruby
12
+ gem "jekyll-theme-bas-style-kit"
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ ```shell
18
+ $ bundle
19
+ ```
20
+
21
+ Or install it yourself as:
22
+
23
+ ```shell
24
+ $ gem install jekyll-theme-bas-style-kit
25
+ ```
26
+
27
+ Finally, to use the theme, add this line to your `_config.yml` file:
28
+
29
+ ```yaml
30
+ theme: jekyll-theme-bas-style-kit
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ Refer to [Jekyll's theme documentation](https://jekyllrb.com/docs/themes/) for general information.
36
+
37
+ ### Quick start
38
+
39
+ Add these lines to your `_config.yml` file:
40
+
41
+ ```yml
42
+ bas_style_kit_jekyll_theme:
43
+ attributes:
44
+ head_title:
45
+ default: 'Example service'
46
+ appended: ' - Example service'
47
+ head_description: 'Service to act as an example'
48
+ site_brand:
49
+ text: 'Example service'
50
+ href: '/'
51
+ site_development_phase: 'beta'
52
+ site_feedback_href: '/feedback'
53
+ legal_policies:
54
+ cookies_href: '/legal/cookies'
55
+ copyright_href: '/legal/copyright'
56
+ privacy_href: '/legal/privacy'
57
+ # Optional - add a custom CSS file with a relative URL
58
+ site_styles:
59
+ -
60
+ href: '/css/main.css'
61
+ type: 'local'
62
+ # Optional - add a custom JS file with a SRI value
63
+ site_scripts:
64
+ -
65
+ href: 'https://example.com/js/example.js'
66
+ integrity: 'abc123'
67
+ type: 'remote'
68
+ # Optional - enable web analytics
69
+ site_analytics:
70
+ id: '1234'
71
+ # Optional - choose between the `bsk-container` and `bsk-container-fluid` layout container
72
+ container: 'bsk-container'
73
+ ```
74
+
75
+ To optionally add navigation menu items, add these lines to `_data/menus.yml`:
76
+
77
+ ```
78
+ site_navigation_primary:
79
+ - url: '#'
80
+ title: 'Item'
81
+
82
+ site_navigation_launcher:
83
+ - url: 'https://www.bas.ac.uk'
84
+ title: BAS Home
85
+ weight: 1
86
+ - url: 'https://example.com'
87
+ title: Related service
88
+ weight: 3
89
+ ```
90
+
91
+ #### Standard page
92
+
93
+ To create a page in an application or website based on the standard BAS page structure, create an application layout
94
+ (e.g. `_layouts/app.html`) with the following:
95
+
96
+ ```
97
+ ---
98
+ layout: layouts/bas-style-kit/bsk--standard.html
99
+ ---
100
+ ```
101
+
102
+ To base all pages this layout add these lines to your `_config.yml` file:
103
+
104
+ ```yml
105
+ defaults:
106
+ -
107
+ scope:
108
+ # An empty string here means all files in the project
109
+ path: ""
110
+ values:
111
+ layout: "app"
112
+ ```
113
+
114
+ #### Use a page pattern
115
+
116
+ To create a page in an application or website based on a [page pattern](#page-patterns), create a view
117
+ (e.g. `views/error.pug`) with the following:
118
+
119
+ ```html
120
+ ---
121
+ layout: views/bas-style-kit/[page-pattern]
122
+ ---
123
+ ```
124
+
125
+ Where `[page-pattern]` in the extends value is the name of a page pattern, for example:
126
+
127
+ ```html
128
+ ---
129
+ layout: views/bas-style-kit/bsk--page-not-found
130
+ ---
131
+ ```
132
+
133
+ #### Use a component pattern
134
+
135
+ To include a [component pattern](#component-pattern), call the relevant include with an required parameters.
136
+ For example:
137
+
138
+ ```
139
+ {% include bas-style-kit/bsk--pattern--item-type-header.html item_type="Item type" item_title="Item title" %}
140
+ ```
141
+
142
+ ### Patterns
143
+
144
+ Patterns are used to define preferred ways to pass information to users, and ask information from users, in a consistent
145
+ way. See the [Style Kit documentation](https://style-kit.web.bas.ac.uk/patterns) for more information.
146
+
147
+ There are two types of pattern used in the Style Kit and these templates:
148
+
149
+ * [pages](#page-patterns) - standalone pages designed to be used without customisation using [Views](#views)
150
+ * [components](#component-patterns) - inline elements designed to be used without customisation using
151
+ [Includes](#includes)
152
+
153
+ #### Page patterns
154
+
155
+ These template include [Views](#views) for all page patterns. In most cases all variants of a pattern use the same view,
156
+ but with different options using variables and/or page content.
157
+
158
+ See the [Style Kit documentation](https://style-kit.web.bas.ac.uk) for general information on using these patterns.
159
+
160
+ ##### 'page not found' pattern
161
+
162
+ No configuration options.
163
+
164
+ ##### 'service unavailable' pattern
165
+
166
+ Use page content for:
167
+
168
+ * contact information
169
+
170
+ Optionally, use page content for:
171
+
172
+ * details of alternative services
173
+
174
+ Optionally, use a `pattern_availability` page variable for setting the availability line:
175
+
176
+ * a value of `closed` will show conventional text
177
+ * a value of `replaced` will show conventional text
178
+ * no value will show conventional text
179
+
180
+ ##### 'problem with this service' pattern
181
+
182
+ Use page content for:
183
+
184
+ * contact information
185
+
186
+ Optionally, use page content for:
187
+
188
+ * details of alternative services
189
+
190
+ ##### 'start' pattern
191
+
192
+ Use page content for:
193
+
194
+ * a list of needs the service caters for, as a list wrapped in a section with the `bsk-service-uses` class [1]
195
+ * a call to action, as a link wrapped in a section with the `bsk-call-to-action` class [2]
196
+ * if the call to action should be a 'Sign in to start' button use [3]
197
+ * contact information, as text wrapped in a section with the `bsk-more-information` class [4]
198
+
199
+ Optionally, use page content for:
200
+
201
+ * 'before you start' information, wrapped in a section with the `bsk-before-you-start` class [5]
202
+
203
+ **Note:** If not already included via a layout, include
204
+ [Font Awesome](https://style-kit.web.bas.ac.uk/core/icons/#font-awesome) to show the ORCID symbol.
205
+
206
+ [1]
207
+
208
+ ```html
209
+ <section class="bsk-service-uses">
210
+ <h2 class="bsk-h3">Use this service to:</h2>
211
+ <ul>
212
+ <li>access some information</li>
213
+ <li>perform an action</li>
214
+ <li>etc.</li>
215
+ </ul>
216
+ </section>
217
+ ```
218
+
219
+ [2]
220
+
221
+ ```html
222
+ <section class="bsk-call-to-action">
223
+ <a class="bsk-btn bsk-btn-primary bsk-btn-lg" href="#">
224
+ Start Now
225
+ <i class="fa-fw fas fa-chevron-right"></i>
226
+ </a>
227
+ </section>
228
+ ```
229
+
230
+ [3]
231
+
232
+ ```html
233
+ <section class="bsk-call-to-action">
234
+ <button class="bsk-btn bsk-btn-ms-account bsk-btn-lg">
235
+ <object class="bsk-ms-pictogram" type="image/svg+xml" data="https://cdn.web.bas.ac.uk/bas-style-kit/{{ site.data.bas-style-kit.bsk-vars.bsk_version }}/img/logos-symbols/ms-pictogram.svg"></object>
236
+ Sign in to start
237
+ <i class="fa-fw fas fa-chevron-right"></i>
238
+ </button>
239
+ <p class="bsk-sign-in-hint bsk-text-muted">Use the account you use for your NERC email to sign into this service.</p>
240
+ </section>
241
+ ```
242
+
243
+ [4]
244
+
245
+ ```html
246
+ <section class="bsk-more-information">
247
+ <h2 class="bsk-h3">More information</h2>
248
+ <p>Contact the <a href="#">Sample Team</a> for information and help on how to use [website or application].</p>
249
+ </section>
250
+ ```
251
+
252
+ [5]
253
+
254
+ ```html
255
+ <section class="bsk-before-you-start">
256
+ <h2 class="bsk-h3">Before you start</h2>
257
+ <p>You need some information to use this service.</p>
258
+ </section>
259
+ ```
260
+
261
+ ##### 'sign in' pattern
262
+
263
+ Use page content for:
264
+
265
+ * a call to action, as a page variable [1]
266
+
267
+ ```html
268
+ ---
269
+ layout: views/bas-style-kit/bsk--sign-in-microsoft
270
+
271
+ call_to_action_href: #
272
+ ---
273
+ ```
274
+
275
+ #### Component patterns
276
+
277
+ These templates use includes for all component patterns. Include parameters are used for customising each instance of
278
+ the component.
279
+
280
+ See the [Style Kit documentation](https://style-kit.web.bas.ac.uk) for general information on using these patterns.
281
+
282
+ ##### Item type header pattern
283
+
284
+ Parameters:
285
+
286
+ * `item_type` the type or kind of thing the item is, e.g. if the item is a person, it's type is 'person'
287
+ * `item_title` a label specific to the item, e.g. if the item is a person their name
288
+
289
+ ```html
290
+ {% include bas-style-kit/bsk--pattern--item-type-header.html item_type="Item type" item_title="Item title" %}
291
+ ```
292
+
293
+ ##### ORCID iD pattern
294
+
295
+ Parameters:
296
+
297
+ * `orcid_id` the ORCID iD of an individual as a URL
298
+
299
+ ```
300
+ {% include bas-style-kit/bsk--pattern--orcid-id.html orcid_id="https://sandbox.orcid.org/0000-0001-8373-6934" %}
301
+ ```
302
+
303
+ **Note:** If not already included via a layout, include
304
+ [Font Awesome](https://style-kit.web.bas.ac.uk/core/icons/#font-awesome) to show the ORCID symbol.
305
+
306
+ ### Using custom CSS/JS
307
+
308
+ Support is provided for loading additional CSS an/or JavaScript resources, such as application or website specific
309
+ styling or interactivity, either as references to files.
310
+
311
+ This support is available in all layouts which inherit from the `bsk--basic.html` layout.
312
+
313
+ For file resources, variables are provided for adding URLs and optional SRI values. Files will be included in the
314
+ relevant block automatically, after the Style Kit's own resources if a Style Kit layout is used.
315
+
316
+ * CSS resources are outputted at the end of the `<head>` element
317
+ * JS resources are outputted at the end of the `<body>` element
318
+
319
+ Add these lines to your `_config.yml` file:
320
+
321
+ ```yml
322
+ bas_style_kit_jekyll_theme:
323
+ attributes:
324
+ site_styles:
325
+ -
326
+ href: '/css/main.css'
327
+ type: 'local'
328
+ site_scripts:
329
+ -
330
+ href: 'https://example.com/js/example.js'
331
+ integrity: 'abc123'
332
+ type: 'remote'
333
+ ```
334
+
335
+ #### Resource objects
336
+
337
+ Resource objects have the following properties:
338
+
339
+ | Property | Data Type | Required | Allowed Values | Example Value |
340
+ | ----------- | --------- | -------- | ------------------- | ------------------------------------------------------ |
341
+ | `href` | String | Yes | Any URL | `/css/app.css` / `https://example.com/js/app.js` |
342
+ | `type` | String | Yes | `local` or `remote` | `local` |
343
+ | `integrity` | String | No | Any SRI value | `sha256-ClILH8AIH4CkAybtlKhzqqQUYR4eSDiNTK5LIWfF4qQ=` |
344
+
345
+ The `integrity` property is used to specify a
346
+ [Subresource Integrity (SRI)](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) value for
347
+ a resource. If specified an `integrity` attribute and will be added to the generated markup. A `crossorigin`
348
+ attribute will also be added for
349
+ [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) support with a
350
+ hard-coded, `anonymous`, value.
351
+
352
+ ### Navigation menu items
353
+
354
+ When using the `bsk--standard.html` layout, a [navbar](https://style-kit.web.bas.ac.uk/components/navbar/) is included
355
+ as part of the 'standard header', which consists of a cookie banner, navbar and site development phase banner.
356
+
357
+ This navbar consists of three menus (and other elements, documented elsewhere):
358
+
359
+ 1. a primary navigation menu - aligned left, after [brand elements](#navigation-branding)
360
+ 2. a secondary navigation menu - aligned right, before the launcher menu
361
+ 3. a navigation launcher menu - aligned right, after the secondary navigation menu
362
+
363
+ The navigation launcher is a restricted menu, used to link to other BAS websites and applications. By default it
364
+ contains links to the [BAS public website](https://www.bas.ac.uk) and the [BAS data catalogue](https://data.bas.ac.uk).
365
+ Other websites and applications can be added as well where relevant.
366
+
367
+ The primary and secondary navigation menu's support:
368
+
369
+ * [navbar items](https://style-kit.web.bas.ac.uk/components/navbar/#item)
370
+ * [navbar drop-down menus](https://style-kit.web.bas.ac.uk/components/navbar/#drop-down-menus)
371
+ * [navbar drop-down menu items](https://style-kit.web.bas.ac.uk/components/navbar/#drop-down-menus)
372
+
373
+ The navigation launcher menu, which is implemented as a drop-down menu, supports:
374
+
375
+ * [navbar drop-down menu items](https://style-kit.web.bas.ac.uk/components/navbar/#drop-down-menus)
376
+
377
+ All navigation menus are implemented using the [Jekyll menus](https://github.com/forestryio/jekyll-menus) plugin.
378
+
379
+ * primary navigation menu items should be added to the `site_navigation_primary` menu
380
+ * secondary navigation menu items should be added to the `site_navigation_secondary` menu
381
+ * navigation launcher menu items should be added to the `site_navigation_launcher` menu
382
+
383
+ **Note:** Menu items are only recursed once, deeper objects will be ignored.
384
+
385
+ ### Navigation branding
386
+
387
+ [Navbars](https://style-kit.web.bas.ac.uk/components/navbar/) are also used to display the name/identity of a website
388
+ or application, to remind users where they are. These elements are referred to as 'brand' elements within the Style Kit.
389
+
390
+ In the 'standard header', navbar brand elements are shown on the far left.
391
+
392
+ Supported brand elements:
393
+
394
+ * [brand text](https://style-kit.web.bas.ac.uk/components/navbar/#brand-text) - set using the
395
+ `bas_style_kit_jekyll_theme.attributes.site_brand.text` config variable
396
+ * [brand image](https://style-kit.web.bas.ac.uk/components/navbar/#brand-image) - set using the
397
+ `bas_style_kit_jekyll_theme.attributes.site_brand.img` config variable
398
+
399
+ Brand elements can be used together or individually, with fix classes applied automatically as needed.
400
+
401
+ Brand elements are linked to a location specified by the `bas_style_kit_jekyll_theme.attributes.site_brand.href` config
402
+ variable, which should be the index of each website or application (i.e. `/`).
403
+
404
+ ### Site development phase
405
+
406
+ The site development phase reflects the stage of development for a website or application, e.g. alpha or live. They are
407
+ described in the Style Kit [here](https://style-kit.web.bas.ac.uk/core/colours/#development-phase-colours).
408
+
409
+ For websites or applications that are not firmly in the 'live' phase, a banner should be shown to inform users and
410
+ request feedback. This forms part of the 'standard header' of cookie banner, navbar and site development phase banner.
411
+
412
+ In these templates, the `bas_style_kit_jekyll_theme.attributes.site_development_phase` config variable is used to
413
+ specify the current phase for a website or application. When using the `bsk--standard.html`layout, a banner will be
414
+ shown automatically based on this variable.
415
+
416
+ To disable this banner, set the `bas_style_kit_jekyll_theme.attributes.site_development_phase` config variable to
417
+ `live-stable`. This isn't a real phase but separates a newly released website or application from something more mature.
418
+
419
+ For example:
420
+
421
+ ```yml
422
+ bas_style_kit_jekyll_theme:
423
+ attributes:
424
+ site_development_phase: 'alpha'
425
+ ```
426
+
427
+ #### Experimental development phase
428
+
429
+ Alternatively, the `bas_style_kit_jekyll_theme.attributes.site_development_phase` config variable can be set to
430
+ `experimental` to indicate where an website or application is used for staging or other development/testing activities.
431
+
432
+ For example:
433
+
434
+ ```yml
435
+ bas_style_kit_jekyll_theme:
436
+ attributes:
437
+ site_development_phase: 'experimental'
438
+ ```
439
+
440
+ ### Website analytics
441
+
442
+ To include the Google Analytics universal tracking library (gtag), set the
443
+ `bas_style_kit_jekyll_theme.attributes.site_analytics.id` property to relevant Google Analytics property ID.
444
+
445
+ **Note:** When used, the anonymise IP option in Google Analytics is enabled by default.
446
+
447
+ For example:
448
+
449
+ ```yml
450
+ bas_style_kit_jekyll_theme:
451
+ attributes:
452
+ site_analaytics:
453
+ id: '123abc'
454
+ ```
455
+
456
+ ## Components
457
+
458
+ Components in these templates are structured according to Jekyll's conventions (e.g. layouts in `_layouts/`). They are
459
+ also namespaced in a `bas-style-kit` directory (e.g. `_layouts/bas-style-kit/`). Components that are specific to the
460
+ Style Kit are prefixed with `bsk--`.
461
+
462
+ ### Views
463
+
464
+ Views are used for implementing [page patterns](#page-patterns). They are essentially layouts but with predefined page
465
+ content relevant to each pattern.
466
+
467
+ Within Jekyll, views are implemented as layouts. To use a view, create a page with the relevant 'view' layout.
468
+
469
+ ```
470
+ ---
471
+ layout: views/bas-style-kit/page-not-found
472
+ ---
473
+ ```
474
+
475
+ Views for some pattern variants can be used as-is, others require variables or page content to be set as well. See the
476
+ [Page patterns](#page-patterns) section for more information.
477
+
478
+ ### Layouts
479
+
480
+ Refer to [Jekyll's documentation](https://jekyllrb.com/docs/layouts/) for general information.
481
+
482
+ Layouts are 'base' templates from which views or other layouts inherit. Layouts in this theme are hierarchical, with
483
+ each layout extending the last in this order:
484
+
485
+ * `blank.html`: lowest level layout, intentionally as minimal as possible and not intended for direct use, unless
486
+ non-HTML output is needed
487
+ * `html.html`: defines a minimal, accessible, HTML5 structure with some recommended best practices for cross-platform
488
+ compatibility
489
+ * `bsk--base.html`: intentionally implements the BAS Style Kit as minimally as possible and not intended for direct use,
490
+ unless the bsk_standard.j2 layout is unsuitable
491
+ * `bsk--standard.html`: defines an opinionated, conventional, page layout with a 'standard' header/footer, recommended
492
+ as a base for application/website layouts
493
+ * `bsk--standard-page.html`: defines an opinionated, conventional, content page layout, recommended as a base for
494
+ content type websites, such as documentation
495
+
496
+ For example:
497
+
498
+ ```markdown
499
+ ---
500
+ layout: bas-style-kit/html
501
+ ---
502
+
503
+ Page content
504
+ ```
505
+
506
+ Layouts inheriting from the `bsk--standard` layout can add additional classes to the `#main-content` element by setting
507
+ the `main_content_classes` variable in each layout.
508
+
509
+ For example:
510
+
511
+ ```markdown
512
+ ---
513
+ layout: bas-style-kit/bsk--standard
514
+ main_content_classes: foo
515
+ ---
516
+
517
+ Page content
518
+ ```
519
+
520
+ ### Includes
521
+
522
+ Refer to [Jekyll's documentation](https://jekyllrb.com/docs/includes/) for general information.
523
+
524
+ This theme uses includes extensively to give fine grained control over how elements such as the navbar behave, including
525
+ both their content and structure.
526
+
527
+ Includes are often used conditionally using a related configuration option, to be disabled more easily.
528
+
529
+ ### Data files
530
+
531
+ Refer to [Jekyll's documentation](https://jekyllrb.com/docs/datafiles/) for general information.
532
+
533
+ This theme uses data files to define CSS and JavaScript resources to load and for some variables about the theme.
534
+
535
+ All data files use the `.yml` (Yaml) extension and are namespaced using a `bas-style-kit/` directory - i.e. a data
536
+ element `foo` in the data file `bsk-vars.yml` is available as `site.data.bas-style-kit.bsk-vars.foo`.
537
+
538
+ ### Variables
539
+
540
+ Refer to [Jekyll's documentation](https://jekyllrb.com/docs/variables/) for general information.
541
+
542
+ #### Style Kit specific variables
543
+
544
+ | Variable | Fully Qualified Variable | Purpose | Example | Notes |
545
+ | --------------- | ------------------------------------------------ | ----------------------------------------------- | ------- | ----- |
546
+ | `theme_version` | `site.data.bas-style-kit.bsk-vars.theme_version` | Version of this theme | `0.3.0` | - |
547
+ | `bsk_version` | `site.data.bas-style-kit.bsk-vars.bsk_version` | Version of the Style Kit used within this theme | `0.3.0` | - |
548
+
549
+ ### Configuration options
550
+
551
+ Refer to [Jekyll's documentation](https://jekyllrb.com/docs/configuration/) for general information.
552
+
553
+ Configuration options are used extensively throughout this theme. Some variables are used to set properties such as the
554
+ brand text or image in the navbar (attributes), others are used to enable various features (feature flags).
555
+
556
+ Configuration options operate at different scopes, *site* or *page*. Site options applies to across a site, whereas
557
+ page options can be applied to specific content items. Default values can be set for page options, which can then be
558
+ overridden by specific content items.
559
+
560
+ Configuration options for this theme are namespaced under a `bas_style_kit_jekyll_theme` option - i.e. an option `foo`
561
+ is set as `bas_style_kit_jekyll_theme.foo`.
562
+
563
+ Configuration options in this documentation use a dot notation to indicate a nested structure - i.e. an option `foo.bar`
564
+ should be set as:
565
+
566
+ ```yml
567
+ foo:
568
+ bar
569
+ ```
570
+
571
+ A configuration option `bas_style_kit_jekyll_theme.feature_flags.site.back_to_top_anchor` should be set as:
572
+
573
+ ```yml
574
+ bas_style_kit_jekyll_theme:
575
+ feature_flags:
576
+ site:
577
+ back_to_top_anchor: '[value]'
578
+ ```
579
+
580
+ These config options can be set at a page, collection or site level:
581
+
582
+ * `bas_style_kit_jekyll_theme.feature_flags.page.toc`
583
+
584
+ These config options should be changed or set for each website or application:
585
+
586
+ * `bas_style_kit_jekyll_theme.attributes.head_title.default`
587
+ * `bas_style_kit_jekyll_theme.attributes.head_title.appended`
588
+ * `bas_style_kit_jekyll_theme.attributes.head_description`
589
+ * `bas_style_kit_jekyll_theme.attributes.site_analytics.id`
590
+ * `bas_style_kit_jekyll_theme.attributes.site_brand.text`
591
+ * `bas_style_kit_jekyll_theme.attributes.site_development_phase`
592
+ * `bas_style_kit_jekyll_theme.attributes.site_feedback_href`
593
+ * `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.cookies_href`
594
+ * `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.copyright_href`
595
+ * `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.privacy_href`
596
+
597
+ These config options may, but don't need to be, changed or set for each website or application:
598
+
599
+ * `bas_style_kit_jekyll_theme.attributes.container`
600
+ * `bas_style_kit_jekyll_theme.attributes.site_styles`
601
+ * `bas_style_kit_jekyll_theme.attributes.site_scripts`
602
+ * `bas_style_kit_jekyll_theme.attributes.head_favicon`
603
+ * `bas_style_kit_jekyll_theme.attributes.site_brand.img`
604
+ * `bas_style_kit_jekyll_theme.attributes.site_brand.href`
605
+
606
+ These config options do not normally, and should not, need to be changed or set:
607
+
608
+ * `bas_style_kit_jekyll_theme.attributes.site_back_to_top_target_href`
609
+ * `bas_style_kit_jekyll_theme.attributes.site_footer.ogl.href`
610
+ * `bas_style_kit_jekyll_theme.attributes.site_footer.ogl.version`
611
+
612
+ These config options must not be changed and should be treated as read only:
613
+
614
+ * `site.data.bas-style-kit.bsk-vars.theme_version`
615
+ * `site.data.bas-style-kit.bsk-vars.bsk_version`
616
+
617
+ | Config Option | Value Type | Allowed Values | Default Value | Notes |
618
+ | --------------------------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- | ------------------ | ---------------------------------------------------------- |
619
+ | `bas_style_kit_jekyll_theme.feature_flags.page.toc` | Boolean | `true` / `false` | `true` | Whether to show the table of contents in standard pages |
620
+ | `bas_style_kit_jekyll_theme.attributes.head_title.default` | String | Any string | 'site title' | Typically 1-3 words |
621
+ | `bas_style_kit_jekyll_theme.attributes.head_title.appended` | String | Any string | *None* | Typically 1-3 words |
622
+ | `bas_style_kit_jekyll_theme.attributes.head_description` | String | Any string | 'site description' | Typically 1-2 sentences |
623
+ | `bas_style_kit_jekyll_theme.attributes.site_analytics.id` | String | Google Analytics property ID | *None* | See [Site analytics](#site-analytics) |
624
+ | `bas_style_kit_jekyll_theme.attributes.site_brand.text` | String | Any string | 'site title' | Typically 1-3 words |
625
+ | `bas_style_kit_jekyll_theme.attributes.site_development_phase` | String | `discovery` / `alpha` / `beta` / `live` / `live-stable` / `retired` / `experimental` / `custom` | 'alpha' | See [Site development phase](#site-development-phase) |
626
+ | `bas_style_kit_jekyll_theme.attributes.site_feedback_href` | String | URL to feedback page or other content (e.g. model overlay) | '/feedback.html' | - |
627
+ | `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.cookies_href` | String | URL to cookies legal policy | '/legal/cookies' | - |
628
+ | `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.copyright_href` | String | URL to copyright legal policy | '/legal/copyright' | - |
629
+ | `bas_style_kit_jekyll_theme.attributes.site_footer.legal_policies.privacy_href` | String | URL to privacy legal policy | '/legal/privacy' | - |
630
+ | `bas_style_kit_jekyll_theme.attributes.container` | String | `fixed` / `fluid` | 'fixed' | - |
631
+ | `bas_style_kit_jekyll_theme.attributes.site_styles` | Array | Site style object | *Empty array* | See [Using custom CSS/JS](#using-custom-cssjs) |
632
+ | `bas_style_kit_jekyll_theme.attributes.site_scripts` | Array | Site script object | *Empty array* | See [Using custom CSS/JS](#using-custom-cssjs) |
633
+ | `bas_style_kit_jekyll_theme.attributes.head_favicon` | String | `default` | 'default' | The favicon to use, use 'default' the standard BAS favicon |
634
+ | `bas_style_kit_jekyll_theme.attributes.site_brand.img` | String | URL to image | *None* | See [Navigation menu branding](#navigation-menu-branding) |
635
+ | `bas_style_kit_jekyll_theme.attributes.site_brand.href` | String | URL to content | '/' | See [Navigation menu branding](#navigation-menu-branding) |
636
+ | `bas_style_kit_jekyll_theme.attributes.site_back_to_top_target_href` | String | CSS ID selector | '#site-top' | - |
637
+ | `bas_style_kit_jekyll_theme.attributes.site_footer.ogl.href` | String | URL to OGL information page | *As implemented* | - |
638
+ | `bas_style_kit_jekyll_theme.attributes.site_footer.ogl.version` | String | Any OGL version | *As implemented* | - |
639
+ | `site.data.bas-style-kit.bsk-vars.theme_version` | String | Any [SemVer](https://semver.org/) value | *As implemented* | - |
640
+ | `site.data.bas-style-kit.bsk-vars.bsk_version` | String | Any BAS Style Kit version | *As implemented* | - |
641
+
642
+ ### Plugins
643
+
644
+ This theme depends on these plugins:
645
+
646
+ * [Jekyll data](https://github.com/ashmaroli/jekyll-data) - for including theme data files into a site's configuration
647
+ * [Jekyll menus](https://github.com/forestryio/jekyll-menus) - for managing navigation menus
648
+ * [Jekyll tidy](https://github.com/apsislabs/jekyll-tidy) - for rewriting HTML output to be well structured
649
+
650
+ **Note:** A patched version of the *Jekyll menus* plugin is used to fix a Ruby 3.0 incompatibility.
651
+
652
+ ## Development
653
+
654
+ [Git](https://git-scm.com), [Docker](https://www.docker.com/community-edition) and
655
+ [Docker Compose](https://docs.docker.com/compose/overview/) are required to build this project locally.
656
+
657
+ To update the Docker image for this project, access to the private
658
+ [BAS Docker Registry](https://docker-registry.data.bas.ac.uk) [1] is also required.
659
+
660
+ ```shell
661
+ $ git clone https://gitlab.data.bas.ac.uk/web-apps/bsk/bas-style-kit-jekyll-theme.git
662
+ $ cd bas-style-kit-jekyll-theme
663
+ $ docker-compose up
664
+ ```
665
+
666
+ Visit [localhost:9000](http://localhost:9000) to see a preview of the theme.
667
+
668
+ **Note:** If you don't have access to the BAS Private Docker Registry, you will need to build the project Docker image
669
+ locally first using `docker-compose build`.
670
+
671
+ [1] The first time you use this registry, you will need to authenticate using:
672
+
673
+ ```shell
674
+ $ docker login docker-registry.data.bas.ac.uk
675
+ ```
676
+
677
+ ### Updating dependencies
678
+
679
+ If the `.gemspec` for this project is changed, the project Docker image will need to be rebuilt and pushed to the
680
+ private BAS Docker Repository [1].
681
+
682
+ ```shell
683
+ $ docker-compose build app
684
+ $ docker-compose push app
685
+ ```
686
+
687
+ [1] The first time you use this registry, you will need to authenticate using:
688
+
689
+ ```shell
690
+ $ docker login docker-registry.data.bas.ac.uk
691
+ ```
692
+
693
+ ### Jekyll plugins
694
+
695
+ Additional Jekyll plugins (gems) can be used by listing them as dependencies in the `gems` option in `_config.yml`.
696
+
697
+ They will be installed automatically when this theme is used by an end-user.
698
+
699
+ ### Jekyll config options
700
+
701
+ The Jekyll Data plugin is used to set config options within sites that use this theme. Make sure to document which
702
+ config options are set by this theme.
703
+
704
+ ### Ruby Gem
705
+
706
+ This theme is distributed as a Ruby Gem, through the public [Ruby Gems](https://rubygems.org) gem hosting service.
707
+
708
+ The `jekyll-theme-bas-style-kit.gemspec` file details the properties of the Gem for this project.
709
+
710
+ **Note:** The `spec.files` parameter controls which files in this project are copied into the Gem. If a file is not
711
+ listed it won't be included. This is separate to the Git `.gitignore` file.
712
+
713
+ ## GitHub mirror
714
+
715
+ A read-only mirror of this project's repository is maintained on GitHub, to support Jekyll's automatic theme
716
+ installation, and to allow use by those outside of BAS.
717
+
718
+ Merge requests **WILL NOT** be accepted on this mirror.
719
+
720
+ ## Release procedures
721
+
722
+ Before release:
723
+
724
+ 1. create a release branch
725
+ 3. build and push the app docker image [1]
726
+ 4. if new config options have been set, update the usage section
727
+ 5. update screen-shot (width: 900px)
728
+ 6. close release in changelog
729
+ 7. commit changes, merge with master and tag with new version
730
+ 8. push the release to Ruby Gems [2]
731
+
732
+ **Note:** If the BAS Style Kit version changes, make sure to bump that version in `_data/bsk_jekyll_vars.json` too.
733
+
734
+ After release:
735
+
736
+ 1. bump the version in:
737
+ * `jekyll-theme-bas-style-kit.gemspec`
738
+ * `_data/bsk_jekyll_vars.json` - or here? `_data/bas-style-kit/bsk-vars.yml`
739
+ 2. build and push the app docker image [1]
740
+ 3. commit changes, merge with master and close release branch
741
+
742
+ [1]
743
+
744
+ ```shell
745
+ $ docker-compose build
746
+ $ docker-compose push
747
+ ```
748
+
749
+ [2]
750
+
751
+ ```shell
752
+ $ docker-compose run --entrypoint="" app ash
753
+ $ gem build jekyll-theme-bas-style-kit.gemspec
754
+ $ gem push jekyll-theme-bas-style-kit-*.gem
755
+ ```
756
+
757
+ ## Issue tracking
758
+
759
+ This project uses [issue tracking](https://trello.com/b/0Mhzizpk/bas-style-kit) to manage development of new
760
+ features/improvements and reporting bugs.
761
+
762
+ ## Feedback
763
+
764
+ The maintainer of this project is the BAS Web & Applications Team, they can be contacted through the
765
+ [BAS Service Desk](mailto:servicedesk@bas.ac.uk).
766
+
767
+ ## License
768
+
769
+ © UK Research and Innovation (UKRI), 2017-2021, British Antarctic Survey.
770
+
771
+ You may use and re-use this software and associated documentation files free of charge in any format or medium, under
772
+ the terms of the Open Government Licence v3.0.
773
+
774
+ You may obtain a copy of the Open Government Licence at http://www.nationalarchives.gov.uk/doc/open-government-licence/