@govuk-one-login/frontend-ui 4.1.4 → 4.2.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 (94) hide show
  1. package/build/all.css +1 -0
  2. package/build/cjs/backend/index.cjs +257 -0
  3. package/build/cjs/backend/index.d.cts +39 -0
  4. package/build/cjs/backend/index.d.ts +39 -0
  5. package/build/cjs/backend/index.d.ts.map +1 -0
  6. package/build/cjs/backend/lib/helmet.d.ts +31 -0
  7. package/build/cjs/backend/lib/helmet.d.ts.map +1 -0
  8. package/build/cjs/backend/lib/index.d.ts +4 -0
  9. package/build/cjs/backend/lib/index.d.ts.map +1 -0
  10. package/build/cjs/backend/lib/locals.d.ts +11 -0
  11. package/build/cjs/backend/lib/locals.d.ts.map +1 -0
  12. package/build/cjs/backend/lib/settings.d.ts +21 -0
  13. package/build/cjs/backend/lib/settings.d.ts.map +1 -0
  14. package/build/cjs/backend/utils/logger.d.ts +9 -0
  15. package/build/cjs/backend/utils/logger.d.ts.map +1 -0
  16. package/build/cjs/frontend/index.cjs +443 -0
  17. package/build/cjs/frontend/index.d.cts +4 -0
  18. package/build/cjs/frontend/index.d.ts +4 -0
  19. package/build/cjs/frontend/index.d.ts.map +1 -0
  20. package/build/cjs/frontend/progress-button/progress-button.d.ts +2 -0
  21. package/build/cjs/frontend/progress-button/progress-button.d.ts.map +1 -0
  22. package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts +2 -0
  23. package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -0
  24. package/build/cjs/frontend/spinner/spinner.d.ts +64 -0
  25. package/build/cjs/frontend/spinner/spinner.d.ts.map +1 -0
  26. package/build/cjs/frontend/utils/types.d.ts +108 -0
  27. package/build/cjs/frontend/utils/types.d.ts.map +1 -0
  28. package/build/components/_all.scss +6 -0
  29. package/build/components/bases/auth/auth-base.njk +136 -0
  30. package/build/components/bases/home/home-base.njk +133 -0
  31. package/build/components/bases/identity/identity-base-form.njk +123 -0
  32. package/build/components/bases/identity/identity-base-page.njk +123 -0
  33. package/build/components/bases/ipv-core/ipv-core-base.njk +172 -0
  34. package/build/components/bases/mobile/mobile-base.njk +195 -0
  35. package/build/components/cookie-banner/cookie-banner.yaml +6 -0
  36. package/build/components/cookie-banner/macro.njk +1 -0
  37. package/build/components/cookie-banner/template.njk +106 -0
  38. package/build/components/footer/_index.scss +28 -0
  39. package/build/components/footer/footer.yaml +5 -0
  40. package/build/components/footer/macro.njk +1 -0
  41. package/build/components/footer/template.njk +12 -0
  42. package/build/components/header/README.md +34 -0
  43. package/build/components/header/_index.scss +102 -0
  44. package/build/components/header/header.yaml +16 -0
  45. package/build/components/header/macro.njk +3 -0
  46. package/build/components/header/template.njk +39 -0
  47. package/build/components/language-select/_index.scss +35 -0
  48. package/build/components/language-select/language-select.yaml +43 -0
  49. package/build/components/language-select/macro.njk +2 -0
  50. package/build/components/language-select/template.njk +38 -0
  51. package/build/components/macros/logo.njk +75 -0
  52. package/build/components/phase-banner/_index.scss +28 -0
  53. package/build/components/phase-banner/macro.njk +3 -0
  54. package/build/components/phase-banner/phase-banner.yaml +17 -0
  55. package/build/components/phase-banner/tag/macro.njk +3 -0
  56. package/build/components/phase-banner/tag/template.njk +3 -0
  57. package/build/components/phase-banner/template.njk +26 -0
  58. package/build/components/progress-button/_index.scss +51 -0
  59. package/build/components/progress-button/macro.njk +2 -0
  60. package/build/components/progress-button/progress-button.yaml +13 -0
  61. package/build/components/progress-button/template.njk +112 -0
  62. package/build/components/skip-link/README.md +10 -0
  63. package/build/components/skip-link/macro.njk +3 -0
  64. package/build/components/skip-link/skip-link.yaml +5 -0
  65. package/build/components/skip-link/template.njk +14 -0
  66. package/build/components/spinner/README.md +130 -0
  67. package/build/components/spinner/_index.scss +55 -0
  68. package/build/components/spinner/macro.njk +3 -0
  69. package/build/components/spinner/template.njk +18 -0
  70. package/build/esm/backend/index.d.ts +39 -0
  71. package/build/esm/backend/index.d.ts.map +1 -0
  72. package/build/esm/backend/index.js +247 -0
  73. package/build/esm/backend/lib/helmet.d.ts +31 -0
  74. package/build/esm/backend/lib/helmet.d.ts.map +1 -0
  75. package/build/esm/backend/lib/index.d.ts +4 -0
  76. package/build/esm/backend/lib/index.d.ts.map +1 -0
  77. package/build/esm/backend/lib/locals.d.ts +11 -0
  78. package/build/esm/backend/lib/locals.d.ts.map +1 -0
  79. package/build/esm/backend/lib/settings.d.ts +21 -0
  80. package/build/esm/backend/lib/settings.d.ts.map +1 -0
  81. package/build/esm/backend/utils/logger.d.ts +9 -0
  82. package/build/esm/backend/utils/logger.d.ts.map +1 -0
  83. package/build/esm/frontend/index.d.ts +4 -0
  84. package/build/esm/frontend/index.d.ts.map +1 -0
  85. package/build/esm/frontend/index.js +440 -0
  86. package/build/esm/frontend/progress-button/progress-button.d.ts +2 -0
  87. package/build/esm/frontend/progress-button/progress-button.d.ts.map +1 -0
  88. package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts +2 -0
  89. package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -0
  90. package/build/esm/frontend/spinner/spinner.d.ts +64 -0
  91. package/build/esm/frontend/spinner/spinner.d.ts.map +1 -0
  92. package/build/esm/frontend/utils/types.d.ts +108 -0
  93. package/build/esm/frontend/utils/types.d.ts.map +1 -0
  94. package/package.json +1 -2
