@nationalarchives/frontend 0.1.11-prerelease → 0.1.13-prerelease

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 (46) hide show
  1. package/README.md +1 -1
  2. package/nationalarchives/_features.scss +1 -1
  3. package/nationalarchives/all.css +1 -1
  4. package/nationalarchives/all.css.map +1 -1
  5. package/nationalarchives/components/_index.scss +2 -0
  6. package/nationalarchives/components/breadcrumbs/_index.scss +30 -26
  7. package/nationalarchives/components/breadcrumbs/breadcrumbs.stories.js +1 -1
  8. package/nationalarchives/components/breadcrumbs/fixtures.json +1 -1
  9. package/nationalarchives/components/breadcrumbs/template.njk +1 -1
  10. package/nationalarchives/components/button/button.stories.js +1 -1
  11. package/nationalarchives/components/card/_index.scss +2 -1
  12. package/nationalarchives/components/card/card.stories.js +1 -1
  13. package/nationalarchives/components/footer/_index.scss +3 -3
  14. package/nationalarchives/components/footer/fixtures.json +1 -1
  15. package/nationalarchives/components/footer/template.njk +1 -1
  16. package/nationalarchives/components/header/_index.scss +36 -7
  17. package/nationalarchives/components/header/header.stories.js +15 -15
  18. package/nationalarchives/components/index-grid/_index.scss +46 -0
  19. package/nationalarchives/components/index-grid/fixtures.json +4 -0
  20. package/nationalarchives/components/index-grid/index-grid.stories.js +77 -0
  21. package/nationalarchives/components/index-grid/macro-options.json +94 -0
  22. package/nationalarchives/components/index-grid/macro.njk +3 -0
  23. package/nationalarchives/components/index-grid/template.njk +56 -0
  24. package/nationalarchives/components/message/_index.scss +27 -0
  25. package/nationalarchives/components/message/fixtures.json +4 -0
  26. package/nationalarchives/components/message/macro-options.json +20 -0
  27. package/nationalarchives/components/message/macro.njk +3 -0
  28. package/nationalarchives/components/message/phase-banner.stories.js +36 -0
  29. package/nationalarchives/components/message/template.njk +9 -0
  30. package/nationalarchives/components/phase-banner/phase-banner.stories.js +1 -1
  31. package/nationalarchives/components/phase-banner/template.njk +1 -1
  32. package/nationalarchives/components/picture/_index.scss +5 -1
  33. package/nationalarchives/components/picture/picture.stories.js +1 -1
  34. package/nationalarchives/components/profile/profile.stories.js +1 -1
  35. package/nationalarchives/components/profile/template.njk +1 -1
  36. package/nationalarchives/components/tabs/tabs.stories.js +1 -1
  37. package/nationalarchives/stories/development/publishing.mdx +1 -12
  38. package/nationalarchives/stories/utilities/heading-groups.stories.js +1 -0
  39. package/nationalarchives/stories/utilities/headings.stories.js +8 -22
  40. package/nationalarchives/stories/utilities/typography.mdx +1 -3
  41. package/nationalarchives/templates/layouts/_generic.njk +42 -50
  42. package/nationalarchives/utilities/_global.scss +9 -2
  43. package/nationalarchives/utilities/_typography.scss +2 -2
  44. package/nationalarchives/variables/_colour.scss +11 -9
  45. package/nationalarchives/variables/_typography.scss +4 -2
  46. package/package.json +22 -22
