v15.0.0

Before you upgrade, please take note of any breaking changes and deprecation notices which may affect your site. View the Upgrade Guide to see examples of how to address breaking changes.

Breaking changes 💥

While significant effort has been made to minimize breaking changes, it’s possible that some could still impact your site.

  • Typography margins and padding have had a major overhaul. #956 #997
    • any custom css that sets a margin or padding should be reviewed and updated accordingly
    • any elements that have lost their top / bottom margins can be fixed by adding .content-block to the parent element
  • All Components, Style Guide, and Layouts have had a major overhaul to their container widths #939 #1011
    • any custom markup on your site should be reviewed and updated accordingly
    • any content that hugs to the left side of the browser window can be fixed by:
      • adding .content-block to the parent element
      • or, in some cases on older pages, update the markup so that it’s a direct child of [role="main"]
  • Tabs now have no padding on its inner content by default - use the class .tab--content if you'd like to add some #956
<div class="tabbed-nav">
  <div class="full-width">
    <nav role="tablist">...</nav>
  </div>
  <div class="tab tab--content" id="..." role="tabpanel">...</div>
</div>
  • Theme colour frame has been renamed to accent #1059
    • --col-bg-frame ➡️ --col-bg-accent
    • --col-bg-frame-50 ➡️ --col-bg-accent-50
    • --col-bg-frame-75 ➡️ --col-bg-accent-75
    • --col-outline-frame ➡️ --col-outline-accent
    • --col-outline-frame-50 ➡️ --col-outline-accent-50
    • --col-outline-frame-75 ➡️ --col-outline-accent-75
  • Typography vars have been renamed to --fm-level-x #923
    • --text-gap-level-0 ➡️ --fm-level-0
    • --text-gap-level-1 ➡️ --fm-level-1
    • --text-gap-level-2 ➡️ --fm-level-2
    • --text-gap-level-3 ➡️ --fm-level-3
    • --text-gap-level-4 ➡️ --fm-level-4
    • --text-gap-level-5 ➡️ --fm-level-5
    • --text-gap-level-6 ➡️ --fm-level-6
    • --text-gap-level-7 ➡️ --fm-level-7
  • updated nodejs to v20.11.1 #1007

New features ✨

  • four new Background colours #1058
    • .bg-secondary
    • .bg-highlight
    • .bg-accent
    • .bg-light
  • Pathfinder - this replaces the deprecated Pathfinder component #963 #998 #1008 #1032 #1064
  • seven new Form inputs are available for use by using the following input types #1026
    • Colour Picker - color
    • Date - date
    • File Upload - file
    • Month - month
    • Range - range
    • Tel - tel
    • Time - time
<input id="" type="date" name="" />
<a class="block-container" href="#">
  <div class="top-unit">
    <h3>...</h3>
  </div>
</a>
  • you can now limit the width of text elements inside components by wrapping them inside <div class="text-wrapper"> #1010
<div class="text-wrapper">
  <h1>...</h1>
  <ul>...</ul>
  <p>...</p>
</div>
  • typography mixins now allow custom margins to be set using --fm #1063
@mixin typography-level-4 {
  --fm: 0;
}
  • components can now be built using vue and exported as native web components - please refer to docs/new_component_guide.md for a guide on how to build them #863 #942
    • they are exported as part of th uom.js bundle
    • uom-components.js bundle can be used on non-gen3 sites
  • new spacing variables to ensure consistent spacing is used througout the codebase #956 #967 #968 #997
    • --sp-1 - 0.5rem
    • --sp-2 - 1rem
    • --sp-3 - 1.5rem
    • --sp-4 - 2rem
    • --sp-5 - 2.5rem
    • --sp-6 - 3rem
    • --sp-7 - 3.5rem
    • --sp-8 - 4rem
    • --sp-9 - 4.5rem
    • --sp-10 - 5rem
    • --sp-layout - consistent spacing between sections of content and components
  • new Theme colours #1026 #1056 #1058 #1060
    • --col-bg-primary-25
    • --col-bg-primary-50
    • --col-bg-primary-75
    • --col-bg-alt-25
    • --col-bg-hightlight-25
    • --col-bg-accent-25
    • --col-outline-alt-25
    • --col-outline-hightlight-25
    • --col-outline-accent-25
    • --col-form-input-bg-hover
    • --col-form-input-checked-hover
  • new --w-text variable - it limits the maximum width of text elements #1010
  • new css mixins:
    • inset-width, inset-left, and inset-right - reduces css duplication #1010
    • bg-padding - it applies inline padding to elements when the left-aligned Jump Navigation is used #981

