govuk_publishing_components 21.60.1 → 21.63.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +102 -73
  3. data/app/assets/javascripts/govuk_publishing_components/ie.js +2 -0
  4. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js +1 -1
  5. data/app/assets/javascripts/govuk_publishing_components/vendor/html5shiv-printshiv.js +4 -0
  6. data/app/assets/javascripts/govuk_publishing_components/vendor/json2.js +487 -0
  7. data/app/assets/stylesheets/component_guide/application.scss +4 -0
  8. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -0
  9. data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +3 -16
  10. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-footer.scss +8 -0
  11. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-for-public.scss +4 -0
  12. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-header.scss +87 -1
  13. data/app/assets/stylesheets/govuk_publishing_components/components/_radio.scss +1 -1
  14. data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +46 -0
  15. data/app/assets/stylesheets/govuk_publishing_components/govuk_frontend_support.scss +8 -0
  16. data/app/models/govuk_publishing_components/audit_applications.rb +35 -23
  17. data/app/models/govuk_publishing_components/audit_comparer.rb +13 -0
  18. data/app/models/govuk_publishing_components/component_example.rb +4 -0
  19. data/app/views/govuk_publishing_components/audit/show.html.erb +32 -3
  20. data/app/views/govuk_publishing_components/component_guide/component_doc/_component.html.erb +1 -0
  21. data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +1 -1
  22. data/app/views/govuk_publishing_components/components/_document_list.html.erb +18 -9
  23. data/app/views/govuk_publishing_components/components/_image_card.html.erb +1 -1
  24. data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +32 -21
  25. data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +76 -0
  26. data/app/views/govuk_publishing_components/components/_layout_header.html.erb +39 -51
  27. data/app/views/govuk_publishing_components/components/_search.html.erb +10 -5
  28. data/app/views/govuk_publishing_components/components/_share_links.html.erb +9 -9
  29. data/app/views/govuk_publishing_components/components/docs/document_list.yml +18 -0
  30. data/app/views/govuk_publishing_components/components/docs/image_card.yml +13 -1
  31. data/app/views/govuk_publishing_components/components/docs/layout_footer.yml +17 -0
  32. data/app/views/govuk_publishing_components/components/docs/layout_for_admin.yml +5 -1
  33. data/app/views/govuk_publishing_components/components/docs/layout_for_public.yml +29 -0
  34. data/app/views/govuk_publishing_components/components/docs/layout_header.yml +34 -0
  35. data/app/views/govuk_publishing_components/components/docs/search.yml +6 -0
  36. data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +6 -6
  37. data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +6 -6
  38. data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +8 -10
  39. data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +23 -0
  40. data/app/views/govuk_publishing_components/components/layout_header/_navigation_items.html.erb +17 -0
  41. data/app/views/govuk_publishing_components/components/layout_header/_search.html.erb +9 -0
  42. data/config/initializers/assets.rb +8 -0
  43. data/config/locales/en.yml +18 -0
  44. data/lib/govuk_publishing_components.rb +1 -0
  45. data/lib/govuk_publishing_components/presenters/breadcrumb_selector.rb +5 -0
  46. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_priority.rb +1 -0
  47. data/lib/govuk_publishing_components/presenters/image_card_helper.rb +3 -2
  48. data/lib/govuk_publishing_components/presenters/public_layout_helper.rb +380 -0
  49. data/lib/govuk_publishing_components/version.rb +1 -1
  50. data/node_modules/govuk-frontend/govuk/components/character-count/_index.scss +0 -4
  51. data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +33 -33
  52. data/node_modules/govuk-frontend/package.json +1 -1
  53. metadata +12 -2
@@ -1,6 +1,7 @@
1
1
  <div class="component-guide-preview
2
2
  <% if example.right_to_left? %>direction-rtl<% end %>
3
3
  <% if example.dark_background? %>dark-background<% end %>
4
+ <% if example.black_background? %>black-background<% end %>
4
5
  <% if preview_page %>component-guide-preview--simple<% end %>" data-content="EXAMPLE">
5
6
  <%= render "govuk_publishing_components/component_guide/component_doc/component_output", example: example, component_doc: component_doc %>
6
7
  </div>
@@ -5,7 +5,7 @@
5
5
  breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs)
6
6
 
7
7
  classes = "gem-c-breadcrumbs govuk-breadcrumbs"
8
- classes << " gem-c-breadcrumbs--collapse-on-mobile" if collapse_on_mobile
8
+ classes << " govuk-breadcrumbs--collapse-on-mobile" if collapse_on_mobile
9
9
  classes << " gem-c-breadcrumbs--inverse" if inverse
10
10
  %>
11
11
 
@@ -33,6 +33,7 @@
33
33
  item[:link][:path],
34
34
  data: item[:link][:data_attributes],
35
35
  class: "#{item_classes} gem-c-document-list__item-link",
36
+ lang: item[:link][:locale].presence
36
37
  )
37
38
  else
