From a9b128c6966ab496c2e5fa1d2cf0dd1f9e195056 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Mon, 29 Jul 2024 15:03:11 +0200 Subject: [PATCH 01/36] chore: :building_construction: Use Biomejs --- .vscode/settings.json | 28 ++++---- biome.json | 149 ++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + yarn.lock | 92 ++++++++++++++++++++++++++ 4 files changed, 256 insertions(+), 14 deletions(-) create mode 100644 biome.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 3166d77fd4..363c3fc42b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "git.rebaseWhenSync": true, "git.autofetch": true, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true, "prettier.prettierPath": "./node_modules/prettier", "typescript.tsdk": "node_modules/typescript/lib", @@ -11,19 +11,19 @@ "packages/theme/brand/digdir/typography/primary.css", "packages/theme/brand/digdir/semantic.css" ], - "[ignore]": { - "editor.defaultFormatter": "foxundermoon.shell-format" - }, - "eslint.probe": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "html", - "vue", - "markdown", - "mdx" - ], + // "[ignore]": { + // "editor.defaultFormatter": "foxundermoon.shell-format" + // }, + // "eslint.probe": [ + // "javascript", + // "javascriptreact", + // "typescript", + // "typescriptreact", + // "html", + // "vue", + // "markdown", + // "mdx" + // ], "html-css-class-completion.includeGlobPattern": "packages/css/**/*.{css,html}", "cSpell.words": ["altinn", "brreg", "designsystemet", "digdir"], "cSpell.language": "en,nb", diff --git a/biome.json b/biome.json new file mode 100644 index 0000000000..1d20692b0e --- /dev/null +++ b/biome.json @@ -0,0 +1,149 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "ignore": [ + "**/packages/theme/brand/**/*", + "**/apps/storefront/tokens/**", + "design-tokens/**/*", + "**/node_modules/**", + "**/*.d.ts*", + "**/dist/**", + "**/packages/react-old/**/*", + "**/tsc-build/**" + ] + }, + "organizeImports": { "enabled": true }, + "linter": { + "enabled": true, + "rules": { + "recommended": false, + "a11y": { + "noAccessKey": "error", + "noAriaUnsupportedElements": "error", + "noAutofocus": "off", + "noBlankTarget": "error", + "noDistractingElements": "error", + "noHeaderScope": "error", + "noInteractiveElementToNoninteractiveRole": "error", + "noNoninteractiveElementToInteractiveRole": "error", + "noNoninteractiveTabindex": "error", + "noPositiveTabindex": "error", + "noRedundantAlt": "error", + "noRedundantRoles": "error", + "useAltText": "error", + "useAnchorContent": "error", + "useAriaActivedescendantWithTabindex": "error", + "useAriaPropsForRole": "error", + "useHeadingContent": "error", + "useHtmlLang": "error", + "useIframeTitle": "error", + "useKeyWithClickEvents": "error", + "useKeyWithMouseEvents": "error", + "useMediaCaption": "error", + "useValidAnchor": "error", + "useValidAriaProps": "error", + "useValidAriaRole": "error", + "useValidAriaValues": "error" + }, + "complexity": { + "noExtraBooleanCast": "error", + "noMultipleSpacesInRegularExpressionLiterals": "error", + "noUselessCatch": "error", + "noWith": "error", + "useArrowFunction": "off" + }, + "correctness": { + "noChildrenProp": "error", + "noConstAssign": "error", + "noConstantCondition": "error", + "noEmptyCharacterClassInRegex": "error", + "noEmptyPattern": "error", + "noGlobalObjectCalls": "error", + "noInnerDeclarations": "error", + "noInvalidConstructorSuper": "error", + "noNewSymbol": "error", + "noNonoctalDecimalEscape": "error", + "noPrecisionLoss": "error", + "noSelfAssign": "error", + "noSetterReturn": "error", + "noSwitchDeclarations": "error", + "noUndeclaredVariables": "error", + "noUnreachable": "error", + "noUnreachableSuper": "error", + "noUnsafeFinally": "error", + "noUnsafeOptionalChaining": "error", + "noUnusedLabels": "error", + "noUnusedVariables": "error", + "useExhaustiveDependencies": "warn", + "useHookAtTopLevel": "error", + "useIsNan": "error", + "useJsxKeyInIterable": "error", + "useValidForDirection": "error", + "useYield": "error" + }, + "security": { "noDangerouslySetInnerHtmlWithChildren": "error" }, + "style": { "useBlockStatements": "off" }, + "suspicious": { + "noAssignInExpressions": "error", + "noAsyncPromiseExecutor": "error", + "noCatchAssign": "error", + "noClassAssign": "error", + "noCommentText": "error", + "noCompareNegZero": "error", + "noControlCharactersInRegex": "error", + "noDebugger": "error", + "noDuplicateCase": "error", + "noDuplicateClassMembers": "error", + "noDuplicateJsxProps": "error", + "noDuplicateObjectKeys": "error", + "noDuplicateParameters": "error", + "noEmptyBlockStatements": "error", + "noFallthroughSwitchClause": "error", + "noFunctionAssign": "error", + "noGlobalAssign": "error", + "noImportAssign": "error", + "noMisleadingCharacterClass": "error", + "noPrototypeBuiltins": "error", + "noRedeclare": "error", + "noShadowRestrictedNames": "error", + "noUnsafeNegation": "error", + "useGetterReturn": "error", + "useValidTypeof": "error" + } + }, + "ignore": [ + "**/node_modules", + "**/*.d.ts*", + "**/dist/", + "**/packages/theme/brand/**/*", + "**/packages/react-old/**/*", + "**/tsc-build/" + ] + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "single", + "quoteProperties": "asNeeded", + "trailingCommas": "all", + "semicolons": "always", + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto" + } + }, + "overrides": [ + { "include": ["**/*.css"], "formatter": { "lineWidth": 160 } }, + { + "include": ["**/packages/cli/**/*.ts"], + "formatter": { "lineWidth": 120 } + } + ] +} diff --git a/package.json b/package.json index 6bac040606..58bf7d13a2 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@babel/preset-env": "^7.24.4", "@babel/preset-react": "^7.24.1", "@babel/preset-typescript": "^7.23.3", + "@biomejs/biome": "1.8.3", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.7", "@next/eslint-plugin-next": "^14.2.4", diff --git a/yarn.lock b/yarn.lock index af6065ddfb..989d4705aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2202,6 +2202,97 @@ __metadata: languageName: node linkType: hard +"@biomejs/biome@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/biome@npm:1.8.3" + dependencies: + "@biomejs/cli-darwin-arm64": "npm:1.8.3" + "@biomejs/cli-darwin-x64": "npm:1.8.3" + "@biomejs/cli-linux-arm64": "npm:1.8.3" + "@biomejs/cli-linux-arm64-musl": "npm:1.8.3" + "@biomejs/cli-linux-x64": "npm:1.8.3" + "@biomejs/cli-linux-x64-musl": "npm:1.8.3" + "@biomejs/cli-win32-arm64": "npm:1.8.3" + "@biomejs/cli-win32-x64": "npm:1.8.3" + dependenciesMeta: + "@biomejs/cli-darwin-arm64": + optional: true + "@biomejs/cli-darwin-x64": + optional: true + "@biomejs/cli-linux-arm64": + optional: true + "@biomejs/cli-linux-arm64-musl": + optional: true + "@biomejs/cli-linux-x64": + optional: true + "@biomejs/cli-linux-x64-musl": + optional: true + "@biomejs/cli-win32-arm64": + optional: true + "@biomejs/cli-win32-x64": + optional: true + bin: + biome: bin/biome + checksum: 10/62dfa5147712ef21c384ea7b3c93c0ccac58291a85f2bbd2dee22c8381da5e347cd07bdb7bfcafcecb07fc112349e9d101e697774155553bde987fd47f9b12a1 + languageName: node + linkType: hard + +"@biomejs/cli-darwin-arm64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-darwin-arm64@npm:1.8.3" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-darwin-x64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-darwin-x64@npm:1.8.3" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64-musl@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-linux-arm64-musl@npm:1.8.3" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-linux-arm64@npm:1.8.3" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64-musl@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-linux-x64-musl@npm:1.8.3" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-linux-x64@npm:1.8.3" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-win32-arm64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-win32-arm64@npm:1.8.3" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-win32-x64@npm:1.8.3": + version: 1.8.3 + resolution: "@biomejs/cli-win32-x64@npm:1.8.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@bundled-es-modules/deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "@bundled-es-modules/deepmerge@npm:4.3.1" @@ -17956,6 +18047,7 @@ __metadata: "@babel/preset-env": "npm:^7.24.4" "@babel/preset-react": "npm:^7.24.1" "@babel/preset-typescript": "npm:^7.23.3" + "@biomejs/biome": "npm:1.8.3" "@changesets/changelog-github": "npm:^0.5.0" "@changesets/cli": "npm:^2.27.7" "@next/eslint-plugin-next": "npm:^14.2.4" From fea1403a1ab6e7c10463c380ac1f38f91d59e7d1 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Mon, 29 Jul 2024 15:13:07 +0200 Subject: [PATCH 02/36] test ci gh --- .github/workflows/checks-packages.yml | 2 +- package.json | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/checks-packages.yml b/.github/workflows/checks-packages.yml index 0b51322079..6c4cc53e7e 100644 --- a/.github/workflows/checks-packages.yml +++ b/.github/workflows/checks-packages.yml @@ -20,7 +20,7 @@ jobs: - name: Types run: yarn types:react - name: Lint Code - run: yarn lint:all + run: yarn lint:all --reporter=github - name: Lint CSS run: yarn lint-style - name: Test diff --git a/package.json b/package.json index 58bf7d13a2..aedce2b8b8 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,7 @@ "version": "0.0.0", "packageManager": "yarn@4.2.2", "private": true, - "workspaces": [ - "packages/*", - "apps/*", - "plugins/*" - ], + "workspaces": ["packages/*", "apps/*", "plugins/*"], "scripts": { "test": "vitest", "storybook": "yarn workspace storybook dev", @@ -25,8 +21,8 @@ "build:storefront": "yarn workspace storefront building", "build:devsite": "yarn workspace dev building", "start:storefront": "yarn workspace storefront start", - "lint": "eslint", - "lint:all": "eslint .", + "lint": "biome lint", + "lint:all": "biome ci .", "lint:all:fix": "yarn run lint:all --fix", "lint-style": "stylelint \"**/*.css\"", "lint-style:fix": "yarn run lint-style --fix", From 9b094614e2661c45fbbb15de49850746d6e02588 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Mon, 29 Jul 2024 20:35:50 +0200 Subject: [PATCH 03/36] update rules --- biome.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/biome.json b/biome.json index 1d20692b0e..041b5814ea 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,26 @@ { "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "files": { + "ignoreUnknown": true, + "ignore": [ + "node_modules", + "dist", + "tsc-build", + "packages/theme/brand/**/*", + "apps/storefront/tokens/**", + "design-tokens/**/*", + "packages/react-old/**/*", + ".next/**/*" + ] + }, + "css": { + "formatter": { + "enabled": true, + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 120 + } + }, "formatter": { "enabled": true, "formatWithErrors": false, @@ -127,6 +148,19 @@ ] }, "javascript": { + "globals": [ + "expect", + "it", + "describe", + "test", + "beforeEach", + "afterEach", + "beforeAll", + "afterAll", + "vi", + "React", + "JSX" + ], "formatter": { "jsxQuoteStyle": "single", "quoteProperties": "asNeeded", From 50da732e55a255e10177341615ee3ed17dc57427 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Tue, 30 Jul 2024 14:32:24 +0200 Subject: [PATCH 04/36] tweak rules --- .vscode/settings.json | 4 + biome.json | 179 +++++++++++++----------------------------- 2 files changed, 57 insertions(+), 126 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 363c3fc42b..f338bdcdaa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,10 @@ { "git.rebaseWhenSync": true, "git.autofetch": true, + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit", + "source.organizeImports.biome": "explicit" + }, "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true, "prettier.prettierPath": "./node_modules/prettier", diff --git a/biome.json b/biome.json index 041b5814ea..4828f79f99 100644 --- a/biome.json +++ b/biome.json @@ -3,27 +3,24 @@ "files": { "ignoreUnknown": true, "ignore": [ - "node_modules", - "dist", - "tsc-build", - "packages/theme/brand/**/*", - "apps/storefront/tokens/**", + "**/tsc-build/**", + "**/packages/theme/brand/**/*", + "**/apps/storefront/tokens/**", "design-tokens/**/*", "packages/react-old/**/*", - ".next/**/*" + "**/node_modules/**", + "**/lib/**", + "**/public/**", + "**/dist/**", + "**/.next/**", + "**/.vscode/**", + "**/.github/**", + "**/.changeset/**" ] }, - "css": { - "formatter": { - "enabled": true, - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 120 - } - }, "formatter": { "enabled": true, - "formatWithErrors": false, + "formatWithErrors": true, "indentStyle": "space", "indentWidth": 2, "lineEnding": "lf", @@ -39,113 +36,13 @@ "**/tsc-build/**" ] }, - "organizeImports": { "enabled": true }, - "linter": { - "enabled": true, - "rules": { - "recommended": false, - "a11y": { - "noAccessKey": "error", - "noAriaUnsupportedElements": "error", - "noAutofocus": "off", - "noBlankTarget": "error", - "noDistractingElements": "error", - "noHeaderScope": "error", - "noInteractiveElementToNoninteractiveRole": "error", - "noNoninteractiveElementToInteractiveRole": "error", - "noNoninteractiveTabindex": "error", - "noPositiveTabindex": "error", - "noRedundantAlt": "error", - "noRedundantRoles": "error", - "useAltText": "error", - "useAnchorContent": "error", - "useAriaActivedescendantWithTabindex": "error", - "useAriaPropsForRole": "error", - "useHeadingContent": "error", - "useHtmlLang": "error", - "useIframeTitle": "error", - "useKeyWithClickEvents": "error", - "useKeyWithMouseEvents": "error", - "useMediaCaption": "error", - "useValidAnchor": "error", - "useValidAriaProps": "error", - "useValidAriaRole": "error", - "useValidAriaValues": "error" - }, - "complexity": { - "noExtraBooleanCast": "error", - "noMultipleSpacesInRegularExpressionLiterals": "error", - "noUselessCatch": "error", - "noWith": "error", - "useArrowFunction": "off" - }, - "correctness": { - "noChildrenProp": "error", - "noConstAssign": "error", - "noConstantCondition": "error", - "noEmptyCharacterClassInRegex": "error", - "noEmptyPattern": "error", - "noGlobalObjectCalls": "error", - "noInnerDeclarations": "error", - "noInvalidConstructorSuper": "error", - "noNewSymbol": "error", - "noNonoctalDecimalEscape": "error", - "noPrecisionLoss": "error", - "noSelfAssign": "error", - "noSetterReturn": "error", - "noSwitchDeclarations": "error", - "noUndeclaredVariables": "error", - "noUnreachable": "error", - "noUnreachableSuper": "error", - "noUnsafeFinally": "error", - "noUnsafeOptionalChaining": "error", - "noUnusedLabels": "error", - "noUnusedVariables": "error", - "useExhaustiveDependencies": "warn", - "useHookAtTopLevel": "error", - "useIsNan": "error", - "useJsxKeyInIterable": "error", - "useValidForDirection": "error", - "useYield": "error" - }, - "security": { "noDangerouslySetInnerHtmlWithChildren": "error" }, - "style": { "useBlockStatements": "off" }, - "suspicious": { - "noAssignInExpressions": "error", - "noAsyncPromiseExecutor": "error", - "noCatchAssign": "error", - "noClassAssign": "error", - "noCommentText": "error", - "noCompareNegZero": "error", - "noControlCharactersInRegex": "error", - "noDebugger": "error", - "noDuplicateCase": "error", - "noDuplicateClassMembers": "error", - "noDuplicateJsxProps": "error", - "noDuplicateObjectKeys": "error", - "noDuplicateParameters": "error", - "noEmptyBlockStatements": "error", - "noFallthroughSwitchClause": "error", - "noFunctionAssign": "error", - "noGlobalAssign": "error", - "noImportAssign": "error", - "noMisleadingCharacterClass": "error", - "noPrototypeBuiltins": "error", - "noRedeclare": "error", - "noShadowRestrictedNames": "error", - "noUnsafeNegation": "error", - "useGetterReturn": "error", - "useValidTypeof": "error" - } - }, - "ignore": [ - "**/node_modules", - "**/*.d.ts*", - "**/dist/", - "**/packages/theme/brand/**/*", - "**/packages/react-old/**/*", - "**/tsc-build/" - ] + "css": { + "formatter": { + "enabled": true, + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 120 + } }, "javascript": { "globals": [ @@ -165,14 +62,44 @@ "jsxQuoteStyle": "single", "quoteProperties": "asNeeded", "trailingCommas": "all", - "semicolons": "always", - "arrowParentheses": "always", - "bracketSpacing": true, - "bracketSameLine": false, "quoteStyle": "single", "attributePosition": "auto" } }, + "organizeImports": { "enabled": true }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "a11y": { + "noSvgWithoutTitle": "off", + "noNoninteractiveElementToInteractiveRole": "off", + "useValidAnchor": "off", + "useButtonType": "off", + "useValidAriaRole": "off", + "useValidAriaValues": "off", + "useMediaCaption": "off", + "useKeyWithClickEvents": "off", + "noNoninteractiveTabindex": "off", + "useAriaPropsForRole": "off" + }, + "complexity": { + "useArrowFunction": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off", + "noInnerDeclarations": "off", + "useJsxKeyInIterable": "off", + "noSelfAssign": "off" + }, + "style": { "useBlockStatements": "off" }, + "suspicious": { + "noArrayIndexKey": "off" + } + }, + "ignore": [] + }, + "overrides": [ { "include": ["**/*.css"], "formatter": { "lineWidth": 160 } }, { From 77f896d92852d35775c202675fdd3729593cf5e3 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Tue, 30 Jul 2024 14:48:15 +0200 Subject: [PATCH 05/36] tweak rules --- biome.json | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/biome.json b/biome.json index 4828f79f99..617977ee07 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,6 @@ { "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "organizeImports": { "enabled": true }, "files": { "ignoreUnknown": true, "ignore": [ @@ -36,14 +37,6 @@ "**/tsc-build/**" ] }, - "css": { - "formatter": { - "enabled": true, - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 120 - } - }, "javascript": { "globals": [ "expect", @@ -59,6 +52,7 @@ "JSX" ], "formatter": { + "enabled": true, "jsxQuoteStyle": "single", "quoteProperties": "asNeeded", "trailingCommas": "all", @@ -66,7 +60,6 @@ "attributePosition": "auto" } }, - "organizeImports": { "enabled": true }, "linter": { "enabled": true, "rules": { From 75b9ab024d336491f80f833907c925dd4c876e84 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Tue, 30 Jul 2024 14:48:56 +0200 Subject: [PATCH 06/36] convert to biome to jsonc file type --- biome.json => biome.jsonc | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename biome.json => biome.jsonc (100%) diff --git a/biome.json b/biome.jsonc similarity index 100% rename from biome.json rename to biome.jsonc From badeb827d26d91dbe9b885456a76d4818c8718bd Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Tue, 30 Jul 2024 14:52:33 +0200 Subject: [PATCH 07/36] updated rules --- biome.jsonc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/biome.jsonc b/biome.jsonc index 617977ee07..f324253cd0 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -85,7 +85,20 @@ "useJsxKeyInIterable": "off", "noSelfAssign": "off" }, - "style": { "useBlockStatements": "off" }, + "style": { + "useImportType": "off", + "useTemplate": "off", + "useNodejsImportProtocol": "off", + "useConst": "off", + "noUnusedTemplateLiteral": "off", + "noInferrableTypes": "off", + "noVar": "off", + "noParameterAssign": "off", + "useNumberNamespace": "off", + "noNonNullAssertion": "off", + "useSelfClosingElements": "off", + "useDefaultParameterLast": "off" + }, "suspicious": { "noArrayIndexKey": "off" } From b6bba05ce1b51783918985877469dac0700a7c53 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 08:45:01 +0200 Subject: [PATCH 08/36] ignore package.json in biome --- biome.jsonc | 1 + package.json | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/biome.jsonc b/biome.jsonc index f324253cd0..2f7e84fb7d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -4,6 +4,7 @@ "files": { "ignoreUnknown": true, "ignore": [ + "package.json", "**/tsc-build/**", "**/packages/theme/brand/**/*", "**/apps/storefront/tokens/**", diff --git a/package.json b/package.json index f6f7f11838..dd29191186 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,11 @@ "version": "0.0.0", "packageManager": "yarn@4.2.2", "private": true, - "workspaces": ["packages/*", "apps/*", "plugins/*"], + "workspaces": [ + "packages/*", + "apps/*", + "plugins/*" + ], "scripts": { "test": "vitest", "storybook": "yarn workspace @designsystemet/storybook dev", From 13cb1624ebe9c37fdab9e5eac297309e4135fc89 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 09:08:40 +0200 Subject: [PATCH 09/36] updated some scripts --- .github/workflows/checks-packages.yml | 2 +- package.json | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/checks-packages.yml b/.github/workflows/checks-packages.yml index 6c4cc53e7e..c02dcbe611 100644 --- a/.github/workflows/checks-packages.yml +++ b/.github/workflows/checks-packages.yml @@ -20,7 +20,7 @@ jobs: - name: Types run: yarn types:react - name: Lint Code - run: yarn lint:all --reporter=github + run: yarn biome ci . --reporter=github - name: Lint CSS run: yarn lint-style - name: Test diff --git a/package.json b/package.json index dd29191186..e93dc7d153 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,9 @@ "build:storefront": "yarn workspace storefront building", "build:devsite": "yarn workspace dev building", "start:storefront": "yarn workspace storefront start", - "lint": "biome lint", - "lint:all": "biome ci .", - "lint:all:fix": "yarn run lint:all --fix", "lint-style": "stylelint \"**/*.css\"", "lint-style:fix": "yarn run lint-style --fix", + "types": "yarn workspaces foreach -Ap --topological-dev --no-private run build", "types:react": "yarn workspace @digdir/designsystemet-react types", "types:storefront": "yarn workspace storefront types", "changeset": "changeset", From 0bb279ebe908205cd2d8307bb3722ff108c39c75 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 09:22:55 +0200 Subject: [PATCH 10/36] updated some lint rules --- biome.jsonc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/biome.jsonc b/biome.jsonc index 2f7e84fb7d..3bb199e28d 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -78,7 +78,8 @@ "useAriaPropsForRole": "off" }, "complexity": { - "useArrowFunction": "off" + "useArrowFunction": "off", + "noForEach": "off" // TODO: Enable this rule }, "correctness": { "useExhaustiveDependencies": "off", @@ -101,7 +102,8 @@ "useDefaultParameterLast": "off" }, "suspicious": { - "noArrayIndexKey": "off" + "noArrayIndexKey": "off", + "noDoubleEquals": "off" // TODO: Enable this rule } }, "ignore": [] From 6eda458cfcea958170131a51ce49679575547d19 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 09:37:04 +0200 Subject: [PATCH 11/36] Rename const Error to avoid duplicate global --- .../react/src/components/form/Checkbox/Checkbox.mdx | 2 +- .../components/form/Checkbox/Group/Group.stories.tsx | 2 +- .../src/components/form/NativeSelect/NativeSelect.mdx | 2 +- .../form/NativeSelect/NativeSelect.stories.tsx | 4 ++-- .../src/components/form/Radio/Group/Group.stories.tsx | 11 ++++------- packages/react/src/components/form/Radio/Radio.mdx | 2 +- 6 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/react/src/components/form/Checkbox/Checkbox.mdx b/packages/react/src/components/form/Checkbox/Checkbox.mdx index 9e0e2e3c52..5ad7527189 100644 --- a/packages/react/src/components/form/Checkbox/Checkbox.mdx +++ b/packages/react/src/components/form/Checkbox/Checkbox.mdx @@ -57,7 +57,7 @@ Bruk `error` på `Checkbox.Group` for å vise feilmelding. Her må du bruke `Checkbox.Group` for å gjøre innholdet tilgjengelig og aktivere riktig stil. - + #### Kontrollert diff --git a/packages/react/src/components/form/Checkbox/Group/Group.stories.tsx b/packages/react/src/components/form/Checkbox/Group/Group.stories.tsx index 46f45c496f..068dee7e62 100644 --- a/packages/react/src/components/form/Checkbox/Group/Group.stories.tsx +++ b/packages/react/src/components/form/Checkbox/Group/Group.stories.tsx @@ -35,7 +35,7 @@ Preview.args = { size: 'md', }; -export const Error: StoryFn = () => ( +export const WithError: StoryFn = () => ( + ### Flervalg diff --git a/packages/react/src/components/form/NativeSelect/NativeSelect.stories.tsx b/packages/react/src/components/form/NativeSelect/NativeSelect.stories.tsx index 98e90b1b5a..5fc4d33c50 100644 --- a/packages/react/src/components/form/NativeSelect/NativeSelect.stories.tsx +++ b/packages/react/src/components/form/NativeSelect/NativeSelect.stories.tsx @@ -50,7 +50,7 @@ Disabled.args = { disabled: true, }; -export const Error: StoryFn = (args) => ( +export const WithError: StoryFn = (args) => ( @@ -64,7 +64,7 @@ export const Error: StoryFn = (args) => ( ); -Error.args = { +WithError.args = { label: 'Velg et fjell', error: 'Du må velge et fjell', }; diff --git a/packages/react/src/components/form/Radio/Group/Group.stories.tsx b/packages/react/src/components/form/Radio/Group/Group.stories.tsx index 1ae3375da7..1eea7e4beb 100644 --- a/packages/react/src/components/form/Radio/Group/Group.stories.tsx +++ b/packages/react/src/components/form/Radio/Group/Group.stories.tsx @@ -1,8 +1,8 @@ -import { useState } from 'react'; import type { Meta, StoryFn } from '@storybook/react'; +import { useState } from 'react'; -import { Button, Paragraph } from '../../..'; import { Radio } from '../'; +import { Button, Paragraph } from '../../..'; export default { title: 'Komponenter/Radio/Group', @@ -12,10 +12,7 @@ export default { export const Preview: StoryFn = (args) => ( Vanilje - + Jordbær Sjokolade @@ -32,7 +29,7 @@ Preview.args = { size: 'md', }; -export const Error: StoryFn = () => ( +export const WithError: StoryFn = () => ( + ### Kontrollert From d122864f44b27a8b68b1a933328a675a2f87d25f Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 09:49:34 +0200 Subject: [PATCH 12/36] fix types script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e93dc7d153..2cd616db59 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "start:storefront": "yarn workspace storefront start", "lint-style": "stylelint \"**/*.css\"", "lint-style:fix": "yarn run lint-style --fix", - "types": "yarn workspaces foreach -Ap --topological-dev --no-private run build", + "types": "yarn workspaces foreach -Ap --topological-dev --no-private run types", "types:react": "yarn workspace @digdir/designsystemet-react types", "types:storefront": "yarn workspace storefront types", "changeset": "changeset", From 87d7eda54f01ce636a18b8a0948f51cf43197795 Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 12:39:38 +0200 Subject: [PATCH 13/36] updated rules --- biome.jsonc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/biome.jsonc b/biome.jsonc index 3bb199e28d..99c9f7462c 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -104,6 +104,9 @@ "suspicious": { "noArrayIndexKey": "off", "noDoubleEquals": "off" // TODO: Enable this rule + }, + "performance": { + "noAccumulatingSpread": "off" // TODO: Enable this rule } }, "ignore": [] From dbc3e8febc234981e068dabadd7ad790a663bd5b Mon Sep 17 00:00:00 2001 From: Michael Marszalek Date: Wed, 31 Jul 2024 12:39:48 +0200 Subject: [PATCH 14/36] lint code with biome --- .../_components/Contributors/Contributors.tsx | 3 +- apps/storefront/components/Image/Image.tsx | 12 ++-- .../components/ImageBanner/ImageBanner.tsx | 69 ++++--------------- .../Tokens/TokenColor/TokenColor.tsx | 2 +- .../Information/Information.tsx | 1 - apps/theme/app/page.tsx | 5 +- .../components/ColorPicker/ColorPicker.tsx | 2 +- packages/cli/src/colors/colorUtils.ts | 61 ++++++++-------- packages/cli/src/colors/themeUtils.ts | 2 +- .../cli/src/tokens/utils/permutateThemes.ts | 2 +- .../components/Accordion/AccordionHeading.tsx | 2 +- .../DropdownMenu/DropdownMenuContent.tsx | 2 +- .../src/components/Modal/ModalDialog.tsx | 11 +-- .../src/components/Popover/PopoverContent.tsx | 4 +- .../ToggleGroup/ToggleGroup.test.tsx | 33 ++++----- .../form/Checkbox/Group/Group.test.tsx | 27 +++----- .../src/components/form/Combobox/Combobox.tsx | 2 +- .../src/components/form/Combobox/index.ts | 6 +- .../form/Combobox/internal/ComboboxInput.tsx | 2 +- .../form/Combobox/useComboboxKeyboard.tsx | 3 +- .../form/Radio/Group/Group.test.tsx | 24 ++----- .../src/components/form/Search/Search.tsx | 2 +- .../utilities/RovingFocus/useRovingFocus.ts | 2 +- plugins/figma-plugin/src/plugin/plugin.ts | 15 ++-- test/vitest.d.ts | 4 +- 25 files changed, 111 insertions(+), 187 deletions(-) diff --git a/apps/storefront/app/bloggen/_components/Contributors/Contributors.tsx b/apps/storefront/app/bloggen/_components/Contributors/Contributors.tsx index 00ec7cfe8b..69a5625c31 100644 --- a/apps/storefront/app/bloggen/_components/Contributors/Contributors.tsx +++ b/apps/storefront/app/bloggen/_components/Contributors/Contributors.tsx @@ -27,8 +27,7 @@ export const Contributors = ({ authors }: ContributorsProps) => { size='sm' className={classes.meta} > - {authors && - authors.map((author, index) => ( + {authors?.map((author, index) => ( {index !== 0 && ( { boxShadow: boolean; caption: string; } @@ -20,12 +18,10 @@ const Image = ({ alt, src, boxShadow, caption, ...rest }: ImageProps) => { src={src} alt={alt} {...rest} + aria-label={alt} > {caption && ( - +
{caption}
)} diff --git a/apps/storefront/components/ImageBanner/ImageBanner.tsx b/apps/storefront/components/ImageBanner/ImageBanner.tsx index 88fe807da0..8398b8eb2d 100644 --- a/apps/storefront/components/ImageBanner/ImageBanner.tsx +++ b/apps/storefront/components/ImageBanner/ImageBanner.tsx @@ -1,11 +1,11 @@ 'use client'; -import type React from 'react'; import type { ButtonProps } from '@digdir/designsystemet-react'; -import { useEffect, useState, createElement } from 'react'; +import { Button, Link } from '@digdir/designsystemet-react'; +import { Container } from '@repo/components'; import cl from 'clsx/lite'; -import { Link, Button } from '@digdir/designsystemet-react'; import NextLink from 'next/link'; -import { Container } from '@repo/components'; +import type React from 'react'; +import { createElement, useEffect, useState } from 'react'; import classes from './ImageBanner.module.css'; @@ -67,7 +67,7 @@ const ImageBanner = ({ }, [headingLevel, title]); return ( -
+
{imgPosition === 'left' && (
{videoSrc && ( -