Bug fixes 🐛

  • fixed an issue where the text inside the Enquiry button was inheriting the underline on :hover #956
  • Left-aligned In-page navigation now vertically aligns the content to the top of the container #956
  • Blockquote now accounts for instances of nested <p> elements and sets the correct font properties #1022
  • fixed Double block listing layout on mobile viewport #1036
  • fixed an issue where the .box class was resetting the padding of nested components #956
  • removed small white space below <img> by using vertical-align: bottom; #966
  • swapped import order of figure and embedded-media so the correct styles are applied #995
  • Filtered Listings now allows dynamic height for each item #964
  • Selects now have a max-width of 25rem to match other form elements #939
  • removed min-height from [role='main'] #956
  • Jump Navigation works with new page width and all content types #939 #981 #982 #985

Deprecation notice⚠️

  • the following components and their classes have been deprecated and will be removed in a later version:
    • Pathfinders - you can use the new Pathfinder component #963
      • .pathfinder-2, .pathfinder-3, .pathfinder-4
      • .pathfinder-2.soft, .pathfinder-3.soft, .pathfinder-4.soft
      • .pathfinder-2.white, .pathfinder-3.white, .pathfinder-4.white
      • .pathfinder-2.buttons, .pathfinder-3.buttons, .pathfinder-4.buttons
      • .pathfinder-2 .featured, .pathfinder-3 .featured, .pathfinder-4 .featured
    • Two Columns Text Box - you can use a two column Grid layout #1017
      • .half
    • Enquiry - #1044
      • .enquiry
      • .enquiry--dark
    • Content Block - #1050
      • .content-block--short
  • the following classes have been removed:
    • .figure--embed and .figure--wide - defaults to normal figure size #939 #1017
    • .figure--confined - figures by default are now confined #939 #1017
    • .image-gallery--small and .image-gallery--medium - defaults to one gallery size #939 #1017
    • .index-navigation - defaults to same layout as .jump-navigation #939 #1017
    • .layout-sidebar--right - defaults to same layout as .layout-sidebar #939 #1017
    • .sidebar-tabs--right - defaults to .sidebar-tabs #939 #1017
    • .simple-listing--text - defaults to same layout as .simple-listing #939 #1017
    • .simple-listing__except - inherits everything it needs from p #939 #1017
    • select.alt, select.clear, and select.clear-dark - defaults to normal Select style #1026 #1050
    • .tabbed-nav.thin - defaults to normal tabs style #924 #1017
    • table.wide - defaults to normal table size #939 #1017
    • .timeline.full-width - defaults to normal timeline size #939 #1017
    • .with-arrow-left - it defaults to a normal button style #1017
  • the following classes have been removed and may create breaking changes:
    • .card__image-icon #924
    • .center - you can use .text-center #924 #1017
    • .form__subtext #956
    • .gap-0 - you can use .grid--collapsed #924
    • .grid__cell--span-4, .grid__cell--span-3, and .grid__cell--span-2 - you can use the grid column size classes #924
    • .grid--fill-first and .grid--fill-last - you can use the grid column size classes #924
    • .grid-cols-4, .grid-cols-3, and .grid-cols-2 - you can use the simple grid classes #924
    • .no-padding #924
    • .nopad, .nopadtop, and .nopadbottom #956
    • .padtop, .padtopshort, .padbottom, and .padbottomshort #956
    • .spacer #956 #1017
    • .subtitle #924
    • .video-thumb and .audio-thumb #1017
    • .with-filters #997
    • .sans, .fixed, .serif, .thin, .light, .regular, and .bold #1050
    • .profile, .profile .intro #924
  • the following css vars have been removed:
    • --w-xxsml, --w-xsml, and --w-sml #939
    • --vr - you can use --sp-3 instead #967
    • backgrounds #1058
      • --col-bg-alt-100 - use --col-bg-alt instead
      • --col-bg-highlight-100 - use --col-bg-highlight instead
      • --col-bg-accent-100 - use --col-bg-accent instead
    • outlines #1060
      • --col-outline-alt-100 - use --col-outline-alt instead
      • --col-outline-highlight-100 - use --col-outline-highlight instead
      • --col-outline-accent-100 - use --col-outline-accent instead
    • forms #1026
      • --col-form-select-text
      • --col-form-select-text-hover
      • --col-form-select-bg
      • --col-form-select-bg-hover
      • --col-form-select-outline
      • --col-form-select-outline-invalid
      • --col-form-select-dropdown
      • --col-form-select-dropdown-hover
      • --col-form-select-alt-text
      • --col-form-select-alt-text-hover
      • --col-form-select-alt-bg
      • --col-form-select-alt-bg-hover
      • --col-form-select-alt-outline
      • --col-form-select-alt-outline-invalid
      • --col-form-select-alt-dropdown
      • --col-form-select-alt-dropdown-hover
      • --col-form-select-clear-text
      • --col-form-select-clear-text-hover
      • --col-form-select-clear-bg
      • --col-form-select-clear-bg-hover
      • --col-form-select-clear-outline
      • --col-form-select-clear-outline-invalid
      • --col-form-select-clear-dropdown
      • --col-form-select-clear-dropdown-hover
      • --col-form-select-clear-text-hover
      • --col-form-select-dropdown-disabled
      • --col-form-option-bg
      • --col-form-option-text
  • removed sm, md, and lg options for data-container - it now defaults to the same size #939
  • removed wrapper, jump, injection-wrapper mixins #939