38
39
  content_tag(
@@ -54,16 +55,24 @@
54
55
 
55
56
  <% if item[:metadata] %>
56
57
  <ul class="gem-c-document-list__item-metadata">
57
- <% item[:metadata].compact.each do |item_metadata_key, item_metadata_value| %>
58
- <li class="gem-c-document-list__attribute">
59
- <% if item_metadata_key.to_s.eql?("public_updated_at") %>
60
- <time datetime="<%= item_metadata_value.iso8601 %>">
61
- <%= l(item_metadata_value, format: '%e %B %Y') %>
62
- </time>
63
- <% else %>
64
- <%= item_metadata_value %>
58
+ <% item[:metadata].compact.each do |item_metadata_key, item_metadata_value| %>
59
+ <% if !item_metadata_key.to_s.eql?("locale") %>
60
+ <% lang = item[:metadata][:locale].present? && item[:metadata][:locale][item_metadata_key].present? ? item[:metadata][:locale][item_metadata_key] : nil %>
61
+
62
+ <%= content_tag(
63
+ :li, item_metadata_value,
64
+ class: "gem-c-document-list__attribute",
65
+ lang: lang
66
+ ) do %>
67
+ <% if item_metadata_key.to_s.eql?("public_updated_at") %>
68
+ <time datetime="<%= item_metadata_value.iso8601 %>">
69
+ <%= l(item_metadata_value, format: '%e %B %Y') %>
70
+ </time>
71
+ <% else %>
72
+ <%= item_metadata_value %>
73
+ <% end %>
65
74
  <% end %>
66
- </li>
75
+ <% end %>
67
76
  <% end %>
68
77
  </ul>
69
78
  <% end %>
@@ -7,7 +7,7 @@
7
7
  <% if card_helper.href || card_helper.extra_links.any? %>
8
8
  <div class="gem-c-image-card <%= "gem-c-image-card--large" if card_helper.large %> <%= brand_helper.brand_class %>"
9
9
  <%= "data-module=track-click" if card_helper.is_tracking? %>
10
- >
10
+ <%= "lang=#{card_helper.lang}" if card_helper.lang %>>
11
11
  <%= card_helper.image %>
12
12
 
13
13
  <div class="gem-c-image-card__text-wrapper">
@@ -1,36 +1,47 @@
1
1
  <%
2
2
  meta ||= []
3
3
  navigation ||= []
4
+ with_border ||= false
4
5
  %>
5
- <footer class="gem-c-layout-footer govuk-footer" role="contentinfo">
6
+ <footer class="gem-c-layout-footer govuk-footer <%= "gem-c-layout-footer--border" if with_border %> role="contentinfo">
6
7
  <div class="govuk-width-container ">
7
8
  <% if navigation.any? %>
8
9
  <div class="govuk-footer__navigation">
9
10
  <% navigation.each do |item| %>
10
- <div class="govuk-footer__section">
11
- <h2 class="govuk-footer__heading govuk-heading-m"><%= item[:title] %></h2>
12
- <% if item[:items] %>
13
- <%
14
- list_classes = %w( govuk-footer__list )
15
- list_classes << "govuk-footer__list--columns-#{item[:columns]}" if item[:columns]
16
- %>
17
- <ul class="<%= list_classes.join(' ') %>">
18
- <% item[:items].each do |item| %>
19
- <% if item[:href] && item[:text] %>
20
- <li class="govuk-footer__list-item">
21
- <%
22
- attributes = { class: "govuk-footer__link" }.merge(item.fetch(:attributes, {}))
23
- attributes[:rel] = "noopener" if attributes[:target] == "_blank" && !attributes[:rel]
24
- %>
25
- <%= link_to item[:text], item[:href], attributes %>
26
- </li>
11
+ <% if item[:items] %>
12
+ <%
13
+ case item[:columns]
14
+ when 2
15
+ width_class = "govuk-grid-column-two-thirds"
16
+ when 3
17
+ width_class = "govuk-grid-column-full"
18
+ else
19
+ width_class = "govuk-grid-column-one-third"
20
+ end
21
+
22
+ list_classes = %w( govuk-footer__list )
23
+ list_classes << "govuk-footer__list--columns-#{item[:columns]}" if item[:columns]
24
+ %>
25
+ <div class="<%= width_class %>">
26
+ <h2 class="govuk-footer__heading govuk-heading-m"><%= item[:title] %></h2>
27
+ <ul class="<%= list_classes.join(' ') %>">
28
+ <% item[:items].each do |item| %>
29
+ <% if item[:href] && item[:text] %>
30
+ <li class="govuk-footer__list-item">
31
+ <%
32
+ attributes = { class: "govuk-footer__link" }.merge(item.fetch(:attributes, {}))
33
+ attributes[:rel] = "noopener" if attributes[:target] == "_blank" && !attributes[:rel]
34
+ %>
35
+ <%= link_to item[:text], item[:href], attributes %>
36
+ </li>
37
+ <% end %>
27
38
  <% end %>
28
- <% end %>
29
- </ul>
39
+ </ul>
40
+ </div>
30
41
  <% end %>
31
- </div>
32
42
  <% end %>
33
43
  </div>
44
+
34
45
  <hr class="govuk-footer__section-break">
35
46
  <% end %>
36
47
  <div class="govuk-footer__meta">
@@ -0,0 +1,76 @@
1
+ <%
2
+ title ||= "GOV.UK - The best place to find government services and information"
3
+ html_lang ||= "en"
4
+ full_width ||= false
5
+ omit_header ||= false
6
+ show_search = local_assigns.include?(:show_search) ? local_assigns[:show_search] : true
7
+ layout_helper = GovukPublishingComponents::Presenters::PublicLayoutHelper.new(local_assigns)
8
+ -%>
9
+ <!DOCTYPE html>
10
+ <!--[if lt IE 9]><html class="lte-ie8" lang="<%= html_lang %>"><![endif]-->
11
+ <!--[if gt IE 8]><!--><html lang="<%= html_lang %>"><!--<![endif]-->
12
+ <head>
13
+ <meta charset="utf-8" />
14
+ <title><%= title %></title>
15
+
16
+ <%= csrf_meta_tags %>
17
+
18
+ <%= stylesheet_link_tag "application", media: "all" %>
19
+ <%= stylesheet_link_tag "print", media: "print" %>
20
+ <!--[if lt IE 9]><%= javascript_include_tag "govuk_publishing_components/ie", integrity: true, crossorigin: "anonymous" %><![endif]-->
21
+ <link rel="shortcut icon" href="<%= asset_path 'favicon.ico' %>" type="image/x-icon" />
22
+ <link rel="mask-icon" href="<%= asset_path 'govuk-mask-icon.svg' %>" color="#0b0c0c">
23
+ <link rel="apple-touch-icon" sizes="180x180" href="<%= asset_path "govuk-apple-touch-icon-180x180.png" %>">
24
+ <link rel="apple-touch-icon" sizes="167x167" href="<%= asset_path "govuk-apple-touch-icon-167x167.png" %>">
25
+ <link rel="apple-touch-icon" sizes="152x152" href="<%= asset_path "govuk-apple-touch-icon-152x152.png" %>">
26
+ <link rel="apple-touch-icon" href="<%= asset_path "govuk-apple-touch-icon.png" %>">
27
+
28
+ <meta name="theme-color" content="#0b0c0c" />
29
+ <meta name="viewport" content="width=device-width, initial-scale=1">
30
+ <% # Ensure that older IE versions always render with the correct rendering engine %>
31
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
32
+
33
+ <% # The default og:image is added below :head so that scrapers see any custom metatags first, and this is just a fallback %>
34
+ <meta property="og:image" content="<%= asset_path "govuk-opengraph-image.png" %>">
35
+
36
+ <%= yield :head %>
37
+ </head>
38
+ <body class="gem-c-layout-for-public govuk-template__body">
39
+ <script>
40
+ document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');
41
+ </script>
42
+ <%= render "govuk_publishing_components/components/skip_link", {
43
+ href: "#content"
44
+ } %>
45
+
46
+ <%= render "govuk_publishing_components/components/cookie_banner" %>
47
+
48
+ <% unless omit_header %>
49
+ <%= render "govuk_publishing_components/components/layout_header", {
50
+ environment: "public",
51
+ search: show_search,
52
+ # layout-header will always have border-bottom, unless the layout is full width
53
+ remove_bottom_border: full_width,
54
+ } %>
55
+ <% end %>
56
+ <div class="<%= "govuk-width-container" unless full_width %>" id="content">
57
+ <%= yield :before_content %>
58
+ <main class="govuk-main-wrapper">
59
+ <%= yield %>
60
+ </main>
61
+ </div>
62
+
63
+ <div class="govuk-width-container">
64
+ <%= render "govuk_publishing_components/components/feedback" %>
65
+ </div>
66
+
67
+ <% unless local_assigns[:hide_footer_links] %>
68
+ <%= render "govuk_publishing_components/components/layout_footer", {
69
+ with_border: true,
70
+ navigation: layout_helper.footer_navigation,
71
+ meta: layout_helper.footer_meta,
72
+ } %>
73
+ <% end %>
74
+ <%= javascript_include_tag 'application' %>
75
+ </body>
76
+ </html>
@@ -1,61 +1,49 @@
1
1
  <%
2
- full_width ||= false
3
2
  product_name ||= "Publishing"
4
3
  public_environment = environment.eql?("public")
4
+ full_width ||= false
5
+ search ||= false
6
+ search_left ||= false
5
7
  navigation_items ||= []
6
- if full_width
7
- width_class = "govuk-header__container--full-width"
8
- else
9
- width_class = "govuk-width-container"
10
- end
8
+ remove_bottom_border ||= false
9
+ search_left ||= false
10
+ width_class = full_width ? "govuk-header__container--full-width" : "govuk-width-container"
11
+ header_classes = %w(gem-c-layout-header govuk-header)
12
+ header_classes << "gem-c-layout-header--#{environment}"
13
+ header_classes << "gem-c-layout-header--no-bottom-border" if remove_bottom_border
14
+ header_classes << "gem-c-layout-header--search-left" if search_left
11
15
  %>
12
- <header class="gem-c-layout-header govuk-header gem-c-layout-header--<%= environment %>" role="banner" data-module="govuk-header">
13
- <div class="govuk-header__container <%= width_class %>">
14
- <div class="govuk-header__logo gem-c-header__logo">
15
- <a href="/" class="govuk-header__link govuk-header__link--homepage">
16
- <span class="govuk-header__logotype">
17
- <svg role="presentation" focusable="false" class="govuk-header__logotype-crown" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 132 97" height="32" width="36">
18
- <path fill="currentColor" fill-rule="evenodd"
19
- d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"
20
- ></path>
21
- <image src="<%= asset_path('govuk-logotype-crown.png') %>" class="govuk-header__logotype-crown-fallback-image"></image>
22
- </svg>
23
- <span class="govuk-header__logotype-text">
24
- GOV.UK
25
- </span>
26
- </span>
27
16
 
28
- <% unless public_environment %>
29
- <span class="govuk-header__product-name gem-c-header__product-name">
30
- <%= product_name %>
31
- </span>
32
-
33
- <span class="gem-c-environment-tag govuk-tag gem-c-environment-tag--<%= environment %>">
34
- <%= environment %>
35
- </span>
36
- <% end %>
37
- </a>
38
-
39
- </div><div class="govuk-header__content gem-c-header__content">
40
-
41
- <% if navigation_items.any? %>
42
- <button role="button" class="govuk-header__menu-button gem-c-header__menu-button govuk-js-header-toggle" aria-controls="navigation" aria-label="Show or hide Top Level Navigation">Menu</button>
43
- <nav class="gem-c-header__nav">
44
- <ul id="navigation" class="govuk-header__navigation govuk-header__navigation--end" aria-label="Top Level Navigation">
45
- <% navigation_items.each_with_index do |item, index| %>
46
- <li class="govuk-header__navigation-item <%= "govuk-header__navigation-item--active" if item[:active] %>
47
- <%= "govuk-header__navigation-item--collapsed-menu-only" if item[:show_only_in_collapsed_menu] %>">
48
- <%= link_to(
49
- item[:text],
50
- item[:href],
51
- class: 'govuk-header__link',
52
- ) %>
53
- </li>
17
+ <header class="<%= header_classes.join(' ') %>" role="banner" data-module="govuk-header">
18
+ <div class="govuk-header__container <%= width_class %>">
19
+ <% if search_left %>
20
+ <div class="govuk-grid-row govuk-!-margin-left-0 govuk-!-margin-right-0">
21
+ <div class="gem-c-layout-header__logo govuk-grid-column-one-third-from-desktop">
22
+ <%= render "govuk_publishing_components/components/layout_header/header_logo", public_environment: public_environment, environment: environment, product_name: product_name %>
23
+ </div>
24
+ </div>
25
+ <div class="govuk-grid-row govuk-!-margin-left-0 govuk-!-margin-right-0">
26
+ <div class="govuk-grid-column-full govuk-grid-column-one-third-from-desktop gem-c-layout-header__search">
27
+ <%= render "govuk_publishing_components/components/layout_header/search" %>
28
+ </div>
29
+ <div class="govuk-header__content gem-c-header__content govuk-grid-column-full">
30
+ <%= render "govuk_publishing_components/components/layout_header/navigation_items", navigation_items: navigation_items %>
31
+ </div>
32
+ </div>
33
+ <% else %>
34
+ <div class="govuk-grid-row govuk-!-margin-left-0 govuk-!-margin-right-0">
35
+ <div class="gem-c-layout-header__logo govuk-grid-column-two-thirds">
36
+ <%= render "govuk_publishing_components/components/layout_header/header_logo", public_environment: public_environment, environment: environment, product_name: product_name %>
37
+ </div>
38
+ <div class="govuk-header__content gem-c-header__content">
39
+ <%= render "govuk_publishing_components/components/layout_header/navigation_items", navigation_items: navigation_items %>
40
+ </div>
41
+ <% if search %>
42
+ <div class="govuk-grid-column-one-third gem-c-layout-header__search">
43
+ <%= render "govuk_publishing_components/components/layout_header/search" %>
44
+ </div>
54
45
  <% end %>
55
- </ul>
56
- </nav>
46
+ </div>
57
47
  <% end %>
58
-
59
- </div>
60
48
  </div>
61
49
  </header>
@@ -1,9 +1,14 @@
1
1
  <%
2
- class_name = "gem-c-search--on-white"
3
- class_name = "gem-c-search--on-govuk-blue" if local_assigns[:on_govuk_blue].eql?(true)
4
2
  size ||= ""
5
- class_name = "#{class_name} gem-c-search--large" if size == 'large'
6
- class_name = "#{class_name} gem-c-search--separate-label" if local_assigns.include?(:inline_label)
3
+ no_border ||= false
4
+ shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
5
+ classes = %w(gem-c-search gem-c-search--on-white)
6
+ classes << (shared_helper.get_margin_top)
7
+ classes << (shared_helper.get_margin_bottom) if local_assigns[:margin_bottom]
8
+ classes << "gem-c-search--large" if size == 'large'
9
+ classes << "gem-c-search--no-border" if no_border
10
+ classes << "gem-c-search--on-govuk-blue" if local_assigns[:on_govuk_blue].eql?(true)
11
+ classes << "gem-c-search--separate-label" if local_assigns.include?(:inline_label)
7
12
 
8
13
  value ||= ""
9
14
  id ||= "search-main-" + SecureRandom.hex(4)
@@ -12,7 +17,7 @@
12
17
  aria_controls ||= nil
13
18
  %>
14
19
 
15
- <div class="gem-c-search <%= class_name %>" data-module="gem-toggle-input-class-on-focus">
20
+ <div class="<%= classes.join(' ') %>" data-module="gem-toggle-input-class-on-focus">
16
21
  <label for="<%= id %>" class="gem-c-search__label">
17
22
  <%= label_text %>
18
23
  </label>
@@ -55,37 +55,37 @@
55
55
  class: "gem-c-share-links__link #{brand_helper.color_class}" do %>
56
56
  <span class="gem-c-share-links__link-icon">
57
57
  <% if link[:icon] == 'facebook' %>
58
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32">
58
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" aria-hidden="true">
59
59
  <path fill="currentColor" d="M31.006 0H.993A.997.997 0 0 0 0 .993v30.014c0 .55.452.993.993.993h30.013a.998.998 0 0 0 .994-.993V.993A.999.999 0 0 0 31.006 0z"/>
60
60
  <path fill="#FFF" d="M17.892 10.751h1.787V8.009L17.216 8c-2.73 0-3.352 2.045-3.352 3.353v1.828h-1.581v2.824h1.581V24h3.322v-7.995h2.242l.291-2.824h-2.533V11.52c.001-.623.415-.769.706-.769z"/>
61
61
  </svg>
62
62
 
63
63
  <% elsif link[:icon] == 'twitter' %>
64
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32">
64
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" aria-hidden="true">
65
65
  <path fill="currentColor" d="M31.007 0H.993A.999.999 0 0 0 0 .993v30.014c0 .55.452.993.993.993h30.014a.997.997 0 0 0 .993-.993V.993A.998.998 0 0 0 31.007 0z"/>
66
66
  <path fill="#FFF" d="M8 21.027a9.286 9.286 0 0 0 5.032 1.475c6.038 0 9.34-5.002 9.34-9.339 0-.143-.004-.284-.012-.425a6.619 6.619 0 0 0 1.639-1.699c-.6.265-1.234.439-1.885.516a3.287 3.287 0 0 0 1.443-1.816 6.571 6.571 0 0 1-2.086.797 3.28 3.28 0 0 0-5.592 2.993 9.311 9.311 0 0 1-6.766-3.43 3.294 3.294 0 0 0-.443 1.651 3.28 3.28 0 0 0 1.46 2.732 3.278 3.278 0 0 1-1.488-.411v.041a3.288 3.288 0 0 0 2.633 3.22 3.28 3.28 0 0 1-1.481.055 3.285 3.285 0 0 0 3.065 2.281 6.59 6.59 0 0 1-4.076 1.404A6.76 6.76 0 0 1 8 21.027z"/>
67
67
  </svg>
68
68
 
69
69
  <% elsif link[:icon] == 'email' %>
70
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M34.983 18.76v12.48H15.016V18.76h19.967m2.496-2.496H12.52v17.472h24.959V16.264z"/><path fill="none" stroke="#FFF" stroke-width="2.496" stroke-miterlimit="10" d="M14.59 18.963L25 26.945l10.263-7.869"/></svg>
70
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M34.983 18.76v12.48H15.016V18.76h19.967m2.496-2.496H12.52v17.472h24.959V16.264z"/><path fill="none" stroke="#FFF" stroke-width="2.496" stroke-miterlimit="10" d="M14.59 18.963L25 26.945l10.263-7.869"/></svg>
71
71
 
72
72
  <% elsif link[:icon] == 'flickr' %>
73
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M23.72 25a5.76 5.76 0 1 1-11.52 0 5.76 5.76 0 1 1 11.52 0m14.08 0c0 3.182-2.578 5.76-5.76 5.76s-5.76-2.578-5.76-5.76a5.76 5.76 0 1 1 11.52 0"/></svg>
73
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M23.72 25a5.76 5.76 0 1 1-11.52 0 5.76 5.76 0 1 1 11.52 0m14.08 0c0 3.182-2.578 5.76-5.76 5.76s-5.76-2.578-5.76-5.76a5.76 5.76 0 1 1 11.52 0"/></svg>
74
74
 
75
75
  <% elsif link[:icon] == 'instagram' %>
76
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M25 28.2a3.204 3.204 0 0 1-3.2-3.2c0-1.764 1.436-3.2 3.2-3.2 1.765 0 3.2 1.436 3.2 3.2 0 1.765-1.435 3.2-3.2 3.2"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#c" overflow="visible"/></clipPath><path clip-path="url(#d)" fill="#FFF" d="M25 22.44c1.412 0 2.56 1.148 2.56 2.56s-1.147 2.56-2.56 2.56a2.561 2.561 0 0 1 0-5.12m0-1.28A3.844 3.844 0 0 0 21.16 25 3.844 3.844 0 0 0 25 28.84 3.845 3.845 0 0 0 28.84 25 3.844 3.844 0 0 0 25 21.16"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#e" overflow="visible"/></clipPath><path clip-path="url(#f)" fill="#FFF" d="M17.32 35.24c-1.555 0-2.56-1.005-2.56-2.561V17.373c0-1.611.981-2.613 2.56-2.613h15.36c1.58 0 2.561 1.002 2.561 2.613v15.36c0 1.522-1.005 2.507-2.561 2.507H17.32zM25 17.96c-3.881 0-7.04 3.159-7.04 7.04 0 3.881 3.159 7.04 7.04 7.04 3.881 0 7.04-3.159 7.04-7.04 0-3.881-3.159-7.04-7.04-7.04m7.36-2.56a2.243 2.243 0 0 0-2.24 2.24 2.243 2.243 0 0 0 2.24 2.24 2.241 2.241 0 0 0 0-4.48"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#g" overflow="visible"/></clipPath><path clip-path="url(#h)" fill="#FFF" d="M30.552 15.4a2.873 2.873 0 0 0-.704 3.648A7.64 7.64 0 0 0 25 17.319c-4.235 0-7.68 3.445-7.68 7.68 0 4.235 3.445 7.68 7.68 7.68 4.235 0 7.68-3.444 7.68-7.68a7.642 7.642 0 0 0-1.728-4.848 2.876 2.876 0 0 0 3.647-.703v13.285c0 1.169-.717 1.866-1.92 1.866H17.32c-1.22 0-1.92-.699-1.92-1.92V17.373c0-1.254.7-1.973 1.92-1.973h13.232m2.128-1.28H17.32c-1.92 0-3.2 1.28-3.2 3.253V32.68c0 1.92 1.28 3.2 3.2 3.2h15.36c1.92 0 3.2-1.28 3.2-3.146v-15.36c0-1.974-1.28-3.254-3.2-3.254m-.32 5.12a1.6 1.6 0 1 1-.001-3.2 1.6 1.6 0 0 1 .001 3.2M25 31.4a6.4 6.4 0 1 1 .002-12.802A6.4 6.4 0 0 1 25 31.4"/></svg>
76
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M25 28.2a3.204 3.204 0 0 1-3.2-3.2c0-1.764 1.436-3.2 3.2-3.2 1.765 0 3.2 1.436 3.2 3.2 0 1.765-1.435 3.2-3.2 3.2"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#c" overflow="visible"/></clipPath><path clip-path="url(#d)" fill="#FFF" d="M25 22.44c1.412 0 2.56 1.148 2.56 2.56s-1.147 2.56-2.56 2.56a2.561 2.561 0 0 1 0-5.12m0-1.28A3.844 3.844 0 0 0 21.16 25 3.844 3.844 0 0 0 25 28.84 3.845 3.845 0 0 0 28.84 25 3.844 3.844 0 0 0 25 21.16"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#e" overflow="visible"/></clipPath><path clip-path="url(#f)" fill="#FFF" d="M17.32 35.24c-1.555 0-2.56-1.005-2.56-2.561V17.373c0-1.611.981-2.613 2.56-2.613h15.36c1.58 0 2.561 1.002 2.561 2.613v15.36c0 1.522-1.005 2.507-2.561 2.507H17.32zM25 17.96c-3.881 0-7.04 3.159-7.04 7.04 0 3.881 3.159 7.04 7.04 7.04 3.881 0 7.04-3.159 7.04-7.04 0-3.881-3.159-7.04-7.04-7.04m7.36-2.56a2.243 2.243 0 0 0-2.24 2.24 2.243 2.243 0 0 0 2.24 2.24 2.241 2.241 0 0 0 0-4.48"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#g" overflow="visible"/></clipPath><path clip-path="url(#h)" fill="#FFF" d="M30.552 15.4a2.873 2.873 0 0 0-.704 3.648A7.64 7.64 0 0 0 25 17.319c-4.235 0-7.68 3.445-7.68 7.68 0 4.235 3.445 7.68 7.68 7.68 4.235 0 7.68-3.444 7.68-7.68a7.642 7.642 0 0 0-1.728-4.848 2.876 2.876 0 0 0 3.647-.703v13.285c0 1.169-.717 1.866-1.92 1.866H17.32c-1.22 0-1.92-.699-1.92-1.92V17.373c0-1.254.7-1.973 1.92-1.973h13.232m2.128-1.28H17.32c-1.92 0-3.2 1.28-3.2 3.253V32.68c0 1.92 1.28 3.2 3.2 3.2h15.36c1.92 0 3.2-1.28 3.2-3.146v-15.36c0-1.974-1.28-3.254-3.2-3.254m-.32 5.12a1.6 1.6 0 1 1-.001-3.2 1.6 1.6 0 0 1 .001 3.2M25 31.4a6.4 6.4 0 1 1 .002-12.802A6.4 6.4 0 0 1 25 31.4"/></svg>
77
77
 
78
78
  <% elsif link[:icon] == 'linkedin' %>
79
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M19.24 35.24V21.8h-4.48v13.44h4.48z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M26.28 35.24V28.2c0-1.92.64-3.2 1.92-3.2h.64c1.28 0 1.92 1.28 1.92 4.48v5.76h4.48V28.2c0-4.48-1.28-6.4-4.48-6.4-3.84 0-4.479 1.92-4.479 1.92V21.8H21.8v13.44h4.48zm-6.72-17.92a2.56 2.56 0 1 1-5.12 0 2.56 2.56 0 0 1 5.12 0"/></svg>
79
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M19.24 35.24V21.8h-4.48v13.44h4.48z"/><defs><path d="M9 9h32v32H9z"/></defs><clipPath><use xlink:href="#a" overflow="visible"/></clipPath><path clip-path="url(#b)" fill="#FFF" d="M26.28 35.24V28.2c0-1.92.64-3.2 1.92-3.2h.64c1.28 0 1.92 1.28 1.92 4.48v5.76h4.48V28.2c0-4.48-1.28-6.4-4.48-6.4-3.84 0-4.479 1.92-4.479 1.92V21.8H21.8v13.44h4.48zm-6.72-17.92a2.56 2.56 0 1 1-5.12 0 2.56 2.56 0 0 1 5.12 0"/></svg>
80
80
 
81
81
  <% elsif link[:icon] == 'youtube' %>
82
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M19.88 33.32V16.68L33.32 25l-13.44 8.32z"/></svg>
82
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M19.88 33.32V16.68L33.32 25l-13.44 8.32z"/></svg>
83
83
 
84
84
  <% elsif link[:icon] == 'whatsapp' %>
85
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M0 32V0h32v32H0zm20.839-13.894c-.263-.131-1.555-.766-1.796-.854-.24-.088-.416-.132-.59.131-.176.263-.68.855-.833 1.03-.153.176-.307.198-.57.066-.262-.131-1.109-.41-2.113-1.304-.78-.697-1.308-1.557-1.461-1.82-.153-.263-.016-.406.115-.536.118-.118.263-.308.394-.46.131-.154.175-.264.263-.44.088-.174.044-.328-.022-.46-.066-.131-.591-1.424-.81-1.95-.214-.513-.43-.443-.59-.452a10.506 10.506 0 0 0-.505-.009.964.964 0 0 0-.7.329c-.241.263-.92.899-.92 2.192 0 1.293.942 2.542 1.073 2.718.131.176 1.852 2.83 4.489 3.967.626.27 1.116.433 1.497.554.63.2 1.202.172 1.655.104.505-.075 1.555-.636 1.774-1.25.219-.613.219-1.14.153-1.25-.066-.108-.24-.174-.503-.306zm-4.795 6.547h-.003a8.73 8.73 0 0 1-4.449-1.219l-.319-.19-3.308.869.883-3.226-.208-.33a8.718 8.718 0 0 1-1.336-4.652c.001-4.819 3.922-8.74 8.744-8.74a8.68 8.68 0 0 1 6.179 2.564 8.686 8.686 0 0 1 2.557 6.183c-.002 4.82-3.922 8.74-8.74 8.74zm7.44-16.18a10.449 10.449 0 0 0-7.44-3.084c-5.796 0-10.513 4.717-10.516 10.516 0 1.853.484 3.662 1.404 5.256l-1.492 5.45 5.574-1.463a10.504 10.504 0 0 0 5.026 1.28h.004c5.796 0 10.514-4.717 10.516-10.515a10.455 10.455 0 0 0-3.077-7.44z" fill="currentColor"/></svg>
85
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" aria-hidden="true"><path d="M0 32V0h32v32H0zm20.839-13.894c-.263-.131-1.555-.766-1.796-.854-.24-.088-.416-.132-.59.131-.176.263-.68.855-.833 1.03-.153.176-.307.198-.57.066-.262-.131-1.109-.41-2.113-1.304-.78-.697-1.308-1.557-1.461-1.82-.153-.263-.016-.406.115-.536.118-.118.263-.308.394-.46.131-.154.175-.264.263-.44.088-.174.044-.328-.022-.46-.066-.131-.591-1.424-.81-1.95-.214-.513-.43-.443-.59-.452a10.506 10.506 0 0 0-.505-.009.964.964 0 0 0-.7.329c-.241.263-.92.899-.92 2.192 0 1.293.942 2.542 1.073 2.718.131.176 1.852 2.83 4.489 3.967.626.27 1.116.433 1.497.554.63.2 1.202.172 1.655.104.505-.075 1.555-.636 1.774-1.25.219-.613.219-1.14.153-1.25-.066-.108-.24-.174-.503-.306zm-4.795 6.547h-.003a8.73 8.73 0 0 1-4.449-1.219l-.319-.19-3.308.869.883-3.226-.208-.33a8.718 8.718 0 0 1-1.336-4.652c.001-4.819 3.922-8.74 8.744-8.74a8.68 8.68 0 0 1 6.179 2.564 8.686 8.686 0 0 1 2.557 6.183c-.002 4.82-3.922 8.74-8.74 8.74zm7.44-16.18a10.449 10.449 0 0 0-7.44-3.084c-5.796 0-10.513 4.717-10.516 10.516 0 1.853.484 3.662 1.404 5.256l-1.492 5.45 5.574-1.463a10.504 10.504 0 0 0 5.026 1.28h.004c5.796 0 10.514-4.717 10.516-10.515a10.455 10.455 0 0 0-3.077-7.44z" fill="currentColor"/></svg>
86
86
 
87
87
  <% else %>
88
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M12.84 14.12v19.2h5.76l5.76 5.76v-5.76h12.8v-19.2H12.84zm3.2 8.32H28.2V25H16.04v-2.56zm16 7.68h-16v-2.56h16v2.56zm1.92-10.24H16.04v-2.56h17.92v2.56z"/></svg>
88
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="9 9 32 32" aria-hidden="true"><path fill="currentColor" d="M9 9h32v32H9V9z"/><path fill="#FFF" d="M12.84 14.12v19.2h5.76l5.76 5.76v-5.76h12.8v-19.2H12.84zm3.2 8.32H28.2V25H16.04v-2.56zm16 7.68h-16v-2.56h16v2.56zm1.92-10.24H16.04v-2.56h17.92v2.56z"/></svg>
89
89
 
90
90
  <% end %>
91
91
  </span><%= link_text %><% end %>
@@ -262,3 +262,21 @@ examples:
262
262
  - link:
263
263
  text: 'Criteria'
264
264
  description: 'no url provided, just text'
265
+ with_locale_specified:
266
+ description: |
267
+ The component is used on translated pages that don’t have a translation for the document link text or the metadata. This means that it could display the fallback English string if the translate method can’t find an appropriate translation. This makes sure that the lang can be set to ensure that browsers understand which parts of the page are in each language.
268
+
269
+ Locales can be set separately for the document link text and individual metadata items. To set link text locale, pass a locale attribute along with the link object. To set metadata locale, pass a locale attribute containing a parallel object to your metadata (depending on which metadata have translations and which need a lang attribute to specify that they are in a different language).
270
+
271
+ The lang attribute must be set to a [valid BCP47 string](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang#Language_tag_syntax). A valid code can be the two or three letter language code - for example, English is en or eng, Korean is ko or kor - but if in doubt please check.
272
+ data:
273
+ items:
274
+ - link:
275
+ text: 'Tryloywder Uwch Staff Ysgrifennydd Gwladol Cymru Ionawr-Mawrth 2020'
276
+ path: '/government/publications/office-of-the-secretary-of-state-for-wales-senior-staff-transparency-january-march-2020'
277
+ locale: 'cy'
278
+ metadata:
279
+ public_updated_at: 2016-06-27 10:29:44
280
+ document_type: 'Data tryloywder'
281
+ locale:
282
+ document_type: 'cy'
@@ -9,6 +9,7 @@ accessibility_criteria: |
9
9
 
10
10
  - include alt text for images when present
11
11
  - not have duplicate links for the image and the text
12
+ - if the contents of the component are in a different language than the rest of the document, include an appropriate `lang` attribute to correctly identify the language used in the component
12
13
  shared_accessibility_criteria:
13
14
  - link
14
15
  examples:
@@ -191,7 +192,7 @@ examples:
191
192
  description: Can be used for links to people pages to indicate payment type
192
193
  data:
193
194
  href: "/government/people/"
194
- image_src: "http://placekitten.com/215/140"
195
+ image_src: "https://assets.publishing.service.gov.uk/government/uploads/system/uploads/feature/image/62756/s300_courts-of-justice.JPG"
195
196
  image_alt: "some meaningful alt text please"
196
197
  context:
197
198
  text: "The Rt Hon"
@@ -204,3 +205,14 @@ examples:
204
205
  }
205
206
  ]