@@ -0,0 +1,46 @@
1
+ @use "../../utilities/global"; // To get %tna-invert
2
+ @use "../../tools/colour";
3
+
4
+ .tna-index-grid {
5
+ &__item-wrapper {
6
+ margin-bottom: 2rem;
7
+ }
8
+
9
+ &__item {
10
+ height: 100%;
11
+
12
+ display: flex;
13
+ flex-direction: column;
14
+
15
+ // @include colour.invert;
16
+ @extend %tna-invert;
17
+ text-decoration: none;
18
+ }
19
+
20
+ &__item-image {
21
+ width: 100%;
22
+ height: auto;
23
+ }
24
+
25
+ &__item-content {
26
+ padding: 1rem;
27
+
28
+ flex: 1;
29
+ }
30
+
31
+ &__item-title {
32
+ text-decoration: underline;
33
+
34
+ .tna-index-grid__item:hover & {
35
+ &,
36
+ &:link,
37
+ &:visited {
38
+ text-decoration-thickness: 3px;
39
+ }
40
+ }
41
+ }
42
+
43
+ &__item-subtitle {
44
+ @include colour.colour-font("font-light", true);
45
+ }
46
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": "index-grid",
3
+ "fixtures": []
4
+ }
@@ -0,0 +1,77 @@
1
+ import IndexGrid from "./template.njk";
2
+ import macroOptions from "./macro-options.json";
3
+
4
+ const argTypes = {
5
+ heading: { control: "text" },
6
+ items: { control: "object" },
7
+ columns: { control: "number" },
8
+ columnsMedium: { control: "number" },
9
+ columnsSmall: { control: "number" },
10
+ columnsTiny: { control: "number" },
11
+ classes: { control: "text" },
12
+ attributes: { control: "object" },
13
+ };
14
+
15
+ Object.keys(argTypes).forEach((argType) => {
16
+ argTypes[argType].description = macroOptions.find(
17
+ (option) => option.name === argType,
18
+ )?.description;
19
+ });
20
+
21
+ export default {
22
+ title: "Components/Index grid",
23
+ argTypes,
24
+ };
25
+
26
+ const Template = ({
27
+ heading,
28
+ items,
29
+ columns,
30
+ columnsMedium,
31
+ columnsSmall,
32
+ columnsTiny,
33
+ classes,
34
+ attributes,
35
+ }) => {
36
+ return IndexGrid({
37
+ params: {
38
+ heading,
39
+ items,
40
+ columns,
41
+ columnsMedium,
42
+ columnsSmall,
43
+ columnsTiny,
44
+ classes,
45
+ attributes,
46
+ },
47
+ });
48
+ };
49
+
50
+ const exampleItem = {
51
+ href: "#",
52
+ src: "https://picsum.photos/id/237/800/600",
53
+ alt: "Photo of a puppy",
54
+ width: "800",
55
+ height: "600",
56
+ title: "Cat",
57
+ subtitle: "4 photos",
58
+ };
59
+ export const Standard = Template.bind({});
60
+ Standard.args = {
61
+ heading: "My dogs",
62
+ items: Array(12)
63
+ .fill({ ...exampleItem })
64
+ .map((item, index) => {
65
+ const pseudoRandom = ((index * 29) % 8) + 1;
66
+ return {
67
+ ...item,
68
+ title: `Category #${index + 101}`,
69
+ subtitle: `${pseudoRandom} photos`,
70
+ };
71
+ }),
72
+ columns: 4,
73
+ columnsMedium: 3,
74
+ columnsSmall: 2,
75
+ columnsTiny: 1,
76
+ classes: "tna-index-grid--demo",
77
+ };
@@ -0,0 +1,94 @@
1
+ [
2
+ {
3
+ "name": "heading",
4
+ "type": "string",
5
+ "required": true,
6
+ "description": ""
7
+ },
8
+ {
9
+ "name": "items",
10
+ "type": "array",
11
+ "required": true,
12
+ "description": "",
13
+ "params": [
14
+ {
15
+ "name": "href",
16
+ "type": "string",
17
+ "required": true,
18
+ "description": ""
19
+ },
20
+ {
21
+ "name": "src",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": ""
25
+ },
26
+ {
27
+ "name": "alt",
28
+ "type": "string",
29
+ "required": true,
30
+ "description": ""
31
+ },
32
+ {
33
+ "name": "width",
34
+ "type": "number",
35
+ "required": true,
36
+ "description": ""
37
+ },
38
+ {
39
+ "name": "height",
40
+ "type": "number",
41
+ "required": true,
42
+ "description": ""
43
+ },
44
+ {
45
+ "name": "title",
46
+ "type": "string",
47
+ "required": true,
48
+ "description": ""
49
+ },
50
+ {
51
+ "name": "subtitle",
52
+ "type": "string",
53
+ "required": false,
54
+ "description": ""
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "name": "columns",
60
+ "type": "string",
61
+ "required": true,
62
+ "description": ""
63
+ },
64
+ {
65
+ "name": "columnsMedium",
66
+ "type": "string",
67
+ "required": false,
68
+ "description": ""
69
+ },
70
+ {
71
+ "name": "columnsSmall",
72
+ "type": "string",
73
+ "required": false,
74
+ "description": ""
75
+ },
76
+ {
77
+ "name": "columnsTiny",
78
+ "type": "string",
79
+ "required": false,
80
+ "description": ""
81
+ },
82
+ {
83
+ "name": "classes",
84
+ "type": "string",
85
+ "required": false,
86
+ "description": "Classes to add to the container."
87
+ },
88
+ {
89
+ "name": "attributes",
90
+ "type": "object",
91
+ "required": false,
92
+ "description": "HTML attributes (for example data attributes) to add to the container."
93
+ }
94
+ ]
@@ -0,0 +1,3 @@
1
+ {% macro tnaIndexGrid(params) %}
2
+ {%- include "nationalarchives/components/index-grid/template.njk" -%}
3
+ {% endmacro %}
@@ -0,0 +1,56 @@
1
+ {%- set containerClasses = [params.classes] if params.classes else [] -%}
2
+ <nav class="tna-index-grid {{ containerClasses | join(' ') }}" aria-label="{{ params.heading }}" {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
3
+ <div class="tna-container">
4
+ <div class="tna-column tna-column--full">
5
+ <h1>
6
+ {{ params.heading }}
7
+ </h1>
8
+ </div>
9
+ {%- set itemClasses = ['tna-index-grid__item-wrapper', 'tna-column'] -%}
10
+
11
+ {%- if params.columns == 1 -%}
12
+ {%- set itemClasses = itemClasses.concat('tna-column--full') -%}
13
+ {%- else -%}
14
+ {%- set itemClasses = itemClasses.concat('tna-column--width-1-' + params.columns) -%}
15
+ {%- endif -%}
16
+
17
+ {%- if params.columnsMedium -%}
18
+ {%- if params.columnsMedium == 1 -%}
19
+ {%- set itemClasses = itemClasses.concat('tna-column--full-medium') -%}
20
+ {%- else -%}
21
+ {%- set itemClasses = itemClasses.concat('tna-column--width-1-' + params.columnsMedium + '-medium') -%}
22
+ {%- endif -%}
23
+ {%- endif -%}
24
+
25
+ {%- if params.columnsSmall -%}
26
+ {%- if params.columnsSmall == 1 -%}
27
+ {%- set itemClasses = itemClasses.concat('tna-column--full-small') -%}
28
+ {%- else -%}
29
+ {%- set itemClasses = itemClasses.concat('tna-column--width-1-' + params.columnsSmall + '-small') -%}
30
+ {%- endif -%}
31
+ {%- endif -%}
32
+
33
+ {%- if params.columnsTiny -%}
34
+ {%- if params.columnsTiny == 1 -%}
35
+ {%- set itemClasses = itemClasses.concat('tna-column--full-tiny') -%}
36
+ {%- else -%}
37
+ {%- set itemClasses = itemClasses.concat('tna-column--width-1-' + params.columnsTiny + '-tiny') -%}
38
+ {%- endif -%}
39
+ {%- endif -%}
40
+
41
+ {%- for item in params.items -%}
42
+ <div class="{{ itemClasses | join(' ') }}">
43
+ <a href="{{ item.href }}" class="tna-index-grid__item" title="{{ item.title }}">
44
+ <img src="{{ item.src }}" class="tna-index-grid__item-image" width="{{ item.width }}" height="{{ item.height }}" alt="{{ item.alt }}" />
45
+ <span class="tna-index-grid__item-content">
46
+ <span class="tna-index-grid__item-title">{{ item.title }}</span>
47
+ {%- if item.subtitle -%}
48
+ <br>
49
+ <span class="tna-index-grid__item-subtitle">{{ item.subtitle }}</span>
50
+ {%- endif -%}
51
+ </span>
52
+ </a>
53
+ </div>
54
+ {%- endfor -%}
55
+ </div>
56
+ <nav>
@@ -0,0 +1,27 @@
1
+ @use "../../variables/colour" as colourVars;
2
+ @use "../../tools/colour";
3
+
4
+ .tna-message {
5
+ padding: 1rem;
6
+
7
+ display: flex;
8
+ align-items: center;
9
+
10
+ @include colour.colour-background("keyline");
11
+
12
+ border-left: 0.5rem transparent solid;
13
+ @include colour.colour-border("keyline-dark");
14
+
15
+ // &--yellow {
16
+ background-color: colourVars.$tna-cream;
17
+
18
+ border-left-color: colourVars.$tna-yellow;
19
+ // }
20
+
21
+ &__icon {
22
+ margin-right: 1rem;
23
+ }
24
+
25
+ &__message {
26
+ }
27
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": "message",
3
+ "fixtures": []
4
+ }
@@ -0,0 +1,20 @@
1
+ [
2
+ {
3
+ "name": "message",
4
+ "type": "string",
5
+ "required": true,
6
+ "description": ""
7
+ },
8
+ {
9
+ "name": "classes",
10
+ "type": "string",
11
+ "required": false,
12
+ "description": "Classes to add to the message."
13
+ },
14
+ {
15
+ "name": "attributes",
16
+ "type": "object",
17
+ "required": false,
18
+ "description": "HTML attributes (for example data attributes) to add to the message."
19
+ }
20
+ ]
@@ -0,0 +1,3 @@
1
+ {% macro tnaMessage(params) %}
2
+ {%- include "nationalarchives/components/message/template.njk" -%}
3
+ {% endmacro %}
@@ -0,0 +1,36 @@
1
+ import Message from "./template.njk";
2
+ import macroOptions from "./macro-options.json";
3
+
4
+ const argTypes = {
5
+ message: { control: "text" },
6
+ classes: { control: "text" },
7
+ attributes: { control: "object" },
8
+ };
9
+
10
+ Object.keys(argTypes).forEach((argType) => {
11
+ argTypes[argType].description = macroOptions.find(
12
+ (option) => option.name === argType,
13
+ )?.description;
14
+ });
15
+
16
+ export default {
17
+ title: "Components/Message",
18
+ argTypes,
19
+ };
20
+
21
+ const Template = ({ message, classes, attributes }) => {
22
+ return Message({
23
+ params: {
24
+ message,
25
+ classes,
26
+ attributes,
27
+ },
28
+ });
29
+ };
30
+
31
+ export const Standard = Template.bind({});
32
+ Standard.args = {
33
+ message:
34
+ "Please note this page references hunger strikes and force feeding, which some people may find upsetting.",
35
+ classes: "tna-messaage--demo",
36
+ };
@@ -0,0 +1,9 @@
1
+ {%- set containerClasses = [params.classes] if params.classes else [] -%}
2
+ <div class="tna-message {{ containerClasses | join(' ') }}" {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
3
+ <svg class="tna-message__icon" xmlns="http://www.w3.org/2000/svg" focusable="false" aria-hidden="true" viewBox="0 0 34 34" width="40" height="40">
4
+ <path fill="currentColor" d="M15.33 8.67h3.34V12h-3.34V8.67Zm0 6.66h3.34v10h-3.34v-10ZM17 .33a16.67 16.67 0 1 0 .01 33.35A16.67 16.67 0 0 0 17 .33Zm0 30A13.35 13.35 0 0 1 3.67 17C3.67 9.65 9.65 3.67 17 3.67S30.33 9.65 30.33 17 24.35 30.33 17 30.33Z"></path>
5
+ </svg>
6
+ <p class="tna-message__message">
7
+ {{ params.message | safe }}
8
+ </p>
9
+ </div>
@@ -18,7 +18,7 @@ Object.keys(argTypes).forEach((argType) => {
18
18
  });
19
19
 
20
20
  export default {
21
- title: "Work in progress/Components/Phase banner",
21
+ title: "Components/Phase banner",
22
22
  argTypes,
23
23
  };
24
24
 
@@ -4,7 +4,7 @@
4
4
  <div class="tna-container">
5
5
  <div class="tna-column">
6
6
  <span class="tna-phase-banner__phase">
7
- {{ params.phase | capitalize }}
7
+ {{ params.phase | lower | capitalize }}
8
8
  </span>
9
9
  </div>
10
10
  <div class="tna-column">
@@ -28,12 +28,16 @@
28
28
  // @include colour.invert;
29
29
  @extend %tna-invert;
30
30
 
31
- padding: 1rem 1.5rem 0.5rem;
31
+ padding: 1rem 1.5rem;
32
32
 
33
33
  .tna-template--clicked &:focus {
34
34
  outline: none;
35
35
  }
36
36
 
37
+ .tna-tabs {
38
+ margin-bottom: 0.5rem;
39
+ }
40
+
37
41
  .tna-tabs__list-item-link {
38
42
  @include colour.colour-font("font-dark", true);
39
43
 
@@ -20,7 +20,7 @@ Object.keys(argTypes).forEach((argType) => {
20
20
  });
21
21
 
22
22
  export default {
23
- title: "Work in progress/Components/Picture",
23
+ title: "Components/Picture",
24
24
  argTypes,
25
25
  };
26
26
 
@@ -13,7 +13,7 @@ Object.keys(argTypes).forEach((argType) => {
13
13
  });
14
14
 
15
15
  export default {
16
- title: "Work in progress/Components/Profile",
16
+ title: "Components/Profile",
17
17
  argTypes,
18
18
  };
19
19
 
@@ -1,7 +1,7 @@
1
1
  {%- set containerClasses = [params.classes] if params.classes else [] -%}
2
2
  <div class="tna-profile tna-container {{ containerClasses | join(' ') }}" {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
3
3
  <div class="tna-column tna-column--order-2">
4
- <img src="https://avatar.iran.liara.run/public" width="200" height="200" />
4
+ <img src="https://avatar.iran.liara.run/public/68" width="200" height="200" alt="Photo of Max Smith" />
5
5
  </div>
6
6
  <div class="tna-column tna-column--flex-1 tna-column--full-small tna-column--full-tiny tna-column--order-1 tna-column--order-3-small tna-column--order-3-tiny">
7
7
  <hgroup class="tna-hgroup tna-hgroup--xl">
@@ -18,7 +18,7 @@ Object.keys(argTypes).forEach((argType) => {
18
18
  });
19
19
 
20
20
  export default {
21
- title: "Work in progress/Components/Tabs",
21
+ title: "Components/Tabs",
22
22
  argTypes,
23
23
  };
24
24
 
@@ -10,17 +10,6 @@ import { Meta } from "@storybook/blocks";
10
10
  1. Run `npm install` to update the `package-lock.json`
11
11
  1. Merge all changes to `main` via a pull request
12
12
  1. Wait for the CI to pass
13
- 1. Tag the version with `git tag v1.0.0` (ensure leading `v` and change version number as necessary)
14
- 1. Push the new tag with `git push origin --tags`
15
- 1. Create a [new release on GitHub](https://github.com/nationalarchives/tna-frontend/releases/new) using the tag you just created
13
+ 1. Create a [new release on GitHub](https://github.com/nationalarchives/tna-frontend/releases/new) and add a new tag in the format `v1.0.0` (ensure leading `v` and change version number as necessary)
16
14
 
17
15
  Once a release is created, the [publish pipeline](https://github.com/nationalarchives/tna-frontend/blob/main/.github/workflows/npm-publish.yml) will be triggered.
18
-
19
- ## Oops!
20
-
21
- To delete a tag:
22
-
23
- ```sh
24
- git tag -d v0.1.0
25
- git push --delete origin v0.1.0
26
- ```
@@ -41,4 +41,5 @@ export const HeadingGroupSeparated = Template.bind({});
41
41
  HeadingGroupSeparated.args = {
42
42
  supertitle: "Record revealed",
43
43
  title: "The Monteagle Letter",
44
+ singleSentence: false,
44
45
  };
@@ -11,30 +11,16 @@ export default {
11
11
  const HeadingTemplate = ({ params }, level) => `<h${level} class="tna-heading${
12
12
  params.size ? ` tna-heading--${params.size}` : ""
13
13
  }">
14
- ${params.text} (level ${level})
14
+ ${params.text} (${params.size.toUpperCase()})
15
15
  </h${level}>`;
16
16
 
17
- const Heading1Template = ({ text, size }) =>
18
- HeadingTemplate({ params: { text, size } }, 1);
19
- const Heading2Template = ({ text, size }) =>
20
- HeadingTemplate({ params: { text, size } }, 2);
21
- const Heading3Template = ({ text, size }) =>
22
- HeadingTemplate({ params: { text, size } }, 3);
17
+ const HeadingsTemplate = ({ text }) =>
18
+ `${HeadingTemplate({ params: { text, size: "xl" } }, 1)}${HeadingTemplate(
19
+ { params: { text, size: "l" } },
20
+ 2,
21
+ )}${HeadingTemplate({ params: { text, size: "m" } }, 3)}`;
23
22
 
24
- export const Heading1 = Heading1Template.bind({});
25
- Heading1.args = {
23
+ export const Headings = HeadingsTemplate.bind({});
24
+ Headings.args = {
26
25
  text: "This is a heading",
27
- size: "xl",
28
- };
29
-
30
- export const Heading2 = Heading2Template.bind({});
31
- Heading2.args = {
32
- text: "This is a heading",
33
- size: "l",
34
- };
35
-
36
- export const Heading3 = Heading3Template.bind({});
37
- Heading3.args = {
38
- text: "This is a heading",
39
- size: "m",
40
26
  };
@@ -12,9 +12,7 @@ We use a set of typefaces...
12
12
 
13
13
  ## Headings
14
14
 
15
- <Canvas of={HeadingStories.Heading1} />
16
- <Canvas of={HeadingStories.Heading2} />
17
- <Canvas of={HeadingStories.Heading3} />
15
+ <Canvas of={HeadingStories.Headings} />
18
16
 
19
17
  ## Heading groups
20
18
 
@@ -1,57 +1,49 @@
1
1
  {# Based on https://github.com/alphagov/govuk-frontend/blob/8b6bf304b9fc891f64459c25a08f3d623f3fea72/packages/govuk-frontend/src/govuk/template.njk #}
2
2
  {#% from "./components/skip-link/macro.njk" import tnaSkipLink -%#}
3
3
  <!DOCTYPE html>
4
- <html lang="{{ htmlLang | default('en') }}" class="tna-template {{ htmlClasses }}">
4
+ <html lang="{{ htmlLang | default('en-GB') }}" class="tna-template {{ htmlClasses }}">
5
5
  <head>
6
- <meta charset="utf-8">
7
- <title{% if pageTitleLang %} lang="{{ pageTitleLang }}"{% endif %}>{% block pageTitle %}The National Archives{% endblock %}</title>
8
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9
- <meta name="theme-color" content="{{ themeColor | default('#000000') }}">
10
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
11
-
12
- {% block headIcons %}
13
- <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="{{ assetPath | default('/assets') }}/images/favicon.ico" type="image/x-icon">
14
- <link rel="mask-icon" href="{{ assetPath | default('/assets') }}/images/govuk-mask-icon.svg" color="{{ themeColor | default('#0b0c0c') }}"> {# Hardcoded value of $govuk-black #}
15
- <link rel="apple-touch-icon" sizes="180x180" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-180x180.png">
16
- <link rel="apple-touch-icon" sizes="167x167" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-167x167.png">
17
- <link rel="apple-touch-icon" sizes="152x152" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-152x152.png">
18
- <link rel="apple-touch-icon" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon.png">
19
- {% endblock %}
20
-
21
- {% block head %}{% endblock %}
22
-
23
- {% block stylesheets %}{% endblock %}
24
-
25
- {# OpenGraph images needs to be absolute, so we need either a URL for the image or for assetUrl to be set #}
26
- {% if opengraphImageUrl or assetUrl %}
27
- <meta property="og:image" content="{{ opengraphImageUrl | default(assetUrl + '/images/govuk-opengraph-image.png') }}">
28
- {% endif %}
6
+ <meta charset="utf-8">
7
+ <title>{% block pageTitle %}The National Archives{% endblock %}</title>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9
+ <meta name="theme-color" content="{{ themeColor | default('#000000') }}">
10
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
11
+
12
+ {% block headIcons %}
13
+ <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="{{ assetPath | default('/assets') }}/images/favicon.ico" type="image/x-icon">
14
+ <link rel="mask-icon" href="{{ assetPath | default('/assets') }}/images/govuk-mask-icon.svg" color="{{ themeColor | default('#0b0c0c') }}"> {# Hardcoded value of $govuk-black #}
15
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-180x180.png">
16
+ <link rel="apple-touch-icon" sizes="167x167" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-167x167.png">
17
+ <link rel="apple-touch-icon" sizes="152x152" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon-152x152.png">
18
+ <link rel="apple-touch-icon" href="{{ assetPath | default('/assets') }}/images/govuk-apple-touch-icon.png">
19
+ {% endblock %}
20
+
21
+ {% block head %}{% endblock %}
22
+
23
+ {% block stylesheets %}{% endblock %}
29
24
  </head>
30
- <body class="tna-template__body {{ bodyClasses }}" {%- for attribute, value in bodyAttributes %} {{attribute}}="{{value}}"{% endfor %}>
31
- {% block bodyStart %}{% endblock %}
32
-
33
- {% block skipLink %}
34
- {#{ govukSkipLink({
35
- href: '#main-content',
36
- text: 'Skip to main content'
37
- }) }#}
38
- {% endblock %}
39
-
40
- {% block header %}
41
- <h1>HEADER</h1>
42
- {% endblock %}
43
-
44
- {% block main %}
45
- {% block beforeContent %}{% endblock %}
46
- <main class="tna-main-wrapper {{ mainClasses }}" id="main-content" role="main"{% if mainLang %} lang="{{ mainLang }}"{% endif %}>
47
- {% block content %}{% endblock %}
48
- </main>
49
- {% endblock %}
50
-
51
- {% block footer %}
52
- <h1>FOOTER</h1>
53
- {% endblock %}
54
-
55
- {% block bodyEnd %}{% endblock %}
25
+ <body class="tna-template__body {{ bodyClasses }}" {%- for attribute, value in bodyAttributes %} {{attribute}}="{{value}}"{% endfor %}>
26
+ {% block skipLink %}
27
+ {#{ govukSkipLink({
28
+ href: '#main-content',
29
+ text: 'Skip to main content'
30
+ }) }#}
31
+ {% endblock %}
32
+
33
+ {% block bodyStart %}{% endblock %}
34
+
35
+ {% block header %}{% endblock %}
36
+
37
+ {% block main %}
38
+ {% block beforeContent %}{% endblock %}
39
+ <main class="tna-main-wrapper {{ mainClasses }}" id="main-content" role="main">
40
+ {% block content %}{% endblock %}
41
+ </main>
42
+ {% block afterContent %}{% endblock %}
43
+ {% endblock %}
44
+
45
+ {% block footer %}{% endblock %}
46
+
47
+ {% block bodyEnd %}{% endblock %}
56
48
  </body>
57
49
  </html>