The format is based on Keep a Changelog.
We are following Semantic Versioning, as close as we can.
- Dedicated
card-calloutandcard-do-donttoolkit components aligned to the current Card family structure - Dismissible-with-image Card examples in the docs site and examples index
- Realigned the base
cardcomponent to the current Figma structure across basic, dismissible, success, clickable, clickable-action, and clickable-numeric variants - Preserved legacy toolkit APIs such as
warningCallout(),list(), and old Card inputs as deprecated compatibility paths for existing consumers - Updated Card-family documentation and examples to prefer the new Card family macros and options
- Refined Card-family docs clarity across site docs, macro options, and toolkit READMEs
- New Card family components using the current API only:
CardCardCalloutCardDoDont
- Storybook coverage for base Card variants, Card / Callout, and Card / Do & Don’t
- Unit and accessibility coverage for the Card family
- Bundled the toolkit icon sprite for React and Storybook consumers so Card icons render without a separately hosted
/assets/icons/icon-sprite.svg - Refined Card-family Storybook docs, controls behaviour, and examples for easier manual QA
- Error Summary
idPrefixsupport so multiple summaries on the same page can render unique title ids andaria-labelledbyvalues - Dedicated multiple-errors examples in the site and design-system docs
- Error Summary containers are no longer focusable and are no longer focused on page load; error links still scroll and focus the relevant field
- Updated the toolkit Error Summary JavaScript to enhance every summary instance on the page instead of only the first one
- Error Summary links now resolve nested HTML click targets with
closest('a'), so HTML-rich link content still scrolls and focuses the correct field - Expanded toolkit Error Summary documentation and integration coverage for multi-link, multi-summary, and radio / legend behaviour
- New
ErrorSummarycomponent with toolkit-parity props and DOM structure:titleText/titleHtmldescriptionText/descriptionHtmlerrorListclassesattributesidPrefixfocusOnPageLoad
- Storybook coverage for default, description, multiple-errors, HTML-content, and in-form usage
- Unit and accessibility coverage for nested HTML link clicks, multi-link focus behaviour, and
idPrefixhandling
- ErrorSummary no longer makes the summary container focusable on mount; linked fields still receive focus when errors are selected
- React Storybook examples now isolate link targets per story so docs previews do not jump into unrelated story content
- In-form and multiple-errors stories were expanded to make focus and scroll behaviour easier to validate manually
- Button variant naming aligned with Figma: Renamed button variants to match design specifications
ghost-reverse→ghost-invertedtext-reverse→text-inverted- CSS classes changed:
.ofh-button--ghost-reverse→.ofh-button--ghost-inverted - CSS classes changed:
.ofh-button--text-reverse→.ofh-button--text-inverted - See Upgrading Guide for detailed migration instructions
- Refactored button styles to use design tokens and responsive spacing mixins instead of hardcoded typography and padding values
- Aligned button focus treatments with Figma, including inverted variants on dark backgrounds
- Updated toolkit selectors, site documentation, and examples to use the renamed button variants
- Button variant naming aligned with Figma: Renamed button variants to match design specifications
ghost-reverse→ghost-invertedtext-reverse→text-inverted- TypeScript type definitions updated to reflect new variant names
- See Upgrading Guide for detailed migration instructions
- Updated Button component variant types, stories, tests, example app, and docs to use the renamed button variants
Buttonnow renders an anchor automatically whenhrefis provided, with ref support for both button and anchor paths- Expanded story and test coverage for link rendering, keyboard navigation, and form usage
- Material Design Icon System: Complete icon set with 61 icons organized in 6 categories
- Categories: DataValidation, Action, Arrows, Graphical, Stepper, Socials
- Icons use PascalCase naming aligned with Figma layer names (e.g.,
Search,ChevronLeft,Done) - New icon macro:
components/icon/macro.njkfor consistent icon rendering - Sprite-based implementation:
assets/icons/icon-sprite.svg(61 symbols) - Icon metadata:
assets/icons/manifest.jsonwith categories and default sizes - Support for brand-colored icons: social media icons with hover states,
ArrowCircleRightColour - Stepper icons:
LooksZerothroughLooksNinefor multi-step flows
- Icon infrastructure:
- Build script:
scripts/build-icon-sprite.jsfor sprite generation - Material icon styles:
core/styles/_icons-material.scss
- Build script:
- Documentation:
- Material icons workflow guide:
docs/contributing/material-icons.md - Icon component README with usage examples:
components/icon/README.md - Material icons asset README:
assets/icons/README.md - Updated documentation site icon gallery at
/design-system/styles/icons
- Material icons workflow guide:
- Updated toolkit components that previously embedded legacy SVGs to use the Material icon macro:
- Action link: migrated arrow circle icon
- Back link and breadcrumb: migrated chevron navigation
- Card: migrated confirmation icon
- Details expanders: migrated expand and collapse icons
- Do/Don't lists: migrated to
DoneandCloseicons - Header: migrated search, close, and chevron navigation icons
- Pagination: migrated arrow navigation
- Icon sizes standardized to Material icon system sizes (16px, 24px, 32px)
- Toolkit build now generates the Material icon sprite from
assets/icons - Documentation now includes the Material icons workflow guide, the new icon macro README, and migration notes for affected components
- Legacy icon system (14 icon files):
assets/icons/icon-arrow-left.svgassets/icons/icon-arrow-right-circle.svgassets/icons/icon-arrow-right.svgassets/icons/icon-chevron-left.svgassets/icons/icon-chevron-right.svgassets/icons/icon-close.svgassets/icons/icon-cross.svgassets/icons/icon-emdash-small.svgassets/icons/icon-emdash.svgassets/icons/icon-minus.svgassets/icons/icon-new-tab.svgassets/icons/icon-plus.svgassets/icons/icon-search.svgassets/icons/icon-tick.svg
core/styles/_icons.scssand associated icon styling- Legacy icon helper mixins from
core/tools/_mixins.scss
Replacing legacy icons with Material icons:
The 14 legacy icon-*.svg files have been replaced with a comprehensive Material icon system. Use the icon macro to render Material icons:
{{ icon({ "name": "Search", "size": 24 }) }}Common replacements:
icon-cross→ UseCloseiconicon-tick→ UseDoneiconicon-chevron-left→ UseChevronLefticonicon-chevron-right→ UseChevronRighticonicon-search→ UseSearchiconicon-arrow-right-circle→ UseArrowCircleRighticon- Available sizes:
16,24(default),32 - For decorative icons, omit the
titleparameter (automatically setsaria-hidden="true") - For semantic icons, include a
titleparameter for accessibility
- Added a new spacing point:
1 => 2px - Shifted previous non-zero spacing indices by
+1 - Affected APIs/usages:
ofh-spacing(...)ofh-responsive-margin(...)/ofh-responsive-padding(...)- spacing utility classes:
ofh-u-margin-*,ofh-u-padding-*
- Static token rename alignment:
- Removed:
$ofh-color-background-brand-blue-navy-inverted - Added:
$ofh-color-background-brand-blue-navy-1,$ofh-color-background-brand-blue-navy-2
- Removed:
- Figma-aligned token architecture in core settings:
_tokens-core.scss_tokens-breakpoint.scss_tokens-static.scss_tokens-theme.scss
- New toolkit theme entrypoints:
ofh-participant.scssofh-research.scss
- Token-based spacing/typography utilities aligned to the new model.
- Broad code/design alignment across toolkit and site styles to match updated design tokens.
- Updated typography usage to semantic scale keys (for example
h1,h2,lead,paragraph). - Updated spacing documentation/examples to reflect the new spacing scale (including
2pxpoint). - Updated migration guidance for spacing index shift and v4.1.0 applicability.
- Refined release-versioning strategy to focus on monorepo versioning model.
- Added release communication notes/template to release process documentation.
- Legacy toolkit settings files replaced by token model:
_colours.scss_globals.scss_spacing.scss_typography.scss_tokens-colours.scss
- Semantic token bridge/audit artifacts:
packages/toolkit/core/settings/_tokens-semantic.scss- semantic import from
packages/toolkit/core/settings/_all.scss docs/tokens-semantic-audit.mdscripts/generate-tokens-semantic-audit.mjs- root
audit:tokens-semanticscript
- Restored docs-site Sass watch/live reload reliability.
- Updated release workflow and docs consistency around package-prefixed tag usage.
See UPGRADING.md for detailed migration instructions, including spacing index shift mappings introduced in toolkit 4.1.0.
- Theme-aware stylesheet exports:
@ourfuturehealth/react-components/styles/participant@ourfuturehealth/react-components/styles/research
- Kept
@ourfuturehealth/react-components/stylesas a backward-compatible alias to participant styles. - Added multi-theme build flow via
scripts/build-themes.mjsand Vite theme mode. - Updated lint/test scripts and package documentation for monorepo git-tag installation and theme style usage.
Projects must update installation syntax to specify package name and subdirectory.
Before (v3.4.3 and earlier):
{
"dependencies": {
"ofh-design-system-toolkit": "github:ourfuturehealth/design-system-toolkit#v3.4.2"
}
}After (monorepo):
{
"dependencies": {
"@ourfuturehealth/toolkit": "github:ourfuturehealth/design-system-toolkit#toolkit-v4.0.0:packages/toolkit"
}
}- Monorepo package structure with independent versioning
preparescript for automatic building when installed from git- Package metadata for monorepo subdirectory installation
- All toolkit files moved from repository root to
packages/toolkit/ - Package name changed:
ofh-design-system-toolkit→@ourfuturehealth/toolkit - Release tag format changed to package-prefixed tags (
toolkit-v*,react-v*)
- New package: React component library
- Initial components:
Button,TextInput - TypeScript support, Storybook integration, and Vitest setup
- Documentation site moved to
packages/site - Example consumer app added at
packages/example-react-consumer-app - Turborepo and pnpm workspace tooling introduced
- Installation, migration, and release docs updated for monorepo structure
- Ran
npm audit fixwhich fixed vulnerability in minimatch subdependencies - Needed an override a subdependency editorconfig@1.0.4 which still required a vulnerable version
- Removed unused dependencies:
minimist,wait-on - Removing
wait-onfixes high vulnerability from axios subdependency
- Update light variant link's offset
- Remove prelease tag
- Add light variant of link
- Remove alpha from versioning
- Updated Node version to 22
- various styling fixes
- stylelinting
- removed box shadow of menu toggle focus state
- fixed moderate security vulnerability in postcss by upgrading stylelint
- Updated focus styling of components to use visible outline to improve accessibility.
- Added Autocomplete component
- Added Character count component
- Updated
ofh-date-input__itemstyling to includevertical-alignto prevent date inputs from shifting
- Updated
ofh-main-wrapperstyling to ensure the full viewport is used - Doc site header and footer updates
- Added back the original default margin bottom spacing on button components
- Updates to the doc site - allowing custom components to be used there without affecting the design system.
- Updated the underline thickness and spacing on button components
- Breaking change: added new button variations, if your app is using the old button variations, you would have to ensure your app is using the latest button variation classes when updating to this version.
- Added black colour variation to section break typography
- Added card with icon variation of card component
- Added extended colour palette to dev toolkit and docs site
- Added external link icon
- Update tag components to use new colours and spacing
- Updated colour palette in dev toolkit and docs site
- Removed content related to NHS Service Manual GitHub
- Content updates to Layout, Typography and Spacing pages
- Make side nav sticky on docs site
- Bump nunjucks from 3.2.3 to 3.2.4
- Fixed bugs with copy to clipboard function in design examples
- Fix docs site container size
- Updated colors for side nav links and back link in docs site
- Design system documentation site (statically generated with Eleventy). The site is based on the NHS.UK digital service manual.
- Updated label bottom margin (on all variants) to use non-responsive units and match the legend component more closely.
- Added a negative top margin to hint components when placed after a label
lorxlvariant. - New colour palette and significant updates to the names and usages of the various colour variables.
- Updated breadcrumb link and chevron colours to use a separate set of colours than regular links + updated docs.
- Updated the action link font weight and made the arrow in the icon use the brand dark blue colour.
- As part of this, removed the
icon-arrow-right-circle.svgicon as we've now deviated from it and it's not needed as a separate file.
- As part of this, removed the
- Removed the serif font from
ofh-body-lclass and moved it into the existingofh-lede-textclass. - Removed the explicit line height for the
.ofh-body-lclass, thus falling back to the default responsive typography styling. - Reverted the secondary button colour back to the previous grey from the old colour palette (
#425563).
- Fix the path for the Our Future Health logo on the docs/examples site.
- Output asset files renamed to
ofh-design-system-toolkit.*. - All favicons and logos updated to latest Our Future Health branding.
- Renamed the JS and SCSS source entry files to
ofh.*(note: the build still outputs the compiled files asofh-design-system-toolkit.*). - Renamed the prefix for all CSS class names from
nhsuk-toofh-.
Initial alpha (but not released as an NPM package, yet).