206
207
  extra_links_no_indent: true
208
+ with_lang:
209
+ description: |
210
+ Pass through an appropriate `lang` to set a HTML lang attribute for the component.
211
+
212
+ The `lang` attribute **must** be set to a [valid BCP47 string](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang#Language_tag_syntax). A valid code can be the two or three letter language code - for example, English is `en` or `eng`, Korean is `ko` or `kor` - but if in doubt please check.
213
+ data:
214
+ href: "/not-a-page"
215
+ image_src: "https://assets.publishing.service.gov.uk/government/uploads/system/uploads/feature/image/62756/s300_courts-of-justice.JPG"
216
+ image_alt: "some meaningful alt text please"
217
+ heading_text: Yr hyn rydym ni'n ei wneud
218
+ lang: cy
@@ -139,3 +139,20 @@ examples:
139
139
  attributes:
140
140
  lang: en
141
141
  hreflang: en
142
+ with_border:
143
+ data:
144
+ with_border: true
145
+ meta:
146
+ items:
147
+ - href: '/help'
148
+ text: Help
149
+ - href: '/help/cookies'
150
+ text: Cookies
151
+ - href: '/contact'
152
+ text: Contact
153
+ - href: '/help/terms-conditions'
154
+ text: Terms and conditions
155
+ - href: '/cymraeg'
156
+ text: Rhestr o Wasanaethau Cymraeg
157
+ - href: '/government/organisations/government-digital-service'
158
+ text: Government Digital Service