Other changes

  • updated Accordion and Forms to the new VID #1026 #1043
  • updated css breakpoints #939
    • --bp-x-wide ➡️ 1280px
    • --bp-xx-wide ➡️ 1440px
  • updated container widths #939
    • --w-mid ➡️ 67.5rem
    • --w-lge ➡️ 77.5rem
  • updated --page-gutter to 1rem that increases to 2rem on desktop breakpoint #939 #962
  • updated typography margins #923 #992
    • --fm-level-2 - 1.5rem ➡️ 1.25rem
    • --fm-level-3 - 0.625rem ➡️ 1.25rem
    • --fm-level-4 - 0.5rem ➡️ 1.125rem
    • --fm-level-5 - 0.375rem ➡️ 1rem
    • --fm-level-6 - 0 ➡️ 0.75rem
    • --fm-level-7 - 0 ➡️ 0.5rem
  • updated Theme variables
    • --col-text-invalid ➡️ --col-red-dark-75 #1026
    • --col-bg-disabled ➡️ --col-grey-light-50 #1026
    • --col-form-input-text ➡️ --col-text-secondary #1026
    • --col-form-input-text-disabled ➡️ --col-grey-dark-75 #1026
    • --col-outline-alt from --col-grey-light-25 ➡️ --col-grey-light-100 #1060
    • --col-outline-highlight from --col-sage-light-25 ➡️ --col-sage-light-100 #1060
    • --col-outline-accent from --col-blue-dark-25 ➡️ --col-blue-dark-100 #1060
    • --col-bg-alt from --col-grey-light-25 ➡️ --col-grey-light-100 #1058
    • --col-bg-highlight from --col-sage-light-25 ➡️ --col-sage-light-100 #1058
    • --col-bg-accent from --col-blue-dark-25 ➡️ --col-blue-dark-100 #1058
  • Flash Message now requires its content to be nested inside <div class="flash__inner"><div> #1020

Before:

<div class="flash flash--info">
    <p>...</p>
  </div>

After:

<div class="flash flash--info">
  <div class="flash__inner">
      <p>...</p>
  </div>
</div>

Documentation updates