From f9aa1a57a21bd78c35d9cd92d53b1225b4cde735 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 16 Dec 2025 08:53:58 +0000 Subject: [PATCH 01/19] Update to NHS.UK frontend v10.2.2 --- package.json | 4 ++-- yarn.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 5375d9e0..5f632a13 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "jest-axe": "^10.0.0", "jest-environment-jsdom": "^30.2.0", "lodash": "^4.17.21", - "nhsuk-frontend": "^10.1.0", + "nhsuk-frontend": "^10.2.2", "outdent": "^0.8.0", "prettier": "^3.7.4", "react": "^19.2.3", @@ -116,7 +116,7 @@ }, "peerDependencies": { "classnames": ">=2.5.0", - "nhsuk-frontend": ">=10.1.0 <11.0.0", + "nhsuk-frontend": ">=10.2.0 <11.0.0", "react": ">=18.2.0", "react-dom": ">=18.2.0", "tslib": ">=2.8.0" diff --git a/yarn.lock b/yarn.lock index 12a08f38..f5743871 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9008,10 +9008,10 @@ __metadata: languageName: node linkType: hard -"nhsuk-frontend@npm:^10.1.0": - version: 10.1.0 - resolution: "nhsuk-frontend@npm:10.1.0" - checksum: 10c0/adf8ccc240c3514b865ae361b4e29f7ad11051f5c4585970cbd2580f61dbe5f1818d53f3b8eef3825aaf72f9ea3df647f4b0cc57d60092a3edc7583665374f91 +"nhsuk-frontend@npm:^10.2.2": + version: 10.2.2 + resolution: "nhsuk-frontend@npm:10.2.2" + checksum: 10c0/19811214e56188204924a828780771a994ed9ed496c21fa90d49b46a58c1c500903a3b346229ab3df4ba8c67262f17b8fa05ec2c4c25582a4e5e84ec678ba059 languageName: node linkType: hard @@ -9058,7 +9058,7 @@ __metadata: jest-axe: "npm:^10.0.0" jest-environment-jsdom: "npm:^30.2.0" lodash: "npm:^4.17.21" - nhsuk-frontend: "npm:^10.1.0" + nhsuk-frontend: "npm:^10.2.2" outdent: "npm:^0.8.0" prettier: "npm:^3.7.4" react: "npm:^19.2.3" @@ -9074,7 +9074,7 @@ __metadata: vite-tsconfig-paths: "npm:^6.0.3" peerDependencies: classnames: ">=2.5.0" - nhsuk-frontend: ">=10.1.0 <11.0.0" + nhsuk-frontend: ">=10.2.0 <11.0.0" react: ">=18.2.0" react-dom: ">=18.2.0" tslib: ">=2.8.0" From 9ed8c60b5e20eee76803d7e72ae8628945e7b99d Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 16 Dec 2025 08:54:08 +0000 Subject: [PATCH 02/19] Update text input examples --- stories/Form Elements/TextInput.stories.tsx | 72 +++++++++++++++++++-- 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/stories/Form Elements/TextInput.stories.tsx b/stories/Form Elements/TextInput.stories.tsx index bfb6efff..00659ac7 100644 --- a/stories/Form Elements/TextInput.stories.tsx +++ b/stories/Form Elements/TextInput.stories.tsx @@ -7,8 +7,8 @@ const meta: Meta = { component: TextInput, args: { id: 'input-example', - name: 'test-name', - label: 'National Insurance number', + name: 'example', + label: 'What is your full name?', labelProps: { isPageHeading: true, size: 'l' }, }, argTypes: { @@ -22,30 +22,88 @@ type Story = StoryObj; export const Standard: Story = {}; export const WithHintText: Story = { args: { - hint: 'It’s on your National Insurance card, benefit letter, payslip or P60. For example, ‘QQ 12 34 56 C’.', + label: 'What is your NHS number?', + inputMode: 'numeric', + spellCheck: false, + hint: ( + <> + This is a 10 digit number (like 999 123 4567) that + you can find on an NHS letter, prescription or in the NHS App + + ), }, }; export const WithError: Story = { args: { - error: 'Error message goes here', - hint: 'It’s on your National Insurance card, benefit letter, payslip or P60. For example, ‘QQ 12 34 56 C’.', + label: 'What is your NHS number?', + error: 'Enter NHS number', + inputMode: 'numeric', + spellCheck: false, + }, +}; + +export const WithErrorAndHintText: Story = { + args: { + label: 'What is your NHS number?', + error: 'Enter NHS number', + inputMode: 'numeric', + spellCheck: false, + hint: ( + <> + This is a 10 digit number (like 999 123 4567) that + you can find on an NHS letter, prescription or in the NHS App + + ), }, - name: 'With Error (String)', }; export const WithWidthModifier: Story = { args: { + label: 'What is your NHS number?', width: 10, - hint: 'It’s on your National Insurance card, benefit letter, payslip or P60. For example, ‘QQ 12 34 56 C’.', + inputMode: 'numeric', + spellCheck: false, + hint: ( + <> + This is a 10 digit number (like 999 123 4567) that + you can find on an NHS letter, prescription or in the NHS App + + ), + }, +}; + +export const WithPrefix: Story = { + args: { + label: 'Cost in pounds', + prefix: '£', + width: 5, + }, +}; + +export const WithSuffix: Story = { + args: { + label: 'Weight in kilograms', + suffix: 'kg', + width: 5, }, }; export const WithPrefixAndSuffix: Story = { args: { + label: 'Cost per item, in pounds', + prefix: '£', + suffix: 'per item', width: 5, + }, +}; + +export const WithPrefixAndSuffixAndError: Story = { + args: { label: 'Cost per item, in pounds', + error: 'Enter a cost per item, in pounds', prefix: '£', suffix: 'per item', + width: 5, }, }; From a19df04010e76b24482e81b660613faf0d88c7be Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 16 Dec 2025 08:54:16 +0000 Subject: [PATCH 03/19] Add text input `code` support (for codes and sequences) --- src/components/form-elements/text-input/TextInput.tsx | 4 +++- stories/Form Elements/TextInput.stories.tsx | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/form-elements/text-input/TextInput.tsx b/src/components/form-elements/text-input/TextInput.tsx index 64dcebc2..96585e67 100644 --- a/src/components/form-elements/text-input/TextInput.tsx +++ b/src/components/form-elements/text-input/TextInput.tsx @@ -12,6 +12,7 @@ export interface TextInputProps ComponentPropsWithoutRef<'input'>, Omit { width?: InputWidth; + code?: boolean; prefix?: string; suffix?: string; } @@ -30,12 +31,13 @@ const TextInputSuffix: FC> = ({ suffix }) => ( export const TextInput = forwardRef((props, forwardedRef) => ( {...props} inputType="input"> - {({ width, className, error, type = 'text', prefix, suffix, ...rest }) => { + {({ width, className, code, error, type = 'text', prefix, suffix, ...rest }) => { const Input = ( Date: Tue, 16 Dec 2025 08:54:29 +0000 Subject: [PATCH 04/19] Update select examples --- stories/Form Elements/Select.stories.tsx | 75 ++++++++---------------- 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/stories/Form Elements/Select.stories.tsx b/stories/Form Elements/Select.stories.tsx index ddc0e998..ed3df5b5 100644 --- a/stories/Form Elements/Select.stories.tsx +++ b/stories/Form Elements/Select.stories.tsx @@ -1,83 +1,58 @@ import { type Meta, type StoryObj } from '@storybook/react-vite'; -import { useState } from 'react'; import { Select } from '#components/form-elements/select/index.js'; -import { TextInput } from '#components/form-elements/text-input/index.js'; const meta: Meta = { title: 'Form Elements/Select', component: Select, args: { - label: 'Label text goes here', - labelProps: { isPageHeading: true, size: 'l' }, + label: 'Sort by', + labelProps: { isPageHeading: true }, }, + render: (args) => ( + + ), }; export default meta; type Story = StoryObj; export const Standard: Story = { - args: { - defaultValue: '2', - }, render: (args) => ( ), }; export const SelectWithHintText: Story = { args: { - hint: 'Hint text goes here', + hint: 'This can be different to where you went before', }, - render: (args) => ( - - ), }; export const SelectWithError: Story = { - render: function SelectWithErrorRender(args) { - const [error, setError] = useState('Error message goes here'); - return ( - <> - - setError(e.currentTarget.value)} value={error} /> - - ); + args: { + error: 'Select a location', }, - - name: 'Select With Error (String)', }; export const SelectWithErrorAndHintText: Story = { args: { - hint: 'Hint text goes here', - }, - render: function SelectWithErrorAndHintTextRender(args) { - const [error, setError] = useState('Error message goes here'); - return ( - <> - - setError(e.currentTarget.value)} value={error} /> - - ); + hint: 'This can be different to where you went before', + error: 'Select a location', }, - - name: 'Select With Error and Hint (String)', }; From fa7eed8d13cb266e6570b7a3df43e506f52a7a6d Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 16 Dec 2025 08:54:37 +0000 Subject: [PATCH 05/19] Update button examples --- stories/Form Elements/Button.stories.tsx | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/stories/Form Elements/Button.stories.tsx b/stories/Form Elements/Button.stories.tsx index 8c90fd79..784efdd3 100644 --- a/stories/Form Elements/Button.stories.tsx +++ b/stories/Form Elements/Button.stories.tsx @@ -49,12 +49,31 @@ export default meta; type Story = StoryObj; export const Primary: Story = { - args: { children: 'Primary' }, - render: (args) =>