@@ -0,0 +1,136 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% endif %}
4
+
5
+ {% extends "govuk/template.njk" %}
6
+
7
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
8
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
9
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
10
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
11
+ {% from "govuk/components/back-link/macro.njk" import govukBackLink %}
12
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
13
+
14
+ {% if strategicAppChannel == true %}
15
+ {% set htmlClasses = 'govuk-template__mobile' %}
16
+ {% endif %}
17
+
18
+ {% block head %}
19
+ <!--[if !IE 8]><!-->
20
+ <link href="/public/style.css" rel="stylesheet">
21
+ <!--<![endif]-->
22
+
23
+ <!--[if IE 8]>
24
+ <link href="/govuk-frontend/all-ie8.css" rel="stylesheet">
25
+ <![endif]-->
26
+
27
+ <!--[if lt IE 9]>
28
+ <script src="/html5-shiv/html5shiv.js"></script>
29
+ <![endif]-->
30
+
31
+ {% block headMetaData %}{% endblock %}
32
+ {% endblock %}
33
+
34
+ {% block pageTitle %}
35
+ {% if error or errors %}
36
+ {{ 'general.errorTitlePrefix' | translate }} -
37
+ {% endif %}
38
+ {% if pageTitleName %}
39
+ {{ pageTitleName }} -
40
+ {% endif %}
41
+ {{ 'general.serviceNameTitle' | translate }}
42
+ {% endblock %}
43
+
44
+ {% block bodyStart %}
45
+ {% block cookieBanner %}
46
+ {{ frontendUiCookieBanner({
47
+ translations: translations.translation.cookieBanner
48
+ }) }}
49
+ {% endblock %}
50
+ {% endblock %}
51
+
52
+ {% set phaseBannerClasses = "test-banner" if showTestBanner %}
53
+
54
+ {% block header %}
55
+ {{ frontendUiHeader({
56
+ translations: translations.translation.header,
57
+ homepageUrl: "https://www.gov.uk",
58
+ classes: phaseBannerClasses
59
+ }) }}
60
+ {% endblock %}
61
+
62
+ {% if showTestBanner %}
63
+ {% set phaseBannerText = 'general.phaseBanner.testEnvironmentMessage' | translate %}
64
+ {% else %}
65
+ {% set phaseBannerText = 'phaseBanner.text' | translate %}
66
+ {% endif %}
67
+
68
+ {% if showTestBanner %}
69
+ {% set phaseBannerTag = 'general.phaseBanner.tag.test' | translate %}
70
+ {% else %}
71
+ {% set phaseBannerTag = 'general.phaseBanner.tag.beta' | translate %}
72
+ {% endif %}
73
+
74
+ {% block main %}
75
+ <div class="govuk-width-container {{ containerClasses }}">
76
+ {{ frontendUiPhaseBanner({
77
+ translations: translations.translation.phaseBanner,
78
+ url: currentUrl,
79
+ contactUrl: contactUsLinkUrl,
80
+ tag: phaseBannerTag,
81
+ phaseBannerText: phaseBannerText
82
+ }) }}
83
+ {% block beforeContent %}{% endblock %}
84
+ {% if languageToggleEnabled %}
85
+ {{ frontendUiLanguageSelect({
86
+ translations: translations.translation.languageSelect,
87
+ url: currentUrl,
88
+ activeLanguage: htmlLang
89
+ }) }}
90
+ {% endif %}
91
+ {% if showBack %}
92
+ {{ govukBackLink({
93
+ text: "general.back" | translate,
94
+ href: hrefBack
95
+ }) }}
96
+ {% endif %}
97
+ <main class="govuk-main-wrapper {{ mainClasses }}" id="main-content" role="main" {% if mainLang %} lang="{{ mainLang }}"{% endif %}>
98
+ <div class="govuk-grid-row">
99
+ <div class="govuk-grid-column-two-thirds {{ rowClasses }}">
100
+ {% block content %}{% endblock %}
101
+ </div>
102
+ </div>
103
+ </main>
104
+ </div>
105
+ {% endblock %}
106
+
107
+ {% block footer %}
108
+ {% if strategicAppChannel === true %}
109
+ {% else %}
110
+ {{ frontendUiFooter({
111
+ translations: translations.translation.footer
112
+ }) }}
113
+ {% endif %}
114
+ {% endblock %}
115
+
116
+ {% block bodyEnd %}
117
+ {% block scripts %}{% endblock %}
118
+ <script type="text/javascript" src="/public/scripts/dataLayerEvents.js"></script>
119
+ <script type="text/javascript" src="/public/scripts/application.js"></script>
120
+ <script type="text/javascript" src="/public/scripts/all.js"></script>
121
+ <script type="text/javascript" src="/public/scripts/analytics.js"></script>
122
+ <script type="text/javascript" {% if scriptNonce %} nonce="{{ scriptNonce }}"{% endif %}>
123
+ if (window.DI) {
124
+ if (window.DI.appInit) {
125
+ window.DI.appInit({
126
+ ga4ContainerId: "{{ga4ContainerId}}",
127
+ uaContainerId: "not used" // We don't use UA anymore, but it's a required param
128
+ }, {
129
+ isDataSensitive: false,
130
+ enableGa4Tracking: {{isGa4Enabled}},
131
+ cookieDomain: "{{analyticsCookieDomain}}"
132
+ });
133
+ }
134
+ }
135
+ </script>
136
+ {% endblock %}
@@ -0,0 +1,133 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% endif %}
4
+
5
+ {% extends "govuk/template.njk" %}
6
+ {% from "common/ga4-opl/macro.njk" import ga4OnPageLoad %}
7
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
8
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader%}
9
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
10
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
11
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
12
+
13
+ {% block head %}
14
+ {# Dynatrace RUM snippet #}
15
+ {% if dynatraceRumUrl %}
16
+ <script src="{{ dynatraceRumUrl }}" crossorigin="anonymous" nonce="{{ scriptNonce }}"></script>
17
+ {% endif %}
18
+ <link href="/public/style.css" rel="stylesheet">
19
+
20
+ {% endblock %}
21
+
22
+ {% block pageTitle %}
23
+ {%- if error or errors %}
24
+ {{ 'general.errorTitlePrefix' | translate }} -
25
+ {%- endif -%}
26
+ {%- if pageTitleName -%}
27
+ {{ pageTitleName }}
28
+ {%- if not hideTitleProductName %} - {% endif -%}
29
+ {% endif -%}
30
+ {{ 'general.serviceNameTitle' | translate if not hideTitleProductName }}
31
+ {%- endblock %}
32
+
33
+ {% block bodyStart %}
34
+ {% block cookieBanner %}
35
+ {{ frontendUiCookieBanner({
36
+ translations: translations.translation.cookieBanner
37
+ }) }}
38
+ {% endblock %}
39
+ {% endblock %}
40
+ {% block header %}
41
+ {{ frontendUiHeader({
42
+ translations: translations.translation.header,
43
+ homepageUrl: "https://www.gov.uk",
44
+ signOutLink: accountSignOut
45
+ }) }}
46
+ {% endblock %}
47
+
48
+ {% block main %}
49
+ <div class="govuk-width-container {{ containerClasses }}">
50
+ {{ frontendUiPhaseBanner({
51
+ translations: translations.translation.phaseBanner,
52
+ url: currentUrl,
53
+ contactUrl: ("[supportUrl]", authFrontEndUrl + "/contact-us-questions?theme=suggestions_feedback")
54
+ }) if not hidePhaseBanner }}
55
+
56
+ {% if showLanguageToggle %}
57
+ {{ frontendUiLanguageSelect({
58
+ translations: translations.translation.languageSelect,
59
+ url: currentUrl,
60
+ activeLanguage: htmlLang
61
+ }) }}
62
+ {% endif %}
63
+
64
+ {% block backLinkBlock %}
65
+ {% if backLink %}
66
+ <a href="{{ backLink }}" class="govuk-back-link js-back-link">
67
+ {{ backLinkText }}
68
+ {{ 'general.back' | translate if not backLinkText }}
69
+ </a>
70
+ {% endif %}
71
+ {% endblock %}
72
+
73
+ {% block beforeContent %}{% endblock %}
74
+
75
+ <main class="govuk-main-wrapper {{ mainClasses }}" id="main-content" {% if mainLang %} lang="{{ mainLang }}" {% endif %}>
76
+ {% block content %}{% endblock %}
77
+ </main>
78
+ </div>
79
+
80
+ {% block feedback %}{% endblock %}
81
+ {% endblock %}
82
+
83
+ {% block footer %}
84
+ {{ frontendUiFooter({
85
+ translations: translations.translation.footer
86
+ }) }}
87
+ {% endblock %}
88
+
89
+ {% block bodyEnd %}
90
+ {% block scripts %}{% endblock %}
91
+
92
+ <script type="module" src="/public/scripts/govuk-frontend.min.js" {% if scriptNonce %} nonce="{{ scriptNonce }}"{% endif %}></script>
93
+
94
+ <script type="module" {% if scriptNonce %} nonce="{{ scriptNonce }}"{% endif %}>
95
+ import { initAll } from '/public/scripts/govuk-frontend.min.js';
96
+ initAll();
97
+ </script>
98
+
99
+ <script type="text/javascript" src="/public/scripts/analytics.js" nonce="{{ scriptNonce }}"></script>
100
+
101
+ <script type="text/javascript" nonce="{{ scriptNonce }}">
102
+ {% if backLinkJS %}
103
+ var backLink = document.querySelector('.js-back-link');
104
+ if (backLink) {
105
+ backLink.addEventListener('click', function(e) {
106
+ var referrer = new URL(document.referrer).hostname;
107
+ if (referrer === document.location.hostname && window.history.length > 2) {
108
+ event.preventDefault();
109
+ window.history.back();
110
+ }
111
+ });
112
+ }
113
+ {% endif %}
114
+ </script>
115
+
116
+ <script type="text/javascript" {% if scriptNonce %} nonce="{{ scriptNonce }}"{% endif %}>
117
+ if (window.DI) {
118
+ window.DI.appInit({
119
+ ga4ContainerId: "{{ ga4ContainerId }}"
120
+ }, {
121
+ enableGa4Tracking: {{ isGa4Enabled }},
122
+ cookieDomain: "{{ analyticsCookieDomain }}",
123
+ isDataSensitive: true,
124
+ enablePageViewTracking: true,
125
+ enableFormResponseTracking: true,
126
+ enableFormChangeTracking: true,
127
+ enableFormErrorTracking: true,
128
+ enableNavigationTracking: true,
129
+ enableSelectContentTracking: {{ isSelectContentTrackingEnabled }}
130
+ });
131
+ }
132
+ </script>
133
+ {% endblock %}
@@ -0,0 +1,123 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% set assetPath = "/public/rebrand"%}
4
+ {% endif %}
5
+
6
+ {% if isPageDataSensitive is not defined %}
7
+ {% set isPageDataSensitive = true %}
8
+ {% endif %}
9
+ {% set taxLevel1 = 'web cri' %}
10
+
11
+ {% extends "form-template.njk" %}
12
+
13
+ {% from "frontend-analytics/components/ga4-opl/macro.njk" import ga4OnPageLoad %}
14
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
15
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
16
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
17
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
18
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
19
+
20
+ {% block head %}
21
+ <link rel="stylesheet" href="/public/stylesheets/application.css"/>
22
+ {% endblock %}
23
+
24
+ {%- block pageTitle %}
25
+ {{- (translate("govuk.error", { default: "Error" }) + ": ") if errorlist.length }}{{ hmpoTitle | safe }}{{ " – " + govukServiceName | safe if govukServiceName !== " " }} – GOV.UK One Login
26
+ {%- endblock %}
27
+
28
+ {% block header %}
29
+ {% block cookieBanner %}
30
+ {{ frontendUiCookieBanner({
31
+ translations: translations.cookieBanner
32
+ }
33
+ )}}
34
+ {% endblock %}
35
+
36
+ {% block govukHeader %}
37
+ {{ frontendUiHeader({
38
+ translations: translations.header,
39
+ homepageUrl: "https://www.gov.uk"
40
+ }) }}
41
+ {% endblock %}
42
+ {% endblock %}
43
+
44
+ {% block beforeContent %}
45
+ {{ frontendUiPhaseBanner({
46
+ translations: translations.phaseBanner,
47
+ url: currentUrl,
48
+ contactUrl: 'https://signin.account.gov.uk/contact-us'
49
+ }) }}
50
+ {% block backLink %}
51
+ {{ frontendUiLanguageSelect({
52
+ translations: translations.languageSelect,
53
+ url: currentUrl,
54
+ activeLanguage: htmlLang
55
+ }) }}
56
+ {% if backLink %}
57
+ {% from "govuk/components/back-link/macro.njk" import govukBackLink %}
58
+ <span id="back">{{ govukBackLink({
59
+ text: translate("govuk.backLink"),
60
+ href: backLink}) }}
61
+ </span>
62
+ {% endif %}
63
+
64
+ {% endblock %}
65
+ {% endblock %}
66
+
67
+ {% block footer %}
68
+ {{ frontendUiFooter({
69
+ translations: translations.footer
70
+ }) }}
71
+ {% endblock %}
72
+
73
+ {% block bodyEnd %}
74
+ {% block scripts %}
75
+ <script type="text/javascript" src="/public/javascripts/all.js"></script>
76
+ <script type="text/javascript" src="/public/javascripts/analytics.js"></script>
77
+ <script type="text/javascript" {% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
78
+ window
79
+ .GOVUKFrontend
80
+ .initAll()
81
+ window
82
+ .DI
83
+ .appInit({
84
+ ga4ContainerId: "{{ga4ContainerId}}",
85
+ uaContainerId: "{{uaContainerId}}"
86
+ }, {
87
+ enableGa4Tracking: {{ga4Enabled}},
88
+ enableUaTracking: {{uaEnabled}},
89
+ enablePageViewTracking: {{ga4PageViewEnabled}},
90
+ enableFormErrorTracking: {{ga4FormErrorEnabled}},
91
+ enableFormChangeTracking: {{ga4FormChangeEnabled}},
92
+ enableFormResponseTracking: {{ga4FormResponseEnabled}},
93
+ enableNavigationTracking: {{ga4NavigationEnabled}},
94
+ enableSelectContentTracking: {{ga4SelectContentEnabled}},
95
+ cookieDomain: "{{analyticsCookieDomain}}",
96
+ isDataSensitive: {{analyticsDataSensitive}},
97
+ isPageDataSensitive: {{isPageDataSensitive}}
98
+ });
99
+ </script>
100
+
101
+ {% if deviceIntelligenceEnabled %}
102
+ <script type="module" src="/public/javascripts/deviceIntelligence.js"></script>
103
+ <script type="module" {% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
104
+ import {setFingerprintCookie} from "/public/javascripts/deviceIntelligence.js";
105
+ setFingerprintCookie("{{deviceIntelligenceDomain}}")
106
+ </script>
107
+ {% endif %}
108
+
109
+ {{ ga4OnPageLoad({
110
+ nonce: cspNonce,
111
+ statusCode: statusCode,
112
+ dynamic: isPageDynamic,
113
+ englishPageTitle: pageTitleKey | translate,
114
+ taxonomyLevel1: taxLevel1,
115
+ taxonomyLevel2: taxLevel2,
116
+ taxonomyLevel3: taxLevel3,
117
+ taxonomyLevel4: taxLevel4,
118
+ taxonomyLevel5: taxLevel5,
119
+ contentId: contentID,
120
+ loggedInStatus: loggedInStatus
121
+ }) }}
122
+ {% endblock %}
123
+ {% endblock %}
@@ -0,0 +1,123 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% set assetPath = "/public/rebrand"%}
4
+ {% endif %}
5
+
6
+ {% if isPageDataSensitive is not defined %}
7
+ {% set isPageDataSensitive = true %}
8
+ {% endif %}
9
+ {% set taxLevel1 = 'web cri' %}
10
+
11
+ {% extends "hmpo-template.njk" %}
12
+
13
+ {% from "frontend-analytics/components/ga4-opl/macro.njk" import ga4OnPageLoad %}
14
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
15
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
16
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
17
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
18
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
19
+
20
+ {% block head %}
21
+ <link rel="stylesheet" href="/public/stylesheets/application.css"/>
22
+ {% endblock %}
23
+
24
+ {%- block pageTitle %}
25
+ {{- (translate("govuk.error", { default: "Error" }) + ": ") if errorlist.length }}{{ hmpoTitle | safe }}{{ " – " + govukServiceName | safe if govukServiceName !== " " }} – GOV.UK One Login
26
+ {%- endblock %}
27
+
28
+ {% block header %}
29
+ {% block cookieBanner %}
30
+ {{ frontendUiCookieBanner({
31
+ translations: translations.cookieBanner
32
+ }
33
+ )}}
34
+ {% endblock %}
35
+
36
+ {% block govukHeader %}
37
+ {{ frontendUiHeader({
38
+ translations: translations.header,
39
+ homepageUrl: "https://www.gov.uk"
40
+ }) }}
41
+ {% endblock %}
42
+ {% endblock %}
43
+
44
+ {% block beforeContent %}
45
+ {{ frontendUiPhaseBanner({
46
+ translations: translations.phaseBanner,
47
+ url: currentUrl,
48
+ contactUrl: 'https://signin.account.gov.uk/contact-us'
49
+ }) }}
50
+ {% block backLink %}
51
+ {{ frontendUiLanguageSelect({
52
+ translations: translations.languageSelect,
53
+ url: currentUrl,
54
+ activeLanguage: htmlLang
55
+ }) }}
56
+ {% if backLink %}
57
+ {% from "govuk/components/back-link/macro.njk" import govukBackLink %}
58
+ <span id="back">{{ govukBackLink({
59
+ text: translate("govuk.backLink"),
60
+ href: backLink}) }}
61
+ </span>
62
+ {% endif %}
63
+
64
+ {% endblock %}
65
+ {% endblock %}
66
+
67
+ {% block footer %}
68
+ {{ frontendUiFooter({
69
+ translations: translations.footer
70
+ }) }}
71
+ {% endblock %}
72
+
73
+ {% block bodyEnd %}
74
+ {% block scripts %}
75
+ <script type="text/javascript" src="/public/javascripts/all.js"></script>
76
+ <script type="text/javascript" src="/public/javascripts/analytics.js"></script>
77
+ <script type="text/javascript" {% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
78
+ window
79
+ .GOVUKFrontend
80
+ .initAll()
81
+ window
82
+ .DI
83
+ .appInit({
84
+ ga4ContainerId: "{{ga4ContainerId}}",
85
+ uaContainerId: "{{uaContainerId}}"
86
+ }, {
87
+ enableGa4Tracking: {{ga4Enabled}},
88
+ enableUaTracking: {{uaEnabled}},
89
+ enablePageViewTracking: {{ga4PageViewEnabled}},
90
+ enableFormErrorTracking: {{ga4FormErrorEnabled}},
91
+ enableFormChangeTracking: {{ga4FormChangeEnabled}},
92
+ enableFormResponseTracking: {{ga4FormResponseEnabled}},
93
+ enableNavigationTracking: {{ga4NavigationEnabled}},
94
+ enableSelectContentTracking: {{ga4SelectContentEnabled}},
95
+ cookieDomain: "{{analyticsCookieDomain}}",
96
+ isDataSensitive: {{analyticsDataSensitive}},
97
+ isPageDataSensitive: {{isPageDataSensitive}}
98
+ });
99
+ </script>
100
+
101
+ {% if deviceIntelligenceEnabled %}
102
+ <script type="module" src="/public/javascripts/deviceIntelligence.js"></script>
103
+ <script type="module" {% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
104
+ import {setFingerprintCookie} from "/public/javascripts/deviceIntelligence.js";
105
+ setFingerprintCookie("{{deviceIntelligenceDomain}}")
106
+ </script>
107
+ {% endif %}
108
+
109
+ {{ ga4OnPageLoad({
110
+ nonce: cspNonce,
111
+ statusCode: statusCode,
112
+ dynamic: isPageDynamic,
113
+ englishPageTitle: pageTitleKey | translate,
114
+ taxonomyLevel1: taxLevel1,
115
+ taxonomyLevel2: taxLevel2,
116
+ taxonomyLevel3: taxLevel3,
117
+ taxonomyLevel4: taxLevel4,
118
+ taxonomyLevel5: taxLevel5,
119
+ contentId: contentID,
120
+ loggedInStatus: loggedInStatus
121
+ }) }}
122
+ {% endblock %}
123
+ {% endblock %}
@@ -0,0 +1,172 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% endif %}
4
+
5
+ {% if isPageDataSensitive is not defined %}
6
+ {% set isPageDataSensitive = true %}
7
+ {% endif %}
8
+ {% set taxLevel1 = 'web cri' %}
9
+ {% set taxLevel2 = 'pre cri' %}
10
+
11
+
12
+ {% extends "govuk/template.njk" %}
13
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
14
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
15
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
16
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
17
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
18
+ {% from "frontend-analytics/components/ga4-opl/macro.njk" import ga4OnPageLoad %}
19
+ {% from "govuk/components/back-link/macro.njk" import govukBackLink %}
20
+ {% from "govuk/components/error-summary/macro.njk" import govukErrorSummary %}
21
+ {% from "govuk/components/notification-banner/macro.njk" import govukNotificationBanner %}
22
+
23
+ {# Set language values for govuk/template.njk #}
24
+ {% set htmlLang = currentLanguage %}
25
+ {% set pageTitleLang = currentLanguage %}
26
+ {% set mainLang = currentLanguage %}
27
+
28
+ {% block head %}
29
+ {# Dynatrace RUM snippet #}
30
+ {% if dynatraceRumUrl %}
31
+ <script src='{{ dynatraceRumUrl }}' crossorigin="anonymous" nonce='{{ cspNonce }}'></script>
32
+ {% endif %}
33
+
34
+ <link href="/public/stylesheets/application.css" rel="stylesheet">
35
+
36
+ {# For older browsers to allow them to recognise HTML5 elements such as `<header>` #}
37
+ <!--[if lt IE 9]>
38
+ <script nonce='{{ cspNonce }}' src="/html5-shiv/html5shiv.js"></script>
39
+ <![endif]-->
40
+
41
+ {% block headMetaData %}{% endblock %}
42
+
43
+ {% endblock %}
44
+
45
+ {% block pageTitle-%}
46
+ {%- if pageErrorState %}
47
+ {{ 'general.govuk.errorTitlePrefix' | translate }}
48
+ {% endif %}
49
+ {%- if pageTitleKey %}{{ pageTitleKey | translateWithContextOrFallback(context) }} – GOV.UK One Login{% endif %}
50
+ {%- endblock %}
51
+
52
+ {% block bodyStart %}
53
+ {% block cookieBanner %}
54
+ {{ frontendUiCookieBanner({
55
+ translations: translations.translation.cookieBanner
56
+ }
57
+ )}}
58
+
59
+ {%endblock%}
60
+ {% endblock %}
61
+
62
+ {% block header %}
63
+ {{ frontendUiHeader({
64
+ translations: translations.translation.header,
65
+ homepageUrl: "https://www.gov.uk",
66
+ signOutLink: logoutUrl
67
+ }) }}
68
+ {% endblock %}
69
+
70
+ {% block main %}
71
+ <div class="govuk-width-container {{ containerClasses }}">
72
+ {{ frontendUiPhaseBanner({
73
+ translations: translations.translation.phaseBanner,
74
+ url: currentUrl,
75
+ contactUrl: contactUsUrl
76
+ }) }}
77
+
78
+ {% block beforeContent %}{% endblock %}
79
+ {% if showLanguageToggle %}
80
+ {{ frontendUiLanguageSelect({
81
+ translations: translations.translation.languageSelect,
82
+ url: currentUrl,
83
+ activeLanguage: htmlLang
84
+ }) }}
85
+ {% endif %}
86
+ {% if showBack %}
87
+ {{ govukBackLink({
88
+ text: "general.govuk.backLink" | translate,
89
+ href: hrefBack
90
+ }) }}
91
+ {% endif %}
92
+ <main class="govuk-main-wrapper {{ mainClasses }}" id="main-content"{% if currentLanguage %} lang="{{ currentLanguage }}"{% endif %}>
93
+ <div class="govuk-grid-row">
94
+ <div class="govuk-grid-column-two-thirds {{ rowClasses }}">
95
+ {% if (displayBanner) %}
96
+ {{ govukNotificationBanner({
97
+ html: bannerMessage,
98
+ type: bannerType,
99
+ titleText: bannerTitleText
100
+ }) }}
101
+ {% endif %}
102
+
103
+ {% if errorState %}
104
+ {{ govukErrorSummary({
105
+ titleText: errorTitle | default('Error Summary'),
106
+ errorList: [
107
+ {
108
+ text: errorText | translate,
109
+ href: errorHref | default("#")
110
+ }
111
+ ]
112
+ }) }}
113
+ {% endif %}
114
+ {% block content %}{% endblock %}
115
+ </div>
116
+ </div>
117
+ </main>
118
+ </div>
119
+ {% endblock %}
120
+
121
+ {% block footer %}
122
+ {{ frontendUiFooter({
123
+ translations: translations.translation.footer
124
+ }) }}
125
+ {% endblock %}
126
+
127
+ {% block bodyEnd %}
128
+ {% block scripts %}{% endblock %}
129
+ <script nonce='{{ cspNonce }}' src="/public/javascripts/application.js"></script>
130
+ <script type="module" nonce='{{ cspNonce }}' src="/public/javascripts/govuk-frontend.min.js"></script>
131
+ <script type="module" nonce='{{ cspNonce }}'>
132
+ import {initAll} from '/public/javascripts/govuk-frontend.min.js'
133
+ initAll()
134
+ </script>
135
+ {% if useDeviceIntelligence %}
136
+ <script type="module" nonce='{{ cspNonce }}' src="/public/javascripts/fingerprint.js"></script>
137
+ <script type="module" nonce='{{ cspNonce }}'>
138
+ import {setFingerprintCookie} from "/public/javascripts/fingerprint.js";
139
+ setFingerprintCookie('{{ serviceDomain }}')
140
+ </script>
141
+ {% endif %}
142
+ <script nonce='{{ cspNonce }}'>
143
+ window.DI = window.DI || {};
144
+ window.DI.httpStatusCode = {{ statusCode | d(200) }};
145
+ window.DI.journeyState = "{{ googleTagManagerPageId }}";
146
+ window
147
+ .DI
148
+ .appInit({
149
+ ga4ContainerId: "{{ ga4ContainerId }}",
150
+ uaContainerId: "{{ uaContainerId }}"
151
+ }, {
152
+ isDataSensitive: {{analyticsDataSensitive}},
153
+ isPageDataSensitive: {{isPageDataSensitive}},
154
+ enableGa4Tracking: {{isGa4Enabled}},
155
+ enableUaTracking: {{isUaEnabled}},
156
+ cookieDomain: "{{analyticsCookieDomain}}"
157
+ });
158
+ </script>
159
+ {{ ga4OnPageLoad({
160
+ nonce: cspNonce,
161
+ statusCode: statusCode,
162
+ dynamic: isPageDynamic,
163
+ englishPageTitle: pageTitleKey | translateToEnglish,
164
+ taxonomyLevel1: taxLevel1,
165
+ taxonomyLevel2: taxLevel2,
166
+ taxonomyLevel3: taxLevel3,
167
+ taxonomyLevel4: taxLevel4,
168
+ taxonomyLevel5: taxLevel5,
169
+ contentId: contentID
170
+ }) }}
171
+
172
+ {% endblock %}