From af5d9aa3d2b5c8faae45adcc6f0a86214fe40020 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 7 Oct 2025 08:32:48 +0100 Subject: [PATCH 01/48] Preserve build output (non-minified) for all modules --- README.md | 2 +- bundle-base.tsconfig.json | 31 --- jest.config.js | 2 +- package.json | 35 +-- rollup.config.mjs | 129 ++++------- tsconfig.base.json | 28 +++ tsconfig.build.json | 18 ++ tsconfig.json | 39 +--- yarn.lock | 471 ++++++++++++++++---------------------- 9 files changed, 332 insertions(+), 423 deletions(-) delete mode 100644 bundle-base.tsconfig.json create mode 100644 tsconfig.base.json create mode 100644 tsconfig.build.json diff --git a/README.md b/README.md index f6708662..6854bfa3 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ import React, { PureComponent } from 'react'; import { Button } from 'nhsuk-react-components'; // Or you can import components directly -import Button from 'nhsuk-react-components/lib/components/button'; +import Button from 'nhsuk-react-components/dist/esm/components/button'; class GetStartedButton extends PureComponent { render() { diff --git a/bundle-base.tsconfig.json b/bundle-base.tsconfig.json deleted file mode 100644 index f2c7791e..00000000 --- a/bundle-base.tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react", - "target": "es6", - "module": "esnext", - "moduleResolution": "node", - "baseUrl": "./", - "types": ["jest", "node"], - "sourceMap": true, - "forceConsistentCasingInFileNames": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "skipLibCheck": true, - "strict": true, - "strictNullChecks": true, - "resolveJsonModule": true, - "allowJs": true, - "outDir": "./dist", - "paths": { - "@components/*": ["src/components/*"], - "@content-presentation/*": ["src/components/content-presentation/*"], - "@form-elements/*": ["src/components/form-elements/*"], - "@navigation/*": ["src/components/navigation/*"], - "@typography/*": ["src/components/typography/*"], - "@util/*": ["src/util/*"], - "@patterns/*": ["src/patterns/*"] - } - }, - "include": ["src"], - "exclude": ["node_modules", "**/__tests__", "src/setupTests.ts"] -} diff --git a/jest.config.js b/jest.config.js index 4c0cc8c5..c4e55cfc 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,5 +1,5 @@ const { pathsToModuleNameMapper } = require('ts-jest'); -const { compilerOptions } = require('./tsconfig.json'); +const { compilerOptions } = require('./tsconfig.base.json'); const jestConfig = { testEnvironment: 'jsdom', diff --git a/package.json b/package.json index b5330e40..bacbdea1 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,26 @@ "name": "NHS England" }, "files": [ - "dist", - "lib" + "dist" ], + "sideEffects": false, + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.ts", + "default": "./dist/cjs/index.js" + } + }, + "./*": "./*", + "./package.json": "./package.json" + }, "main": "dist/cjs/index.js", - "module": "dist/esm", - "types": "dist/index.d.ts", + "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "scripts": { "cleanup": "rm -rf dist/ > /dev/null && rm -rf lib/ > /dev/null", "storybook": "storybook dev -p 6006", @@ -28,10 +42,9 @@ "devDependencies": { "@babel/core": "^7.24.1", "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.6", + "@rollup/plugin-commonjs": "^28.0.6", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-typescript": "^12.1.4", "@storybook/addon-actions": "^8.0.5", "@storybook/addon-essentials": "^8.0.5", "@storybook/addon-links": "^8.0.5", @@ -49,7 +62,6 @@ "@types/node": "^15.0.2", "@types/react": "^18.2.60", "@types/react-dom": "^18.2.19", - "@types/rollup-plugin-peer-deps-external": "^2.2.1", "@typescript-eslint/eslint-plugin": "^7.1.0", "@typescript-eslint/parser": "^7.1.0", "babel-jest": "^29.7.0", @@ -72,11 +84,8 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "regenerator-runtime": "^0.13.7", - "rollup": "^4.13.0", - "rollup-plugin-dts": "^6.1.0", - "rollup-plugin-peer-deps-external": "^2.2.4", + "rollup": "^4.52.4", "rollup-plugin-preserve-directives": "^0.4.0", - "rollup-plugin-tsconfig-paths": "^1.5.2", "sass": "^1.53.0", "storybook": "^8.0.5", "ts-jest": "^29.1.2", diff --git a/rollup.config.mjs b/rollup.config.mjs index 7dc3c972..b0f5e3da 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,89 +1,56 @@ -import resolve from '@rollup/plugin-node-resolve'; +import { join } from 'node:path'; import commonjs from '@rollup/plugin-commonjs'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; -import terser from '@rollup/plugin-terser'; -import external from 'rollup-plugin-peer-deps-external'; -import { dts } from 'rollup-plugin-dts'; -import tsPaths from 'rollup-plugin-tsconfig-paths'; import preserveDirectives from 'rollup-plugin-preserve-directives'; - -import tsBuildConfig from './bundle-base.tsconfig.json' with { type: 'json' }; +import { defineConfig } from 'rollup'; import packageJson from './package.json' with { type: 'json' }; +import tsBuildConfig from './tsconfig.build.json' with { type: 'json' }; -// suppresses warnings printed to console as part of bundling components with directives present. -const onWarnSuppression = { - onwarn(warning, warn) { - if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes(`"use client"`)) { - return; - } - warn(warning); - }, -}; - -const commonPlugins = [external(), tsPaths(), resolve(), commonjs()]; +const { outDir } = tsBuildConfig.compilerOptions; +const external = Object.keys(packageJson.peerDependencies); -export default [ - // cjs export - { - input: 'src/index.ts', - output: [ - { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - ], - plugins: [ - ...commonPlugins, - typescript({ - tsconfig: 'bundle-base.tsconfig.json', - compilerOptions: { - declaration: false, +export default defineConfig( + /** @type {const} */ (['cjs', 'esm']).map( + /** + * Rollup options for each module format + */ + (format) => ({ + input: 'src/index.ts', + output: [ + { + dir: join(outDir, format), + format, + preserveModules: true, + preserveModulesRoot: 'src', + sourcemap: true, }, - }), - terser(), - ], - ...onWarnSuppression, - }, - // esm export - { - input: 'src/index.ts', - output: [ - { - dir: packageJson.module, - format: 'esm', - sourcemap: true, - preserveModules: true, - preserveModulesRoot: 'src', + ], + external, + treeshake: false, + plugins: [ + nodeResolve(), + commonjs(), + typescript({ + tsconfig: 'tsconfig.build.json', + compilerOptions: { + outDir: join(outDir, format), + }, + }), + preserveDirectives(), + ], + + // Handle warnings as errors + onwarn(warning) { + const { code, message } = warning; + + // Skip warnings about "use client" directives + if (code === 'MODULE_LEVEL_DIRECTIVE' && message.includes(`"use client"`)) { + return; + } + + throw new Error(warning.message, { cause: warning }); }, - ], - plugins: [ - ...commonPlugins, - typescript({ - tsconfig: 'bundle-base.tsconfig.json', - compilerOptions: { - declaration: true, - declarationDir: 'dist/esm', - emitDeclarationOnly: true, - outDir: 'dist/esm', - }, - }), - preserveDirectives(), - terser({ compress: { directives: false } }), - ], - ...onWarnSuppression, - }, - // type bundling - { - input: 'src/index.ts', - output: [{ file: 'dist/index.d.ts', format: 'esm' }], - external: [], - plugins: [ - dts({ - compilerOptions: { - paths: tsBuildConfig.compilerOptions.paths, - }, - }), - ], - }, -]; + }), + ), +); diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..7313ca0b --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": false, + "strictBindCallApply": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "target": "ESNext", + "types": [], + "paths": { + "@components/*": ["./src/components/*"], + "@content-presentation/*": ["./src/components/content-presentation/*"], + "@form-elements/*": ["./src/components/form-elements/*"], + "@navigation/*": ["./src/components/navigation/*"], + "@typography/*": ["./src/components/typography/*"], + "@util/*": ["./src/util/*"], + "@patterns/*": ["./src/patterns/*"] + } + }, + "exclude": ["./dist", "./node_modules"] +} diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 00000000..59e195a7 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": ["ESNext", "DOM"], + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "sourceMap": true, + "target": "ES2015", + "types": ["node"] + }, + "include": ["./src"], + "exclude": ["**/__mocks__", "**/__tests__", "./src/setupTests.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index a062939f..6781405b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,17 @@ { + "extends": "./tsconfig.base.json", "compilerOptions": { "jsx": "react", - "target": "es6", - "module": "esnext", - "moduleResolution": "node", - "declaration": true, - "baseUrl": "./", - "types": ["jest", "node"], - "sourceMap": true, - "forceConsistentCasingInFileNames": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "skipLibCheck": true, - "strict": true, - "strictNullChecks": true, - "resolveJsonModule": true, - "allowJs": true, - "outDir": "./dist", - "paths": { - "@components/*": ["src/components/*"], - "@content-presentation/*": ["src/components/content-presentation/*"], - "@form-elements/*": ["src/components/form-elements/*"], - "@navigation/*": ["src/components/navigation/*"], - "@typography/*": ["src/components/typography/*"], - "@util/*": ["src/util/*"], - "@patterns/*": ["src/patterns/*"] - } + "lib": ["ESNext", "DOM"], + "target": "ES2015", + "types": ["jest", "node"] }, - "include": ["src", "stories"], - "exclude": ["node_modules", "build"] + "include": [ + "./.storybook/*.ts", + "./src/**/*.ts", + "./src/**/*.tsx", + "./stories/**/*.tsx", + "./*.config.js", + "./*.config.mjs" + ] } diff --git a/yarn.lock b/yarn.lock index e10eba5e..1b8c9ba5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,7 +40,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -2203,16 +2203,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 - languageName: node - linkType: hard - "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" @@ -2220,6 +2210,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -2347,33 +2344,33 @@ __metadata: languageName: node linkType: hard -"@rollup/plugin-commonjs@npm:^25.0.7": - version: 25.0.7 - resolution: "@rollup/plugin-commonjs@npm:25.0.7" +"@rollup/plugin-commonjs@npm:^28.0.6": + version: 28.0.6 + resolution: "@rollup/plugin-commonjs@npm:28.0.6" dependencies: "@rollup/pluginutils": "npm:^5.0.1" commondir: "npm:^1.0.1" estree-walker: "npm:^2.0.2" - glob: "npm:^8.0.3" + fdir: "npm:^6.2.0" is-reference: "npm:1.2.1" magic-string: "npm:^0.30.3" + picomatch: "npm:^4.0.2" peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 10c0/d096af5aedd55c19ac528daa84a4cacdf21a69c9c9b20c23e04f27a64966cb383f5e2b01b9c903d40318e35dcaa74dc7b5292a844c6cbc66c252f5447eac05b4 + checksum: 10c0/67fa297384c2494c8f85df102c030e7f8ed8f600cfccdd1143266112ee4037d37faa1bda44a571dab35b48297342024551e995ad2f8a4d86da0aa1f33ec61868 languageName: node linkType: hard -"@rollup/plugin-node-resolve@npm:^15.2.3": - version: 15.2.3 - resolution: "@rollup/plugin-node-resolve@npm:15.2.3" +"@rollup/plugin-node-resolve@npm:^16.0.1": + version: 16.0.1 + resolution: "@rollup/plugin-node-resolve@npm:16.0.1" dependencies: "@rollup/pluginutils": "npm:^5.0.1" "@types/resolve": "npm:1.20.2" deepmerge: "npm:^4.2.2" - is-builtin-module: "npm:^3.2.1" is-module: "npm:^1.0.0" resolve: "npm:^1.22.1" peerDependencies: @@ -2381,29 +2378,13 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/598c15615086f26e28c4b3dbf966682af7fb0e5bc277cc4e57f559668a3be675a63ab261eb34729ce9569c3a51342c48863e50b5efe02e0fc1571828f0113f9d + checksum: 10c0/54d33282321492fafec29b49c66dd1efd90c72a24f9d1569dcb57a72ab8de8a782810f39fdb917b96ec6a598c18f3416588b419bf7af331793a010de1fe28c60 languageName: node linkType: hard -"@rollup/plugin-terser@npm:^0.4.4": - version: 0.4.4 - resolution: "@rollup/plugin-terser@npm:0.4.4" - dependencies: - serialize-javascript: "npm:^6.0.1" - smob: "npm:^1.0.0" - terser: "npm:^5.17.4" - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 10c0/b9cb6c8f02ac1c1344019e9fb854321b74f880efebc41b6bdd84f18331fce0f4a2aadcdb481042245cd3f409b429ac363af71f9efec4a2024731d67d32af36ee - languageName: node - linkType: hard - -"@rollup/plugin-typescript@npm:^11.1.6": - version: 11.1.6 - resolution: "@rollup/plugin-typescript@npm:11.1.6" +"@rollup/plugin-typescript@npm:^12.1.4": + version: 12.1.4 + resolution: "@rollup/plugin-typescript@npm:12.1.4" dependencies: "@rollup/pluginutils": "npm:^5.1.0" resolve: "npm:^1.22.1" @@ -2416,7 +2397,7 @@ __metadata: optional: true tslib: optional: true - checksum: 10c0/5347cd73ac28d4cf2401a3e689864a1a0df8f3ae029abd9c38525cbc84bcfa16c3a32a0ac5698dac65ec531ba7cf8332e14f5fc7f8fa501193da23320a134c5c + checksum: 10c0/b5bf7f54794d0b33ae5441c5aa202a95beb7068c206f40102f94997e888756c06c2bfe00517eb74a58771078432f94e8a34e99f5c6dbf89a22b49431b83c4798 languageName: node linkType: hard @@ -2436,107 +2417,156 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.14.1" +"@rollup/rollup-android-arm-eabi@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.4" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-android-arm64@npm:4.14.1" +"@rollup/rollup-android-arm64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-android-arm64@npm:4.52.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.14.1" +"@rollup/rollup-darwin-arm64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-darwin-arm64@npm:4.52.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.14.1" +"@rollup/rollup-darwin-x64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-darwin-x64@npm:4.52.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.1" - conditions: os=linux & cpu=arm +"@rollup/rollup-freebsd-arm64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.4" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-freebsd-x64@npm:4.52.4" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.4" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.4" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.1" +"@rollup/rollup-linux-arm64-musl@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.1" - conditions: os=linux & cpu=ppc64le & libc=glibc +"@rollup/rollup-linux-loong64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.4" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-ppc64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.4" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.4" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.1" +"@rollup/rollup-linux-riscv64-musl@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.4" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.4" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.1" +"@rollup/rollup-linux-x64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.1" +"@rollup/rollup-linux-x64-musl@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.1" +"@rollup/rollup-openharmony-arm64@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.4" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.14.1": - version: 4.14.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.1" +"@rollup/rollup-win32-x64-gnu@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.52.4": + version: 4.52.4 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -3475,17 +3505,17 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard -"@types/estree@npm:0.0.39": - version: 0.0.39 - resolution: "@types/estree@npm:0.0.39" - checksum: 10c0/f0af6c95ac1988c4827964bd9d3b51d24da442e2188943f6dfcb1e1559103d5d024d564b2e9d3f84c53714a02a0a7435c7441138eb63d9af5de4dfc66cdc0d92 +"@types/estree@npm:1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 languageName: node linkType: hard @@ -3753,15 +3783,6 @@ __metadata: languageName: node linkType: hard -"@types/rollup-plugin-peer-deps-external@npm:^2.2.1": - version: 2.2.5 - resolution: "@types/rollup-plugin-peer-deps-external@npm:2.2.5" - dependencies: - rollup: "npm:^0.63.4" - checksum: 10c0/36876e9786a5257b2289cc9d02b3290eaaf5299905814893fe0fe345545b1b2091e6a683b27a012e98b54f25662605d3caf5a5f6297f4392d896cb50de1bbfbc - languageName: node - linkType: hard - "@types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -4061,7 +4082,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.8.1, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -4727,13 +4748,6 @@ __metadata: languageName: node linkType: hard -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a - languageName: node - linkType: hard - "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -5041,13 +5055,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 - languageName: node - linkType: hard - "commander@npm:^6.2.1": version: 6.2.1 resolution: "commander@npm:6.2.1" @@ -6586,6 +6593,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.2.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + "fetch-retry@npm:^5.0.2": version: 5.0.6 resolution: "fetch-retry@npm:5.0.6" @@ -7029,19 +7048,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.3": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -7537,15 +7543,6 @@ __metadata: languageName: node linkType: hard -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: "npm:^3.3.0" - checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 - languageName: node - linkType: hard - "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -8887,7 +8884,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3, magic-string@npm:^0.30.4, magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": version: 0.30.9 resolution: "magic-string@npm:0.30.9" dependencies: @@ -8896,6 +8893,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.5": + version: 0.30.19 + resolution: "magic-string@npm:0.30.19" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/db23fd2e2ee98a1aeb88a4cdb2353137fcf05819b883c856dd79e4c7dfb25151e2a5a4d5dbd88add5e30ed8ae5c51bcf4accbc6becb75249d924ec7b4fbcae27 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -9282,10 +9288,9 @@ __metadata: dependencies: "@babel/core": "npm:^7.24.1" "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" - "@rollup/plugin-commonjs": "npm:^25.0.7" - "@rollup/plugin-node-resolve": "npm:^15.2.3" - "@rollup/plugin-terser": "npm:^0.4.4" - "@rollup/plugin-typescript": "npm:^11.1.6" + "@rollup/plugin-commonjs": "npm:^28.0.6" + "@rollup/plugin-node-resolve": "npm:^16.0.1" + "@rollup/plugin-typescript": "npm:^12.1.4" "@storybook/addon-actions": "npm:^8.0.5" "@storybook/addon-essentials": "npm:^8.0.5" "@storybook/addon-links": "npm:^8.0.5" @@ -9303,7 +9308,6 @@ __metadata: "@types/node": "npm:^15.0.2" "@types/react": "npm:^18.2.60" "@types/react-dom": "npm:^18.2.19" - "@types/rollup-plugin-peer-deps-external": "npm:^2.2.1" "@typescript-eslint/eslint-plugin": "npm:^7.1.0" "@typescript-eslint/parser": "npm:^7.1.0" babel-jest: "npm:^29.7.0" @@ -9327,11 +9331,8 @@ __metadata: react: "npm:^18.2.0" react-dom: "npm:^18.2.0" regenerator-runtime: "npm:^0.13.7" - rollup: "npm:^4.13.0" - rollup-plugin-dts: "npm:^6.1.0" - rollup-plugin-peer-deps-external: "npm:^2.2.4" + rollup: "npm:^4.52.4" rollup-plugin-preserve-directives: "npm:^0.4.0" - rollup-plugin-tsconfig-paths: "npm:^1.5.2" sass: "npm:^1.53.0" storybook: "npm:^8.0.5" ts-jest: "npm:^29.1.2" @@ -9880,6 +9881,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + "pify@npm:^4.0.1": version: 4.0.1 resolution: "pify@npm:4.0.1" @@ -10155,15 +10163,6 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -10631,31 +10630,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-dts@npm:^6.1.0": - version: 6.1.0 - resolution: "rollup-plugin-dts@npm:6.1.0" - dependencies: - "@babel/code-frame": "npm:^7.22.13" - magic-string: "npm:^0.30.4" - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - dependenciesMeta: - "@babel/code-frame": - optional: true - checksum: 10c0/8fed9f292fec09a21fdac86964aee92f6d76cfa688faa7f47065a1b25e12be209d437329868d706f8a189c246b5e918efc6046eb09cd974cc7989e68fe746927 - languageName: node - linkType: hard - -"rollup-plugin-peer-deps-external@npm:^2.2.4": - version: 2.2.4 - resolution: "rollup-plugin-peer-deps-external@npm:2.2.4" - peerDependencies: - rollup: "*" - checksum: 10c0/86c969e38165363d1831997cb765a351bbc03b76c68496aa3c5714e4545f3335489da92d069c6b7785cbf9b1df6d1d7e16c5ccfa31aad4f9f00dd4f9c6f2258b - languageName: node - linkType: hard - "rollup-plugin-preserve-directives@npm:^0.4.0": version: 0.4.0 resolution: "rollup-plugin-preserve-directives@npm:0.4.0" @@ -10668,29 +10642,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-tsconfig-paths@npm:^1.5.2": - version: 1.5.2 - resolution: "rollup-plugin-tsconfig-paths@npm:1.5.2" - dependencies: - typescript-paths: "npm:^1.5.1" - peerDependencies: - rollup: ^2 || ^3 || ^4 - checksum: 10c0/14b0e60b2a6b32a7581a52bfa4dabfc71a5e15a68107f12a1b7e7986343676a869e454d43283c758cb45770369be661bf3df43f8c03d0944a09804e53b281333 - languageName: node - linkType: hard - -"rollup@npm:^0.63.4": - version: 0.63.5 - resolution: "rollup@npm:0.63.5" - dependencies: - "@types/estree": "npm:0.0.39" - "@types/node": "npm:*" - bin: - rollup: ./bin/rollup - checksum: 10c0/e8a7c31155fb3d8a9a2c65933a2c3a1125244a4e1e2ba3f2703322532d54fc6304b15fafd5821e5ba7bd8a70bac5119dd85ecd5957ddc131f99905b7c3d4e69d - languageName: node - linkType: hard - "rollup@npm:^3.27.1": version: 3.29.4 resolution: "rollup@npm:3.29.4" @@ -10705,26 +10656,33 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.13.0": - version: 4.14.1 - resolution: "rollup@npm:4.14.1" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.14.1" - "@rollup/rollup-android-arm64": "npm:4.14.1" - "@rollup/rollup-darwin-arm64": "npm:4.14.1" - "@rollup/rollup-darwin-x64": "npm:4.14.1" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.14.1" - "@rollup/rollup-linux-arm64-gnu": "npm:4.14.1" - "@rollup/rollup-linux-arm64-musl": "npm:4.14.1" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.14.1" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.14.1" - "@rollup/rollup-linux-s390x-gnu": "npm:4.14.1" - "@rollup/rollup-linux-x64-gnu": "npm:4.14.1" - "@rollup/rollup-linux-x64-musl": "npm:4.14.1" - "@rollup/rollup-win32-arm64-msvc": "npm:4.14.1" - "@rollup/rollup-win32-ia32-msvc": "npm:4.14.1" - "@rollup/rollup-win32-x64-msvc": "npm:4.14.1" - "@types/estree": "npm:1.0.5" +"rollup@npm:^4.52.4": + version: 4.52.4 + resolution: "rollup@npm:4.52.4" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.52.4" + "@rollup/rollup-android-arm64": "npm:4.52.4" + "@rollup/rollup-darwin-arm64": "npm:4.52.4" + "@rollup/rollup-darwin-x64": "npm:4.52.4" + "@rollup/rollup-freebsd-arm64": "npm:4.52.4" + "@rollup/rollup-freebsd-x64": "npm:4.52.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.52.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.52.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.52.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.52.4" + "@rollup/rollup-linux-loong64-gnu": "npm:4.52.4" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.52.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.52.4" + "@rollup/rollup-linux-riscv64-musl": "npm:4.52.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.52.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.52.4" + "@rollup/rollup-linux-x64-musl": "npm:4.52.4" + "@rollup/rollup-openharmony-arm64": "npm:4.52.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.52.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.52.4" + "@rollup/rollup-win32-x64-gnu": "npm:4.52.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.52.4" + "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -10735,33 +10693,47 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true "@rollup/rollup-linux-arm64-gnu": optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-powerpc64le-gnu": + "@rollup/rollup-linux-loong64-gnu": + optional: true + "@rollup/rollup-linux-ppc64-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true "@rollup/rollup-win32-x64-msvc": optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/c9028c04537f7f16f9b5e4d75c84d2f0dc960d280fc4eca5960f0d67e786d993b8b707a63fc8b2e054b018fdb3a5a98d5eb7ed5674635c7612dd0b66696805fa + checksum: 10c0/aaec0f57e887d4fb37d152f93cf7133954eec79d11643e95de768ec9a377f08793b1745c648ca65a0dcc6c795c4d9ca398724d013e5745de270e88a543782aea languageName: node linkType: hard @@ -10793,7 +10765,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -10899,15 +10871,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.1": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - "serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -11025,13 +10988,6 @@ __metadata: languageName: node linkType: hard -"smob@npm:^1.0.0": - version: 1.5.0 - resolution: "smob@npm:1.5.0" - checksum: 10c0/a1067f23265812de8357ed27312101af49b89129eb973e3f26ab5856ea774f88cace13342e66e32470f933ccfa916e0e9d0f7ca8bbd4f92dfab2af45c15956c2 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^8.0.3": version: 8.0.3 resolution: "socks-proxy-agent@npm:8.0.3" @@ -11070,7 +11026,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": +"source-map-support@npm:^0.5.16": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -11512,20 +11468,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.17.4": - version: 5.30.3 - resolution: "terser@npm:5.30.3" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10c0/ab5a8afef2e7a3b12a0fd17f9ff984fe02aefa945985eb139ab9984280d523a1104021eda889a7f993b69a67574ceb8fd0db8b76e5efc6a7607246db51bcc0b6 - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -11846,15 +11788,6 @@ __metadata: languageName: node linkType: hard -"typescript-paths@npm:^1.5.1": - version: 1.5.1 - resolution: "typescript-paths@npm:1.5.1" - peerDependencies: - typescript: ^4.7.2 || ^5 - checksum: 10c0/68b7cdf0c8a11e4555e172ccec85fb342d1e19029cce761979087b3509a1b320ccbce4be666cea7acac03ecdce23cc69b2afb8a4847f1bfc25bb49201fdbe5ad - languageName: node - linkType: hard - "typescript@npm:5.3.3": version: 5.3.3 resolution: "typescript@npm:5.3.3" From 37853fffdbe0f72db50f811e276fcf53fe477bf4 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Fri, 3 Oct 2025 14:22:51 +0100 Subject: [PATCH 02/48] Fix TypeScript "Type 'NodeListOf' must have a '[Symbol.iterator]()' method that returns an iterator" --- src/util/components/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/components/index.ts b/src/util/components/index.ts index ee84555d..5de9b25c 100644 --- a/src/util/components/index.ts +++ b/src/util/components/index.ts @@ -21,7 +21,7 @@ export async function renderServer(element: JSX.Element, options: RenderOptions container.innerHTML = renderToString(element, serverOptions); // Find rendered modules - const modules = [...container.querySelectorAll(selector)]; + const modules = Array.from(container.querySelectorAll(selector)); if (!modules.length) { throw new Error(`renderServer: No modules found: ${selector}`); } @@ -40,7 +40,7 @@ export async function renderClient(element: JSX.Element, options: RenderOptions const { container } = await act(() => render(element, renderOptions)); // Find rendered modules - const modules = [...container.querySelectorAll(selector)]; + const modules = Array.from(container.querySelectorAll(selector)); if (!modules.length) { throw new Error(`renderClient: No modules found: ${selector}`); } From e19629c2a345bd3ca21e769675199f610e3dbefe Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Fri, 3 Oct 2025 15:54:48 +0100 Subject: [PATCH 03/48] Make sure source maps include original sources --- package.json | 1 + rollup.config.mjs | 1 + 2 files changed, 2 insertions(+) diff --git a/package.json b/package.json index bacbdea1..66d8517b 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "name": "NHS England" }, "files": [ + "src", "dist" ], "sideEffects": false, diff --git a/rollup.config.mjs b/rollup.config.mjs index b0f5e3da..11772931 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -24,6 +24,7 @@ export default defineConfig( preserveModules: true, preserveModulesRoot: 'src', sourcemap: true, + sourcemapExcludeSources: true, }, ], external, From 0cf266ccd6f6c47b2e0379dba769436de9583e00 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Tue, 7 Oct 2025 08:43:34 +0100 Subject: [PATCH 04/48] Configure Babel with Browserslist --- .browserslistrc | 5 + babel.config.js | 34 + jest.config.js | 25 +- package.json | 9 +- src/__tests__/index.test.ts | 1 + .../icons/__tests__/Icons.test.tsx | 4 +- yarn.lock | 1506 ++++++++++++++++- 7 files changed, 1495 insertions(+), 89 deletions(-) create mode 100644 .browserslistrc create mode 100644 babel.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..48a4efd1 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,5 @@ +[javascripts] +supports es6-module + +[node] +node 22 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..c3adfef8 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,34 @@ +const { NODE_ENV } = process.env; + +module.exports = { + browserslistEnv: 'javascripts', + presets: [ + [ + '@babel/preset-env', + { + // Apply bug fixes to avoid transforms + bugfixes: true, + + // Apply smaller "loose" transforms for browsers + loose: true, + + // Apply ES module transforms for Jest + // https://jestjs.io/docs/ecmascript-modules + modules: NODE_ENV === 'test' ? 'auto' : false, + }, + ], + [ + '@babel/preset-react', + { + development: NODE_ENV === 'development', + useBuiltIns: true, + }, + ], + '@babel/preset-typescript', + ], + env: { + test: { + browserslistEnv: 'node', + }, + }, +}; diff --git a/jest.config.js b/jest.config.js index c4e55cfc..808800e2 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,24 +1,9 @@ -const { pathsToModuleNameMapper } = require('ts-jest'); -const { compilerOptions } = require('./tsconfig.base.json'); - -const jestConfig = { - testEnvironment: 'jsdom', - rootDir: './', +module.exports = { + collectCoverageFrom: ['/src/**/*.{js,mjs,ts,tsx}'], + extensionsToTreatAsEsm: ['.jsx', '.ts', '.tsx'], setupFilesAfterEnv: ['/src/setupTests.ts'], - collectCoverageFrom: ['/src/**/*.{ts,tsx}'], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { - prefix: '', - }), + testEnvironment: 'jsdom', transform: { - '^.+\\.(t|j)sx?$': [ - 'ts-jest', - { - babelConfig: { - plugins: ['@babel/plugin-transform-modules-commonjs'], - }, - }, - ], + '^.+\\.(js|mjs|ts|tsx)$': ['babel-jest', { rootMode: 'upward' }], }, }; - -module.exports = jestConfig; diff --git a/package.json b/package.json index 66d8517b..01033a61 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "types": "dist/esm/index.d.ts", "scripts": { "cleanup": "rm -rf dist/ > /dev/null && rm -rf lib/ > /dev/null", - "storybook": "storybook dev -p 6006", + "storybook": "NODE_ENV=development storybook dev -p 6006", "build": "yarn cleanup && rollup -c", "test": "jest", "test:watch": "jest --watch", @@ -41,8 +41,10 @@ }, "license": "MIT", "devDependencies": { - "@babel/core": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/core": "^7.28.4", + "@babel/preset-env": "^7.28.3", + "@babel/preset-react": "^7.27.1", + "@babel/preset-typescript": "^7.27.1", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-typescript": "^12.1.4", @@ -89,7 +91,6 @@ "rollup-plugin-preserve-directives": "^0.4.0", "sass": "^1.53.0", "storybook": "^8.0.5", - "ts-jest": "^29.1.2", "typescript": "5.3.3", "vite": "^4.5.3", "vite-tsconfig-paths": "^4.3.2" diff --git a/src/__tests__/index.test.ts b/src/__tests__/index.test.ts index 2f325f87..5ac9b6f2 100644 --- a/src/__tests__/index.test.ts +++ b/src/__tests__/index.test.ts @@ -5,6 +5,7 @@ describe('Index', () => { const sortedIndex = Object.keys(index).sort((a, b) => a.localeCompare(b)); expect(sortedIndex).toEqual([ + '__esModule', // Synthetic default export 'ActionLink', 'ArrowLeftIcon', 'ArrowRightCircleIcon', diff --git a/src/components/content-presentation/icons/__tests__/Icons.test.tsx b/src/components/content-presentation/icons/__tests__/Icons.test.tsx index 9cdff5e4..28bf58b9 100644 --- a/src/components/content-presentation/icons/__tests__/Icons.test.tsx +++ b/src/components/content-presentation/icons/__tests__/Icons.test.tsx @@ -4,7 +4,9 @@ import * as Icons from '../'; describe('Icons', () => { it('all icons match snapshots', () => { - for (const [name, Icon] of Object.entries(Icons)) { + for (const [name, Icon] of Object.entries(Icons).filter( + ([, Icon]) => Icon instanceof Function, + )) { const { container } = render(); expect(container).toMatchSnapshot(name); } diff --git a/yarn.lock b/yarn.lock index 1b8c9ba5..835f4f31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -50,6 +50,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.4": version: 7.24.4 resolution: "@babel/compat-data@npm:7.24.4" @@ -57,7 +68,14 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.1": +"@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/compat-data@npm:7.28.4" + checksum: 10c0/9d346471e0a016641df9a325f42ad1e8324bbdc0243ce4af4dd2b10b974128590da9eb179eea2c36647b9bb987343119105e96773c1f6981732cd4f87e5a03b9 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9": version: 7.24.4 resolution: "@babel/core@npm:7.24.4" dependencies: @@ -80,6 +98,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/core@npm:7.28.4" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.4" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.4" + "@babel/types": "npm:^7.28.4" + "@jridgewell/remapping": "npm:^2.3.5" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/ef5a6c3c6bf40d3589b5593f8118cfe2602ce737412629fb6e26d595be2fcbaae0807b43027a5c42ec4fba5b895ff65891f2503b5918c8a3ea3542ab44d4c278 + languageName: node + linkType: hard + "@babel/generator@npm:^7.23.0, @babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": version: 7.24.4 resolution: "@babel/generator@npm:7.24.4" @@ -92,6 +133,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/generator@npm:7.28.3" + dependencies: + "@babel/parser": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/0ff58bcf04f8803dcc29479b547b43b9b0b828ec1ee0668e92d79f9e90f388c28589056637c5ff2fd7bcf8d153c990d29c448d449d852bf9d1bc64753ca462bc + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -101,6 +155,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" + dependencies: + "@babel/types": "npm:^7.27.3" + checksum: 10c0/94996ce0a05b7229f956033e6dcd69393db2b0886d0db6aff41e704390402b8cdcca11f61449cb4f86cfd9e61b5ad3a73e4fa661eeed7846b125bd1c33dbc633 + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" @@ -123,6 +186,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.24.1, @babel/helper-create-class-features-plugin@npm:^7.24.4": version: 7.24.4 resolution: "@babel/helper-create-class-features-plugin@npm:7.24.4" @@ -142,6 +218,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/f1ace9476d581929128fd4afc29783bb674663898577b2e48ed139cfd2e92dfc69654cff76cb8fd26fece6286f66a99a993186c1e0a3e17b703b352d0bcd1ca4 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": version: 7.22.15 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" @@ -155,6 +248,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + regexpu-core: "npm:^6.2.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/591fe8bd3bb39679cc49588889b83bd628d8c4b99c55bafa81e80b1e605a348b64da955e3fd891c4ba3f36fd015367ba2eadea22af6a7de1610fbb5bcc2d3df0 + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.6.1": version: 0.6.1 resolution: "@babel/helper-define-polyfill-provider@npm:0.6.1" @@ -170,6 +276,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.22.10" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/4886a068d9ca1e70af395340656a9dda33c50502c67eed39ff6451785f370bdfc6e57095b90cb92678adcd4a111ca60909af53d3a741120719c5604346ae409e + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" @@ -187,6 +308,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-globals@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/helper-globals@npm:7.28.0" + checksum: 10c0/5a0cd0c0e8c764b5f27f2095e4243e8af6fa145daea2b41b53c0c1414fe6ff139e3640f4e2207ae2b3d2153a1abd346f901c26c290ee7cb3881dd922d4ee9232 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" @@ -205,6 +333,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/5762ad009b6a3d8b0e6e79ff6011b3b8fdda0fefad56cfa8bfbe6aa02d5a8a8a9680a45748fe3ac47e735a03d2d88c0a676e3f9f59f20ae9fadcc8d51ccd5a53 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.1": version: 7.24.3 resolution: "@babel/helper-module-imports@npm:7.24.3" @@ -214,6 +352,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.23.3": version: 7.23.3 resolution: "@babel/helper-module-transforms@npm:7.23.3" @@ -229,6 +377,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -238,6 +399,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" + dependencies: + "@babel/types": "npm:^7.27.1" + checksum: 10c0/6b861e7fcf6031b9c9fc2de3cd6c005e94a459d6caf3621d93346b52774925800ca29d4f64595a5ceacf4d161eb0d27649ae385110ed69491d9776686fa488e6 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.24.0 resolution: "@babel/helper-plugin-utils@npm:7.24.0" @@ -245,6 +415,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" @@ -258,6 +435,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-wrap-function": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba6258f4bb57c7c9fa76b55f416b2d18c867b48c1af4f9f2f7cd7cc933fe6da7514811d08ceb4972f1493be46f4b69c40282b811d1397403febae13c2ec57b5 + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.24.1": version: 7.24.1 resolution: "@babel/helper-replace-supers@npm:7.24.1" @@ -271,6 +461,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-simple-access@npm:7.22.5" @@ -289,6 +492,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/f625013bcdea422c470223a2614e90d2c1cc9d832e97f32ca1b4f82b34bb4aa67c3904cb4b116375d3b5b753acfb3951ed50835a1e832e7225295c7b0c24dff7 + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -305,6 +518,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" @@ -312,6 +532,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -319,6 +546,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-wrap-function@npm:7.22.20" @@ -330,6 +564,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.27.1": + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + checksum: 10c0/aecb8a457efd893dc3c6378ab9221d06197573fb2fe64afabe7923e7732607d59b07f4c5603909877d69bea3ee87025f4b1d8e4f0403ae0a07b14e9ce0bf355a + languageName: node + linkType: hard + "@babel/helpers@npm:^7.24.4": version: 7.24.4 resolution: "@babel/helpers@npm:7.24.4" @@ -341,6 +586,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.2": version: 7.24.2 resolution: "@babel/highlight@npm:7.24.2" @@ -362,6 +617,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/parser@npm:7.28.4" + dependencies: + "@babel/types": "npm:^7.28.4" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/58b239a5b1477ac7ed7e29d86d675cc81075ca055424eba6485872626db2dc556ce63c45043e5a679cd925e999471dba8a3ed4864e7ab1dbf64306ab72c52707 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.4": version: 7.24.4 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.4" @@ -374,6 +640,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7dfffa978ae1cd179641a7c4b4ad688c6828c2c58ec96b118c2fb10bc3715223de6b88bff1ebff67056bb5fccc568ae773e3b83c592a1b843423319f80c99ebd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2cd7a55a856e5e59bbd9484247c092a41e0d9f966778e7019da324d9e0928892d26afc4fbb2ac3d76a3c5a631cd3cf0d72dd2653b44f634f6c663b9e6f80aacd + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.24.1" @@ -385,6 +674,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/cf29835498c4a25bd470908528919729a0799b2ec94e89004929a5532c94a5e4b1a49bc5d6673a22e5afe05d08465873e14ee3b28c42eb3db489cdf5ca47c680 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.1" @@ -398,6 +698,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/eddcd056f76e198868cbff883eb148acfade8f0890973ab545295df0c08e39573a72e65372bcc0b0bfadba1b043fe1aea6b0907d0b4889453ac154c404194ebc + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.24.1" @@ -410,6 +723,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/3cdc27c4e08a632a58e62c6017369401976edf1cd9ae73fd9f0d6770ddd9accf40b494db15b66bab8db2a8d5dc5bab5ca8c65b19b81fdca955cd8cbbe24daadb + languageName: node + linkType: hard + "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -507,6 +832,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-attributes@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.1" @@ -518,6 +854,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a + languageName: node + linkType: hard + "@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -551,6 +898,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -650,6 +1008,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -673,6 +1042,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/19abd7a7d11eef58c9340408a4c2594503f6c4eaea1baa7b0e5fbdda89df097e50663edb3448ad2300170b39efca98a75e5767af05cad3b0facb4944326896a3 + languageName: node + linkType: hard + "@babel/plugin-transform-async-generator-functions@npm:^7.24.3": version: 7.24.3 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.24.3" @@ -687,6 +1067,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/739d577e649d7d7b9845dc309e132964327ab3eaea43ad04d04a7dcb977c63f9aa9a423d1ca39baf10939128d02f52e6fda39c834fb9f1753785b1497e72c4dc + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.1" @@ -700,6 +1093,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.1" @@ -711,6 +1117,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3313130ba3bf0699baad0e60da1c8c3c2f0c2c0a7039cd0063e54e72e739c33f1baadfc9d8c73b3fea8c85dd7250c3964fb09c8e1fa62ba0b24a9fefe0a8dbde + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.24.4": version: 7.24.4 resolution: "@babel/plugin-transform-block-scoping@npm:7.24.4" @@ -722,6 +1139,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b9a4e90f957742021fa8bad239cde28ec67b95d36b0e1fcf9f3f9cab6120671ab5e7ee6eacbcd51d0815ddea6978abc9a99a0bd493c43e3e27ec3ae1cb4de23 + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-class-properties@npm:7.24.1" @@ -734,6 +1162,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:^7.24.4": version: 7.24.4 resolution: "@babel/plugin-transform-class-static-block@npm:7.24.4" @@ -747,6 +1187,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/8c922a64f6f5b359f7515c89ef0037bad583b4484dfebc1f6bc1cf13462547aaceb19788827c57ec9a2d62495f34c4b471ca636bf61af00fdaea5e9642c82b60 + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-classes@npm:7.24.1" @@ -765,6 +1217,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76687ed37216ff012c599870dc00183fb716f22e1a02fe9481943664c0e4d0d88c3da347dc3fe290d4728f4d47cd594ffa621d23845e2bb8ab446e586308e066 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.1" @@ -777,6 +1245,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-destructuring@npm:7.24.1" @@ -788,6 +1268,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc7ccafa952b3ff7888544d5688cfafaba78c69ce1e2f04f3233f4f78c9de5e46e9695f5ea42c085b0c0cfa39b10f366d362a2be245b6d35b66d3eb1d427ccb2 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.1" @@ -800,6 +1292,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-keys@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.1" @@ -811,6 +1315,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/22a822e5342b7066f83eaedc4fd9bb044ac6bc68725484690b33ba04a7104980e43ea3229de439286cb8db8e7db4a865733a3f05123ab58a10f189f03553746f + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 + languageName: node + linkType: hard + "@babel/plugin-transform-dynamic-import@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.1" @@ -823,6 +1350,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8dcd3087aca134b064fc361d2cc34eec1f900f6be039b6368104afcef10bb75dea726bb18cabd046716b89b0edaa771f50189fa16bc5c5914a38cbcf166350f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3baa706af3112adf2ae0c7ec0dc61b63dd02695eb5582f3c3a2b2d05399c6aa7756f55e7bbbd5412e613a6ba1dd6b6736904074b4d7ebd6b45a1e3f9145e4094 + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.1" @@ -835,6 +1385,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/953d21e01fed76da8e08fb5094cade7bf8927c1bb79301916bec2db0593b41dbcfbca1024ad5db886b72208a93ada8f57a219525aad048cf15814eeb65cf760d + languageName: node + linkType: hard + "@babel/plugin-transform-export-namespace-from@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.1" @@ -847,6 +1408,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-export-namespace-from@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d7165cad11f571a54c8d9263d6c6bf2b817aff4874f747cb51e6e49efb32f2c9b37a6850cdb5e3b81e0b638141bb77dc782a6ec1a94128859fbdf7767581e07c + languageName: node + linkType: hard + "@babel/plugin-transform-flow-strip-types@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.1" @@ -871,6 +1443,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-for-of@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4635763173a23aae24480681f2b0996b4f54a0cb2368880301a1801638242e263132d1e8adbe112ab272913d1d900ee0d6f7dea79443aef9d3325168cd88b3fb + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-function-name@npm:7.24.1" @@ -884,6 +1468,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-json-strings@npm:7.24.1" @@ -896,6 +1493,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-literals@npm:7.24.1" @@ -907,6 +1515,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.1" @@ -919,6 +1538,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b0abc7c0d09d562bf555c646dce63a30288e5db46fd2ce809a61d064415da6efc3b2b3c59b8e4fe98accd072c89a2f7c3765b400e4bf488651735d314d9feeb + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.1" @@ -930,6 +1560,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0874ccebbd1c6a155e5f6b3b29729fade1221b73152567c1af1e1a7c12848004dffecbd7eded6dc463955120040ae57c17cb586b53fb5a7a27fcd88177034c30 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-amd@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-modules-amd@npm:7.24.1" @@ -942,7 +1583,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.23.0, @babel/plugin-transform-modules-commonjs@npm:^7.23.3, @babel/plugin-transform-modules-commonjs@npm:^7.24.1": +"@babel/plugin-transform-modules-amd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76e86cd278b6a3c5b8cca8dfb3428e9cd0c81a5df7096e04c783c506696b916a9561386d610a9d846ef64804640e0bd818ea47455fed0ee89b7f66c555b29537 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.23.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.1" dependencies: @@ -955,6 +1608,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.1" @@ -969,6 +1634,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-modules-umd@npm:7.24.1" @@ -981,6 +1660,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-umd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e5962a8874889da2ab1aa32eb93ec21d419c7423c766e4befb39b4bb512b9ad44b47837b6cd1c8f1065445cbbcc6dc2be10298ac6e734e5ca1059fc23698daed + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" @@ -993,6 +1684,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eaa8c9aee00a00f3bd8bd8b561d3f569644d98cb2cfe3026d7398aabf9b29afd62f24f142b4112fa1f572d9b0e1928291b099cde59f56d6b59f4d565e58abf2 + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-new-target@npm:7.24.1" @@ -1004,6 +1707,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-new-target@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-new-target@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b0581412fcc5ab1b9a2d86a0c5407bd959391f0a1e77a46953fef9f7a57f3f4020d75f71098c5f9e5dcc680a87f9fd99b3205ab12e25ef8c19eed038c1e4b28 + languageName: node + linkType: hard + "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.1" @@ -1016,6 +1730,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.1" @@ -1028,6 +1753,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.1" @@ -1042,6 +1778,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/81725c8d6349957899975f3f789b1d4fb050ee8b04468ebfaccd5b59e0bda15cbfdef09aee8b4359f322b6715149d680361f11c1a420c4bdbac095537ecf7a90 + languageName: node + linkType: hard + "@babel/plugin-transform-object-super@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-object-super@npm:7.24.1" @@ -1054,6 +1805,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-super@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-super@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/efa2d092ef55105deb06d30aff4e460c57779b94861188128489b72378bf1f0ab0f06a4a4d68b9ae2a59a79719fbb2d148b9a3dca19ceff9c73b1f1a95e0527c + languageName: node + linkType: hard + "@babel/plugin-transform-optional-catch-binding@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.1" @@ -1066,6 +1829,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.23.0, @babel/plugin-transform-optional-chaining@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.1" @@ -1079,6 +1853,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b18ff5124e503f0a25d6b195be7351a028b3992d6f2a91fb4037e2a2c386400d66bc1df8f6df0a94c708524f318729e81a95c41906e5a7919a06a43e573a525 + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-parameters@npm:7.24.1" @@ -1090,6 +1876,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f + languageName: node + linkType: hard + "@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-private-methods@npm:7.24.1" @@ -1102,6 +1899,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 + languageName: node + linkType: hard + "@babel/plugin-transform-private-property-in-object@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.1" @@ -1116,6 +1925,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-property-literals@npm:7.24.1" @@ -1127,6 +1949,66 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-property-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/15713a87edd6db620d6e66eb551b4fbfff5b8232c460c7c76cedf98efdc5cd21080c97040231e19e06594c6d7dfa66e1ab3d0951e29d5814fb25e813f6d6209c + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.27.1": + version: 7.28.0 + resolution: "@babel/plugin-transform-react-display-name@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f5f86d2ad92be3e962158f344c2e385e23e2dfae7c8c7dc32138fb2cc46f63f5e50386c9f6c6fc16dbf1792c7bb650ad92c18203d0c2c0bd875bc28b0b80ef30 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eb8c4b6a79dc5c49b41e928e2037e1ee0bbfa722e4fd74c0b7c0d11103c82c2c25c434000e1b051d534c7261ab5c92b6d1e85313bf1b26e37db3f051ae217b58 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1a08637c39fc78c9760dd4a3ed363fdbc762994bf83ed7872ad5bda0232fcd0fc557332f2ce36b522c0226dfd9cc8faac6b88eddda535f24825198a689e571af + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/34bc090f4a7e460d82a851971b4d0f32e4bb519bafb927154f4174506283fe02b0f471fc20655c6050a8bf7b748bfa31c7e8f7d688849476d8266623554fbb28 + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-regenerator@npm:7.24.1" @@ -1134,8 +2016,31 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.24.0" regenerator-transform: "npm:^0.15.2" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/0a333585d7c0b38d31cc549d0f3cf7c396d1d50b6588a307dc58325505ddd4f5446188bc536c4779431b396251801b3f32d6d8e87db8274bc84e8c41950737f7 + "@babel/core": ^7.0.0-0 + checksum: 10c0/0a333585d7c0b38d31cc549d0f3cf7c396d1d50b6588a307dc58325505ddd4f5446188bc536c4779431b396251801b3f32d6d8e87db8274bc84e8c41950737f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5ad14647ffaac63c920e28df1b580ee2e932586bbdc71f61ec264398f68a5406c71a7f921de397a41b954a69316c5ab90e5d789ffa2bb34c5e6feb3727cfefb8 + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 languageName: node linkType: hard @@ -1150,6 +2055,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-reserved-words@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e1a87691cce21a644a474d7c9a8107d4486c062957be32042d40f0a3d0cc66e00a3150989655019c255ff020d2640ac16aaf544792717d586f219f3bad295567 + languageName: node + linkType: hard + "@babel/plugin-transform-shorthand-properties@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.1" @@ -1161,6 +2077,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bd5544b89520a22c41a6df5ddac9039821d3334c0ef364d18b0ba9674c5071c223bcc98be5867dc3865cb10796882b7594e2c40dedaff38e1b1273913fe353e1 + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-spread@npm:7.24.1" @@ -1173,6 +2100,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.1" @@ -1184,6 +2123,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-template-literals@npm:7.24.1" @@ -1195,6 +2145,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-template-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c90f403e42ef062b60654d1c122c70f3ec6f00c2f304b0931ebe6d0b432498ef8a5ef9266ddf00debc535f8390842207e44d3900eff1d2bab0cc1a700f03e083 + languageName: node + linkType: hard + "@babel/plugin-transform-typeof-symbol@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.1" @@ -1206,6 +2167,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a13c68015311fefa06a51830bc69d5badd06c881b13d5cf9ba04bf7c73e3fc6311cc889e18d9645ce2a64a79456dc9c7be88476c0b6802f62a686cb6f662ecd6 + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.24.1": version: 7.24.4 resolution: "@babel/plugin-transform-typescript@npm:7.24.4" @@ -1220,6 +2192,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.28.0 + resolution: "@babel/plugin-transform-typescript@npm:7.28.0" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/049c2bd3407bbf5041d8c95805a4fadee6d176e034f6b94ce7967b92a846f1e00f323cf7dfbb2d06c93485f241fb8cf4c10520e30096a6059d251b94e80386e9 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.1" @@ -1231,6 +2218,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a6809e0ca69d77ee9804e0c1164e8a2dea5e40718f6dcf234aeddf7292e7414f7ee331d87f17eb6f160823a329d1d6751bd49b35b392ac4a6efc032e4d3038d8 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-property-regex@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.1" @@ -1243,6 +2241,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.1" @@ -1255,6 +2265,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6abda1bcffb79feba6f5c691859cdbe984cc96481ea65d5af5ba97c2e843154005f0886e25006a37a2d213c0243506a06eaeafd93a040dbe1f79539016a0d17a + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-sets-regex@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.1" @@ -1267,6 +2289,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 + languageName: node + linkType: hard + "@babel/preset-env@npm:^7.23.2": version: 7.24.4 resolution: "@babel/preset-env@npm:7.24.4" @@ -1358,6 +2392,86 @@ __metadata: languageName: node linkType: hard +"@babel/preset-env@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/preset-env@npm:7.28.3" + dependencies: + "@babel/compat-data": "npm:^7.28.0" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.0" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@babel/plugin-transform-classes": "npm:^7.28.3" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" + "@babel/plugin-transform-for-of": "npm:^7.27.1" + "@babel/plugin-transform-function-name": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-literals": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.27.1" + "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" + "@babel/plugin-transform-modules-amd": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-umd": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-new-target": "npm:^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.0" + "@babel/plugin-transform-object-super": "npm:^7.27.1" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-property-literals": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.28.3" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-reserved-words": "npm:^7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" + "@babel/plugin-transform-template-literals": "npm:^7.27.1" + "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" + "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f7320cb062abf62de132ea2901135476938d32a896e03f5b7b3d543de08016053f6abbdaaf921d18fa43a0b76537dfd5ce8ee5dc647249b2057b8c6bf1289305 + languageName: node + linkType: hard + "@babel/preset-flow@npm:^7.22.15": version: 7.24.1 resolution: "@babel/preset-flow@npm:7.24.1" @@ -1384,6 +2498,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/preset-react@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-transform-react-display-name": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-development": "npm:^7.27.1" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a80b02ef08b026cb9830d6512d08c7cd378eef4c0631dacba4aa1106240d9bb76af6373463f0255f4bbdbfcce40375a61e92735375906ba5871629b0c314bc45 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.23.0": version: 7.24.1 resolution: "@babel/preset-typescript@npm:7.24.1" @@ -1399,6 +2529,21 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cba6ca793d915f8aff9fe2f13b0dfbf5fd3f2e9a17f17478ec9878e9af0d206dcfe93154b9fd353727f16c1dca7c7a3ceb4943f8d28b216235f106bc0fbbcaa3 + languageName: node + linkType: hard + "@babel/register@npm:^7.22.15": version: 7.23.7 resolution: "@babel/register@npm:7.23.7" @@ -1441,6 +2586,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.24.1": version: 7.24.1 resolution: "@babel/traverse@npm:7.24.1" @@ -1459,6 +2615,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/traverse@npm:7.28.4" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.3" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.4" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + debug: "npm:^4.3.1" + checksum: 10c0/ee678fdd49c9f54a32e07e8455242390d43ce44887cea6567b233fe13907b89240c377e7633478a32c6cf1be0e17c2f7f3b0c59f0666e39c5074cc47b968489c + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.24.0 resolution: "@babel/types@npm:7.24.0" @@ -1470,6 +2641,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/types@npm:7.28.4" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/ac6f909d6191319e08c80efbfac7bd9a25f80cc83b43cd6d82e7233f7a6b9d6e7b90236f3af7400a3f83b576895bcab9188a22b584eb0f224e80e6d4e95f4517 + languageName: node + linkType: hard + "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" @@ -2178,6 +3359,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.12": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/9a7d65fb13bd9aec1fbab74cda08496839b7e2ceb31f5ab922b323e94d7c481ce0fc4fd7e12e2610915ed8af51178bdc61e168e92a8c8b8303b030b03489b13b + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" @@ -2189,6 +3380,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/3de494219ffeb2c5c38711d0d7bb128097edf91893090a2dbc8ee0b55d092bb7347b1fd0f478486c5eab010e855c73927b1666f2107516d472d24a73017d1194 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" @@ -2210,7 +3411,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.5": +"@jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": version: 1.5.5 resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 @@ -2227,6 +3428,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.28": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/4b30ec8cd56c5fd9a661f088230af01e0c1a3888d11ffb6b47639700f71225be21d1f7e168048d6d4f9449207b978a235c07c8f15c07705685d16dc06280e9d9 + languageName: node + linkType: hard + "@mdx-js/react@npm:^3.0.0": version: 3.0.1 resolution: "@mdx-js/react@npm:3.0.1" @@ -4521,6 +5732,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" + dependencies: + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/d74cba0600a6508e86d220bde7164eb528755d91be58020e5ea92ea7fbb12c9d8d2c29246525485adfe7f68ae02618ec428f9a589cac6cbedf53cc3972ad7fbe + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.10.4": version: 0.10.4 resolution: "babel-plugin-polyfill-corejs3@npm:0.10.4" @@ -4533,6 +5757,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.13.0": + version: 0.13.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/5d8e228da425edc040d8c868486fd01ba10b0440f841156a30d9f8986f330f723e2ee61553c180929519563ef5b64acce2caac36a5a847f095d708dda5d8206d + languageName: node + linkType: hard + "babel-plugin-polyfill-regenerator@npm:^0.6.1": version: 0.6.1 resolution: "babel-plugin-polyfill-regenerator@npm:0.6.1" @@ -4544,6 +5780,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/63aa8ed716df6a9277c6ab42b887858fa9f57a70cc1d0ae2b91bdf081e45d4502848cba306fb60b02f59f99b32fd02ff4753b373cac48ccdac9b7d19dd56f06d + languageName: node + linkType: hard + "babel-preset-current-node-syntax@npm:^1.0.0": version: 1.0.1 resolution: "babel-preset-current-node-syntax@npm:1.0.1" @@ -4592,6 +5839,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.8.9": + version: 2.8.12 + resolution: "baseline-browser-mapping@npm:2.8.12" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 10c0/4c09bfbe4c1597148a29852663d9319ccac3b2ec7b567b615a02ad320dc0efb70a4ea4465a6a24968105f6ece515538203471f2aca4facf7403bc0f9cd6cadd8 + languageName: node + linkType: hard + "better-opn@npm:^3.0.2": version: 3.0.2 resolution: "better-opn@npm:3.0.2" @@ -4713,12 +5969,18 @@ __metadata: languageName: node linkType: hard -"bs-logger@npm:0.x": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" +"browserslist@npm:^4.24.0, browserslist@npm:^4.25.3": + version: 4.26.3 + resolution: "browserslist@npm:4.26.3" dependencies: - fast-json-stable-stringify: "npm:2.x" - checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 + baseline-browser-mapping: "npm:^2.8.9" + caniuse-lite: "npm:^1.0.30001746" + electron-to-chromium: "npm:^1.5.227" + node-releases: "npm:^2.0.21" + update-browserslist-db: "npm:^1.1.3" + bin: + browserslist: cli.js + checksum: 10c0/3899ee3b7fd205ece4ffe4392697c3f2b120b68f3741ef1789212b4971771aee3f66cf37c5c3accf86ce59c0605b5980c0f132711abbcc9e62c132e6e0ee45f3 languageName: node linkType: hard @@ -4823,6 +6085,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001746": + version: 1.0.30001748 + resolution: "caniuse-lite@npm:1.0.30001748" + checksum: 10c0/4a6e4495560519d6db73a62804cceafed108cfdda1ab78bcc0d588a921ed54554254647b8f4a410e97f8843eb020ec01dfcead7fd504a43b120b8f1a06dc7647 + languageName: node + linkType: hard + "chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -5160,6 +6429,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.43.0": + version: 3.45.1 + resolution: "core-js-compat@npm:3.45.1" + dependencies: + browserslist: "npm:^4.25.3" + checksum: 10c0/b22996d3ca7e4f6758725f9ebbb61d422466d7ec0359158563264069ec066e7d2539fc7daebaa8aaf7b0bde73114ce42519611a0f0edb471139349e0cd11e183 + languageName: node + linkType: hard + "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" @@ -5320,6 +6598,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.4.1": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 + languageName: node + linkType: hard + "decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" @@ -5629,6 +6919,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.227": + version: 1.5.230 + resolution: "electron-to-chromium@npm:1.5.230" + checksum: 10c0/b8bf382868b2780fa0c7ba3bce0644e94ec21af8f9b199ee094273904a575b46c8705fa4c10a22a0ed90e42dbbf72efbc3089bbecf8324a9db099c8c6c1c1101 + languageName: node + linkType: hard + "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" @@ -6062,6 +7359,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -6561,7 +7865,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -7559,6 +8863,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + "is-data-view@npm:^1.0.1": version: 1.0.1 resolution: "is-data-view@npm:1.0.1" @@ -8413,7 +9726,7 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": +"jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" dependencies: @@ -8608,6 +9921,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2, jsesc@npm:~3.1.0": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + "jsesc@npm:~0.5.0": version: 0.5.0 resolution: "jsesc@npm:0.5.0" @@ -8799,13 +10121,6 @@ __metadata: languageName: node linkType: hard -"lodash.memoize@npm:4.x": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 - languageName: node - linkType: hard - "lodash.merge@npm:4.6.2, lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" @@ -8930,13 +10245,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:1.x": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^13.0.0": version: 13.0.0 resolution: "make-fetch-happen@npm:13.0.0" @@ -9238,7 +10546,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -9286,8 +10594,10 @@ __metadata: version: 0.0.0-use.local resolution: "nhsuk-react-components@workspace:." dependencies: - "@babel/core": "npm:^7.24.1" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/core": "npm:^7.28.4" + "@babel/preset-env": "npm:^7.28.3" + "@babel/preset-react": "npm:^7.27.1" + "@babel/preset-typescript": "npm:^7.27.1" "@rollup/plugin-commonjs": "npm:^28.0.6" "@rollup/plugin-node-resolve": "npm:^16.0.1" "@rollup/plugin-typescript": "npm:^12.1.4" @@ -9335,7 +10645,6 @@ __metadata: rollup-plugin-preserve-directives: "npm:^0.4.0" sass: "npm:^1.53.0" storybook: "npm:^8.0.5" - ts-jest: "npm:^29.1.2" typescript: "npm:5.3.3" vite: "npm:^4.5.3" vite-tsconfig-paths: "npm:^4.3.2" @@ -9410,6 +10719,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.21": + version: 2.0.23 + resolution: "node-releases@npm:2.0.23" + checksum: 10c0/3fdcddb574a9d56c050469b027f3fd2b8830fd321edd12f34b862969b67d0a3d6713eb2af8916f91618d555354f6c7bd33ae39e3b37117b1e7ddf2e42bc3f4be + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.0 resolution: "nopt@npm:7.2.0" @@ -9874,6 +11190,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -10387,6 +11710,15 @@ __metadata: languageName: node linkType: hard +"regenerate-unicode-properties@npm:^10.2.2": + version: 10.2.2 + resolution: "regenerate-unicode-properties@npm:10.2.2" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/66a1d6a1dbacdfc49afd88f20b2319a4c33cee56d245163e4d8f5f283e0f45d1085a78f7f7406dd19ea3a5dd7a7799cd020cd817c97464a7507f9d10fbdce87c + languageName: node + linkType: hard + "regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" @@ -10443,6 +11775,38 @@ __metadata: languageName: node linkType: hard +"regexpu-core@npm:^6.2.0": + version: 6.4.0 + resolution: "regexpu-core@npm:6.4.0" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.2" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.13.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.2.1" + checksum: 10c0/1eed9783c023dd06fb1f3ce4b6e3fdf0bc1e30cb036f30aeb2019b351e5e0b74355b40462282ea5db092c79a79331c374c7e9897e44a5ca4509e9f0b570263de + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.13.0": + version: 0.13.0 + resolution: "regjsparser@npm:0.13.0" + dependencies: + jsesc: "npm:~3.1.0" + bin: + regjsparser: bin/parser + checksum: 10c0/4702f85cda09f67747c1b2fb673a0f0e5d1ba39d55f177632265a0be471ba59e3f320623f411649141f752b126b8126eac3ff4c62d317921e430b0472bfc6071 + languageName: node + linkType: hard + "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -10545,6 +11909,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.22.10": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + "resolve@npm:^2.0.0-next.5": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" @@ -10571,6 +11948,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" @@ -11584,39 +12974,6 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.1.2": - version: 29.1.2 - resolution: "ts-jest@npm:29.1.2" - dependencies: - bs-logger: "npm:0.x" - fast-json-stable-stringify: "npm:2.x" - jest-util: "npm:^29.0.0" - json5: "npm:^2.2.3" - lodash.memoize: "npm:4.x" - make-error: "npm:1.x" - semver: "npm:^7.5.3" - yargs-parser: "npm:^21.0.1" - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/types": ^29.0.0 - babel-jest: ^29.0.0 - jest: ^29.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: 10c0/c2f51f0241f89d127d41392decbcb83b5dfd5e57ab9d50220aa7b7e2f9b3f3b07ccdbba33311284df1c41941879e4ddfad44b15a9d0da4b74bd1b98702b729df - languageName: node - linkType: hard - "tsconfck@npm:^3.0.3": version: 3.0.3 resolution: "tsconfck@npm:3.0.3" @@ -11867,6 +13224,13 @@ __metadata: languageName: node linkType: hard +"unicode-match-property-value-ecmascript@npm:^2.2.1": + version: 2.2.1 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.1" + checksum: 10c0/93acd1ad9496b600e5379d1aaca154cf551c5d6d4a0aefaf0984fc2e6288e99220adbeb82c935cde461457fb6af0264a1774b8dfd4d9a9e31548df3352a4194d + languageName: node + linkType: hard + "unicode-property-aliases-ecmascript@npm:^2.0.0": version: 2.1.0 resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" @@ -11985,6 +13349,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -12419,7 +13797,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 From 75f2886686a5a144b2393704d8cd27e4882a7a53 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Fri, 3 Oct 2025 16:19:04 +0100 Subject: [PATCH 05/48] Use named exports, package imports and verbatim syntax --- .storybook/preview.ts | 2 +- babel.config.js | 15 ++ package.json | 19 ++ src/__tests__/index.test.ts | 14 +- .../content-presentation/details/Details.tsx | 4 +- .../details/__tests__/Details.test.tsx | 6 +- .../content-presentation/details/index.ts | 2 +- .../do-and-dont-list/DoAndDontList.tsx | 20 +- .../__tests__/DoAndDontList.test.tsx | 6 +- .../do-and-dont-list/index.ts | 2 +- .../content-presentation/hero/Hero.tsx | 8 +- .../hero/__tests__/Hero.test.tsx | 4 +- .../content-presentation/hero/index.ts | 2 +- .../icons/{BaseIcon.tsx => Icon.tsx} | 8 +- .../icons/__tests__/Icons.test.tsx | 4 +- .../__snapshots__/Icons.test.tsx.snap | 38 ++-- .../content-presentation/icons/index.ts | 10 +- .../icons/individual/ArrowLeft.tsx | 8 - .../icons/individual/ArrowLeftIcon.tsx | 8 + .../icons/individual/ArrowRight.tsx | 8 - .../icons/individual/ArrowRightCircle.tsx | 8 - .../icons/individual/ArrowRightCircleIcon.tsx | 8 + .../icons/individual/ArrowRightIcon.tsx | 8 + .../icons/individual/ChevronRightCircle.tsx | 8 - .../individual/ChevronRightCircleIcon.tsx | 8 + .../individual/{Cross.tsx => CrossIcon.tsx} | 10 +- .../icons/individual/Search.tsx | 8 - .../icons/individual/SearchIcon.tsx | 8 + .../icons/individual/Tick.tsx | 8 - .../icons/individual/TickIcon.tsx | 8 + .../icons/individual/User.tsx | 8 - .../icons/individual/UserIcon.tsx | 8 + .../icons/individual/index.ts | 8 + .../content-presentation/images/Images.tsx | 8 +- .../images/__tests__/Images.test.tsx | 4 +- .../content-presentation/images/index.ts | 2 +- src/components/content-presentation/index.ts | 11 ++ .../inset-text/InsetText.tsx | 10 +- .../inset-text/__tests__/InsetText.test.tsx | 4 +- .../content-presentation/inset-text/index.ts | 2 +- .../summary-list/SummaryList.tsx | 4 +- .../__tests__/SummaryList.test.tsx | 4 +- .../summary-list/index.ts | 2 +- .../content-presentation/table/Table.tsx | 29 ++- .../table/TableContext.ts | 6 +- .../table/TableHelpers.ts | 4 +- .../table/TableSectionContext.ts | 4 +- .../table/components/TableBody.tsx | 10 +- .../table/components/TableCaption.tsx | 8 +- .../table/components/TableCell.tsx | 17 +- .../table/components/TableContainer.tsx | 6 +- .../table/components/TableHead.tsx | 11 +- .../table/components/TablePanel.tsx | 8 +- .../table/components/TableRow.tsx | 11 +- .../table/components/__tests__/Table.test.tsx | 4 +- .../components/__tests__/TableBody.test.tsx | 7 +- .../__tests__/TableCaption.test.tsx | 8 +- .../components/__tests__/TableCell.test.tsx | 4 +- .../__tests__/TableContainer.test.tsx | 4 +- .../components/__tests__/TableHead.test.tsx | 7 +- .../components/__tests__/TablePanel.test.tsx | 4 +- .../components/__tests__/TableRow.test.tsx | 6 +- .../table/components/index.ts | 7 + .../content-presentation/table/index.ts | 4 +- .../content-presentation/tabs/Tabs.tsx | 12 +- .../tabs/__tests__/Tabs.test.tsx | 6 +- .../content-presentation/tabs/index.ts | 2 +- .../content-presentation/tag/Tag.tsx | 8 +- .../tag/__tests__/Tag.test.tsx | 4 +- .../content-presentation/tag/index.ts | 2 +- .../warning-callout/WarningCallout.tsx | 8 +- .../__tests__/WarningCallout.test.tsx | 4 +- .../warning-callout/index.ts | 2 +- .../form-elements/button/Button.tsx | 23 ++- .../button/__tests__/Button.test.tsx | 6 +- .../__snapshots__/Button.test.tsx.snap | 2 +- src/components/form-elements/button/index.ts | 2 +- .../character-count/CharacterCount.tsx | 22 ++- .../__tests__/CharacterCount.test.tsx | 4 +- .../form-elements/character-count/index.ts | 2 +- .../form-elements/checkboxes/Checkboxes.tsx | 29 +-- ...heckboxContext.ts => CheckboxesContext.ts} | 4 +- .../checkboxes/__tests__/Checkboxes.test.tsx | 4 +- .../checkboxes/components/Divider.tsx | 6 +- .../checkboxes/components/Item.tsx | 178 +++++++++--------- .../checkboxes/components/index.ts | 2 + .../form-elements/checkboxes/index.ts | 3 +- .../form-elements/date-input/DateInput.tsx | 24 +-- .../date-input/DateInputContext.ts | 6 +- .../date-input/__tests__/DateInput.test.tsx | 6 +- .../components/IndividualDateInputs.tsx | 13 +- .../date-input/components/index.ts | 1 + .../form-elements/date-input/index.ts | 3 +- .../error-message/ErrorMessage.tsx | 8 +- .../__tests__/ErrorMessage.test.tsx | 4 +- .../form-elements/error-message/index.ts | 2 +- .../error-summary/ErrorSummary.tsx | 17 +- .../__tests__/ErrorSummary.test.tsx | 6 +- .../form-elements/error-summary/index.ts | 2 +- .../form-elements/fieldset/Fieldset.tsx | 6 +- .../fieldset/__tests__/Fieldset.test.tsx | 6 +- .../form-elements/fieldset/index.ts | 2 +- src/components/form-elements/form/Form.tsx | 12 +- .../form-elements/form/FormContext.ts | 4 +- src/components/form-elements/form/index.ts | 3 +- .../form-elements/hint-text/HintText.tsx | 8 +- .../hint-text/__tests__/Hint.test.tsx | 4 +- .../form-elements/hint-text/index.ts | 2 +- src/components/form-elements/index.ts | 15 ++ src/components/form-elements/label/Label.tsx | 16 +- .../label/__tests__/Label.test.tsx | 6 +- src/components/form-elements/label/index.ts | 2 +- .../form-elements/legend/Legend.tsx | 12 +- .../legend/__tests__/Legend.test.tsx | 6 +- src/components/form-elements/legend/index.ts | 2 +- .../form-elements/radios/Radios.tsx | 25 ++- .../{RadioContext.ts => RadiosContext.ts} | 0 .../radios/__tests__/Radios.test.tsx | 4 +- .../radios/components/Divider.tsx | 6 +- .../form-elements/radios/components/Item.tsx | 21 +-- .../form-elements/radios/components/index.ts | 2 + src/components/form-elements/radios/index.ts | 3 +- .../form-elements/select/Select.tsx | 9 +- .../select/__tests__/Select.test.tsx | 6 +- src/components/form-elements/select/index.ts | 2 +- .../form-elements/text-input/TextInput.tsx | 13 +- .../text-input/__tests__/TextInput.test.tsx | 8 +- .../form-elements/text-input/index.ts | 2 +- .../form-elements/textarea/Textarea.tsx | 12 +- .../textarea/__tests__/Textarea.test.tsx | 4 +- .../form-elements/textarea/index.ts | 2 +- src/components/layout/Col.tsx | 8 +- src/components/layout/Container.tsx | 6 +- src/components/layout/Row.tsx | 6 +- src/components/layout/__tests__/Col.test.tsx | 4 +- .../layout/__tests__/Container.test.tsx | 4 +- src/components/layout/__tests__/Row.test.tsx | 4 +- src/components/layout/index.ts | 8 +- .../navigation/action-link/ActionLink.tsx | 16 +- .../action-link/__tests__/ActionLink.test.tsx | 4 +- .../navigation/action-link/index.ts | 2 +- .../navigation/back-link/BackLink.tsx | 10 +- .../back-link/__tests__/BackLink.test.tsx | 4 +- src/components/navigation/back-link/index.ts | 2 +- .../navigation/breadcrumb/Breadcrumb.tsx | 9 +- .../breadcrumb/__tests__/Breadcrumb.test.tsx | 4 +- src/components/navigation/breadcrumb/index.ts | 2 +- src/components/navigation/card/Card.tsx | 25 +-- src/components/navigation/card/CardContext.ts | 6 +- .../navigation/card/__tests__/Card.test.tsx | 8 +- .../card/components/CardContent.tsx | 8 +- .../card/components/CardDescription.tsx | 6 +- .../navigation/card/components/CardGroup.tsx | 8 +- .../card/components/CardGroupItem.tsx | 8 +- .../card/components/CardHeading.tsx | 51 +++-- .../navigation/card/components/CardImage.tsx | 6 +- .../navigation/card/components/CardLink.tsx | 8 +- .../navigation/card/components/index.ts | 7 + src/components/navigation/card/index.ts | 3 +- .../navigation/contents-list/ContentsList.tsx | 6 +- .../__tests__/ContentsList.test.tsx | 4 +- .../navigation/contents-list/index.ts | 2 +- src/components/navigation/footer/Footer.tsx | 9 +- .../footer/__tests__/Footer.test.tsx | 4 +- src/components/navigation/footer/index.ts | 2 +- src/components/navigation/header/Header.tsx | 40 ++-- .../navigation/header/HeaderContext.ts | 4 +- .../header/__tests__/Header.test.tsx | 6 +- .../navigation/header/components/Account.tsx | 6 +- .../header/components/AccountItem.tsx | 15 +- .../navigation/header/components/Logo.tsx | 8 +- .../header/components/MenuToggle.tsx | 6 +- .../header/components/Navigation.tsx | 12 +- .../header/components/NavigationItem.tsx | 10 +- .../navigation/header/components/Search.tsx | 8 +- .../header/components/ServiceName.tsx | 20 +- .../navigation/header/components/index.ts | 8 + src/components/navigation/header/index.ts | 3 +- src/components/navigation/index.ts | 9 + .../navigation/pagination/Pagination.tsx | 14 +- .../pagination/__tests__/Pagination.test.tsx | 4 +- src/components/navigation/pagination/index.ts | 2 +- .../navigation/skip-link/SkipLink.tsx | 18 +- .../skip-link/__tests__/SkipLink.test.tsx | 8 +- src/components/navigation/skip-link/index.ts | 2 +- src/components/typography/BodyText.tsx | 6 +- src/components/typography/LedeText.tsx | 6 +- .../typography/__tests__/BodyText.test.tsx | 4 +- .../typography/__tests__/LedeText.test.tsx | 4 +- src/components/typography/index.ts | 6 +- src/components/utils/Clearfix.tsx | 6 +- src/components/utils/FormGroup.tsx | 35 ++-- src/components/utils/FormGroupContext.ts | 4 +- src/components/utils/HeadingLevel.tsx | 32 ++-- src/components/utils/ReadingWidth.tsx | 6 +- .../utils/__tests__/FormGroup.test.tsx | 8 +- .../utils/__tests__/HeadingLevel.test.tsx | 4 +- src/components/utils/index.ts | 5 + src/index.ts | 59 +----- src/patterns/index.ts | 2 + src/patterns/nav-a-z/NavAZ.tsx | 12 +- src/patterns/nav-a-z/__tests__/NavAZ.test.tsx | 4 +- src/patterns/nav-a-z/index.ts | 4 +- src/patterns/review-date/ReviewDate.tsx | 11 +- .../review-date/__tests__/ReviewDate.test.tsx | 4 +- src/patterns/review-date/index.ts | 4 +- src/setupTests.ts | 2 +- src/util/__tests__/IsDev.test.ts | 7 - src/util/components/index.ts | 4 +- src/util/hooks/UseDevWarning.tsx | 6 +- src/util/hooks/index.ts | 1 + src/util/{ => tools}/IsDev.ts | 2 +- src/util/{ => tools}/RandomID.ts | 0 src/util/tools/__tests__/IsDev.test.ts | 7 + src/util/tools/index.ts | 2 + src/util/types/FormTypes.ts | 14 +- src/util/types/LinkTypes.ts | 2 +- src/util/types/TypeGuards.ts | 14 +- src/util/types/index.ts | 4 + .../Content Presentation/Details.stories.tsx | 4 +- .../DoAndDontList.stories.tsx | 4 +- stories/Content Presentation/Hero.stories.tsx | 4 +- .../Content Presentation/Icons.stories.tsx | 6 +- .../Content Presentation/Images.stories.tsx | 4 +- .../InsetText.stories.tsx | 4 +- .../SummaryList.stories.tsx | 4 +- .../Content Presentation/Table.stories.tsx | 4 +- stories/Content Presentation/Tabs.stories.tsx | 4 +- stories/Content Presentation/Tag.stories.tsx | 4 +- .../WarningCallout.stories.tsx | 4 +- stories/Form Elements/Button.stories.tsx | 4 +- .../Form Elements/CharacterCount.stories.tsx | 4 +- stories/Form Elements/Checkboxes.stories.tsx | 8 +- stories/Form Elements/DateInput.stories.tsx | 10 +- .../Form Elements/ErrorMessage.stories.tsx | 4 +- .../Form Elements/ErrorSummary.stories.tsx | 4 +- stories/Form Elements/Fieldset.stories.tsx | 4 +- stories/Form Elements/HintText.stories.tsx | 4 +- stories/Form Elements/Label.stories.tsx | 4 +- stories/Form Elements/Radios.stories.tsx | 4 +- stories/Form Elements/Select.stories.tsx | 4 +- stories/Form Elements/TextInput.stories.tsx | 4 +- stories/Form Elements/Textarea.stories.tsx | 4 +- stories/Layout/Grid.stories.tsx | 4 +- stories/Navigation/ActionLink.stories.tsx | 4 +- stories/Navigation/BackLink.stories.tsx | 4 +- stories/Navigation/Breadcrumb.stories.tsx | 4 +- stories/Navigation/Card.stories.tsx | 19 +- stories/Navigation/ContentsList.stories.tsx | 4 +- stories/Navigation/Footer.stories.tsx | 4 +- stories/Navigation/Header.stories.tsx | 6 +- stories/Navigation/Pagination.stories.tsx | 4 +- stories/Navigation/SkipLink.stories.tsx | 12 +- stories/Patterns/NavAZ.stories.tsx | 4 +- stories/Patterns/PageAZ.stories.tsx | 9 +- stories/Patterns/ReviewDate.stories.tsx | 4 +- tsconfig.base.json | 13 +- yarn.lock | 77 ++++++++ 258 files changed, 1162 insertions(+), 1042 deletions(-) rename src/components/content-presentation/icons/{BaseIcon.tsx => Icon.tsx} (78%) delete mode 100644 src/components/content-presentation/icons/individual/ArrowLeft.tsx create mode 100644 src/components/content-presentation/icons/individual/ArrowLeftIcon.tsx delete mode 100644 src/components/content-presentation/icons/individual/ArrowRight.tsx delete mode 100644 src/components/content-presentation/icons/individual/ArrowRightCircle.tsx create mode 100644 src/components/content-presentation/icons/individual/ArrowRightCircleIcon.tsx create mode 100644 src/components/content-presentation/icons/individual/ArrowRightIcon.tsx delete mode 100644 src/components/content-presentation/icons/individual/ChevronRightCircle.tsx create mode 100644 src/components/content-presentation/icons/individual/ChevronRightCircleIcon.tsx rename src/components/content-presentation/icons/individual/{Cross.tsx => CrossIcon.tsx} (53%) delete mode 100644 src/components/content-presentation/icons/individual/Search.tsx create mode 100644 src/components/content-presentation/icons/individual/SearchIcon.tsx delete mode 100644 src/components/content-presentation/icons/individual/Tick.tsx create mode 100644 src/components/content-presentation/icons/individual/TickIcon.tsx delete mode 100644 src/components/content-presentation/icons/individual/User.tsx create mode 100644 src/components/content-presentation/icons/individual/UserIcon.tsx create mode 100644 src/components/content-presentation/icons/individual/index.ts create mode 100644 src/components/content-presentation/index.ts create mode 100644 src/components/content-presentation/table/components/index.ts rename src/components/form-elements/checkboxes/{CheckboxContext.ts => CheckboxesContext.ts} (76%) create mode 100644 src/components/form-elements/checkboxes/components/index.ts create mode 100644 src/components/form-elements/date-input/components/index.ts create mode 100644 src/components/form-elements/index.ts rename src/components/form-elements/radios/{RadioContext.ts => RadiosContext.ts} (100%) create mode 100644 src/components/form-elements/radios/components/index.ts create mode 100644 src/components/navigation/card/components/index.ts create mode 100644 src/components/navigation/header/components/index.ts create mode 100644 src/components/navigation/index.ts create mode 100644 src/components/utils/index.ts create mode 100644 src/patterns/index.ts delete mode 100644 src/util/__tests__/IsDev.test.ts create mode 100644 src/util/hooks/index.ts rename src/util/{ => tools}/IsDev.ts (78%) rename src/util/{ => tools}/RandomID.ts (100%) create mode 100644 src/util/tools/__tests__/IsDev.test.ts create mode 100644 src/util/tools/index.ts create mode 100644 src/util/types/index.ts diff --git a/.storybook/preview.ts b/.storybook/preview.ts index fce54dde..4f720fd0 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,5 +1,5 @@ import './storybook.scss'; -import { Preview } from '@storybook/react'; +import { type Preview } from '@storybook/react'; const preview: Preview = { parameters: { diff --git a/babel.config.js b/babel.config.js index c3adfef8..098f3d54 100644 --- a/babel.config.js +++ b/babel.config.js @@ -29,6 +29,21 @@ module.exports = { env: { test: { browserslistEnv: 'node', + plugins: [ + // Override package.json "imports" for Jest to use sources + // otherwise a build step to output `./dist` is necessary + [ + 'module-resolver', + { + alias: { + '#components': './src/components', + '#patterns': './src/patterns', + '#util': './src/util', + 'nhsuk-react-components': './src/index.ts', + }, + }, + ], + ], }, }, }; diff --git a/package.json b/package.json index 01033a61..b45f7c86 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,24 @@ "dist" ], "sideEffects": false, + "imports": { + "#components/*": { + "import": "./dist/esm/components/*", + "require": "./dist/cjs/components/*" + }, + "#patterns/*": { + "import": "./dist/esm/patterns/*", + "require": "./dist/cjs/patterns/*" + }, + "#patterns": { + "import": "./dist/esm/patterns/index.js", + "require": "./dist/cjs/patterns/index.js" + }, + "#util/*": { + "import": "./dist/esm/util/*", + "require": "./dist/cjs/util/*" + } + }, "exports": { ".": { "import": { @@ -68,6 +86,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.0", "@typescript-eslint/parser": "^7.1.0", "babel-jest": "^29.7.0", + "babel-plugin-module-resolver": "^5.0.2", "chromatic": "^6.17.3", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", diff --git a/src/__tests__/index.test.ts b/src/__tests__/index.test.ts index 5ac9b6f2..2e1d9571 100644 --- a/src/__tests__/index.test.ts +++ b/src/__tests__/index.test.ts @@ -1,4 +1,4 @@ -import * as index from '../index'; +import * as index from '..'; describe('Index', () => { it('contains all expected elements', () => { @@ -15,8 +15,10 @@ describe('Index', () => { 'Breadcrumb', 'Button', 'Card', + 'CardContext', 'CharacterCount', 'Checkboxes', + 'CheckboxesContext', 'ChevronRightCircleIcon', 'Clearfix', 'Col', @@ -24,6 +26,7 @@ describe('Index', () => { 'ContentsList', 'CrossIcon', 'DateInput', + 'DateInputContext', 'Details', 'DoAndDontList', 'ErrorMessage', @@ -31,10 +34,15 @@ describe('Index', () => { 'Fieldset', 'Footer', 'Form', + 'FormContext', 'FormGroup', + 'FormGroupContext', 'Header', + 'HeaderContext', + 'HeadingLevel', 'Hero', 'HintText', + 'Icon', 'Images', 'InsetText', 'Label', @@ -43,6 +51,7 @@ describe('Index', () => { 'NavAZ', 'Pagination', 'Radios', + 'RadiosContext', 'ReadingWidth', 'ReviewDate', 'Row', @@ -51,6 +60,9 @@ describe('Index', () => { 'SkipLink', 'SummaryList', 'Table', + 'TableContext', + 'TableSection', + 'TableSectionContext', 'Tabs', 'Tag', 'Textarea', diff --git a/src/components/content-presentation/details/Details.tsx b/src/components/content-presentation/details/Details.tsx index b5dcfc1b..fbd9d345 100644 --- a/src/components/content-presentation/details/Details.tsx +++ b/src/components/content-presentation/details/Details.tsx @@ -1,5 +1,5 @@ -import React, { ComponentPropsWithoutRef, FC, forwardRef } from 'react'; import classNames from 'classnames'; +import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; export interface DetailsProps extends ComponentPropsWithoutRef<'details'> { expander?: boolean; @@ -40,7 +40,7 @@ DetailsSummary.displayName = 'Details.Summary'; DetailsText.displayName = 'Details.Text'; ExpanderGroup.displayName = 'Details.ExpanderGroup'; -export default Object.assign(DetailsComponent, { +export const Details = Object.assign(DetailsComponent, { Summary: DetailsSummary, Text: DetailsText, ExpanderGroup, diff --git a/src/components/content-presentation/details/__tests__/Details.test.tsx b/src/components/content-presentation/details/__tests__/Details.test.tsx index b9e237a0..977ae647 100644 --- a/src/components/content-presentation/details/__tests__/Details.test.tsx +++ b/src/components/content-presentation/details/__tests__/Details.test.tsx @@ -1,7 +1,7 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import { renderClient, renderServer } from '@util/components'; -import Details from '../'; +import React, { createRef } from 'react'; +import { Details } from '..'; +import { renderClient, renderServer } from '#util/components'; describe('Details', () => { it('matches snapshot', async () => { diff --git a/src/components/content-presentation/details/index.ts b/src/components/content-presentation/details/index.ts index 72e3cee2..2201d1f1 100644 --- a/src/components/content-presentation/details/index.ts +++ b/src/components/content-presentation/details/index.ts @@ -1 +1 @@ -export { default } from './Details'; +export * from './Details'; diff --git a/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx b/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx index 9573da7f..77cf0989 100644 --- a/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx +++ b/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx @@ -1,14 +1,14 @@ +import classNames from 'classnames'; import React, { - ComponentPropsWithoutRef, - FC, createContext, - useContext, - ReactNode, forwardRef, + useContext, + type ComponentPropsWithoutRef, + type FC, + type ReactNode, } from 'react'; -import classNames from 'classnames'; -import { Tick, Cross } from '@components/content-presentation/icons'; -import HeadingLevel, { HeadingLevelProps } from '@components/utils/HeadingLevel'; +import { CrossIcon, TickIcon } from '#components/content-presentation'; +import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; type ListType = 'do' | 'dont'; @@ -53,12 +53,12 @@ const DoAndDontItem: FC = ({ prefixText, listItemType, child
  • {(listItemType || listItem) === 'do' ? ( <> - + {actualPrefix} ) : ( <> - + {actualPrefix} )} @@ -70,6 +70,6 @@ const DoAndDontItem: FC = ({ prefixText, listItemType, child DoAndDontListComponent.displayName = 'DoAndDontList'; DoAndDontItem.displayName = 'DoAndDontList.Item'; -export default Object.assign(DoAndDontListComponent, { +export const DoAndDontList = Object.assign(DoAndDontListComponent, { Item: DoAndDontItem, }); diff --git a/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx b/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx index 129c2020..61c6ac57 100644 --- a/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx +++ b/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx @@ -1,7 +1,7 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import DoAndDontList from '../'; -import { renderClient, renderServer } from '@util/components'; +import React, { createRef } from 'react'; +import { DoAndDontList } from '..'; +import { renderClient, renderServer } from '#util/components'; describe('DoAndDontList', () => { describe('list type "do"', () => { diff --git a/src/components/content-presentation/do-and-dont-list/index.ts b/src/components/content-presentation/do-and-dont-list/index.ts index f6db6b15..80b17fb0 100644 --- a/src/components/content-presentation/do-and-dont-list/index.ts +++ b/src/components/content-presentation/do-and-dont-list/index.ts @@ -1 +1 @@ -export { default } from './DoAndDontList'; +export * from './DoAndDontList'; diff --git a/src/components/content-presentation/hero/Hero.tsx b/src/components/content-presentation/hero/Hero.tsx index ccecc19c..4b6d88f8 100644 --- a/src/components/content-presentation/hero/Hero.tsx +++ b/src/components/content-presentation/hero/Hero.tsx @@ -1,7 +1,7 @@ -import React, { ComponentPropsWithoutRef, FC, forwardRef } from 'react'; import classNames from 'classnames'; -import { Container, Row, Col } from '../../layout'; -import HeadingLevel, { HeadingLevelProps } from '@components/utils/HeadingLevel'; +import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { Col, Container, Row } from '#components/layout'; +import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; export interface HeroContentProps extends ComponentPropsWithoutRef<'div'> { hasImage: boolean; @@ -73,7 +73,7 @@ HeroComponent.displayName = 'Hero'; HeroHeading.displayName = 'Hero.Heading'; HeroText.displayName = 'Hero.Text'; -export default Object.assign(HeroComponent, { +export const Hero = Object.assign(HeroComponent, { Heading: HeroHeading, Text: HeroText, }); diff --git a/src/components/content-presentation/hero/__tests__/Hero.test.tsx b/src/components/content-presentation/hero/__tests__/Hero.test.tsx index 6678abd3..8f24fc4b 100644 --- a/src/components/content-presentation/hero/__tests__/Hero.test.tsx +++ b/src/components/content-presentation/hero/__tests__/Hero.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import Hero from '..'; +import React, { createRef } from 'react'; +import { Hero } from '..'; describe('Hero', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/hero/index.ts b/src/components/content-presentation/hero/index.ts index 9c292bc0..729bca95 100644 --- a/src/components/content-presentation/hero/index.ts +++ b/src/components/content-presentation/hero/index.ts @@ -1 +1 @@ -export { default } from './Hero'; +export * from './Hero'; diff --git a/src/components/content-presentation/icons/BaseIcon.tsx b/src/components/content-presentation/icons/Icon.tsx similarity index 78% rename from src/components/content-presentation/icons/BaseIcon.tsx rename to src/components/content-presentation/icons/Icon.tsx index 04e7c1bb..3e9655a5 100644 --- a/src/components/content-presentation/icons/BaseIcon.tsx +++ b/src/components/content-presentation/icons/Icon.tsx @@ -1,7 +1,7 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; -export interface BaseIconSVGProps extends ComponentPropsWithoutRef<'svg'> { +export interface IconProps extends ComponentPropsWithoutRef<'svg'> { title?: string; modifier?: | 'arrow-left' @@ -16,10 +16,10 @@ export interface BaseIconSVGProps extends ComponentPropsWithoutRef<'svg'> { /** * @deprecated Use `modifier` instead. */ - iconType?: BaseIconSVGProps['modifier']; + iconType?: IconProps['modifier']; } -export const BaseIconSVG: FC = ({ +export const Icon: FC = ({ className, children, iconType, diff --git a/src/components/content-presentation/icons/__tests__/Icons.test.tsx b/src/components/content-presentation/icons/__tests__/Icons.test.tsx index 28bf58b9..31f4bba8 100644 --- a/src/components/content-presentation/icons/__tests__/Icons.test.tsx +++ b/src/components/content-presentation/icons/__tests__/Icons.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import * as Icons from '../'; +import React from 'react'; +import * as Icons from '..'; describe('Icons', () => { it('all icons match snapshots', () => { diff --git a/src/components/content-presentation/icons/__tests__/__snapshots__/Icons.test.tsx.snap b/src/components/content-presentation/icons/__tests__/__snapshots__/Icons.test.tsx.snap index f3214c39..96e80094 100644 --- a/src/components/content-presentation/icons/__tests__/__snapshots__/Icons.test.tsx.snap +++ b/src/components/content-presentation/icons/__tests__/__snapshots__/Icons.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Icons all icons match snapshots: ArrowLeft 1`] = ` +exports[`Icons all icons match snapshots: ArrowLeftIcon 1`] = `
    `; -exports[`Icons all icons match snapshots: ArrowRightCircle 1`] = ` +exports[`Icons all icons match snapshots: ArrowRightIcon 1`] = `
    `; -exports[`Icons all icons match snapshots: ChevronRightCircle 1`] = ` +exports[`Icons all icons match snapshots: ChevronRightCircleIcon 1`] = `
    + +
    +`; + +exports[`Icons all icons match snapshots: SearchIcon 1`] = `
    {alt} @@ -14,6 +14,4 @@ const ImagesComponent = forwardRef( ), ); -ImagesComponent.displayName = 'Images'; - -export default ImagesComponent; +Images.displayName = 'Images'; diff --git a/src/components/content-presentation/images/__tests__/Images.test.tsx b/src/components/content-presentation/images/__tests__/Images.test.tsx index 36e8c93e..b187c0e8 100644 --- a/src/components/content-presentation/images/__tests__/Images.test.tsx +++ b/src/components/content-presentation/images/__tests__/Images.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import Images from '../'; +import React, { createRef } from 'react'; +import { Images } from '..'; describe('Images', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/images/index.ts b/src/components/content-presentation/images/index.ts index c75230f3..e9607291 100644 --- a/src/components/content-presentation/images/index.ts +++ b/src/components/content-presentation/images/index.ts @@ -1 +1 @@ -export { default } from './Images'; +export * from './Images'; diff --git a/src/components/content-presentation/index.ts b/src/components/content-presentation/index.ts new file mode 100644 index 00000000..dd195e82 --- /dev/null +++ b/src/components/content-presentation/index.ts @@ -0,0 +1,11 @@ +export * from './details'; +export * from './do-and-dont-list'; +export * from './hero'; +export * from './icons'; +export * from './images'; +export * from './inset-text'; +export * from './summary-list'; +export * from './table'; +export * from './tabs'; +export * from './tag'; +export * from './warning-callout'; diff --git a/src/components/content-presentation/inset-text/InsetText.tsx b/src/components/content-presentation/inset-text/InsetText.tsx index cdd0ee5a..311d164e 100644 --- a/src/components/content-presentation/inset-text/InsetText.tsx +++ b/src/components/content-presentation/inset-text/InsetText.tsx @@ -1,9 +1,9 @@ -import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; import classNames from 'classnames'; +import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; -type InsetTextProps = ComponentPropsWithoutRef<'div'>; +export type InsetTextProps = ComponentPropsWithoutRef<'div'>; -const InsetTextComponent = forwardRef( +export const InsetText = forwardRef( ({ className, children, ...rest }, forwardedRef) => (
    Information: @@ -12,6 +12,4 @@ const InsetTextComponent = forwardRef( ), ); -InsetTextComponent.displayName = 'InsetText'; - -export default InsetTextComponent; +InsetText.displayName = 'InsetText'; diff --git a/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx b/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx index 947a45d4..3c8c5fa0 100644 --- a/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx +++ b/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import InsetText from '../'; +import React, { createRef } from 'react'; +import { InsetText } from '..'; describe('InsetText', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/inset-text/index.ts b/src/components/content-presentation/inset-text/index.ts index 4839c489..8b1f4820 100644 --- a/src/components/content-presentation/inset-text/index.ts +++ b/src/components/content-presentation/inset-text/index.ts @@ -1 +1 @@ -export { default } from './InsetText'; +export * from './InsetText'; diff --git a/src/components/content-presentation/summary-list/SummaryList.tsx b/src/components/content-presentation/summary-list/SummaryList.tsx index 21bf8da5..8370d482 100644 --- a/src/components/content-presentation/summary-list/SummaryList.tsx +++ b/src/components/content-presentation/summary-list/SummaryList.tsx @@ -1,5 +1,5 @@ -import React, { ComponentPropsWithoutRef, FC, forwardRef } from 'react'; import classNames from 'classnames'; +import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; const SummaryListRow: FC> = ({ className, ...rest }) => (
    @@ -41,7 +41,7 @@ SummaryListKey.displayName = 'SummaryList.Key'; SummaryListValue.displayName = 'SummaryList.Value'; SummaryListActions.displayName = 'SummaryList.Actions'; -export default Object.assign(SummaryListComponent, { +export const SummaryList = Object.assign(SummaryListComponent, { Row: SummaryListRow, Key: SummaryListKey, Value: SummaryListValue, diff --git a/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx b/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx index 00568961..1e45f154 100644 --- a/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx +++ b/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import SummaryList from '../'; +import React, { createRef } from 'react'; +import { SummaryList } from '..'; describe('SummaryList', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/summary-list/index.ts b/src/components/content-presentation/summary-list/index.ts index b5626639..87cd1ff4 100644 --- a/src/components/content-presentation/summary-list/index.ts +++ b/src/components/content-presentation/summary-list/index.ts @@ -1 +1 @@ -export { default } from './SummaryList'; +export * from './SummaryList'; diff --git a/src/components/content-presentation/table/Table.tsx b/src/components/content-presentation/table/Table.tsx index 6dde1217..7c6cd4c3 100644 --- a/src/components/content-presentation/table/Table.tsx +++ b/src/components/content-presentation/table/Table.tsx @@ -1,13 +1,22 @@ -import React, { ComponentPropsWithoutRef, ReactNode, forwardRef, useMemo, useState } from 'react'; import classNames from 'classnames'; -import TableBody from './components/TableBody'; -import TableCaption, { TableCaptionProps } from './components/TableCaption'; -import TableCell from './components/TableCell'; -import TableContainer from './components/TableContainer'; -import TableHead from './components/TableHead'; -import TableRow from './components/TableRow'; -import TablePanel from './components/TablePanel'; -import TableContext, { ITableContext } from './TableContext'; +import React, { + forwardRef, + useMemo, + useState, + type ComponentPropsWithoutRef, + type ReactNode, +} from 'react'; +import { + TableBody, + TableCaption, + TableCell, + TableContainer, + TableHead, + TablePanel, + TableRow, + type TableCaptionProps, +} from './components'; +import { TableContext, type ITableContext } from '.'; export interface TableProps extends ComponentPropsWithoutRef<'table'> { firstCellIsHeader?: boolean; @@ -59,7 +68,7 @@ const TableComponent = forwardRef((props, forwarde TableComponent.displayName = 'Table'; -export default Object.assign(TableComponent, { +export const Table = Object.assign(TableComponent, { Container: TableContainer, Panel: TablePanel, Head: TableHead, diff --git a/src/components/content-presentation/table/TableContext.ts b/src/components/content-presentation/table/TableContext.ts index 1b2c027c..0b15b094 100644 --- a/src/components/content-presentation/table/TableContext.ts +++ b/src/components/content-presentation/table/TableContext.ts @@ -1,4 +1,4 @@ -import { ReactNode, createContext } from 'react'; +import { createContext, type ReactNode } from 'react'; export interface ITableContext { firstCellIsHeader: boolean; @@ -7,12 +7,10 @@ export interface ITableContext { setHeadings(headings: ReactNode[]): void; } -const TableContext = createContext({ +export const TableContext = createContext({ /* eslint-disable @typescript-eslint/no-empty-function */ firstCellIsHeader: false, headings: [], responsive: false, setHeadings: () => {}, }); - -export default TableContext; diff --git a/src/components/content-presentation/table/TableHelpers.ts b/src/components/content-presentation/table/TableHelpers.ts index ba818b77..c907b772 100644 --- a/src/components/content-presentation/table/TableHelpers.ts +++ b/src/components/content-presentation/table/TableHelpers.ts @@ -1,5 +1,5 @@ -import { Children, isValidElement, ReactElement, ReactNode } from 'react'; -import TableCell, { TableCellProps } from './components/TableCell'; +import { Children, isValidElement, type ReactElement, type ReactNode } from 'react'; +import { TableCell, type TableCellProps } from './components'; export const isTableCell = ( child: ReactNode, diff --git a/src/components/content-presentation/table/TableSectionContext.ts b/src/components/content-presentation/table/TableSectionContext.ts index b812916d..8ae40237 100644 --- a/src/components/content-presentation/table/TableSectionContext.ts +++ b/src/components/content-presentation/table/TableSectionContext.ts @@ -6,6 +6,4 @@ export enum TableSection { BODY, } -const TableSectionContext = createContext(TableSection.NONE); - -export default TableSectionContext; +export const TableSectionContext = createContext(TableSection.NONE); diff --git a/src/components/content-presentation/table/components/TableBody.tsx b/src/components/content-presentation/table/components/TableBody.tsx index 9034b151..6e09b1ce 100644 --- a/src/components/content-presentation/table/components/TableBody.tsx +++ b/src/components/content-presentation/table/components/TableBody.tsx @@ -1,8 +1,10 @@ import classNames from 'classnames'; -import React, { ComponentPropsWithoutRef, FC } from 'react'; -import TableSectionContext, { TableSection } from '../TableSectionContext'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { TableSection, TableSectionContext } from '..'; -const TableBody: FC> = ({ children, className, ...rest }) => ( +export type TableBodyProps = ComponentPropsWithoutRef<'tbody'>; + +export const TableBody: FC = ({ children, className, ...rest }) => ( {children} @@ -11,5 +13,3 @@ const TableBody: FC> = ({ children, className, ); TableBody.displayName = 'Table.Body'; - -export default TableBody; diff --git a/src/components/content-presentation/table/components/TableCaption.tsx b/src/components/content-presentation/table/components/TableCaption.tsx index 6374171f..a7a7328a 100644 --- a/src/components/content-presentation/table/components/TableCaption.tsx +++ b/src/components/content-presentation/table/components/TableCaption.tsx @@ -1,12 +1,12 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; -import { NHSUKSize } from '@util/types/NHSUKTypes'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type NHSUKSize } from '#util/types'; export interface TableCaptionProps extends ComponentPropsWithoutRef<'caption'> { size?: NHSUKSize; } -const TableCaption: FC = ({ className, size, ...rest }) => ( +export const TableCaption: FC = ({ className, size, ...rest }) => ( = ({ className, size, ...rest }) => ( ); TableCaption.displayName = 'Table.Caption'; - -export default TableCaption; diff --git a/src/components/content-presentation/table/components/TableCell.tsx b/src/components/content-presentation/table/components/TableCell.tsx index 68398938..ce4c979d 100644 --- a/src/components/content-presentation/table/components/TableCell.tsx +++ b/src/components/content-presentation/table/components/TableCell.tsx @@ -1,8 +1,7 @@ import classNames from 'classnames'; -import React, { ComponentPropsWithoutRef, FC, useContext } from 'react'; -import useDevWarning from '@util/hooks/UseDevWarning'; -import TableContext, { ITableContext } from '../TableContext'; -import TableSectionContext, { TableSection } from '../TableSectionContext'; +import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { TableContext, TableSection, TableSectionContext, type ITableContext } from '..'; +import { useDevWarning } from '#util/hooks'; const CellOutsideOfSectionWarning = 'Table.Cell used outside of a Table.Head or Table.Body component. Unable to determine section type from context.'; @@ -14,7 +13,13 @@ export interface TableCellProps format?: 'numeric'; } -const TableCell: FC = ({ className, format, children, index = -1, ...rest }) => { +export const TableCell: FC = ({ + className, + format, + children, + index = -1, + ...rest +}) => { const { firstCellIsHeader, headings, responsive } = useContext(TableContext); const section = useContext(TableSectionContext); @@ -61,5 +66,3 @@ const TableCell: FC = ({ className, format, children, index = -1 }; TableCell.displayName = 'Table.Cell'; - -export default TableCell; diff --git a/src/components/content-presentation/table/components/TableContainer.tsx b/src/components/content-presentation/table/components/TableContainer.tsx index a538062d..bf725213 100644 --- a/src/components/content-presentation/table/components/TableContainer.tsx +++ b/src/components/content-presentation/table/components/TableContainer.tsx @@ -1,14 +1,12 @@ -import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; import classNames from 'classnames'; +import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; export type TableContainerProps = ComponentPropsWithoutRef<'div'>; -const TableContainer = forwardRef( +export const TableContainer = forwardRef( ({ className, ...rest }, forwardedRef) => (
    ), ); TableContainer.displayName = 'Table.Container'; - -export default TableContainer; diff --git a/src/components/content-presentation/table/components/TableHead.tsx b/src/components/content-presentation/table/components/TableHead.tsx index 40ea8c42..99e9de50 100644 --- a/src/components/content-presentation/table/components/TableHead.tsx +++ b/src/components/content-presentation/table/components/TableHead.tsx @@ -1,9 +1,10 @@ -import React, { ComponentPropsWithoutRef, FC, useContext } from 'react'; import classNames from 'classnames'; -import TableContext, { ITableContext } from '../TableContext'; -import TableSectionContext, { TableSection } from '../TableSectionContext'; +import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { TableContext, TableSection, TableSectionContext, type ITableContext } from '..'; -const TableHead: FC> = ({ children, className, ...rest }) => { +export type TableHeadProps = ComponentPropsWithoutRef<'thead'>; + +export const TableHead: FC = ({ children, className, ...rest }) => { const { responsive } = useContext(TableContext); return ( @@ -20,5 +21,3 @@ const TableHead: FC> = ({ children, className, }; TableHead.displayName = 'Table.Head'; - -export default TableHead; diff --git a/src/components/content-presentation/table/components/TablePanel.tsx b/src/components/content-presentation/table/components/TablePanel.tsx index 9484e4a9..92b1921c 100644 --- a/src/components/content-presentation/table/components/TablePanel.tsx +++ b/src/components/content-presentation/table/components/TablePanel.tsx @@ -1,13 +1,13 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; -import HeadingLevel, { HeadingLevelProps } from '@components/utils/HeadingLevel'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; export interface TablePanelProps extends ComponentPropsWithoutRef<'div'> { heading?: string; headingProps?: HeadingLevelProps; } -const TablePanel: FC = ({ +export const TablePanel: FC = ({ className, heading, headingProps, @@ -28,5 +28,3 @@ const TablePanel: FC = ({ ); TablePanel.displayName = 'Table.Panel'; - -export default TablePanel; diff --git a/src/components/content-presentation/table/components/TableRow.tsx b/src/components/content-presentation/table/components/TableRow.tsx index 4567fb6d..ae27bcb5 100644 --- a/src/components/content-presentation/table/components/TableRow.tsx +++ b/src/components/content-presentation/table/components/TableRow.tsx @@ -1,17 +1,16 @@ import classNames from 'classnames'; import React, { Children, - ComponentPropsWithoutRef, - FC, cloneElement, useContext, useEffect, + type ComponentPropsWithoutRef, + type FC, } from 'react'; -import TableContext from '../TableContext'; +import { TableContext, TableSection, TableSectionContext } from '..'; import { getHeadingsFromChildren, isTableCell } from '../TableHelpers'; -import TableSectionContext, { TableSection } from '../TableSectionContext'; -const TableRow: FC> = ({ children, className, ...rest }) => { +export const TableRow: FC> = ({ children, className, ...rest }) => { const section = useContext(TableSectionContext); const { responsive, setHeadings } = useContext(TableContext); @@ -39,5 +38,3 @@ const TableRow: FC> = ({ children, className, ... }; TableRow.displayName = 'Table.Row'; - -export default TableRow; diff --git a/src/components/content-presentation/table/components/__tests__/Table.test.tsx b/src/components/content-presentation/table/components/__tests__/Table.test.tsx index 68c2bc76..f9db95ca 100644 --- a/src/components/content-presentation/table/components/__tests__/Table.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/Table.test.tsx @@ -1,6 +1,6 @@ import React, { createRef } from 'react'; -import { renderClient, renderServer } from '@util/components'; -import Table from '../..'; +import { Table } from '../..'; +import { renderClient, renderServer } from '#util/components'; describe('Table', () => { const Example = (props: Parameters[0]) => ( diff --git a/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx b/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx index ef92099b..d28fdafe 100644 --- a/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx @@ -1,8 +1,7 @@ -import React, { useContext } from 'react'; import { render } from '@testing-library/react'; -import Table from '../../Table'; -import TableSectionContext, { TableSection } from '../../TableSectionContext'; -import TableBody from '../TableBody'; +import React, { useContext } from 'react'; +import { TableBody } from '..'; +import { Table, TableSection, TableSectionContext } from '../..'; describe('Table.Body', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx b/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx index 2fc87820..6d4180e9 100644 --- a/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx @@ -1,8 +1,8 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import { NHSUKSize } from '@util/types/NHSUKTypes'; -import Table from '../..'; -import TableCaption from '../TableCaption'; +import React from 'react'; +import { TableCaption } from '..'; +import { Table } from '../..'; +import { type NHSUKSize } from '#util/types'; describe('TableCaption', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx b/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx index 7df71ca3..c427ba60 100644 --- a/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import Table from '../../Table'; +import React from 'react'; +import { Table } from '../..'; describe('Table.Cell', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx b/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx index 26536195..d2824e68 100644 --- a/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import TableContainer from '../TableContainer'; +import React, { createRef } from 'react'; +import { TableContainer } from '..'; describe('TableContainer', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx b/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx index 430692e5..016429c7 100644 --- a/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx @@ -1,8 +1,7 @@ -import React, { useContext } from 'react'; import { render } from '@testing-library/react'; -import Table from '../../Table'; -import TableSectionContext, { TableSection } from '../../TableSectionContext'; -import TableHead from '../TableHead'; +import React, { useContext } from 'react'; +import { TableHead } from '..'; +import { Table, TableSection, TableSectionContext } from '../..'; describe('Table.Head', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx b/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx index b31c65d8..882bc7b5 100644 --- a/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import TablePanel from '../TablePanel'; +import React from 'react'; +import { TablePanel } from '..'; describe('Table.Panel', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx b/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx index f40695c9..ec57e6f2 100644 --- a/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx @@ -1,9 +1,7 @@ import { render } from '@testing-library/react'; import React from 'react'; -import TableContext, { ITableContext } from '../../TableContext'; -import TableSectionContext, { TableSection } from '../../TableSectionContext'; -import TableCell from '../TableCell'; -import TableRow from '../TableRow'; +import { TableCell, TableRow } from '..'; +import { TableContext, TableSection, TableSectionContext, type ITableContext } from '../..'; const assertCellText = (container: HTMLElement, cellNumber: number, text: string) => { expect(container.querySelector(`[data-test="cell-${cellNumber}"]`)).toHaveTextContent(text); diff --git a/src/components/content-presentation/table/components/index.ts b/src/components/content-presentation/table/components/index.ts new file mode 100644 index 00000000..b2ea34c9 --- /dev/null +++ b/src/components/content-presentation/table/components/index.ts @@ -0,0 +1,7 @@ +export * from './TableBody'; +export * from './TableCaption'; +export * from './TableCell'; +export * from './TableContainer'; +export * from './TableHead'; +export * from './TablePanel'; +export * from './TableRow'; diff --git a/src/components/content-presentation/table/index.ts b/src/components/content-presentation/table/index.ts index ae769447..1ca8bcd5 100644 --- a/src/components/content-presentation/table/index.ts +++ b/src/components/content-presentation/table/index.ts @@ -1 +1,3 @@ -export { default } from './Table'; +export * from './TableContext'; +export * from './TableSectionContext'; +export * from './Table'; diff --git a/src/components/content-presentation/tabs/Tabs.tsx b/src/components/content-presentation/tabs/Tabs.tsx index b5fcf045..78e75cd0 100644 --- a/src/components/content-presentation/tabs/Tabs.tsx +++ b/src/components/content-presentation/tabs/Tabs.tsx @@ -1,14 +1,14 @@ import classNames from 'classnames'; +import { type Tabs as TabsModule } from 'nhsuk-frontend'; import React, { - ComponentPropsWithoutRef, - FC, createRef, forwardRef, useEffect, useState, + type ComponentPropsWithoutRef, + type FC, } from 'react'; -import HeadingLevel, { HeadingLevelProps } from '@components/utils/HeadingLevel'; -import { type Tabs } from 'nhsuk-frontend'; +import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; export type TabsProps = ComponentPropsWithoutRef<'div'>; @@ -54,7 +54,7 @@ const TabsComponent = forwardRef((props, forwardedRef const { children, className, ...rest } = props; const [moduleRef] = useState(() => forwardedRef || createRef()); - const [instance, setInstance] = useState(); + const [instance, setInstance] = useState(); useEffect(() => { if (!('current' in moduleRef) || !moduleRef.current || instance) { @@ -86,7 +86,7 @@ TabList.displayName = 'Tabs.List'; TabListItem.displayName = 'Tabs.ListItem'; TabContents.displayName = 'Tabs.Contents'; -export default Object.assign(TabsComponent, { +export const Tabs = Object.assign(TabsComponent, { Title: TabTitle, List: TabList, ListItem: TabListItem, diff --git a/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx b/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx index c9508666..f573d046 100644 --- a/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx +++ b/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx @@ -1,7 +1,7 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import { renderClient, renderServer } from '@util/components'; -import Tabs, { TabTitleProps } from '../Tabs'; +import React, { createRef } from 'react'; +import { Tabs, type TabTitleProps } from '..'; +import { renderClient, renderServer } from '#util/components'; describe('Tabs', () => { it('matches snapshot', async () => { diff --git a/src/components/content-presentation/tabs/index.ts b/src/components/content-presentation/tabs/index.ts index bc6749b1..856dbbb3 100644 --- a/src/components/content-presentation/tabs/index.ts +++ b/src/components/content-presentation/tabs/index.ts @@ -1 +1 @@ -export { default } from './Tabs'; +export * from './Tabs'; diff --git a/src/components/content-presentation/tag/Tag.tsx b/src/components/content-presentation/tag/Tag.tsx index 5bdab605..7707d251 100644 --- a/src/components/content-presentation/tag/Tag.tsx +++ b/src/components/content-presentation/tag/Tag.tsx @@ -1,5 +1,5 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; export interface TagProps extends ComponentPropsWithoutRef<'strong'> { modifier?: @@ -20,13 +20,11 @@ export interface TagProps extends ComponentPropsWithoutRef<'strong'> { color?: TagProps['modifier']; } -const TagComponent: FC = ({ className, color, modifier = color, ...rest }) => ( +export const Tag: FC = ({ className, color, modifier = color, ...rest }) => ( ); -TagComponent.displayName = 'Tag'; - -export default TagComponent; +Tag.displayName = 'Tag'; diff --git a/src/components/content-presentation/tag/__tests__/Tag.test.tsx b/src/components/content-presentation/tag/__tests__/Tag.test.tsx index 419e2a96..ea194275 100644 --- a/src/components/content-presentation/tag/__tests__/Tag.test.tsx +++ b/src/components/content-presentation/tag/__tests__/Tag.test.tsx @@ -1,6 +1,6 @@ -import React, { ComponentPropsWithoutRef } from 'react'; import { render } from '@testing-library/react'; -import Tag from '../Tag'; +import React, { type ComponentPropsWithoutRef } from 'react'; +import { Tag } from '..'; describe('Tag', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/tag/index.ts b/src/components/content-presentation/tag/index.ts index 15774bff..9790fcbf 100644 --- a/src/components/content-presentation/tag/index.ts +++ b/src/components/content-presentation/tag/index.ts @@ -1 +1 @@ -export { default } from './Tag'; +export * from './Tag'; diff --git a/src/components/content-presentation/warning-callout/WarningCallout.tsx b/src/components/content-presentation/warning-callout/WarningCallout.tsx index 47d36608..c1db8664 100644 --- a/src/components/content-presentation/warning-callout/WarningCallout.tsx +++ b/src/components/content-presentation/warning-callout/WarningCallout.tsx @@ -1,6 +1,6 @@ -import React, { ComponentPropsWithoutRef, FC, forwardRef } from 'react'; import classNames from 'classnames'; -import HeadingLevel, { HeadingLevelProps } from '@components/utils/HeadingLevel'; +import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; const WarningCalloutHeading: FC = ({ children, className, ...rest }) => ( @@ -21,7 +21,7 @@ const WarningCalloutHeading: FC = ({ children, className, ... ); -type WarningCalloutProps = ComponentPropsWithoutRef<'div'>; +export type WarningCalloutProps = ComponentPropsWithoutRef<'div'>; const WarningCalloutComponent = forwardRef( ({ className, ...rest }, forwardedRef) => ( @@ -32,6 +32,6 @@ const WarningCalloutComponent = forwardRef( WarningCalloutComponent.displayName = 'WarningCallout'; WarningCalloutHeading.displayName = 'WarningCallout.Heading'; -export default Object.assign(WarningCalloutComponent, { +export const WarningCallout = Object.assign(WarningCalloutComponent, { Heading: WarningCalloutHeading, }); diff --git a/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx b/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx index 1c2b8109..9e753eb0 100644 --- a/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx +++ b/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx @@ -1,6 +1,6 @@ -import React, { createRef } from 'react'; import { render } from '@testing-library/react'; -import WarningCallout from '../WarningCallout'; +import React, { createRef } from 'react'; +import { WarningCallout } from '..'; describe('WarningCallout', () => { it('matches snapshot', () => { diff --git a/src/components/content-presentation/warning-callout/index.ts b/src/components/content-presentation/warning-callout/index.ts index 8886011c..6b747b90 100644 --- a/src/components/content-presentation/warning-callout/index.ts +++ b/src/components/content-presentation/warning-callout/index.ts @@ -1 +1 @@ -export { default } from './WarningCallout'; +export * from './WarningCallout'; diff --git a/src/components/form-elements/button/Button.tsx b/src/components/form-elements/button/Button.tsx index 6f3ce2a0..848ccdbd 100644 --- a/src/components/form-elements/button/Button.tsx +++ b/src/components/form-elements/button/Button.tsx @@ -1,7 +1,14 @@ -import React, { ForwardedRef, MouseEvent, useEffect, useState, forwardRef, createRef } from 'react'; -import { AsElementLink } from '@util/types/LinkTypes'; -import { type Button } from 'nhsuk-frontend'; import classNames from 'classnames'; +import { type Button as ButtonModule } from 'nhsuk-frontend'; +import React, { + createRef, + forwardRef, + useEffect, + useState, + type ForwardedRef, + type MouseEvent, +} from 'react'; +import { type AsElementLink } from '#util/types'; export interface ButtonProps extends AsElementLink { href?: never; @@ -37,7 +44,7 @@ const ButtonComponent = forwardRef((props, forwa } = props; const [moduleRef] = useState(() => forwardedRef || createRef()); - const [instance, setInstance] = useState
  • ); - -export default MenuToggle; diff --git a/src/components/navigation/header/components/Navigation.tsx b/src/components/navigation/header/components/Navigation.tsx index faefe2ce..be901314 100644 --- a/src/components/navigation/header/components/Navigation.tsx +++ b/src/components/navigation/header/components/Navigation.tsx @@ -1,15 +1,15 @@ -import React, { ComponentPropsWithoutRef , FC, useContext, useEffect } from 'react'; import classNames from 'classnames'; -import { Container } from '@components/layout'; -import HeaderContext, { IHeaderContext } from '../HeaderContext'; -import MenuToggle from './MenuToggle'; +import React, { useContext, useEffect, type ComponentPropsWithoutRef, type FC } from 'react'; +import { HeaderContext, type IHeaderContext } from '..'; +import { MenuToggle } from '.'; +import { Container } from '#components/layout'; export interface NavigationProps extends ComponentPropsWithoutRef<'nav'> { white?: boolean; open?: boolean; } -const Navigation: FC = ({ +export const Navigation: FC = ({ className, children, white, @@ -49,5 +49,3 @@ const Navigation: FC = ({ }; Navigation.displayName = 'Header.Navigation'; - -export default Navigation; diff --git a/src/components/navigation/header/components/NavigationItem.tsx b/src/components/navigation/header/components/NavigationItem.tsx index f029d749..6350766d 100644 --- a/src/components/navigation/header/components/NavigationItem.tsx +++ b/src/components/navigation/header/components/NavigationItem.tsx @@ -1,6 +1,6 @@ -import React, { FC } from 'react'; import classNames from 'classnames'; -import { AsElementLink } from '@util/types/LinkTypes'; +import React, { type FC } from 'react'; +import { type AsElementLink } from '#util/types'; export interface NavigationItemProps extends AsElementLink { active?: boolean; @@ -10,14 +10,14 @@ export interface NavigationItemProps extends AsElementLink { const NavigationItemInner: FC = ({ active, children, current }) => { // Wrap active links in strong element so users who override colours // or styles still have some indicator of the current nav item - return active ?? current ? ( + return (active ?? current) ? ( {children} ) : ( children ); }; -const NavigationItem: FC = ({ +export const NavigationItem: FC = ({ className, children, active, @@ -49,5 +49,3 @@ const NavigationItem: FC = ({ }; NavigationItem.displayName = 'Header.NavigationItem'; - -export default NavigationItem; diff --git a/src/components/navigation/header/components/Search.tsx b/src/components/navigation/header/components/Search.tsx index f3176c0b..3b0ac4f1 100644 --- a/src/components/navigation/header/components/Search.tsx +++ b/src/components/navigation/header/components/Search.tsx @@ -1,5 +1,5 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; -import { Search as SearchIcon } from '@components/content-presentation/icons'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { SearchIcon } from '#components/content-presentation'; export interface SearchProps extends ComponentPropsWithoutRef<'form'> { name?: string; @@ -8,7 +8,7 @@ export interface SearchProps extends ComponentPropsWithoutRef<'form'> { visuallyHiddenButton?: string; } -const Search: FC = ({ +export const Search: FC = ({ action = 'https://www.nhs.uk/search/', method = 'get', id = 'search', @@ -41,5 +41,3 @@ const Search: FC = ({ }; Search.displayName = 'Header.Search'; - -export default Search; diff --git a/src/components/navigation/header/components/ServiceName.tsx b/src/components/navigation/header/components/ServiceName.tsx index cf36c9f1..73572eb0 100644 --- a/src/components/navigation/header/components/ServiceName.tsx +++ b/src/components/navigation/header/components/ServiceName.tsx @@ -1,10 +1,10 @@ -import React, { ComponentPropsWithoutRef, FC, useContext } from 'react'; -import HeaderContext, { IHeaderContext } from '../HeaderContext'; +import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { HeaderContext, type IHeaderContext } from '..'; -export type ServiceNameProps = NonNullable; -export type ServiceProps = Pick, 'children'>; +export type ServiceNameInnerProps = NonNullable; +export type ServiceNameProps = Pick, 'children'>; -const ServiceName: FC = (service) => +const ServiceNameInner: FC = (service) => service.href ? ( {service.text} @@ -13,7 +13,7 @@ const ServiceName: FC = (service) => {service.text} ); -const Service: FC = ({ children }) => { +export const ServiceName: FC = ({ children }) => { const { logoProps: logo, organisationProps: organisation, @@ -46,17 +46,15 @@ const Service: FC = ({ children }) => { {logoHref ? ( {children} - {combineLogoAndServiceNameLinks ? : null} + {combineLogoAndServiceNameLinks ? : null} ) : ( <> {children} - {combineLogoAndServiceNameLinks ? : null} + {combineLogoAndServiceNameLinks ? : null} )} - {service?.text && !combineLogoAndServiceNameLinks ? : null} + {service?.text && !combineLogoAndServiceNameLinks ? : null} ); }; - -export default Service; diff --git a/src/components/navigation/header/components/index.ts b/src/components/navigation/header/components/index.ts new file mode 100644 index 00000000..66a8f826 --- /dev/null +++ b/src/components/navigation/header/components/index.ts @@ -0,0 +1,8 @@ +export * from './Account'; +export * from './AccountItem'; +export * from './Logo'; +export * from './MenuToggle'; +export * from './Navigation'; +export * from './NavigationItem'; +export * from './Search'; +export * from './ServiceName'; diff --git a/src/components/navigation/header/index.ts b/src/components/navigation/header/index.ts index 579f1ac2..8cf20f7d 100644 --- a/src/components/navigation/header/index.ts +++ b/src/components/navigation/header/index.ts @@ -1 +1,2 @@ -export { default } from './Header'; +export * from './HeaderContext'; +export * from './Header'; diff --git a/src/components/navigation/index.ts b/src/components/navigation/index.ts new file mode 100644 index 00000000..e5a76fa0 --- /dev/null +++ b/src/components/navigation/index.ts @@ -0,0 +1,9 @@ +export * from './action-link'; +export * from './back-link'; +export * from './breadcrumb'; +export * from './card'; +export * from './contents-list'; +export * from './footer'; +export * from './header'; +export * from './pagination'; +export * from './skip-link'; diff --git a/src/components/navigation/pagination/Pagination.tsx b/src/components/navigation/pagination/Pagination.tsx index 8c715752..bf083448 100644 --- a/src/components/navigation/pagination/Pagination.tsx +++ b/src/components/navigation/pagination/Pagination.tsx @@ -1,9 +1,9 @@ -import React, { ComponentPropsWithoutRef, forwardRef } from 'react'; import classNames from 'classnames'; -import { ArrowLeft, ArrowRight } from '@components/content-presentation/icons'; -import { AsElementLink } from '@util/types/LinkTypes'; +import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { ArrowLeftIcon, ArrowRightIcon } from '#components/content-presentation'; +import { type AsElementLink } from '#util/types'; -interface PaginationLinkProps extends AsElementLink { +export interface PaginationLinkProps extends AsElementLink { previous?: boolean; next?: boolean; } @@ -32,8 +32,8 @@ const PaginationLink = forwardRef( : {children} - {previous ? : null} - {next ? : null} + {previous ? : null} + {next ? : null} ), @@ -58,6 +58,6 @@ const PaginationComponent = forwardRef( PaginationComponent.displayName = 'Pagination'; PaginationLink.displayName = 'Pagination.Link'; -export default Object.assign(PaginationComponent, { +export const Pagination = Object.assign(PaginationComponent, { Link: PaginationLink, }); diff --git a/src/components/navigation/pagination/__tests__/Pagination.test.tsx b/src/components/navigation/pagination/__tests__/Pagination.test.tsx index e3084d68..1d4660c5 100644 --- a/src/components/navigation/pagination/__tests__/Pagination.test.tsx +++ b/src/components/navigation/pagination/__tests__/Pagination.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import Pagination from '../'; +import React from 'react'; +import { Pagination } from '..'; describe('Pagination', () => { it('matches snapshot', () => { diff --git a/src/components/navigation/pagination/index.ts b/src/components/navigation/pagination/index.ts index eaef04eb..e016c96b 100644 --- a/src/components/navigation/pagination/index.ts +++ b/src/components/navigation/pagination/index.ts @@ -1 +1 @@ -export { default } from './Pagination'; +export * from './Pagination'; diff --git a/src/components/navigation/skip-link/SkipLink.tsx b/src/components/navigation/skip-link/SkipLink.tsx index 7803302d..e9466c27 100644 --- a/src/components/navigation/skip-link/SkipLink.tsx +++ b/src/components/navigation/skip-link/SkipLink.tsx @@ -1,14 +1,20 @@ -import React, { ComponentPropsWithoutRef, createRef, forwardRef, useEffect, useState } from 'react'; -import { type SkipLink } from 'nhsuk-frontend'; import classNames from 'classnames'; +import { type SkipLink as SkipLinkModule } from 'nhsuk-frontend'; +import React, { + createRef, + forwardRef, + useEffect, + useState, + type ComponentPropsWithoutRef, +} from 'react'; export type SkipLinkProps = ComponentPropsWithoutRef<'a'>; -const SkipLinkComponent = forwardRef((props, forwardedRef) => { +export const SkipLink = forwardRef((props, forwardedRef) => { const { children = 'Skip to main content', className, href = '#maincontent', ...rest } = props; const [moduleRef] = useState(() => forwardedRef || createRef()); - const [instance, setInstance] = useState(); + const [instance, setInstance] = useState(); useEffect(() => { if (!('current' in moduleRef) || !moduleRef.current || instance) { @@ -35,6 +41,4 @@ const SkipLinkComponent = forwardRef((props, f ); }); -SkipLinkComponent.displayName = 'SkipLink'; - -export default SkipLinkComponent; +SkipLink.displayName = 'SkipLink'; diff --git a/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx b/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx index b8af156f..0ac99798 100644 --- a/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx +++ b/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx @@ -1,8 +1,8 @@ -import React, { createRef } from 'react'; -import { Container } from '@components/layout'; import { waitFor } from '@testing-library/react'; -import { renderClient, renderServer } from '@util/components'; -import SkipLink from '../'; +import React, { createRef } from 'react'; +import { SkipLink } from '..'; +import { Container } from '#components/layout'; +import { renderClient, renderServer } from '#util/components'; describe('SkipLink', () => { it('matches snapshot', async () => { diff --git a/src/components/navigation/skip-link/index.ts b/src/components/navigation/skip-link/index.ts index 532a2fa6..59062f5b 100644 --- a/src/components/navigation/skip-link/index.ts +++ b/src/components/navigation/skip-link/index.ts @@ -1 +1 @@ -export { default } from './SkipLink'; +export * from './SkipLink'; diff --git a/src/components/typography/BodyText.tsx b/src/components/typography/BodyText.tsx index afa814bf..fc2b0e3c 100644 --- a/src/components/typography/BodyText.tsx +++ b/src/components/typography/BodyText.tsx @@ -1,8 +1,6 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; -const BodyText: FC> = ({ className, ...rest }) => ( +export const BodyText: FC> = ({ className, ...rest }) => (

    ); - -export default BodyText; diff --git a/src/components/typography/LedeText.tsx b/src/components/typography/LedeText.tsx index 5c377bea..a213b18e 100644 --- a/src/components/typography/LedeText.tsx +++ b/src/components/typography/LedeText.tsx @@ -1,8 +1,6 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; -const LedeText: FC> = ({ className, ...rest }) => ( +export const LedeText: FC> = ({ className, ...rest }) => (

    ); - -export default LedeText; diff --git a/src/components/typography/__tests__/BodyText.test.tsx b/src/components/typography/__tests__/BodyText.test.tsx index 344754ac..5f48d48b 100644 --- a/src/components/typography/__tests__/BodyText.test.tsx +++ b/src/components/typography/__tests__/BodyText.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import BodyText from '../BodyText'; +import React from 'react'; +import { BodyText } from '..'; describe('BodyText', () => { it('matches snapshot', () => { diff --git a/src/components/typography/__tests__/LedeText.test.tsx b/src/components/typography/__tests__/LedeText.test.tsx index 75866f17..e4629605 100644 --- a/src/components/typography/__tests__/LedeText.test.tsx +++ b/src/components/typography/__tests__/LedeText.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import LedeText from '../LedeText'; +import React from 'react'; +import { LedeText } from '..'; describe('LedeText', () => { it('matches snapshot', () => { diff --git a/src/components/typography/index.ts b/src/components/typography/index.ts index 222a5ce7..a8f7094a 100644 --- a/src/components/typography/index.ts +++ b/src/components/typography/index.ts @@ -1,4 +1,2 @@ -import LedeText from './LedeText'; -import BodyText from './BodyText'; - -export { LedeText, BodyText }; +export * from './LedeText'; +export * from './BodyText'; diff --git a/src/components/utils/Clearfix.tsx b/src/components/utils/Clearfix.tsx index 75887b46..7a0a8c3c 100644 --- a/src/components/utils/Clearfix.tsx +++ b/src/components/utils/Clearfix.tsx @@ -1,7 +1,5 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; -const Clearfix: FC> = (props) => ( +export const Clearfix: FC> = (props) => (

    ); - -export default Clearfix; diff --git a/src/components/utils/FormGroup.tsx b/src/components/utils/FormGroup.tsx index 9b70c1fb..af97fc12 100644 --- a/src/components/utils/FormGroup.tsx +++ b/src/components/utils/FormGroup.tsx @@ -1,14 +1,23 @@ -import React, { ComponentPropsWithoutRef, ReactNode, useContext, useEffect, useState } from 'react'; import classNames from 'classnames'; -import ErrorMessage from '../form-elements/error-message/ErrorMessage'; -import Fieldset from '../form-elements/fieldset/Fieldset'; -import HintText from '../form-elements/hint-text/HintText'; -import Label from '../form-elements/label/Label'; -import Legend from '../form-elements/legend/Legend'; -import { useFormContext } from '../form-elements/form'; -import { generateRandomID } from '../../util/RandomID'; -import { FormElementProps } from '../../util/types/FormTypes'; -import FormGroupContext, { IFormGroupContext } from './FormGroupContext'; +import React, { + useContext, + useEffect, + useState, + type ComponentPropsWithoutRef, + type JSX, + type ReactNode, +} from 'react'; +import { FormGroupContext, type IFormGroupContext } from '.'; +import { + ErrorMessage, + Fieldset, + HintText, + Label, + Legend, + useFormContext, +} from '#components/form-elements'; +import { generateRandomID } from '#util/tools'; +import { type FormElementProps } from '#util/types'; type ExcludedProps = | Extract< @@ -40,7 +49,9 @@ export type FormGroupProps = FormElementProps & { inputType: 'input' | 'radios' | 'select' | 'checkboxes' | 'dateinput' | 'textarea'; }; -const FormGroup = (props: FormGroupProps): JSX.Element => { +export const FormGroup = ( + props: FormGroupProps, +): JSX.Element => { const { children, hint, @@ -141,5 +152,3 @@ const FormGroup = (props: FormGroupProps ); }; - -export default FormGroup; diff --git a/src/components/utils/FormGroupContext.ts b/src/components/utils/FormGroupContext.ts index 7c9d4675..e2e3edc0 100644 --- a/src/components/utils/FormGroupContext.ts +++ b/src/components/utils/FormGroupContext.ts @@ -5,9 +5,7 @@ export type IFormGroupContext = { registerComponent: (componentId: string, deregister?: boolean) => void; }; -const FormGroupContext = createContext({ +export const FormGroupContext = createContext({ passError: () => {}, registerComponent: () => {}, }); - -export default FormGroupContext; diff --git a/src/components/utils/HeadingLevel.tsx b/src/components/utils/HeadingLevel.tsx index 0a2aa459..f181cf5f 100644 --- a/src/components/utils/HeadingLevel.tsx +++ b/src/components/utils/HeadingLevel.tsx @@ -1,25 +1,25 @@ -import React, { ElementType, HTMLAttributes, forwardRef } from 'react'; +import React, { forwardRef, type ElementType, type HTMLAttributes } from 'react'; export interface HeadingLevelProps extends HTMLAttributes { headingLevel?: Extract; } -const HeadingLevel = forwardRef((props, forwardedRef) => { - const { headingLevel = 'h3', children, ...rest } = props; - let Element = headingLevel; +export const HeadingLevel = forwardRef( + (props, forwardedRef) => { + const { headingLevel = 'h3', children, ...rest } = props; + let Element = headingLevel; - if (!['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(Element.toLowerCase())) { - console.error(`HeadingLevel: Invalid headingLevel prop: ${Element}`); - Element = 'h3'; - } + if (!['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(Element.toLowerCase())) { + console.error(`HeadingLevel: Invalid headingLevel prop: ${Element}`); + Element = 'h3'; + } - return ( - - {children} - - ); -}); + return ( + + {children} + + ); + }, +); HeadingLevel.displayName = 'HeadingLevel'; - -export default HeadingLevel; diff --git a/src/components/utils/ReadingWidth.tsx b/src/components/utils/ReadingWidth.tsx index 1676f8b3..c340c1b5 100644 --- a/src/components/utils/ReadingWidth.tsx +++ b/src/components/utils/ReadingWidth.tsx @@ -1,8 +1,6 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; -const ReadingWidth: FC> = ({ className, ...rest }) => ( +export const ReadingWidth: FC> = ({ className, ...rest }) => (
    ); - -export default ReadingWidth; diff --git a/src/components/utils/__tests__/FormGroup.test.tsx b/src/components/utils/__tests__/FormGroup.test.tsx index cdcfbfeb..f65aba94 100644 --- a/src/components/utils/__tests__/FormGroup.test.tsx +++ b/src/components/utils/__tests__/FormGroup.test.tsx @@ -1,8 +1,8 @@ -import React from 'react'; import { axe, toHaveNoViolations } from 'jest-axe'; -import FormGroup, { FormElementRenderProps } from '../FormGroup'; -import { TextInputProps } from '../../form-elements/text-input/TextInput'; -import { renderClient, renderServer } from '@util/components'; +import React from 'react'; +import { FormGroup, type FormElementRenderProps } from '..'; +import { type TextInputProps } from '#components/form-elements'; +import { renderClient, renderServer } from '#util/components'; expect.extend(toHaveNoViolations); diff --git a/src/components/utils/__tests__/HeadingLevel.test.tsx b/src/components/utils/__tests__/HeadingLevel.test.tsx index 8c4286a0..8e2577ca 100644 --- a/src/components/utils/__tests__/HeadingLevel.test.tsx +++ b/src/components/utils/__tests__/HeadingLevel.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import HeadingLevel, { HeadingLevelProps } from '../HeadingLevel'; +import React from 'react'; +import { HeadingLevel, type HeadingLevelProps } from '..'; describe('HeadingLevel', () => { it.each>>([ diff --git a/src/components/utils/index.ts b/src/components/utils/index.ts new file mode 100644 index 00000000..06f12c12 --- /dev/null +++ b/src/components/utils/index.ts @@ -0,0 +1,5 @@ +export * from './Clearfix'; +export * from './FormGroup'; +export * from './FormGroupContext'; +export * from './HeadingLevel'; +export * from './ReadingWidth'; diff --git a/src/index.ts b/src/index.ts index edb89e82..ad3f5ccf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,52 +1,7 @@ -export { default as ActionLink } from './components/navigation/action-link'; -export { default as BackLink } from './components/navigation/back-link'; -export { default as Breadcrumb } from './components/navigation/breadcrumb'; -export { default as Button } from './components/form-elements/button'; -export { default as Card } from './components/navigation/card'; -export { default as CharacterCount } from './components/form-elements/character-count'; -export { default as Checkboxes } from './components/form-elements/checkboxes'; -export { default as ContentsList } from './components/navigation/contents-list'; -export { default as DateInput } from './components/form-elements/date-input'; -export { default as Details } from './components/content-presentation/details'; -export { default as DoAndDontList } from './components/content-presentation/do-and-dont-list'; -export { default as ErrorMessage } from './components/form-elements/error-message'; -export { default as ErrorSummary } from './components/form-elements/error-summary'; -export { default as Fieldset } from './components/form-elements/fieldset'; -export { default as Footer } from './components/navigation/footer'; -export { default as Form, useFormContext } from './components/form-elements/form'; -export { default as Header } from './components/navigation/header'; -export { default as Hero } from './components/content-presentation/hero'; -export { default as HintText } from './components/form-elements/hint-text'; -export { default as Legend } from './components/form-elements/legend'; -export { - ArrowLeft as ArrowLeftIcon, - ArrowRight as ArrowRightIcon, - ArrowRightCircle as ArrowRightCircleIcon, - ChevronRightCircle as ChevronRightCircleIcon, - Cross as CrossIcon, - Search as SearchIcon, - Tick as TickIcon, - User as UserIcon, -} from './components/content-presentation/icons'; -export { default as Images } from './components/content-presentation/images'; -export { default as TextInput } from './components/form-elements/text-input'; -export { default as InsetText } from './components/content-presentation/inset-text'; -export { default as Label } from './components/form-elements/label'; -export { Container, Col, Row } from './components/layout'; -export { default as NavAZ } from './patterns/nav-a-z'; -export { default as Pagination } from './components/navigation/pagination'; -export { default as Radios } from './components/form-elements/radios'; -export { default as Select } from './components/form-elements/select'; -export { default as SkipLink } from './components/navigation/skip-link'; -export { default as SummaryList } from './components/content-presentation/summary-list'; -export { default as Table } from './components/content-presentation/table'; -export { default as Tabs } from './components/content-presentation/tabs'; -export { default as Tag } from './components/content-presentation/tag'; -export { default as Textarea } from './components/form-elements/textarea'; -export { LedeText, BodyText } from './components/typography'; -export { default as WarningCallout } from './components/content-presentation/warning-callout'; -export { default as Clearfix } from './components/utils/Clearfix'; -export { default as ReadingWidth } from './components/utils/ReadingWidth'; -export { default as FormGroup } from './components/utils/FormGroup'; - -export { default as ReviewDate } from './patterns/review-date'; +export * from './components/content-presentation'; +export * from './components/form-elements'; +export * from './components/layout'; +export * from './components/navigation'; +export * from './components/typography'; +export * from './components/utils'; +export * from './patterns'; diff --git a/src/patterns/index.ts b/src/patterns/index.ts new file mode 100644 index 00000000..b2ab556f --- /dev/null +++ b/src/patterns/index.ts @@ -0,0 +1,2 @@ +export * from './nav-a-z'; +export * from './review-date'; diff --git a/src/patterns/nav-a-z/NavAZ.tsx b/src/patterns/nav-a-z/NavAZ.tsx index e1498116..22d12e61 100644 --- a/src/patterns/nav-a-z/NavAZ.tsx +++ b/src/patterns/nav-a-z/NavAZ.tsx @@ -1,11 +1,11 @@ -import React, { ComponentPropsWithoutRef, FC, forwardRef } from 'react'; import classNames from 'classnames'; -import { AsElementLink } from '@util/types/LinkTypes'; +import React, { forwardRef, type ComponentPropsWithoutRef, type FC, type ReactNode } from 'react'; +import { type AsElementLink } from '#util/types'; const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; const processLetters = ( - children: React.ReactNode, + children: ReactNode, fullAlphabet: boolean | undefined, removedLetters: Array | undefined, disabledLetters: Array | undefined, @@ -43,7 +43,7 @@ export interface NavAZProps extends ComponentPropsWithoutRef<'div'> { letters?: Array; } -const NavAZ = forwardRef((props, forwardedRef) => { +const NavAZComponent = forwardRef((props, forwardedRef) => { const { className, children, @@ -103,11 +103,11 @@ const DisabledItem: FC> = ({ className, ...rest ); -NavAZ.displayName = 'NavAZ'; +NavAZComponent.displayName = 'NavAZ'; LinkItem.displayName = 'NavAZ.LinkItem'; DisabledItem.displayName = 'NavAZ.DisabledItem'; -export default Object.assign(NavAZ, { +export const NavAZ = Object.assign(NavAZComponent, { LinkItem, DisabledItem, }); diff --git a/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx b/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx index 7a97d4a3..1d1bfa48 100644 --- a/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx +++ b/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx @@ -1,6 +1,6 @@ +import { render, screen } from '@testing-library/react'; import React from 'react'; -import { screen, render } from '@testing-library/react'; -import NavAZ from '../'; +import { NavAZ } from '..'; const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; diff --git a/src/patterns/nav-a-z/index.ts b/src/patterns/nav-a-z/index.ts index e7a01b0b..c1f65e51 100644 --- a/src/patterns/nav-a-z/index.ts +++ b/src/patterns/nav-a-z/index.ts @@ -1,3 +1 @@ -import NavAZ from './NavAZ'; - -export default NavAZ; +export * from './NavAZ'; diff --git a/src/patterns/review-date/ReviewDate.tsx b/src/patterns/review-date/ReviewDate.tsx index e386f2d9..060b1e0a 100644 --- a/src/patterns/review-date/ReviewDate.tsx +++ b/src/patterns/review-date/ReviewDate.tsx @@ -1,12 +1,17 @@ -import React, { ComponentPropsWithoutRef, FC } from 'react'; import classNames from 'classnames'; +import React, { type ComponentPropsWithoutRef, type FC } from 'react'; export interface ReviewDateProps extends ComponentPropsWithoutRef<'div'> { lastReviewed?: string; nextReview?: string; } -const ReviewDate: FC = ({ className, lastReviewed, nextReview, ...rest }) => ( +export const ReviewDate: FC = ({ + className, + lastReviewed, + nextReview, + ...rest +}) => (

    = ({ className, lastReviewed, nextReview, {nextReview ? `Next review due: ${nextReview}` : null}

    ); - -export default ReviewDate; diff --git a/src/patterns/review-date/__tests__/ReviewDate.test.tsx b/src/patterns/review-date/__tests__/ReviewDate.test.tsx index 3056e38d..e8a7bb61 100644 --- a/src/patterns/review-date/__tests__/ReviewDate.test.tsx +++ b/src/patterns/review-date/__tests__/ReviewDate.test.tsx @@ -1,6 +1,6 @@ -import React from 'react'; import { render } from '@testing-library/react'; -import ReviewDate from '../'; +import React from 'react'; +import { ReviewDate } from '..'; describe('ReviewDate', () => { it('matches snapshot', () => { diff --git a/src/patterns/review-date/index.ts b/src/patterns/review-date/index.ts index 25f7eef2..82067190 100644 --- a/src/patterns/review-date/index.ts +++ b/src/patterns/review-date/index.ts @@ -1,3 +1 @@ -import ReviewDate from './ReviewDate'; - -export default ReviewDate; +export * from './ReviewDate'; diff --git a/src/setupTests.ts b/src/setupTests.ts index f69ac43c..2047807e 100644 --- a/src/setupTests.ts +++ b/src/setupTests.ts @@ -1,4 +1,4 @@ -import { TextDecoder, TextEncoder } from 'util'; +import { TextDecoder, TextEncoder } from 'node:util'; import '@testing-library/jest-dom'; import { outdent } from 'outdent'; diff --git a/src/util/__tests__/IsDev.test.ts b/src/util/__tests__/IsDev.test.ts deleted file mode 100644 index c30c87c6..00000000 --- a/src/util/__tests__/IsDev.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import IsDev from '../IsDev'; - -describe('IsDev', () => { - it('in test environment', () => { - expect(IsDev()).toBe(true); - }); -}); diff --git a/src/util/components/index.ts b/src/util/components/index.ts index 5de9b25c..b2ffc385 100644 --- a/src/util/components/index.ts +++ b/src/util/components/index.ts @@ -1,6 +1,6 @@ +import { act, render, type RenderOptions as ClientOptions } from '@testing-library/react'; import { type JSX } from 'react'; -import { ServerOptions, renderToString } from 'react-dom/server'; -import { RenderOptions as ClientOptions, act, render } from '@testing-library/react'; +import { renderToString, type ServerOptions } from 'react-dom/server'; type RenderOptions = | { moduleName?: never; className: string } diff --git a/src/util/hooks/UseDevWarning.tsx b/src/util/hooks/UseDevWarning.tsx index 1fa27939..9a391e9f 100644 --- a/src/util/hooks/UseDevWarning.tsx +++ b/src/util/hooks/UseDevWarning.tsx @@ -1,9 +1,9 @@ import { useEffect } from 'react'; -import isDev from '../IsDev'; +import { isDev } from '#util/tools'; type ConditionFn = () => boolean; -const useDevWarning = (warning: string, condition: ConditionFn = () => true): void => { +export const useDevWarning = (warning: string, condition: ConditionFn = () => true): void => { useEffect(() => { if (isDev() && condition()) { // eslint-disable-next-line no-console @@ -11,5 +11,3 @@ const useDevWarning = (warning: string, condition: ConditionFn = () => true): vo } }, [warning]); }; - -export default useDevWarning; diff --git a/src/util/hooks/index.ts b/src/util/hooks/index.ts new file mode 100644 index 00000000..33ad77f4 --- /dev/null +++ b/src/util/hooks/index.ts @@ -0,0 +1 @@ +export * from './UseDevWarning'; diff --git a/src/util/IsDev.ts b/src/util/tools/IsDev.ts similarity index 78% rename from src/util/IsDev.ts rename to src/util/tools/IsDev.ts index d025405a..edc9881f 100644 --- a/src/util/IsDev.ts +++ b/src/util/tools/IsDev.ts @@ -3,6 +3,6 @@ const development: boolean = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test'; -export default function isDev(): boolean { +export function isDev(): boolean { return development; } diff --git a/src/util/RandomID.ts b/src/util/tools/RandomID.ts similarity index 100% rename from src/util/RandomID.ts rename to src/util/tools/RandomID.ts diff --git a/src/util/tools/__tests__/IsDev.test.ts b/src/util/tools/__tests__/IsDev.test.ts new file mode 100644 index 00000000..0fe82b08 --- /dev/null +++ b/src/util/tools/__tests__/IsDev.test.ts @@ -0,0 +1,7 @@ +import { isDev } from '..'; + +describe('isDev', () => { + it('in test environment', () => { + expect(isDev()).toBe(true); + }); +}); diff --git a/src/util/tools/index.ts b/src/util/tools/index.ts new file mode 100644 index 00000000..cd196bee --- /dev/null +++ b/src/util/tools/index.ts @@ -0,0 +1,2 @@ +export * from './IsDev'; +export * from './RandomID'; diff --git a/src/util/types/FormTypes.ts b/src/util/types/FormTypes.ts index 41011e43..203ef4d7 100644 --- a/src/util/types/FormTypes.ts +++ b/src/util/types/FormTypes.ts @@ -1,9 +1,11 @@ -import { ComponentPropsWithRef } from 'react'; -import { ErrorMessageProps } from '@components/form-elements/error-message/ErrorMessage'; -import { HintTextProps } from '@components/form-elements/hint-text/HintText'; -import { LabelProps } from '@components/form-elements/label/Label'; -import { FieldsetProps } from '@components/form-elements/fieldset/Fieldset'; -import { LegendProps } from '@components/form-elements/legend/Legend'; +import { type ComponentPropsWithRef } from 'react'; +import { + type ErrorMessageProps, + type FieldsetProps, + type HintTextProps, + type LabelProps, + type LegendProps, +} from '#components/form-elements'; export interface FormElementProps { fieldsetProps?: FieldsetProps; diff --git a/src/util/types/LinkTypes.ts b/src/util/types/LinkTypes.ts index d03f2ca5..cbc530b1 100644 --- a/src/util/types/LinkTypes.ts +++ b/src/util/types/LinkTypes.ts @@ -1,4 +1,4 @@ -import { AnchorHTMLAttributes, ButtonHTMLAttributes, ElementType } from 'react'; +import { type AnchorHTMLAttributes, type ButtonHTMLAttributes, type ElementType } from 'react'; export type AsElementLink = (T extends HTMLButtonElement ? ButtonHTMLAttributes diff --git a/src/util/types/TypeGuards.ts b/src/util/types/TypeGuards.ts index cd576453..49d1bf81 100644 --- a/src/util/types/TypeGuards.ts +++ b/src/util/types/TypeGuards.ts @@ -1,6 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { FC, ReactElement, JSXElementConstructor, ReactNode, ReactPortal } from 'react'; -import { CardType, CareCardType } from './NHSUKTypes'; +import { + type FC, + type JSXElementConstructor, + type ReactElement, + type ReactNode, + type ReactPortal, +} from 'react'; +import { type CardType, type CareCardType } from './NHSUKTypes'; /** * Assert that a child item is of the given component type. @@ -16,9 +22,7 @@ export const childIsOfComponentType = ( | null | undefined, component: FC, -): child is - | React.ReactElement> - | React.ReactPortal => +): child is ReactElement> | ReactPortal => child !== undefined && child !== null && typeof child === 'object' && diff --git a/src/util/types/index.ts b/src/util/types/index.ts new file mode 100644 index 00000000..9fb9a677 --- /dev/null +++ b/src/util/types/index.ts @@ -0,0 +1,4 @@ +export * from './FormTypes'; +export * from './LinkTypes'; +export * from './NHSUKTypes'; +export * from './TypeGuards'; diff --git a/stories/Content Presentation/Details.stories.tsx b/stories/Content Presentation/Details.stories.tsx index 070dc0c4..6abad6b2 100644 --- a/stories/Content Presentation/Details.stories.tsx +++ b/stories/Content Presentation/Details.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Details } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Details } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Content Presentation/DoAndDontList.stories.tsx b/stories/Content Presentation/DoAndDontList.stories.tsx index 9494c8b9..68bfe0a6 100644 --- a/stories/Content Presentation/DoAndDontList.stories.tsx +++ b/stories/Content Presentation/DoAndDontList.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { DoAndDontList } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { DoAndDontList } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Content Presentation/Hero.stories.tsx b/stories/Content Presentation/Hero.stories.tsx index 0356647d..2339a30b 100644 --- a/stories/Content Presentation/Hero.stories.tsx +++ b/stories/Content Presentation/Hero.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Hero } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Hero } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/Hero', diff --git a/stories/Content Presentation/Icons.stories.tsx b/stories/Content Presentation/Icons.stories.tsx index 5ac53a55..19e6cac3 100644 --- a/stories/Content Presentation/Icons.stories.tsx +++ b/stories/Content Presentation/Icons.stories.tsx @@ -1,15 +1,15 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; import { ArrowLeftIcon, - ArrowRightIcon, ArrowRightCircleIcon, + ArrowRightIcon, ChevronRightCircleIcon, CrossIcon, SearchIcon, TickIcon, UserIcon, -} from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +} from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/Icons', diff --git a/stories/Content Presentation/Images.stories.tsx b/stories/Content Presentation/Images.stories.tsx index b67d668b..c63c43a6 100644 --- a/stories/Content Presentation/Images.stories.tsx +++ b/stories/Content Presentation/Images.stories.tsx @@ -1,5 +1,5 @@ -import { Images } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import { Images } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/Images', diff --git a/stories/Content Presentation/InsetText.stories.tsx b/stories/Content Presentation/InsetText.stories.tsx index d87123bc..18c856ec 100644 --- a/stories/Content Presentation/InsetText.stories.tsx +++ b/stories/Content Presentation/InsetText.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { InsetText } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { InsetText } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/InsetText', diff --git a/stories/Content Presentation/SummaryList.stories.tsx b/stories/Content Presentation/SummaryList.stories.tsx index a9d00669..984ab5aa 100644 --- a/stories/Content Presentation/SummaryList.stories.tsx +++ b/stories/Content Presentation/SummaryList.stories.tsx @@ -1,7 +1,7 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { SummaryList, BodyText } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { BodyText, SummaryList } from 'nhsuk-react-components'; /** * ## Implementation notes diff --git a/stories/Content Presentation/Table.stories.tsx b/stories/Content Presentation/Table.stories.tsx index bcf41db2..259597e7 100644 --- a/stories/Content Presentation/Table.stories.tsx +++ b/stories/Content Presentation/Table.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Col, HintText, Row, Table } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Col, HintText, Row, Table } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/Table', diff --git a/stories/Content Presentation/Tabs.stories.tsx b/stories/Content Presentation/Tabs.stories.tsx index d92825ed..be798cbd 100644 --- a/stories/Content Presentation/Tabs.stories.tsx +++ b/stories/Content Presentation/Tabs.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Tabs } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Tabs } from 'nhsuk-react-components'; /** * The tabs component lets users navigate between related sections of content, displaying 1 section at a time. diff --git a/stories/Content Presentation/Tag.stories.tsx b/stories/Content Presentation/Tag.stories.tsx index b0fffdb5..0f4b0f06 100644 --- a/stories/Content Presentation/Tag.stories.tsx +++ b/stories/Content Presentation/Tag.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Tag } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Tag } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/Tag', diff --git a/stories/Content Presentation/WarningCallout.stories.tsx b/stories/Content Presentation/WarningCallout.stories.tsx index 30b91bbc..7fd2bd20 100644 --- a/stories/Content Presentation/WarningCallout.stories.tsx +++ b/stories/Content Presentation/WarningCallout.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { WarningCallout } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { WarningCallout } from 'nhsuk-react-components'; const meta: Meta = { title: 'Content Presentation/WarningCallout', diff --git a/stories/Form Elements/Button.stories.tsx b/stories/Form Elements/Button.stories.tsx index b9f064fe..d33fcc6e 100644 --- a/stories/Form Elements/Button.stories.tsx +++ b/stories/Form Elements/Button.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Button } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Button } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Form Elements/CharacterCount.stories.tsx b/stories/Form Elements/CharacterCount.stories.tsx index 7663629e..bc1ad160 100644 --- a/stories/Form Elements/CharacterCount.stories.tsx +++ b/stories/Form Elements/CharacterCount.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { CharacterCount } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { CharacterCount } from 'nhsuk-react-components'; /** * Help users know how much text they can enter when there is a limit on the number of characters. diff --git a/stories/Form Elements/Checkboxes.stories.tsx b/stories/Form Elements/Checkboxes.stories.tsx index 9f8f1b58..4bbede00 100644 --- a/stories/Form Elements/Checkboxes.stories.tsx +++ b/stories/Form Elements/Checkboxes.stories.tsx @@ -1,6 +1,6 @@ -import React, { useRef, useState, useEffect, SyntheticEvent } from 'react'; -import { Checkboxes, TextInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import React, { useEffect, useRef, useState, type SyntheticEvent } from 'react'; +import { Checkboxes, TextInput } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. @@ -9,7 +9,7 @@ import { Meta, StoryObj } from '@storybook/react'; * * For details on the new form design pattern, check the documentation for the `Form` component. * - * The `Checkbox` component provides a `CheckboxContext` context, which the `Checkboxes.Item` components use. When each box initially renders, it will attempt to assign itself an `id` by calling the `getBoxId` method in the context. This will assign each box a sequential ID using either the `idPrefix` or `name` supplied to the Checkbox. If neither are provided, the element will generate it's own unique identifier. + * The `Checkbox` component provides a `CheckboxesContext` context, which the `Checkboxes.Item` components use. When each box initially renders, it will attempt to assign itself an `id` by calling the `getBoxId` method in the context. This will assign each box a sequential ID using either the `idPrefix` or `name` supplied to the Checkbox. If neither are provided, the element will generate it's own unique identifier. * * ## Usage * diff --git a/stories/Form Elements/DateInput.stories.tsx b/stories/Form Elements/DateInput.stories.tsx index d17bce21..f7bb0af5 100644 --- a/stories/Form Elements/DateInput.stories.tsx +++ b/stories/Form Elements/DateInput.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React, { useState } from 'react'; -import { DateInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { DateInput, type DateInputValue } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/DateInput', @@ -139,7 +139,11 @@ export const ControlledElementWrapper: Story = { export const ChangeableControlledElement: Story = { render: function ChangeableControlledElementRender() { - const [value, setValue] = useState({ day: '20', month: '09', year: '1996' }); + const [value, setValue] = useState | undefined>({ + day: '20', + month: '09', + year: '1996', + }); return ( here. diff --git a/stories/Form Elements/ErrorSummary.stories.tsx b/stories/Form Elements/ErrorSummary.stories.tsx index 2aae3157..94f11711 100644 --- a/stories/Form Elements/ErrorSummary.stories.tsx +++ b/stories/Form Elements/ErrorSummary.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { ErrorSummary } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { ErrorSummary } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Form Elements/Fieldset.stories.tsx b/stories/Form Elements/Fieldset.stories.tsx index b257780f..f24f3a33 100644 --- a/stories/Form Elements/Fieldset.stories.tsx +++ b/stories/Form Elements/Fieldset.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Fieldset, TextInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Fieldset, TextInput } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Form Elements/HintText.stories.tsx b/stories/Form Elements/HintText.stories.tsx index b0de2b41..c124c569 100644 --- a/stories/Form Elements/HintText.stories.tsx +++ b/stories/Form Elements/HintText.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { HintText } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { HintText } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/HintText', diff --git a/stories/Form Elements/Label.stories.tsx b/stories/Form Elements/Label.stories.tsx index 7aec0905..77078875 100644 --- a/stories/Form Elements/Label.stories.tsx +++ b/stories/Form Elements/Label.stories.tsx @@ -1,5 +1,5 @@ -import { Label } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import { Label } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/Label', diff --git a/stories/Form Elements/Radios.stories.tsx b/stories/Form Elements/Radios.stories.tsx index de23afc7..006eb353 100644 --- a/stories/Form Elements/Radios.stories.tsx +++ b/stories/Form Elements/Radios.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React, { useState } from 'react'; -import { Radios, TextInput, Checkboxes } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Checkboxes, Radios, TextInput } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/Radios', diff --git a/stories/Form Elements/Select.stories.tsx b/stories/Form Elements/Select.stories.tsx index eefb8402..b44b6f55 100644 --- a/stories/Form Elements/Select.stories.tsx +++ b/stories/Form Elements/Select.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React, { useState } from 'react'; -import { Select, TextInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Select, TextInput } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/Select', diff --git a/stories/Form Elements/TextInput.stories.tsx b/stories/Form Elements/TextInput.stories.tsx index 4e183c97..f0582175 100644 --- a/stories/Form Elements/TextInput.stories.tsx +++ b/stories/Form Elements/TextInput.stories.tsx @@ -1,5 +1,5 @@ -import { TextInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import { TextInput } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/TextInput', diff --git a/stories/Form Elements/Textarea.stories.tsx b/stories/Form Elements/Textarea.stories.tsx index c5c87526..a0d0c59e 100644 --- a/stories/Form Elements/Textarea.stories.tsx +++ b/stories/Form Elements/Textarea.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React, { useState } from 'react'; -import { Textarea, TextInput } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { TextInput, Textarea } from 'nhsuk-react-components'; const meta: Meta = { title: 'Form Elements/Textarea', diff --git a/stories/Layout/Grid.stories.tsx b/stories/Layout/Grid.stories.tsx index 6589ff60..d70dd1b4 100644 --- a/stories/Layout/Grid.stories.tsx +++ b/stories/Layout/Grid.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Row, Col, Card, Container } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Card, Col, Container, Row } from 'nhsuk-react-components'; const meta: Meta = { title: 'Layout/Grid', diff --git a/stories/Navigation/ActionLink.stories.tsx b/stories/Navigation/ActionLink.stories.tsx index b86c3996..34800675 100644 --- a/stories/Navigation/ActionLink.stories.tsx +++ b/stories/Navigation/ActionLink.stories.tsx @@ -1,5 +1,5 @@ -import { ActionLink } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import { ActionLink } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/ActionLink', diff --git a/stories/Navigation/BackLink.stories.tsx b/stories/Navigation/BackLink.stories.tsx index f24bcf27..54bd6f8f 100644 --- a/stories/Navigation/BackLink.stories.tsx +++ b/stories/Navigation/BackLink.stories.tsx @@ -1,5 +1,5 @@ -import { BackLink } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import { BackLink } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/BackLink', diff --git a/stories/Navigation/Breadcrumb.stories.tsx b/stories/Navigation/Breadcrumb.stories.tsx index 580b65d3..d18e87c9 100644 --- a/stories/Navigation/Breadcrumb.stories.tsx +++ b/stories/Navigation/Breadcrumb.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Breadcrumb, Container } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Breadcrumb, Container } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Navigation/Card.stories.tsx b/stories/Navigation/Card.stories.tsx index 5ad2b18a..01711aea 100644 --- a/stories/Navigation/Card.stories.tsx +++ b/stories/Navigation/Card.stories.tsx @@ -1,9 +1,7 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Card } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; -import { ColWidth } from '../../src/util/types/NHSUKTypes'; -import { ChevronRightCircle } from '@components/content-presentation/icons'; +import { Card, ChevronRightCircleIcon } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/Card', @@ -11,6 +9,7 @@ const meta: Meta = { }; export default meta; type Story = StoryObj; +type StoryGroup = StoryObj; export const Standard: Story = { render: (args) => ( @@ -101,7 +100,7 @@ export const PrimaryCardWithChevron: Story = { Primary card heading Primary card description - + ), @@ -120,7 +119,7 @@ export const SecondaryCard: Story = { ), }; -export const CardGroup: Story = { +export const CardGroup: StoryGroup = { args: { width: 'one-half' }, argTypes: { width: { @@ -130,7 +129,7 @@ export const CardGroup: Story = { }, render: (args) => ( - + @@ -142,7 +141,7 @@ export const CardGroup: Story = { - + @@ -154,7 +153,7 @@ export const CardGroup: Story = { - + @@ -166,7 +165,7 @@ export const CardGroup: Story = { - + diff --git a/stories/Navigation/ContentsList.stories.tsx b/stories/Navigation/ContentsList.stories.tsx index 25561014..1ea67b2e 100644 --- a/stories/Navigation/ContentsList.stories.tsx +++ b/stories/Navigation/ContentsList.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { ContentsList } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { ContentsList } from 'nhsuk-react-components'; /** * This component can be found in the `nhsuk-frontend` repository here. diff --git a/stories/Navigation/Footer.stories.tsx b/stories/Navigation/Footer.stories.tsx index e297e863..575ffe13 100644 --- a/stories/Navigation/Footer.stories.tsx +++ b/stories/Navigation/Footer.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Footer } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Footer } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/Footer', diff --git a/stories/Navigation/Header.stories.tsx b/stories/Navigation/Header.stories.tsx index 432b819d..60c88580 100644 --- a/stories/Navigation/Header.stories.tsx +++ b/stories/Navigation/Header.stories.tsx @@ -1,6 +1,6 @@ -import React, { ComponentProps } from 'react'; -import { Header } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import React, { type ComponentProps } from 'react'; +import { Header } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/Header', diff --git a/stories/Navigation/Pagination.stories.tsx b/stories/Navigation/Pagination.stories.tsx index 6054b7a4..8c5058ad 100644 --- a/stories/Navigation/Pagination.stories.tsx +++ b/stories/Navigation/Pagination.stories.tsx @@ -1,6 +1,6 @@ +import { type Meta, type StoryObj } from '@storybook/react'; import React from 'react'; -import { Pagination } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { Pagination } from 'nhsuk-react-components'; const meta: Meta = { title: 'Navigation/Pagination', diff --git a/stories/Navigation/SkipLink.stories.tsx b/stories/Navigation/SkipLink.stories.tsx index 73cc7945..68eb07df 100644 --- a/stories/Navigation/SkipLink.stories.tsx +++ b/stories/Navigation/SkipLink.stories.tsx @@ -1,12 +1,8 @@ -import React from 'react'; -import { SkipLink, HintText } from '../../src'; -import { Meta, StoryObj } from '@storybook/react'; +import { type Meta, type StoryObj } from '@storybook/react'; +import React, { type FC, type ReactNode } from 'react'; +import { HintText, SkipLink } from 'nhsuk-react-components'; -const CodeText: React.FC<{ children: React.ReactNode }> = ({ - children, -}: { - children: React.ReactNode; -}) => ( +const CodeText: FC<{ children: ReactNode }> = ({ children }) => ( = { title: 'Patterns/ReviewDate', diff --git a/tsconfig.base.json b/tsconfig.base.json index 7313ca0b..7e83f9db 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,14 +14,13 @@ "strictNullChecks": true, "target": "ESNext", "types": [], + "verbatimModuleSyntax": true, "paths": { - "@components/*": ["./src/components/*"], - "@content-presentation/*": ["./src/components/content-presentation/*"], - "@form-elements/*": ["./src/components/form-elements/*"], - "@navigation/*": ["./src/components/navigation/*"], - "@typography/*": ["./src/components/typography/*"], - "@util/*": ["./src/util/*"], - "@patterns/*": ["./src/patterns/*"] + "#components/*": ["./src/components/*"], + "#patterns/*": ["./src/patterns/*"], + "#patterns": ["./src/patterns/index"], + "#util/*": ["./src/util/*"], + "nhsuk-react-components": ["./src/index.ts"] } }, "exclude": ["./dist", "./node_modules"] diff --git a/yarn.lock b/yarn.lock index 835f4f31..957f74dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5719,6 +5719,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-module-resolver@npm:^5.0.2": + version: 5.0.2 + resolution: "babel-plugin-module-resolver@npm:5.0.2" + dependencies: + find-babel-config: "npm:^2.1.1" + glob: "npm:^9.3.3" + pkg-up: "npm:^3.1.0" + reselect: "npm:^4.1.7" + resolve: "npm:^1.22.8" + checksum: 10c0/ccbb9e673c4219f68937349267521becb72be292cf30bf70b861c3e709d24fbfa589da0bf6c100a0def799d38199299171cb6eac3fb00b1ea740373e2c1fe54c + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs2@npm:^0.4.10": version: 0.4.10 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.10" @@ -7968,6 +7981,15 @@ __metadata: languageName: node linkType: hard +"find-babel-config@npm:^2.1.1": + version: 2.1.2 + resolution: "find-babel-config@npm:2.1.2" + dependencies: + json5: "npm:^2.2.3" + checksum: 10c0/c9151b23d636378eae11aa761b0af41d5f67d5479e3ebfca7b0ec7feef91723f14242d243342783b89e6c51fc5b4120086eacf5d8a1a335cf7bae4b0ac89f493 + languageName: node + linkType: hard + "find-cache-dir@npm:^2.0.0": version: 2.1.0 resolution: "find-cache-dir@npm:2.1.0" @@ -8352,6 +8374,18 @@ __metadata: languageName: node linkType: hard +"glob@npm:^9.3.3": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: "npm:^1.0.0" + minimatch: "npm:^8.0.2" + minipass: "npm:^4.2.4" + path-scurry: "npm:^1.6.1" + checksum: 10c0/2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -10416,6 +10450,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca + languageName: node + linkType: hard + "minimatch@npm:^9.0.1": version: 9.0.4 resolution: "minimatch@npm:9.0.4" @@ -10492,6 +10535,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce + languageName: node + linkType: hard + "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" @@ -10621,6 +10671,7 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:^7.1.0" "@typescript-eslint/parser": "npm:^7.1.0" babel-jest: "npm:^29.7.0" + babel-plugin-module-resolver: "npm:^5.0.2" chromatic: "npm:^6.17.3" classnames: "npm:^2.2.6" eslint: "npm:^8.57.0" @@ -11151,6 +11202,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.6.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -11252,6 +11313,15 @@ __metadata: languageName: node linkType: hard +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + languageName: node + linkType: hard + "polished@npm:^4.2.2": version: 4.3.1 resolution: "polished@npm:4.3.1" @@ -11859,6 +11929,13 @@ __metadata: languageName: node linkType: hard +"reselect@npm:^4.1.7": + version: 4.1.8 + resolution: "reselect@npm:4.1.8" + checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" From bf4bd560de4d19b69dd233a9ca112ebdf221e951 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Thu, 2 Oct 2025 15:38:37 +0100 Subject: [PATCH 06/48] Fix missing README upgrade link --- README.md | 1 + stories/Welcome.mdx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6854bfa3..17e272e9 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ class GetStartedButton extends PureComponent { - [Upgrading to 3.0](/docs/upgrade-to-3.0.md) - [Upgrading to 4.0](/docs/upgrade-to-4.0.md) - [Upgrading to 5.0](/docs/upgrade-to-5.0.md) +- [Upgrading to 6.0](/docs/upgrade-to-6.0.md) ## Maintainers diff --git a/stories/Welcome.mdx b/stories/Welcome.mdx index 2803c176..ecda6eb8 100644 --- a/stories/Welcome.mdx +++ b/stories/Welcome.mdx @@ -44,7 +44,7 @@ import React, { PureComponent } from 'react'; import { Button } from 'nhsuk-react-components'; // Or you can import components directly -import Button from 'nhsuk-react-components/lib/components/button'; +import Button from 'nhsuk-react-components/dist/esm/components/button'; function GetStartedButton() { return ; From 1ea1b8078071e51f6d9c0e7324204fb80bb40325 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Mon, 6 Oct 2025 10:16:48 +0100 Subject: [PATCH 07/48] Configure Rollup build with Babel --- package.json | 10 +++++---- rollup.config.mjs | 9 +++++++- yarn.lock | 54 ++++++++++++++++++++++++++++++++++++----------- 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index b45f7c86..2ba31020 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "@babel/preset-env": "^7.28.3", "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", + "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-commonjs": "^28.0.6", "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-typescript": "^12.1.4", @@ -88,6 +89,7 @@ "babel-jest": "^29.7.0", "babel-plugin-module-resolver": "^5.0.2", "chromatic": "^6.17.3", + "classnames": "^2.5.1", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^9.1.0", @@ -110,17 +112,17 @@ "rollup-plugin-preserve-directives": "^0.4.0", "sass": "^1.53.0", "storybook": "^8.0.5", + "tslib": "^2.8.1", "typescript": "5.3.3", "vite": "^4.5.3", "vite-tsconfig-paths": "^4.3.2" }, - "dependencies": { - "classnames": "^2.2.6" - }, "peerDependencies": { + "classnames": ">=2.5.0", "nhsuk-frontend": ">=10.0.0 <11.0.0", "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "react-dom": ">=16.8.0", + "tslib": ">=2.8.0" }, "packageManager": "yarn@4.1.1" } diff --git a/rollup.config.mjs b/rollup.config.mjs index 11772931..3a2b22eb 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,4 +1,5 @@ import { join } from 'node:path'; +import { babel } from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; @@ -30,7 +31,9 @@ export default defineConfig( external, treeshake: false, plugins: [ - nodeResolve(), + nodeResolve({ + browser: true, + }), commonjs(), typescript({ tsconfig: 'tsconfig.build.json', @@ -39,6 +42,10 @@ export default defineConfig( }, }), preserveDirectives(), + babel({ + babelHelpers: 'bundled', + exclude: 'node_modules/**', + }), ], // Handle warnings as errors diff --git a/yarn.lock b/yarn.lock index 957f74dd..188c1b7d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -343,16 +343,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.1": - version: 7.24.3 - resolution: "@babel/helper-module-imports@npm:7.24.3" - dependencies: - "@babel/types": "npm:^7.24.0" - checksum: 10c0/052c188adcd100f5e8b6ff0c9643ddaabc58b6700d3bbbc26804141ad68375a9f97d9d173658d373d31853019e65f62610239e3295cdd58e573bdcb2fded188d - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.27.1": +"@babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-module-imports@npm:7.27.1" dependencies: @@ -362,6 +353,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.1": + version: 7.24.3 + resolution: "@babel/helper-module-imports@npm:7.24.3" + dependencies: + "@babel/types": "npm:^7.24.0" + checksum: 10c0/052c188adcd100f5e8b6ff0c9643ddaabc58b6700d3bbbc26804141ad68375a9f97d9d173658d373d31853019e65f62610239e3295cdd58e573bdcb2fded188d + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.23.3": version: 7.23.3 resolution: "@babel/helper-module-transforms@npm:7.23.3" @@ -3555,6 +3555,25 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-babel@npm:^6.0.4": + version: 6.0.4 + resolution: "@rollup/plugin-babel@npm:6.0.4" + dependencies: + "@babel/helper-module-imports": "npm:^7.18.6" + "@rollup/pluginutils": "npm:^5.0.1" + peerDependencies: + "@babel/core": ^7.0.0 + "@types/babel__core": ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + "@types/babel__core": + optional: true + rollup: + optional: true + checksum: 10c0/5a7c04fa6d608512b597835e749aef33e129ee9ed6cc9e33489b7d43937358fc8aba48b00819604d0bc9b7c20790a6c035e4136e8d9f70cf0d0f056ba547e700 + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:^28.0.6": version: 28.0.6 resolution: "@rollup/plugin-commonjs@npm:28.0.6" @@ -6210,7 +6229,7 @@ __metadata: languageName: node linkType: hard -"classnames@npm:^2.2.6": +"classnames@npm:^2.5.1": version: 2.5.1 resolution: "classnames@npm:2.5.1" checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69 @@ -10648,6 +10667,7 @@ __metadata: "@babel/preset-env": "npm:^7.28.3" "@babel/preset-react": "npm:^7.27.1" "@babel/preset-typescript": "npm:^7.27.1" + "@rollup/plugin-babel": "npm:^6.0.4" "@rollup/plugin-commonjs": "npm:^28.0.6" "@rollup/plugin-node-resolve": "npm:^16.0.1" "@rollup/plugin-typescript": "npm:^12.1.4" @@ -10673,7 +10693,7 @@ __metadata: babel-jest: "npm:^29.7.0" babel-plugin-module-resolver: "npm:^5.0.2" chromatic: "npm:^6.17.3" - classnames: "npm:^2.2.6" + classnames: "npm:^2.5.1" eslint: "npm:^8.57.0" eslint-config-airbnb: "npm:^19.0.4" eslint-config-prettier: "npm:^9.1.0" @@ -10696,13 +10716,16 @@ __metadata: rollup-plugin-preserve-directives: "npm:^0.4.0" sass: "npm:^1.53.0" storybook: "npm:^8.0.5" + tslib: "npm:^2.8.1" typescript: "npm:5.3.3" vite: "npm:^4.5.3" vite-tsconfig-paths: "npm:^4.3.2" peerDependencies: + classnames: ">=2.5.0" nhsuk-frontend: ">=10.0.0 <11.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" + tslib: ">=2.8.0" languageName: unknown linkType: soft @@ -13102,6 +13125,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.8.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" From 872cc0aa3129c5aedd19838f6beb02cc76c93a2a Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Fri, 3 Oct 2025 17:31:00 +0100 Subject: [PATCH 08/48] Switch to modern JSX runtime --- .eslintrc.js | 1 + README.md | 2 +- babel.config.js | 1 + rollup.config.mjs | 3 ++- src/components/content-presentation/details/Details.tsx | 2 +- .../details/__tests__/Details.test.tsx | 2 +- .../do-and-dont-list/DoAndDontList.tsx | 2 +- .../do-and-dont-list/__tests__/DoAndDontList.test.tsx | 2 +- src/components/content-presentation/hero/Hero.tsx | 2 +- .../content-presentation/hero/__tests__/Hero.test.tsx | 2 +- src/components/content-presentation/icons/Icon.tsx | 2 +- .../content-presentation/icons/__tests__/Icons.test.tsx | 1 - .../icons/individual/ArrowLeftIcon.tsx | 2 +- .../icons/individual/ArrowRightCircleIcon.tsx | 2 +- .../icons/individual/ArrowRightIcon.tsx | 2 +- .../icons/individual/ChevronRightCircleIcon.tsx | 2 +- .../content-presentation/icons/individual/CrossIcon.tsx | 2 +- .../content-presentation/icons/individual/SearchIcon.tsx | 2 +- .../content-presentation/icons/individual/TickIcon.tsx | 2 +- .../content-presentation/icons/individual/UserIcon.tsx | 2 +- src/components/content-presentation/images/Images.tsx | 2 +- .../content-presentation/images/__tests__/Images.test.tsx | 2 +- .../content-presentation/inset-text/InsetText.tsx | 2 +- .../inset-text/__tests__/InsetText.test.tsx | 2 +- .../content-presentation/summary-list/SummaryList.tsx | 2 +- .../summary-list/__tests__/SummaryList.test.tsx | 2 +- src/components/content-presentation/table/Table.tsx | 2 +- .../content-presentation/table/components/TableBody.tsx | 2 +- .../table/components/TableCaption.tsx | 2 +- .../content-presentation/table/components/TableCell.tsx | 2 +- .../table/components/TableContainer.tsx | 2 +- .../content-presentation/table/components/TableHead.tsx | 2 +- .../content-presentation/table/components/TablePanel.tsx | 2 +- .../content-presentation/table/components/TableRow.tsx | 2 +- .../table/components/__tests__/Table.test.tsx | 2 +- .../table/components/__tests__/TableBody.test.tsx | 2 +- .../table/components/__tests__/TableCaption.test.tsx | 1 - .../table/components/__tests__/TableCell.test.tsx | 1 - .../table/components/__tests__/TableContainer.test.tsx | 2 +- .../table/components/__tests__/TableHead.test.tsx | 2 +- .../table/components/__tests__/TablePanel.test.tsx | 1 - .../table/components/__tests__/TableRow.test.tsx | 1 - src/components/content-presentation/tabs/Tabs.tsx | 2 +- .../content-presentation/tabs/__tests__/Tabs.test.tsx | 2 +- src/components/content-presentation/tag/Tag.tsx | 2 +- .../content-presentation/tag/__tests__/Tag.test.tsx | 2 +- .../warning-callout/WarningCallout.tsx | 2 +- .../warning-callout/__tests__/WarningCallout.test.tsx | 2 +- src/components/form-elements/button/Button.tsx | 2 +- .../form-elements/button/__tests__/Button.test.tsx | 2 +- .../form-elements/character-count/CharacterCount.tsx | 8 +------- .../character-count/__tests__/CharacterCount.test.tsx | 2 +- src/components/form-elements/checkboxes/Checkboxes.tsx | 8 +------- .../checkboxes/__tests__/Checkboxes.test.tsx | 2 +- .../form-elements/checkboxes/components/Divider.tsx | 2 +- .../form-elements/checkboxes/components/Item.tsx | 2 +- src/components/form-elements/date-input/DateInput.tsx | 2 +- .../form-elements/date-input/__tests__/DateInput.test.tsx | 2 +- .../date-input/components/IndividualDateInputs.tsx | 7 +------ .../form-elements/error-message/ErrorMessage.tsx | 2 +- .../error-message/__tests__/ErrorMessage.test.tsx | 1 - .../form-elements/error-summary/ErrorSummary.tsx | 2 +- .../error-summary/__tests__/ErrorSummary.test.tsx | 2 +- src/components/form-elements/fieldset/Fieldset.tsx | 2 +- .../form-elements/fieldset/__tests__/Fieldset.test.tsx | 1 - src/components/form-elements/form/Form.tsx | 2 +- src/components/form-elements/hint-text/HintText.tsx | 2 +- .../form-elements/hint-text/__tests__/Hint.test.tsx | 1 - src/components/form-elements/label/Label.tsx | 2 +- .../form-elements/label/__tests__/Label.test.tsx | 1 - src/components/form-elements/legend/Legend.tsx | 2 +- .../form-elements/legend/__tests__/Legend.test.tsx | 1 - src/components/form-elements/radios/Radios.tsx | 8 +------- .../form-elements/radios/__tests__/Radios.test.tsx | 2 +- .../form-elements/radios/components/Divider.tsx | 2 +- src/components/form-elements/radios/components/Item.tsx | 2 +- src/components/form-elements/select/Select.tsx | 2 +- .../form-elements/select/__tests__/Select.test.tsx | 2 +- src/components/form-elements/text-input/TextInput.tsx | 2 +- .../form-elements/text-input/__tests__/TextInput.test.tsx | 2 +- src/components/form-elements/textarea/Textarea.tsx | 2 +- .../form-elements/textarea/__tests__/Textarea.test.tsx | 2 +- src/components/layout/Col.tsx | 2 +- src/components/layout/Container.tsx | 2 +- src/components/layout/Row.tsx | 2 +- src/components/layout/__tests__/Col.test.tsx | 1 - src/components/layout/__tests__/Container.test.tsx | 1 - src/components/layout/__tests__/Row.test.tsx | 1 - src/components/navigation/action-link/ActionLink.tsx | 2 +- .../navigation/action-link/__tests__/ActionLink.test.tsx | 2 +- src/components/navigation/back-link/BackLink.tsx | 2 +- .../navigation/back-link/__tests__/BackLink.test.tsx | 2 +- src/components/navigation/breadcrumb/Breadcrumb.tsx | 2 +- .../navigation/breadcrumb/__tests__/Breadcrumb.test.tsx | 2 +- src/components/navigation/card/Card.tsx | 2 +- src/components/navigation/card/__tests__/Card.test.tsx | 1 - src/components/navigation/card/components/CardContent.tsx | 2 +- .../navigation/card/components/CardDescription.tsx | 2 +- src/components/navigation/card/components/CardGroup.tsx | 2 +- .../navigation/card/components/CardGroupItem.tsx | 1 - src/components/navigation/card/components/CardHeading.tsx | 2 +- src/components/navigation/card/components/CardImage.tsx | 2 +- src/components/navigation/card/components/CardLink.tsx | 2 +- src/components/navigation/contents-list/ContentsList.tsx | 2 +- .../contents-list/__tests__/ContentsList.test.tsx | 2 +- src/components/navigation/footer/Footer.tsx | 2 +- .../navigation/footer/__tests__/Footer.test.tsx | 1 - src/components/navigation/header/Header.tsx | 2 +- .../navigation/header/__tests__/Header.test.tsx | 2 +- src/components/navigation/header/components/Account.tsx | 2 +- .../navigation/header/components/AccountItem.tsx | 7 +------ src/components/navigation/header/components/Logo.tsx | 2 +- .../navigation/header/components/MenuToggle.tsx | 2 +- .../navigation/header/components/Navigation.tsx | 2 +- .../navigation/header/components/NavigationItem.tsx | 2 +- src/components/navigation/header/components/Search.tsx | 2 +- .../navigation/header/components/ServiceName.tsx | 2 +- src/components/navigation/pagination/Pagination.tsx | 2 +- .../navigation/pagination/__tests__/Pagination.test.tsx | 1 - src/components/navigation/skip-link/SkipLink.tsx | 8 +------- .../navigation/skip-link/__tests__/SkipLink.test.tsx | 2 +- src/components/typography/BodyText.tsx | 2 +- src/components/typography/LedeText.tsx | 2 +- src/components/typography/__tests__/BodyText.test.tsx | 1 - src/components/typography/__tests__/LedeText.test.tsx | 1 - src/components/utils/Clearfix.tsx | 2 +- src/components/utils/FormGroup.tsx | 2 +- src/components/utils/HeadingLevel.tsx | 2 +- src/components/utils/ReadingWidth.tsx | 2 +- src/components/utils/__tests__/FormGroup.test.tsx | 1 - src/components/utils/__tests__/HeadingLevel.test.tsx | 1 - src/patterns/nav-a-z/NavAZ.tsx | 2 +- src/patterns/nav-a-z/__tests__/NavAZ.test.tsx | 1 - src/patterns/review-date/ReviewDate.tsx | 2 +- src/patterns/review-date/__tests__/ReviewDate.test.tsx | 1 - src/util/types/NHSUKTypes.ts | 4 +++- stories/Content Presentation/Details.stories.tsx | 1 - stories/Content Presentation/DoAndDontList.stories.tsx | 1 - stories/Content Presentation/Hero.stories.tsx | 1 - stories/Content Presentation/Icons.stories.tsx | 1 - stories/Content Presentation/InsetText.stories.tsx | 1 - stories/Content Presentation/SummaryList.stories.tsx | 1 - stories/Content Presentation/Table.stories.tsx | 1 - stories/Content Presentation/Tabs.stories.tsx | 1 - stories/Content Presentation/Tag.stories.tsx | 1 - stories/Content Presentation/WarningCallout.stories.tsx | 1 - stories/Form Elements/Button.stories.tsx | 1 - stories/Form Elements/CharacterCount.stories.tsx | 1 - stories/Form Elements/Checkboxes.stories.tsx | 2 +- stories/Form Elements/ErrorSummary.stories.tsx | 1 - stories/Form Elements/Fieldset.stories.tsx | 1 - stories/Form Elements/HintText.stories.tsx | 1 - stories/Layout/Grid.stories.tsx | 1 - stories/Navigation/Breadcrumb.stories.tsx | 1 - stories/Navigation/Card.stories.tsx | 1 - stories/Navigation/ContentsList.stories.tsx | 1 - stories/Navigation/Footer.stories.tsx | 1 - stories/Navigation/Pagination.stories.tsx | 1 - stories/Patterns/NavAZ.stories.tsx | 1 - stories/Patterns/PageAZ.stories.tsx | 1 - stories/Welcome.mdx | 2 +- tsconfig.build.json | 2 +- tsconfig.json | 2 +- 163 files changed, 120 insertions(+), 195 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 97688586..1bfe34fd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -17,6 +17,7 @@ module.exports = { }, extends: [ 'plugin:react/recommended', + 'plugin:react/jsx-runtime', 'plugin:@typescript-eslint/recommended', 'prettier', 'plugin:import/errors', diff --git a/README.md b/README.md index 17e272e9..bfce6514 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ yarn add nhsuk-react-components ## Usage ```jsx -import React, { PureComponent } from 'react'; +import { PureComponent } from 'react'; // You can import components from the global module import { Button } from 'nhsuk-react-components'; diff --git a/babel.config.js b/babel.config.js index 098f3d54..aaaa49b8 100644 --- a/babel.config.js +++ b/babel.config.js @@ -21,6 +21,7 @@ module.exports = { '@babel/preset-react', { development: NODE_ENV === 'development', + runtime: 'automatic', useBuiltIns: true, }, ], diff --git a/rollup.config.mjs b/rollup.config.mjs index 3a2b22eb..d0fa347c 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -28,7 +28,8 @@ export default defineConfig( sourcemapExcludeSources: true, }, ], - external, + external: ['react/jsx-runtime', ...external], + jsx: /** @type {const} */ ('react-jsx'), treeshake: false, plugins: [ nodeResolve({ diff --git a/src/components/content-presentation/details/Details.tsx b/src/components/content-presentation/details/Details.tsx index fbd9d345..12c169d6 100644 --- a/src/components/content-presentation/details/Details.tsx +++ b/src/components/content-presentation/details/Details.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; export interface DetailsProps extends ComponentPropsWithoutRef<'details'> { expander?: boolean; diff --git a/src/components/content-presentation/details/__tests__/Details.test.tsx b/src/components/content-presentation/details/__tests__/Details.test.tsx index 977ae647..5e558eea 100644 --- a/src/components/content-presentation/details/__tests__/Details.test.tsx +++ b/src/components/content-presentation/details/__tests__/Details.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Details } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx b/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx index 77cf0989..4fac0e47 100644 --- a/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx +++ b/src/components/content-presentation/do-and-dont-list/DoAndDontList.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { createContext, forwardRef, useContext, diff --git a/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx b/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx index 61c6ac57..f7519b4f 100644 --- a/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx +++ b/src/components/content-presentation/do-and-dont-list/__tests__/DoAndDontList.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { DoAndDontList } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/content-presentation/hero/Hero.tsx b/src/components/content-presentation/hero/Hero.tsx index 4b6d88f8..1dd0a1ed 100644 --- a/src/components/content-presentation/hero/Hero.tsx +++ b/src/components/content-presentation/hero/Hero.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; import { Col, Container, Row } from '#components/layout'; import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; diff --git a/src/components/content-presentation/hero/__tests__/Hero.test.tsx b/src/components/content-presentation/hero/__tests__/Hero.test.tsx index 8f24fc4b..39c661c7 100644 --- a/src/components/content-presentation/hero/__tests__/Hero.test.tsx +++ b/src/components/content-presentation/hero/__tests__/Hero.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Hero } from '..'; describe('Hero', () => { diff --git a/src/components/content-presentation/icons/Icon.tsx b/src/components/content-presentation/icons/Icon.tsx index 3e9655a5..ccbbb90d 100644 --- a/src/components/content-presentation/icons/Icon.tsx +++ b/src/components/content-presentation/icons/Icon.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export interface IconProps extends ComponentPropsWithoutRef<'svg'> { title?: string; diff --git a/src/components/content-presentation/icons/__tests__/Icons.test.tsx b/src/components/content-presentation/icons/__tests__/Icons.test.tsx index 31f4bba8..41ad773e 100644 --- a/src/components/content-presentation/icons/__tests__/Icons.test.tsx +++ b/src/components/content-presentation/icons/__tests__/Icons.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import * as Icons from '..'; describe('Icons', () => { diff --git a/src/components/content-presentation/icons/individual/ArrowLeftIcon.tsx b/src/components/content-presentation/icons/individual/ArrowLeftIcon.tsx index f4bdb392..8531e72d 100644 --- a/src/components/content-presentation/icons/individual/ArrowLeftIcon.tsx +++ b/src/components/content-presentation/icons/individual/ArrowLeftIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const ArrowLeftIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/ArrowRightCircleIcon.tsx b/src/components/content-presentation/icons/individual/ArrowRightCircleIcon.tsx index 6717cf19..398143a9 100644 --- a/src/components/content-presentation/icons/individual/ArrowRightCircleIcon.tsx +++ b/src/components/content-presentation/icons/individual/ArrowRightCircleIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const ArrowRightCircleIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/ArrowRightIcon.tsx b/src/components/content-presentation/icons/individual/ArrowRightIcon.tsx index 7af06e6b..571d8101 100644 --- a/src/components/content-presentation/icons/individual/ArrowRightIcon.tsx +++ b/src/components/content-presentation/icons/individual/ArrowRightIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const ArrowRightIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/ChevronRightCircleIcon.tsx b/src/components/content-presentation/icons/individual/ChevronRightCircleIcon.tsx index e8cb6097..ca249047 100644 --- a/src/components/content-presentation/icons/individual/ChevronRightCircleIcon.tsx +++ b/src/components/content-presentation/icons/individual/ChevronRightCircleIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const ChevronRightCircleIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/CrossIcon.tsx b/src/components/content-presentation/icons/individual/CrossIcon.tsx index 2947e76d..20103ea8 100644 --- a/src/components/content-presentation/icons/individual/CrossIcon.tsx +++ b/src/components/content-presentation/icons/individual/CrossIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const CrossIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/SearchIcon.tsx b/src/components/content-presentation/icons/individual/SearchIcon.tsx index a2a3b7a5..2fb5905d 100644 --- a/src/components/content-presentation/icons/individual/SearchIcon.tsx +++ b/src/components/content-presentation/icons/individual/SearchIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const SearchIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/TickIcon.tsx b/src/components/content-presentation/icons/individual/TickIcon.tsx index 78925663..53b86950 100644 --- a/src/components/content-presentation/icons/individual/TickIcon.tsx +++ b/src/components/content-presentation/icons/individual/TickIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const TickIcon: FC = (props) => ( diff --git a/src/components/content-presentation/icons/individual/UserIcon.tsx b/src/components/content-presentation/icons/individual/UserIcon.tsx index 530a3e94..29f0a36d 100644 --- a/src/components/content-presentation/icons/individual/UserIcon.tsx +++ b/src/components/content-presentation/icons/individual/UserIcon.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { Icon, type IconProps } from '..'; export const UserIcon: FC = (props) => ( diff --git a/src/components/content-presentation/images/Images.tsx b/src/components/content-presentation/images/Images.tsx index 707cfcb2..afbcf5f0 100644 --- a/src/components/content-presentation/images/Images.tsx +++ b/src/components/content-presentation/images/Images.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; export interface ImagesProps extends ComponentPropsWithoutRef<'img'> { caption?: string; diff --git a/src/components/content-presentation/images/__tests__/Images.test.tsx b/src/components/content-presentation/images/__tests__/Images.test.tsx index b187c0e8..06137534 100644 --- a/src/components/content-presentation/images/__tests__/Images.test.tsx +++ b/src/components/content-presentation/images/__tests__/Images.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Images } from '..'; describe('Images', () => { diff --git a/src/components/content-presentation/inset-text/InsetText.tsx b/src/components/content-presentation/inset-text/InsetText.tsx index 311d164e..40446b65 100644 --- a/src/components/content-presentation/inset-text/InsetText.tsx +++ b/src/components/content-presentation/inset-text/InsetText.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; export type InsetTextProps = ComponentPropsWithoutRef<'div'>; diff --git a/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx b/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx index 3c8c5fa0..1e44a5ae 100644 --- a/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx +++ b/src/components/content-presentation/inset-text/__tests__/InsetText.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { InsetText } from '..'; describe('InsetText', () => { diff --git a/src/components/content-presentation/summary-list/SummaryList.tsx b/src/components/content-presentation/summary-list/SummaryList.tsx index 8370d482..97e2e678 100644 --- a/src/components/content-presentation/summary-list/SummaryList.tsx +++ b/src/components/content-presentation/summary-list/SummaryList.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; const SummaryListRow: FC> = ({ className, ...rest }) => (
    diff --git a/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx b/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx index 1e45f154..a34c39b4 100644 --- a/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx +++ b/src/components/content-presentation/summary-list/__tests__/SummaryList.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { SummaryList } from '..'; describe('SummaryList', () => { diff --git a/src/components/content-presentation/table/Table.tsx b/src/components/content-presentation/table/Table.tsx index 7c6cd4c3..6710268c 100644 --- a/src/components/content-presentation/table/Table.tsx +++ b/src/components/content-presentation/table/Table.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { forwardRef, useMemo, useState, diff --git a/src/components/content-presentation/table/components/TableBody.tsx b/src/components/content-presentation/table/components/TableBody.tsx index 6e09b1ce..2d072afd 100644 --- a/src/components/content-presentation/table/components/TableBody.tsx +++ b/src/components/content-presentation/table/components/TableBody.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { TableSection, TableSectionContext } from '..'; export type TableBodyProps = ComponentPropsWithoutRef<'tbody'>; diff --git a/src/components/content-presentation/table/components/TableCaption.tsx b/src/components/content-presentation/table/components/TableCaption.tsx index a7a7328a..30d17af1 100644 --- a/src/components/content-presentation/table/components/TableCaption.tsx +++ b/src/components/content-presentation/table/components/TableCaption.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { type NHSUKSize } from '#util/types'; export interface TableCaptionProps extends ComponentPropsWithoutRef<'caption'> { diff --git a/src/components/content-presentation/table/components/TableCell.tsx b/src/components/content-presentation/table/components/TableCell.tsx index ce4c979d..7e29cb6b 100644 --- a/src/components/content-presentation/table/components/TableCell.tsx +++ b/src/components/content-presentation/table/components/TableCell.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; import { TableContext, TableSection, TableSectionContext, type ITableContext } from '..'; import { useDevWarning } from '#util/hooks'; diff --git a/src/components/content-presentation/table/components/TableContainer.tsx b/src/components/content-presentation/table/components/TableContainer.tsx index bf725213..eb201da4 100644 --- a/src/components/content-presentation/table/components/TableContainer.tsx +++ b/src/components/content-presentation/table/components/TableContainer.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; export type TableContainerProps = ComponentPropsWithoutRef<'div'>; diff --git a/src/components/content-presentation/table/components/TableHead.tsx b/src/components/content-presentation/table/components/TableHead.tsx index 99e9de50..686157b8 100644 --- a/src/components/content-presentation/table/components/TableHead.tsx +++ b/src/components/content-presentation/table/components/TableHead.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; import { TableContext, TableSection, TableSectionContext, type ITableContext } from '..'; export type TableHeadProps = ComponentPropsWithoutRef<'thead'>; diff --git a/src/components/content-presentation/table/components/TablePanel.tsx b/src/components/content-presentation/table/components/TablePanel.tsx index 92b1921c..02f29510 100644 --- a/src/components/content-presentation/table/components/TablePanel.tsx +++ b/src/components/content-presentation/table/components/TablePanel.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; export interface TablePanelProps extends ComponentPropsWithoutRef<'div'> { diff --git a/src/components/content-presentation/table/components/TableRow.tsx b/src/components/content-presentation/table/components/TableRow.tsx index ae27bcb5..7a87e1d3 100644 --- a/src/components/content-presentation/table/components/TableRow.tsx +++ b/src/components/content-presentation/table/components/TableRow.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { Children, cloneElement, useContext, diff --git a/src/components/content-presentation/table/components/__tests__/Table.test.tsx b/src/components/content-presentation/table/components/__tests__/Table.test.tsx index f9db95ca..3fe50890 100644 --- a/src/components/content-presentation/table/components/__tests__/Table.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/Table.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Table } from '../..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx b/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx index d28fdafe..290356d5 100644 --- a/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableBody.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { useContext } from 'react'; +import { useContext } from 'react'; import { TableBody } from '..'; import { Table, TableSection, TableSectionContext } from '../..'; diff --git a/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx b/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx index 6d4180e9..1bb136a5 100644 --- a/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableCaption.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { TableCaption } from '..'; import { Table } from '../..'; import { type NHSUKSize } from '#util/types'; diff --git a/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx b/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx index c427ba60..2fc8ced7 100644 --- a/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableCell.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Table } from '../..'; describe('Table.Cell', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx b/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx index d2824e68..88e80167 100644 --- a/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableContainer.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { TableContainer } from '..'; describe('TableContainer', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx b/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx index 016429c7..342291f4 100644 --- a/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableHead.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { useContext } from 'react'; +import { useContext } from 'react'; import { TableHead } from '..'; import { Table, TableSection, TableSectionContext } from '../..'; diff --git a/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx b/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx index 882bc7b5..b8dbd79f 100644 --- a/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TablePanel.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { TablePanel } from '..'; describe('Table.Panel', () => { diff --git a/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx b/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx index ec57e6f2..466501fd 100644 --- a/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx +++ b/src/components/content-presentation/table/components/__tests__/TableRow.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { TableCell, TableRow } from '..'; import { TableContext, TableSection, TableSectionContext, type ITableContext } from '../..'; diff --git a/src/components/content-presentation/tabs/Tabs.tsx b/src/components/content-presentation/tabs/Tabs.tsx index 78e75cd0..8f57dc51 100644 --- a/src/components/content-presentation/tabs/Tabs.tsx +++ b/src/components/content-presentation/tabs/Tabs.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import { type Tabs as TabsModule } from 'nhsuk-frontend'; -import React, { +import { createRef, forwardRef, useEffect, diff --git a/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx b/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx index f573d046..552b6937 100644 --- a/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx +++ b/src/components/content-presentation/tabs/__tests__/Tabs.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Tabs, type TabTitleProps } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/content-presentation/tag/Tag.tsx b/src/components/content-presentation/tag/Tag.tsx index 7707d251..60d83a6c 100644 --- a/src/components/content-presentation/tag/Tag.tsx +++ b/src/components/content-presentation/tag/Tag.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export interface TagProps extends ComponentPropsWithoutRef<'strong'> { modifier?: diff --git a/src/components/content-presentation/tag/__tests__/Tag.test.tsx b/src/components/content-presentation/tag/__tests__/Tag.test.tsx index ea194275..2cf77408 100644 --- a/src/components/content-presentation/tag/__tests__/Tag.test.tsx +++ b/src/components/content-presentation/tag/__tests__/Tag.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { type ComponentPropsWithoutRef } from 'react'; +import { type ComponentPropsWithoutRef } from 'react'; import { Tag } from '..'; describe('Tag', () => { diff --git a/src/components/content-presentation/warning-callout/WarningCallout.tsx b/src/components/content-presentation/warning-callout/WarningCallout.tsx index c1db8664..a748e0e9 100644 --- a/src/components/content-presentation/warning-callout/WarningCallout.tsx +++ b/src/components/content-presentation/warning-callout/WarningCallout.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; const WarningCalloutHeading: FC = ({ children, className, ...rest }) => ( diff --git a/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx b/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx index 9e753eb0..1edee5f1 100644 --- a/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx +++ b/src/components/content-presentation/warning-callout/__tests__/WarningCallout.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { WarningCallout } from '..'; describe('WarningCallout', () => { diff --git a/src/components/form-elements/button/Button.tsx b/src/components/form-elements/button/Button.tsx index 848ccdbd..3c0f0a16 100644 --- a/src/components/form-elements/button/Button.tsx +++ b/src/components/form-elements/button/Button.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import { type Button as ButtonModule } from 'nhsuk-frontend'; -import React, { +import { createRef, forwardRef, useEffect, diff --git a/src/components/form-elements/button/__tests__/Button.test.tsx b/src/components/form-elements/button/__tests__/Button.test.tsx index bed8f16c..202c3508 100644 --- a/src/components/form-elements/button/__tests__/Button.test.tsx +++ b/src/components/form-elements/button/__tests__/Button.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef, forwardRef, type ComponentProps, type Ref } from 'react'; +import { createRef, forwardRef, type ComponentProps, type Ref } from 'react'; import { Button } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/character-count/CharacterCount.tsx b/src/components/form-elements/character-count/CharacterCount.tsx index 049861e8..27e6f35b 100644 --- a/src/components/form-elements/character-count/CharacterCount.tsx +++ b/src/components/form-elements/character-count/CharacterCount.tsx @@ -1,12 +1,6 @@ import classNames from 'classnames'; import { type CharacterCount as CharacterCountModule } from 'nhsuk-frontend'; -import React, { - createRef, - forwardRef, - useEffect, - useState, - type ComponentPropsWithoutRef, -} from 'react'; +import { createRef, forwardRef, useEffect, useState, type ComponentPropsWithoutRef } from 'react'; import { FormGroup } from '#components/utils'; import { type FormElementProps } from '#util/types'; diff --git a/src/components/form-elements/character-count/__tests__/CharacterCount.test.tsx b/src/components/form-elements/character-count/__tests__/CharacterCount.test.tsx index 755f0593..09e9581b 100644 --- a/src/components/form-elements/character-count/__tests__/CharacterCount.test.tsx +++ b/src/components/form-elements/character-count/__tests__/CharacterCount.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { CharacterCount } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/checkboxes/Checkboxes.tsx b/src/components/form-elements/checkboxes/Checkboxes.tsx index 542fe570..2b71db65 100644 --- a/src/components/form-elements/checkboxes/Checkboxes.tsx +++ b/src/components/form-elements/checkboxes/Checkboxes.tsx @@ -1,12 +1,6 @@ import classNames from 'classnames'; import { type Checkboxes as CheckboxesModule } from 'nhsuk-frontend'; -import React, { - createRef, - forwardRef, - useEffect, - useState, - type ComponentPropsWithoutRef, -} from 'react'; +import { createRef, forwardRef, useEffect, useState, type ComponentPropsWithoutRef } from 'react'; import { CheckboxesDivider, CheckboxesItem } from './components'; import { CheckboxesContext, type ICheckboxesContext } from '.'; import { FormGroup } from '#components/utils'; diff --git a/src/components/form-elements/checkboxes/__tests__/Checkboxes.test.tsx b/src/components/form-elements/checkboxes/__tests__/Checkboxes.test.tsx index cc5b1a9f..0bd8d373 100644 --- a/src/components/form-elements/checkboxes/__tests__/Checkboxes.test.tsx +++ b/src/components/form-elements/checkboxes/__tests__/Checkboxes.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Checkboxes } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/checkboxes/components/Divider.tsx b/src/components/form-elements/checkboxes/components/Divider.tsx index 6a9fac17..7cf06e33 100644 --- a/src/components/form-elements/checkboxes/components/Divider.tsx +++ b/src/components/form-elements/checkboxes/components/Divider.tsx @@ -1,4 +1,4 @@ -import React, { type FC } from 'react'; +import { type FC } from 'react'; type DividerProps = { dividerText?: string; diff --git a/src/components/form-elements/checkboxes/components/Item.tsx b/src/components/form-elements/checkboxes/components/Item.tsx index c5a29eb5..8792b7a2 100644 --- a/src/components/form-elements/checkboxes/components/Item.tsx +++ b/src/components/form-elements/checkboxes/components/Item.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { forwardRef, useContext, useEffect, diff --git a/src/components/form-elements/date-input/DateInput.tsx b/src/components/form-elements/date-input/DateInput.tsx index 52ff7bda..efa2829e 100644 --- a/src/components/form-elements/date-input/DateInput.tsx +++ b/src/components/form-elements/date-input/DateInput.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { createRef, forwardRef, useEffect, diff --git a/src/components/form-elements/date-input/__tests__/DateInput.test.tsx b/src/components/form-elements/date-input/__tests__/DateInput.test.tsx index fd35fdf1..729d64ce 100644 --- a/src/components/form-elements/date-input/__tests__/DateInput.test.tsx +++ b/src/components/form-elements/date-input/__tests__/DateInput.test.tsx @@ -1,5 +1,5 @@ import { fireEvent } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { DateInput, type DateInputChangeEvent } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/date-input/components/IndividualDateInputs.tsx b/src/components/form-elements/date-input/components/IndividualDateInputs.tsx index fa98a430..1ba83d7b 100644 --- a/src/components/form-elements/date-input/components/IndividualDateInputs.tsx +++ b/src/components/form-elements/date-input/components/IndividualDateInputs.tsx @@ -1,10 +1,5 @@ import classNames from 'classnames'; -import React, { - forwardRef, - useContext, - type ChangeEvent, - type ComponentPropsWithoutRef, -} from 'react'; +import { forwardRef, useContext, type ChangeEvent, type ComponentPropsWithoutRef } from 'react'; import { DateInputContext, type IDateInputContext } from '..'; import { Label } from '#components/form-elements'; import { type FormElementProps } from '#util/types'; diff --git a/src/components/form-elements/error-message/ErrorMessage.tsx b/src/components/form-elements/error-message/ErrorMessage.tsx index 834d9b59..1ea1cb20 100644 --- a/src/components/form-elements/error-message/ErrorMessage.tsx +++ b/src/components/form-elements/error-message/ErrorMessage.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export interface ErrorMessageProps extends ComponentPropsWithoutRef<'span'> { visuallyHiddenText?: string; diff --git a/src/components/form-elements/error-message/__tests__/ErrorMessage.test.tsx b/src/components/form-elements/error-message/__tests__/ErrorMessage.test.tsx index 841591b7..c4fa106c 100644 --- a/src/components/form-elements/error-message/__tests__/ErrorMessage.test.tsx +++ b/src/components/form-elements/error-message/__tests__/ErrorMessage.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { ErrorMessage } from '..'; describe('ErrorMessage', () => { diff --git a/src/components/form-elements/error-summary/ErrorSummary.tsx b/src/components/form-elements/error-summary/ErrorSummary.tsx index 291231ef..e87d71c0 100644 --- a/src/components/form-elements/error-summary/ErrorSummary.tsx +++ b/src/components/form-elements/error-summary/ErrorSummary.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import { type ErrorSummary as ErrorSummaryModule } from 'nhsuk-frontend'; -import React, { +import { Children, createRef, forwardRef, diff --git a/src/components/form-elements/error-summary/__tests__/ErrorSummary.test.tsx b/src/components/form-elements/error-summary/__tests__/ErrorSummary.test.tsx index cf794ccb..9525c2be 100644 --- a/src/components/form-elements/error-summary/__tests__/ErrorSummary.test.tsx +++ b/src/components/form-elements/error-summary/__tests__/ErrorSummary.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { ErrorSummary } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/fieldset/Fieldset.tsx b/src/components/form-elements/fieldset/Fieldset.tsx index 25a9398e..600bb1c5 100644 --- a/src/components/form-elements/fieldset/Fieldset.tsx +++ b/src/components/form-elements/fieldset/Fieldset.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { Legend } from '..'; export type FieldsetProps = ComponentPropsWithoutRef<'fieldset'>; diff --git a/src/components/form-elements/fieldset/__tests__/Fieldset.test.tsx b/src/components/form-elements/fieldset/__tests__/Fieldset.test.tsx index b9e41a6c..e12ef428 100644 --- a/src/components/form-elements/fieldset/__tests__/Fieldset.test.tsx +++ b/src/components/form-elements/fieldset/__tests__/Fieldset.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Fieldset } from '..'; import { TextInput } from '../..'; diff --git a/src/components/form-elements/form/Form.tsx b/src/components/form-elements/form/Form.tsx index c73c4290..4432c254 100644 --- a/src/components/form-elements/form/Form.tsx +++ b/src/components/form-elements/form/Form.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { FormContext } from '.'; export type FormProps = ComponentPropsWithoutRef<'form'> & { diff --git a/src/components/form-elements/hint-text/HintText.tsx b/src/components/form-elements/hint-text/HintText.tsx index b264c28a..918041b1 100644 --- a/src/components/form-elements/hint-text/HintText.tsx +++ b/src/components/form-elements/hint-text/HintText.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export type HintTextProps = ComponentPropsWithoutRef<'div'>; diff --git a/src/components/form-elements/hint-text/__tests__/Hint.test.tsx b/src/components/form-elements/hint-text/__tests__/Hint.test.tsx index 595d0e0e..e58b3a62 100644 --- a/src/components/form-elements/hint-text/__tests__/Hint.test.tsx +++ b/src/components/form-elements/hint-text/__tests__/Hint.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { HintText } from '..'; describe('Hint', () => { diff --git a/src/components/form-elements/label/Label.tsx b/src/components/form-elements/label/Label.tsx index cacef3cc..ce8c68bc 100644 --- a/src/components/form-elements/label/Label.tsx +++ b/src/components/form-elements/label/Label.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { type NHSUKSize } from '#util/types'; export interface LabelProps extends ComponentPropsWithoutRef<'label'> { diff --git a/src/components/form-elements/label/__tests__/Label.test.tsx b/src/components/form-elements/label/__tests__/Label.test.tsx index a2263a91..de1ed486 100644 --- a/src/components/form-elements/label/__tests__/Label.test.tsx +++ b/src/components/form-elements/label/__tests__/Label.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Label } from '..'; import { type NHSUKSize } from '#util/types'; diff --git a/src/components/form-elements/legend/Legend.tsx b/src/components/form-elements/legend/Legend.tsx index ec50489c..908af75e 100644 --- a/src/components/form-elements/legend/Legend.tsx +++ b/src/components/form-elements/legend/Legend.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; import { type NHSUKSize } from '#util/types'; diff --git a/src/components/form-elements/legend/__tests__/Legend.test.tsx b/src/components/form-elements/legend/__tests__/Legend.test.tsx index 0bf383a3..9cd45e5e 100644 --- a/src/components/form-elements/legend/__tests__/Legend.test.tsx +++ b/src/components/form-elements/legend/__tests__/Legend.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Legend } from '..'; import { type NHSUKSize } from '#util/types'; diff --git a/src/components/form-elements/radios/Radios.tsx b/src/components/form-elements/radios/Radios.tsx index e1ff214c..b6307cc4 100644 --- a/src/components/form-elements/radios/Radios.tsx +++ b/src/components/form-elements/radios/Radios.tsx @@ -1,12 +1,6 @@ import classNames from 'classnames'; import { type Radios as RadiosModule } from 'nhsuk-frontend'; -import React, { - createRef, - forwardRef, - useEffect, - useState, - type ComponentPropsWithoutRef, -} from 'react'; +import { createRef, forwardRef, useEffect, useState, type ComponentPropsWithoutRef } from 'react'; import { RadiosDivider, RadiosItem } from './components'; import { RadiosContext, type IRadiosContext } from '.'; import { FormGroup } from '#components/utils'; diff --git a/src/components/form-elements/radios/__tests__/Radios.test.tsx b/src/components/form-elements/radios/__tests__/Radios.test.tsx index 46695d61..66971e41 100644 --- a/src/components/form-elements/radios/__tests__/Radios.test.tsx +++ b/src/components/form-elements/radios/__tests__/Radios.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Radios } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/radios/components/Divider.tsx b/src/components/form-elements/radios/components/Divider.tsx index f84f07d4..a9c0b0e3 100644 --- a/src/components/form-elements/radios/components/Divider.tsx +++ b/src/components/form-elements/radios/components/Divider.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const RadiosDivider: FC> = ({ className, ...rest }) => (
    diff --git a/src/components/form-elements/radios/components/Item.tsx b/src/components/form-elements/radios/components/Item.tsx index 7899c095..b93de133 100644 --- a/src/components/form-elements/radios/components/Item.tsx +++ b/src/components/form-elements/radios/components/Item.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { forwardRef, useContext, useEffect, diff --git a/src/components/form-elements/select/Select.tsx b/src/components/form-elements/select/Select.tsx index ca3026c2..14166205 100644 --- a/src/components/form-elements/select/Select.tsx +++ b/src/components/form-elements/select/Select.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; import { FormGroup } from '#components/utils'; import { type FormElementProps } from '#util/types'; diff --git a/src/components/form-elements/select/__tests__/Select.test.tsx b/src/components/form-elements/select/__tests__/Select.test.tsx index 22d6efc3..a72a25b2 100644 --- a/src/components/form-elements/select/__tests__/Select.test.tsx +++ b/src/components/form-elements/select/__tests__/Select.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, useRef } from 'react'; +import { createRef, useRef } from 'react'; import { Select } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/form-elements/text-input/TextInput.tsx b/src/components/form-elements/text-input/TextInput.tsx index ddde1ba7..8d2c5bd0 100644 --- a/src/components/form-elements/text-input/TextInput.tsx +++ b/src/components/form-elements/text-input/TextInput.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; import { FormGroup } from '#components/utils'; import { type FormElementProps, type InputWidth } from '#util/types'; diff --git a/src/components/form-elements/text-input/__tests__/TextInput.test.tsx b/src/components/form-elements/text-input/__tests__/TextInput.test.tsx index 4bb41a07..1eca6bac 100644 --- a/src/components/form-elements/text-input/__tests__/TextInput.test.tsx +++ b/src/components/form-elements/text-input/__tests__/TextInput.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, useRef } from 'react'; +import { createRef, useRef } from 'react'; import { TextInput } from '..'; import { renderClient, renderServer } from '#util/components'; import { type InputWidth } from '#util/types'; diff --git a/src/components/form-elements/textarea/Textarea.tsx b/src/components/form-elements/textarea/Textarea.tsx index f0197c3b..e6958d36 100644 --- a/src/components/form-elements/textarea/Textarea.tsx +++ b/src/components/form-elements/textarea/Textarea.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; import { FormGroup } from '#components/utils'; import { type FormElementProps } from '#util/types'; diff --git a/src/components/form-elements/textarea/__tests__/Textarea.test.tsx b/src/components/form-elements/textarea/__tests__/Textarea.test.tsx index 76d213a3..1f21979e 100644 --- a/src/components/form-elements/textarea/__tests__/Textarea.test.tsx +++ b/src/components/form-elements/textarea/__tests__/Textarea.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { Textarea } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/layout/Col.tsx b/src/components/layout/Col.tsx index 2069f7f7..bc1c10d7 100644 --- a/src/components/layout/Col.tsx +++ b/src/components/layout/Col.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { type ColWidth } from '#util/types'; export interface ColProps extends ComponentPropsWithoutRef<'div'> { diff --git a/src/components/layout/Container.tsx b/src/components/layout/Container.tsx index 56ecbb80..658f0a47 100644 --- a/src/components/layout/Container.tsx +++ b/src/components/layout/Container.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export interface ContainerProps extends ComponentPropsWithoutRef<'div'> { fluid?: boolean; diff --git a/src/components/layout/Row.tsx b/src/components/layout/Row.tsx index 369dec1c..5a2eb562 100644 --- a/src/components/layout/Row.tsx +++ b/src/components/layout/Row.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export type RowProps = ComponentPropsWithoutRef<'div'>; diff --git a/src/components/layout/__tests__/Col.test.tsx b/src/components/layout/__tests__/Col.test.tsx index fe2b74ca..caa4fb94 100644 --- a/src/components/layout/__tests__/Col.test.tsx +++ b/src/components/layout/__tests__/Col.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Col } from '..'; describe('Col', () => { diff --git a/src/components/layout/__tests__/Container.test.tsx b/src/components/layout/__tests__/Container.test.tsx index 0e7436ad..e58f033b 100644 --- a/src/components/layout/__tests__/Container.test.tsx +++ b/src/components/layout/__tests__/Container.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Container } from '..'; describe('Container', () => { diff --git a/src/components/layout/__tests__/Row.test.tsx b/src/components/layout/__tests__/Row.test.tsx index 640e65ed..1a8a5273 100644 --- a/src/components/layout/__tests__/Row.test.tsx +++ b/src/components/layout/__tests__/Row.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Row } from '..'; describe('Row', () => { diff --git a/src/components/navigation/action-link/ActionLink.tsx b/src/components/navigation/action-link/ActionLink.tsx index 1653eaa5..51dd6656 100644 --- a/src/components/navigation/action-link/ActionLink.tsx +++ b/src/components/navigation/action-link/ActionLink.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef } from 'react'; +import { forwardRef } from 'react'; import { ArrowRightCircleIcon } from '#components/content-presentation'; import { type AsElementLink } from '#util/types'; diff --git a/src/components/navigation/action-link/__tests__/ActionLink.test.tsx b/src/components/navigation/action-link/__tests__/ActionLink.test.tsx index c5879773..b70465ba 100644 --- a/src/components/navigation/action-link/__tests__/ActionLink.test.tsx +++ b/src/components/navigation/action-link/__tests__/ActionLink.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, type ComponentProps } from 'react'; +import { createRef, type ComponentProps } from 'react'; import { ActionLink } from '..'; describe('ActionLink', () => { diff --git a/src/components/navigation/back-link/BackLink.tsx b/src/components/navigation/back-link/BackLink.tsx index 3dc798fa..89956e3a 100644 --- a/src/components/navigation/back-link/BackLink.tsx +++ b/src/components/navigation/back-link/BackLink.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef } from 'react'; +import { forwardRef } from 'react'; import { type AsElementLink } from '#util/types'; export type BackLinkProps = AsElementLink; diff --git a/src/components/navigation/back-link/__tests__/BackLink.test.tsx b/src/components/navigation/back-link/__tests__/BackLink.test.tsx index 21d76be2..41291b2f 100644 --- a/src/components/navigation/back-link/__tests__/BackLink.test.tsx +++ b/src/components/navigation/back-link/__tests__/BackLink.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, type ComponentProps } from 'react'; +import { createRef, type ComponentProps } from 'react'; import { BackLink } from '..'; describe('BackLink', () => { diff --git a/src/components/navigation/breadcrumb/Breadcrumb.tsx b/src/components/navigation/breadcrumb/Breadcrumb.tsx index 311c7130..cb0ff981 100644 --- a/src/components/navigation/breadcrumb/Breadcrumb.tsx +++ b/src/components/navigation/breadcrumb/Breadcrumb.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { Children, forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react'; +import { Children, forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react'; import { BackLink } from '..'; import { childIsOfComponentType, type AsElementLink } from '#util/types'; diff --git a/src/components/navigation/breadcrumb/__tests__/Breadcrumb.test.tsx b/src/components/navigation/breadcrumb/__tests__/Breadcrumb.test.tsx index 17a0b0f5..8d37f8e2 100644 --- a/src/components/navigation/breadcrumb/__tests__/Breadcrumb.test.tsx +++ b/src/components/navigation/breadcrumb/__tests__/Breadcrumb.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, type ComponentProps } from 'react'; +import { createRef, type ComponentProps } from 'react'; import { Breadcrumb } from '..'; describe('Breadcrumb', () => { diff --git a/src/components/navigation/card/Card.tsx b/src/components/navigation/card/Card.tsx index 8acf8ace..71dbc3fd 100644 --- a/src/components/navigation/card/Card.tsx +++ b/src/components/navigation/card/Card.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; import { CardContent, CardDescription, diff --git a/src/components/navigation/card/__tests__/Card.test.tsx b/src/components/navigation/card/__tests__/Card.test.tsx index 857a679f..73611559 100644 --- a/src/components/navigation/card/__tests__/Card.test.tsx +++ b/src/components/navigation/card/__tests__/Card.test.tsx @@ -1,6 +1,5 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ import { render } from '@testing-library/react'; -import React from 'react'; import { Card } from '..'; import { renderClient, renderServer } from '#util/components'; import { type CardType } from '#util/types'; diff --git a/src/components/navigation/card/components/CardContent.tsx b/src/components/navigation/card/components/CardContent.tsx index 6f290644..64655deb 100644 --- a/src/components/navigation/card/components/CardContent.tsx +++ b/src/components/navigation/card/components/CardContent.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, useContext, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, useContext, type ComponentPropsWithoutRef } from 'react'; import { CardContext } from '..'; export type CardContentProps = ComponentPropsWithoutRef<'div'>; diff --git a/src/components/navigation/card/components/CardDescription.tsx b/src/components/navigation/card/components/CardDescription.tsx index 5eece049..78057b9e 100644 --- a/src/components/navigation/card/components/CardDescription.tsx +++ b/src/components/navigation/card/components/CardDescription.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; export const CardDescription = forwardRef>( ({ className, ...rest }, forwardedRef) => ( diff --git a/src/components/navigation/card/components/CardGroup.tsx b/src/components/navigation/card/components/CardGroup.tsx index 0f7d6f43..0dd7bf76 100644 --- a/src/components/navigation/card/components/CardGroup.tsx +++ b/src/components/navigation/card/components/CardGroup.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { Row } from '#components/layout'; export const CardGroup: FC> = ({ className, ...rest }) => ( diff --git a/src/components/navigation/card/components/CardGroupItem.tsx b/src/components/navigation/card/components/CardGroupItem.tsx index a84331b0..049aaab4 100644 --- a/src/components/navigation/card/components/CardGroupItem.tsx +++ b/src/components/navigation/card/components/CardGroupItem.tsx @@ -1,5 +1,4 @@ import classNames from 'classnames'; -import React from 'react'; import { Col } from '#components/layout'; export const CardGroupItem: typeof Col = ({ className, ...rest }) => ( diff --git a/src/components/navigation/card/components/CardHeading.tsx b/src/components/navigation/card/components/CardHeading.tsx index c3979975..037b0be7 100644 --- a/src/components/navigation/card/components/CardHeading.tsx +++ b/src/components/navigation/card/components/CardHeading.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, useContext } from 'react'; +import { forwardRef, useContext } from 'react'; import { CardContext } from '..'; import { HeadingLevel, type HeadingLevelProps } from '#components/utils'; import { cardTypeIsCareCard, type CareCardType } from '#util/types'; diff --git a/src/components/navigation/card/components/CardImage.tsx b/src/components/navigation/card/components/CardImage.tsx index 908e6d92..17ef2582 100644 --- a/src/components/navigation/card/components/CardImage.tsx +++ b/src/components/navigation/card/components/CardImage.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const CardImage: FC> = ({ className, alt, ...rest }) => ( {alt} diff --git a/src/components/navigation/card/components/CardLink.tsx b/src/components/navigation/card/components/CardLink.tsx index 8ec27019..6da42726 100644 --- a/src/components/navigation/card/components/CardLink.tsx +++ b/src/components/navigation/card/components/CardLink.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef } from 'react'; +import { forwardRef } from 'react'; import { type AsElementLink } from '#util/types'; export type CardLinkProps = AsElementLink; diff --git a/src/components/navigation/contents-list/ContentsList.tsx b/src/components/navigation/contents-list/ContentsList.tsx index 8bb3a3b9..2e1decc5 100644 --- a/src/components/navigation/contents-list/ContentsList.tsx +++ b/src/components/navigation/contents-list/ContentsList.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; import { type AsElementLink } from '#util/types'; export interface ContentsListItemLinkProps extends AsElementLink { diff --git a/src/components/navigation/contents-list/__tests__/ContentsList.test.tsx b/src/components/navigation/contents-list/__tests__/ContentsList.test.tsx index 05af87c4..917e2d1f 100644 --- a/src/components/navigation/contents-list/__tests__/ContentsList.test.tsx +++ b/src/components/navigation/contents-list/__tests__/ContentsList.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import React, { createRef, type ComponentProps } from 'react'; +import { createRef, type ComponentProps } from 'react'; import { ContentsList } from '..'; describe('ContentsList', () => { diff --git a/src/components/navigation/footer/Footer.tsx b/src/components/navigation/footer/Footer.tsx index 72d0df25..ae7e1313 100644 --- a/src/components/navigation/footer/Footer.tsx +++ b/src/components/navigation/footer/Footer.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { Children, forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; +import { Children, forwardRef, type ComponentPropsWithoutRef, type FC } from 'react'; import { Container } from '#components/layout'; import { childIsOfComponentType, type AsElementLink } from '#util/types'; diff --git a/src/components/navigation/footer/__tests__/Footer.test.tsx b/src/components/navigation/footer/__tests__/Footer.test.tsx index b421dd0f..6e59b65b 100644 --- a/src/components/navigation/footer/__tests__/Footer.test.tsx +++ b/src/components/navigation/footer/__tests__/Footer.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Footer } from '..'; jest.spyOn(console, 'warn').mockImplementation(); diff --git a/src/components/navigation/header/Header.tsx b/src/components/navigation/header/Header.tsx index 0e844fc9..e5ccd6f6 100644 --- a/src/components/navigation/header/Header.tsx +++ b/src/components/navigation/header/Header.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import { type Header as HeaderModule } from 'nhsuk-frontend'; -import React, { +import { Children, createRef, forwardRef, diff --git a/src/components/navigation/header/__tests__/Header.test.tsx b/src/components/navigation/header/__tests__/Header.test.tsx index 16c24b45..e1891ca9 100644 --- a/src/components/navigation/header/__tests__/Header.test.tsx +++ b/src/components/navigation/header/__tests__/Header.test.tsx @@ -1,4 +1,4 @@ -import React, { createRef, type ComponentProps } from 'react'; +import { createRef, type ComponentProps } from 'react'; import { Header } from '..'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/navigation/header/components/Account.tsx b/src/components/navigation/header/components/Account.tsx index 06d12013..fdba7236 100644 --- a/src/components/navigation/header/components/Account.tsx +++ b/src/components/navigation/header/components/Account.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export type AccountProps = Pick< ComponentPropsWithoutRef<'nav'>, diff --git a/src/components/navigation/header/components/AccountItem.tsx b/src/components/navigation/header/components/AccountItem.tsx index 9bff1e16..bf407f6a 100644 --- a/src/components/navigation/header/components/AccountItem.tsx +++ b/src/components/navigation/header/components/AccountItem.tsx @@ -1,10 +1,5 @@ import classNames from 'classnames'; -import React, { - forwardRef, - type ComponentPropsWithRef, - type ForwardedRef, - type ReactNode, -} from 'react'; +import { forwardRef, type ComponentPropsWithRef, type ForwardedRef, type ReactNode } from 'react'; import { UserIcon } from '#components/content-presentation'; import { type AsElementLink } from '#util/types'; diff --git a/src/components/navigation/header/components/Logo.tsx b/src/components/navigation/header/components/Logo.tsx index ee66d217..08698982 100644 --- a/src/components/navigation/header/components/Logo.tsx +++ b/src/components/navigation/header/components/Logo.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useEffect, type FC } from 'react'; +import { useContext, useEffect, type FC } from 'react'; import { HeaderContext, type IHeaderContext } from '..'; export type LogoProps = NonNullable; diff --git a/src/components/navigation/header/components/MenuToggle.tsx b/src/components/navigation/header/components/MenuToggle.tsx index 8ea4ceba..ab2db3d4 100644 --- a/src/components/navigation/header/components/MenuToggle.tsx +++ b/src/components/navigation/header/components/MenuToggle.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export type MenuToggleProps = ComponentPropsWithoutRef<'button'>; diff --git a/src/components/navigation/header/components/Navigation.tsx b/src/components/navigation/header/components/Navigation.tsx index be901314..fd35695c 100644 --- a/src/components/navigation/header/components/Navigation.tsx +++ b/src/components/navigation/header/components/Navigation.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { useContext, useEffect, type ComponentPropsWithoutRef, type FC } from 'react'; +import { useContext, useEffect, type ComponentPropsWithoutRef, type FC } from 'react'; import { HeaderContext, type IHeaderContext } from '..'; import { MenuToggle } from '.'; import { Container } from '#components/layout'; diff --git a/src/components/navigation/header/components/NavigationItem.tsx b/src/components/navigation/header/components/NavigationItem.tsx index 6350766d..34b83c2a 100644 --- a/src/components/navigation/header/components/NavigationItem.tsx +++ b/src/components/navigation/header/components/NavigationItem.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type FC } from 'react'; +import { type FC } from 'react'; import { type AsElementLink } from '#util/types'; export interface NavigationItemProps extends AsElementLink { diff --git a/src/components/navigation/header/components/Search.tsx b/src/components/navigation/header/components/Search.tsx index 3b0ac4f1..29c96029 100644 --- a/src/components/navigation/header/components/Search.tsx +++ b/src/components/navigation/header/components/Search.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; import { SearchIcon } from '#components/content-presentation'; export interface SearchProps extends ComponentPropsWithoutRef<'form'> { diff --git a/src/components/navigation/header/components/ServiceName.tsx b/src/components/navigation/header/components/ServiceName.tsx index 73572eb0..f541f760 100644 --- a/src/components/navigation/header/components/ServiceName.tsx +++ b/src/components/navigation/header/components/ServiceName.tsx @@ -1,4 +1,4 @@ -import React, { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; +import { useContext, type ComponentPropsWithoutRef, type FC } from 'react'; import { HeaderContext, type IHeaderContext } from '..'; export type ServiceNameInnerProps = NonNullable; diff --git a/src/components/navigation/pagination/Pagination.tsx b/src/components/navigation/pagination/Pagination.tsx index bf083448..ad15f71d 100644 --- a/src/components/navigation/pagination/Pagination.tsx +++ b/src/components/navigation/pagination/Pagination.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef } from 'react'; import { ArrowLeftIcon, ArrowRightIcon } from '#components/content-presentation'; import { type AsElementLink } from '#util/types'; diff --git a/src/components/navigation/pagination/__tests__/Pagination.test.tsx b/src/components/navigation/pagination/__tests__/Pagination.test.tsx index 1d4660c5..a435ffd7 100644 --- a/src/components/navigation/pagination/__tests__/Pagination.test.tsx +++ b/src/components/navigation/pagination/__tests__/Pagination.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { Pagination } from '..'; describe('Pagination', () => { diff --git a/src/components/navigation/skip-link/SkipLink.tsx b/src/components/navigation/skip-link/SkipLink.tsx index e9466c27..83b1c3fb 100644 --- a/src/components/navigation/skip-link/SkipLink.tsx +++ b/src/components/navigation/skip-link/SkipLink.tsx @@ -1,12 +1,6 @@ import classNames from 'classnames'; import { type SkipLink as SkipLinkModule } from 'nhsuk-frontend'; -import React, { - createRef, - forwardRef, - useEffect, - useState, - type ComponentPropsWithoutRef, -} from 'react'; +import { createRef, forwardRef, useEffect, useState, type ComponentPropsWithoutRef } from 'react'; export type SkipLinkProps = ComponentPropsWithoutRef<'a'>; diff --git a/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx b/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx index 0ac99798..f2bacd4b 100644 --- a/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx +++ b/src/components/navigation/skip-link/__tests__/SkipLink.test.tsx @@ -1,5 +1,5 @@ import { waitFor } from '@testing-library/react'; -import React, { createRef } from 'react'; +import { createRef } from 'react'; import { SkipLink } from '..'; import { Container } from '#components/layout'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/typography/BodyText.tsx b/src/components/typography/BodyText.tsx index fc2b0e3c..bb8f9bc4 100644 --- a/src/components/typography/BodyText.tsx +++ b/src/components/typography/BodyText.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const BodyText: FC> = ({ className, ...rest }) => (

    diff --git a/src/components/typography/LedeText.tsx b/src/components/typography/LedeText.tsx index a213b18e..b3da42c6 100644 --- a/src/components/typography/LedeText.tsx +++ b/src/components/typography/LedeText.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const LedeText: FC> = ({ className, ...rest }) => (

    diff --git a/src/components/typography/__tests__/BodyText.test.tsx b/src/components/typography/__tests__/BodyText.test.tsx index 5f48d48b..a190b365 100644 --- a/src/components/typography/__tests__/BodyText.test.tsx +++ b/src/components/typography/__tests__/BodyText.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { BodyText } from '..'; describe('BodyText', () => { diff --git a/src/components/typography/__tests__/LedeText.test.tsx b/src/components/typography/__tests__/LedeText.test.tsx index e4629605..00d2ab86 100644 --- a/src/components/typography/__tests__/LedeText.test.tsx +++ b/src/components/typography/__tests__/LedeText.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { LedeText } from '..'; describe('LedeText', () => { diff --git a/src/components/utils/Clearfix.tsx b/src/components/utils/Clearfix.tsx index 7a0a8c3c..6b1befd5 100644 --- a/src/components/utils/Clearfix.tsx +++ b/src/components/utils/Clearfix.tsx @@ -1,4 +1,4 @@ -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const Clearfix: FC> = (props) => (

    diff --git a/src/components/utils/FormGroup.tsx b/src/components/utils/FormGroup.tsx index af97fc12..a5233322 100644 --- a/src/components/utils/FormGroup.tsx +++ b/src/components/utils/FormGroup.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { +import { useContext, useEffect, useState, diff --git a/src/components/utils/HeadingLevel.tsx b/src/components/utils/HeadingLevel.tsx index f181cf5f..3d45135c 100644 --- a/src/components/utils/HeadingLevel.tsx +++ b/src/components/utils/HeadingLevel.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, type ElementType, type HTMLAttributes } from 'react'; +import { forwardRef, type ElementType, type HTMLAttributes } from 'react'; export interface HeadingLevelProps extends HTMLAttributes { headingLevel?: Extract; diff --git a/src/components/utils/ReadingWidth.tsx b/src/components/utils/ReadingWidth.tsx index c340c1b5..c8d0c387 100644 --- a/src/components/utils/ReadingWidth.tsx +++ b/src/components/utils/ReadingWidth.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export const ReadingWidth: FC> = ({ className, ...rest }) => (
    diff --git a/src/components/utils/__tests__/FormGroup.test.tsx b/src/components/utils/__tests__/FormGroup.test.tsx index f65aba94..dc26c29a 100644 --- a/src/components/utils/__tests__/FormGroup.test.tsx +++ b/src/components/utils/__tests__/FormGroup.test.tsx @@ -1,5 +1,4 @@ import { axe, toHaveNoViolations } from 'jest-axe'; -import React from 'react'; import { FormGroup, type FormElementRenderProps } from '..'; import { type TextInputProps } from '#components/form-elements'; import { renderClient, renderServer } from '#util/components'; diff --git a/src/components/utils/__tests__/HeadingLevel.test.tsx b/src/components/utils/__tests__/HeadingLevel.test.tsx index 8e2577ca..f5bd31fe 100644 --- a/src/components/utils/__tests__/HeadingLevel.test.tsx +++ b/src/components/utils/__tests__/HeadingLevel.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { HeadingLevel, type HeadingLevelProps } from '..'; describe('HeadingLevel', () => { diff --git a/src/patterns/nav-a-z/NavAZ.tsx b/src/patterns/nav-a-z/NavAZ.tsx index 22d12e61..1c671f50 100644 --- a/src/patterns/nav-a-z/NavAZ.tsx +++ b/src/patterns/nav-a-z/NavAZ.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { forwardRef, type ComponentPropsWithoutRef, type FC, type ReactNode } from 'react'; +import { forwardRef, type ComponentPropsWithoutRef, type FC, type ReactNode } from 'react'; import { type AsElementLink } from '#util/types'; const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; diff --git a/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx b/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx index 1d1bfa48..9580dccc 100644 --- a/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx +++ b/src/patterns/nav-a-z/__tests__/NavAZ.test.tsx @@ -1,5 +1,4 @@ import { render, screen } from '@testing-library/react'; -import React from 'react'; import { NavAZ } from '..'; const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; diff --git a/src/patterns/review-date/ReviewDate.tsx b/src/patterns/review-date/ReviewDate.tsx index 060b1e0a..a7257652 100644 --- a/src/patterns/review-date/ReviewDate.tsx +++ b/src/patterns/review-date/ReviewDate.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import React, { type ComponentPropsWithoutRef, type FC } from 'react'; +import { type ComponentPropsWithoutRef, type FC } from 'react'; export interface ReviewDateProps extends ComponentPropsWithoutRef<'div'> { lastReviewed?: string; diff --git a/src/patterns/review-date/__tests__/ReviewDate.test.tsx b/src/patterns/review-date/__tests__/ReviewDate.test.tsx index e8a7bb61..1a78e4d5 100644 --- a/src/patterns/review-date/__tests__/ReviewDate.test.tsx +++ b/src/patterns/review-date/__tests__/ReviewDate.test.tsx @@ -1,5 +1,4 @@ import { render } from '@testing-library/react'; -import React from 'react'; import { ReviewDate } from '..'; describe('ReviewDate', () => { diff --git a/src/util/types/NHSUKTypes.ts b/src/util/types/NHSUKTypes.ts index fe75353e..862fdfbd 100644 --- a/src/util/types/NHSUKTypes.ts +++ b/src/util/types/NHSUKTypes.ts @@ -1,3 +1,5 @@ +import { type HTMLAttributes } from 'react'; + export type NHSUKSize = 's' | 'm' | 'l' | 'xl'; export type InputWidth = '2' | '3' | '4' | '5' | '10' | '20' | '30' | 2 | 3 | 4 | 5 | 10 | 20 | 30; @@ -14,6 +16,6 @@ export type ColWidth = | 'one-third' | 'one-quarter'; -export type HTMLAttributesWithData = React.HTMLAttributes & { +export type HTMLAttributesWithData = HTMLAttributes & { [key: `data-${string}`]: unknown; }; diff --git a/stories/Content Presentation/Details.stories.tsx b/stories/Content Presentation/Details.stories.tsx index 6abad6b2..d014942e 100644 --- a/stories/Content Presentation/Details.stories.tsx +++ b/stories/Content Presentation/Details.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Details } from 'nhsuk-react-components'; /** diff --git a/stories/Content Presentation/DoAndDontList.stories.tsx b/stories/Content Presentation/DoAndDontList.stories.tsx index 68bfe0a6..85226bef 100644 --- a/stories/Content Presentation/DoAndDontList.stories.tsx +++ b/stories/Content Presentation/DoAndDontList.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { DoAndDontList } from 'nhsuk-react-components'; /** diff --git a/stories/Content Presentation/Hero.stories.tsx b/stories/Content Presentation/Hero.stories.tsx index 2339a30b..365b2cb7 100644 --- a/stories/Content Presentation/Hero.stories.tsx +++ b/stories/Content Presentation/Hero.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Hero } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Content Presentation/Icons.stories.tsx b/stories/Content Presentation/Icons.stories.tsx index 19e6cac3..bbd9098b 100644 --- a/stories/Content Presentation/Icons.stories.tsx +++ b/stories/Content Presentation/Icons.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { ArrowLeftIcon, ArrowRightCircleIcon, diff --git a/stories/Content Presentation/InsetText.stories.tsx b/stories/Content Presentation/InsetText.stories.tsx index 18c856ec..135ad9b3 100644 --- a/stories/Content Presentation/InsetText.stories.tsx +++ b/stories/Content Presentation/InsetText.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { InsetText } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Content Presentation/SummaryList.stories.tsx b/stories/Content Presentation/SummaryList.stories.tsx index 984ab5aa..7e3f9592 100644 --- a/stories/Content Presentation/SummaryList.stories.tsx +++ b/stories/Content Presentation/SummaryList.stories.tsx @@ -1,6 +1,5 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { BodyText, SummaryList } from 'nhsuk-react-components'; /** diff --git a/stories/Content Presentation/Table.stories.tsx b/stories/Content Presentation/Table.stories.tsx index 259597e7..7134db5c 100644 --- a/stories/Content Presentation/Table.stories.tsx +++ b/stories/Content Presentation/Table.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Col, HintText, Row, Table } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Content Presentation/Tabs.stories.tsx b/stories/Content Presentation/Tabs.stories.tsx index be798cbd..b7a25ee4 100644 --- a/stories/Content Presentation/Tabs.stories.tsx +++ b/stories/Content Presentation/Tabs.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Tabs } from 'nhsuk-react-components'; /** diff --git a/stories/Content Presentation/Tag.stories.tsx b/stories/Content Presentation/Tag.stories.tsx index 0f4b0f06..7f296337 100644 --- a/stories/Content Presentation/Tag.stories.tsx +++ b/stories/Content Presentation/Tag.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Tag } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Content Presentation/WarningCallout.stories.tsx b/stories/Content Presentation/WarningCallout.stories.tsx index 7fd2bd20..07304642 100644 --- a/stories/Content Presentation/WarningCallout.stories.tsx +++ b/stories/Content Presentation/WarningCallout.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { WarningCallout } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Form Elements/Button.stories.tsx b/stories/Form Elements/Button.stories.tsx index d33fcc6e..26117994 100644 --- a/stories/Form Elements/Button.stories.tsx +++ b/stories/Form Elements/Button.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Button } from 'nhsuk-react-components'; /** diff --git a/stories/Form Elements/CharacterCount.stories.tsx b/stories/Form Elements/CharacterCount.stories.tsx index bc1ad160..984ee847 100644 --- a/stories/Form Elements/CharacterCount.stories.tsx +++ b/stories/Form Elements/CharacterCount.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { CharacterCount } from 'nhsuk-react-components'; /** diff --git a/stories/Form Elements/Checkboxes.stories.tsx b/stories/Form Elements/Checkboxes.stories.tsx index 4bbede00..562e16b6 100644 --- a/stories/Form Elements/Checkboxes.stories.tsx +++ b/stories/Form Elements/Checkboxes.stories.tsx @@ -1,5 +1,5 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React, { useEffect, useRef, useState, type SyntheticEvent } from 'react'; +import { useEffect, useRef, useState, type SyntheticEvent } from 'react'; import { Checkboxes, TextInput } from 'nhsuk-react-components'; /** diff --git a/stories/Form Elements/ErrorSummary.stories.tsx b/stories/Form Elements/ErrorSummary.stories.tsx index 94f11711..413f4351 100644 --- a/stories/Form Elements/ErrorSummary.stories.tsx +++ b/stories/Form Elements/ErrorSummary.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { ErrorSummary } from 'nhsuk-react-components'; /** diff --git a/stories/Form Elements/Fieldset.stories.tsx b/stories/Form Elements/Fieldset.stories.tsx index f24f3a33..e99acea2 100644 --- a/stories/Form Elements/Fieldset.stories.tsx +++ b/stories/Form Elements/Fieldset.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Fieldset, TextInput } from 'nhsuk-react-components'; /** diff --git a/stories/Form Elements/HintText.stories.tsx b/stories/Form Elements/HintText.stories.tsx index c124c569..f1ef4534 100644 --- a/stories/Form Elements/HintText.stories.tsx +++ b/stories/Form Elements/HintText.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { HintText } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Layout/Grid.stories.tsx b/stories/Layout/Grid.stories.tsx index d70dd1b4..6e8c8efd 100644 --- a/stories/Layout/Grid.stories.tsx +++ b/stories/Layout/Grid.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Card, Col, Container, Row } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Navigation/Breadcrumb.stories.tsx b/stories/Navigation/Breadcrumb.stories.tsx index d18e87c9..cf17f12e 100644 --- a/stories/Navigation/Breadcrumb.stories.tsx +++ b/stories/Navigation/Breadcrumb.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Breadcrumb, Container } from 'nhsuk-react-components'; /** diff --git a/stories/Navigation/Card.stories.tsx b/stories/Navigation/Card.stories.tsx index 01711aea..5d235df0 100644 --- a/stories/Navigation/Card.stories.tsx +++ b/stories/Navigation/Card.stories.tsx @@ -1,6 +1,5 @@ /* eslint-disable jsx-a11y/anchor-is-valid */ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Card, ChevronRightCircleIcon } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Navigation/ContentsList.stories.tsx b/stories/Navigation/ContentsList.stories.tsx index 1ea67b2e..1a837920 100644 --- a/stories/Navigation/ContentsList.stories.tsx +++ b/stories/Navigation/ContentsList.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { ContentsList } from 'nhsuk-react-components'; /** diff --git a/stories/Navigation/Footer.stories.tsx b/stories/Navigation/Footer.stories.tsx index 575ffe13..27a0272d 100644 --- a/stories/Navigation/Footer.stories.tsx +++ b/stories/Navigation/Footer.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Footer } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Navigation/Pagination.stories.tsx b/stories/Navigation/Pagination.stories.tsx index 8c5058ad..311c8156 100644 --- a/stories/Navigation/Pagination.stories.tsx +++ b/stories/Navigation/Pagination.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Pagination } from 'nhsuk-react-components'; const meta: Meta = { diff --git a/stories/Patterns/NavAZ.stories.tsx b/stories/Patterns/NavAZ.stories.tsx index 74ad33d8..66db98a7 100644 --- a/stories/Patterns/NavAZ.stories.tsx +++ b/stories/Patterns/NavAZ.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { NavAZ } from 'nhsuk-react-components'; /** diff --git a/stories/Patterns/PageAZ.stories.tsx b/stories/Patterns/PageAZ.stories.tsx index d0c93d53..80dee126 100644 --- a/stories/Patterns/PageAZ.stories.tsx +++ b/stories/Patterns/PageAZ.stories.tsx @@ -1,5 +1,4 @@ import { type Meta, type StoryObj } from '@storybook/react'; -import React from 'react'; import { Card, Col, Container, HeadingLevel, NavAZ, Row } from 'nhsuk-react-components'; /** diff --git a/stories/Welcome.mdx b/stories/Welcome.mdx index ecda6eb8..4514c5e3 100644 --- a/stories/Welcome.mdx +++ b/stories/Welcome.mdx @@ -38,7 +38,7 @@ If you are coming from older versions, please see the migration guides below: ## Usage ```jsx -import React, { PureComponent } from 'react'; +import { PureComponent } from 'react'; // You can import components from the global module import { Button } from 'nhsuk-react-components'; diff --git a/tsconfig.build.json b/tsconfig.build.json index 59e195a7..b5464f30 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -4,7 +4,7 @@ "declaration": true, "declarationMap": true, "emitDeclarationOnly": true, - "jsx": "react", + "jsx": "react-jsx", "lib": ["ESNext", "DOM"], "outDir": "./dist", "rootDir": "./src", diff --git a/tsconfig.json b/tsconfig.json index 6781405b..86cb3019 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.base.json", "compilerOptions": { - "jsx": "react", + "jsx": "react-jsxdev", "lib": ["ESNext", "DOM"], "target": "ES2015", "types": ["jest", "node"] From c90c69b5eb275a82db081825eda4eed805838540 Mon Sep 17 00:00:00 2001 From: Colin Rotherham Date: Fri, 3 Oct 2025 15:05:34 +0100 Subject: [PATCH 09/48] Fix tests that relied on classic JSX runtime --- .../select/__tests__/Select.test.tsx | 32 ++++++++----------- .../text-input/__tests__/TextInput.test.tsx | 31 ++++++++---------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/src/components/form-elements/select/__tests__/Select.test.tsx b/src/components/form-elements/select/__tests__/Select.test.tsx index a72a25b2..deaed0d3 100644 --- a/src/components/form-elements/select/__tests__/Select.test.tsx +++ b/src/components/form-elements/select/__tests__/Select.test.tsx @@ -1,5 +1,4 @@ -import { render } from '@testing-library/react'; -import { createRef, useRef } from 'react'; +import { createRef } from 'react'; import { Select } from '..'; import { renderClient, renderServer } from '#util/components'; @@ -8,16 +7,6 @@ describe('Select', () => { jest.restoreAllMocks(); }); - const SelectComp = ({ onHandle }: { onHandle: () => void }) => { - const ref = useRef(null); - const handleClick = () => { - if (!ref.current) return; - onHandle(); - }; - - return @@ -84,17 +73,22 @@ describe('Select', () => { expect(selectEl2).toHaveClass('nhsuk-select--error'); }); - it('should handle DOM events where ref Exists', () => { - const useRefSpy = jest - .spyOn(React, 'useRef') - .mockReturnValueOnce({ current: document.createElement('select') }); + it('should handle DOM events where ref exists', async () => { + const ref = createRef(); const mock = jest.fn(); - const { container } = render(); - const selectEl = container.querySelector('select')!; + const handleClick = () => { + if (!ref.current) return; + mock(); + }; + + const { modules } = await renderClient(