From 1ec4e49fa9b9a2d320b246eb5f53af28941c93b8 Mon Sep 17 00:00:00 2001 From: "renovate-with-github-actions[bot]" <263958492+renovate-with-github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 10:27:49 +0000 Subject: [PATCH 1/3] chore(deps): update eslint monorepo to v10 --- package.json | 4 +- yarn.lock | 227 +++++++++++++++++++-------------------------------- 2 files changed, 87 insertions(+), 144 deletions(-) diff --git a/package.json b/package.json index 4bd09f08..aae05552 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@babel/preset-env": "7.29.2", "@babel/preset-react": "7.28.5", "@babel/preset-typescript": "7.28.5", - "@eslint/js": "9.39.4", + "@eslint/js": "10.0.1", "@semantic-release/commit-analyzer": "13.0.1", "@semantic-release/github": "12.0.6", "@semantic-release/npm": "13.1.5", @@ -118,7 +118,7 @@ "babel-jest": "30.3.0", "conventional-changelog-conventionalcommits": "9.3.1", "cross-env": "10.1.0", - "eslint": "9.39.4", + "eslint": "10.2.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-prettier": "5.5.5", diff --git a/yarn.lock b/yarn.lock index 51c59336..0363ea28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2318,13 +2318,6 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.12.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 - languageName: node - linkType: hard - "@eslint-community/regexpp@npm:^4.12.2": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" @@ -2332,73 +2325,61 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.21.2": - version: 0.21.2 - resolution: "@eslint/config-array@npm:0.21.2" +"@eslint/config-array@npm:^0.23.5": + version: 0.23.5 + resolution: "@eslint/config-array@npm:0.23.5" dependencies: - "@eslint/object-schema": "npm:^2.1.7" + "@eslint/object-schema": "npm:^3.0.5" debug: "npm:^4.3.1" - minimatch: "npm:^3.1.5" - checksum: 10c0/89dfe815d18456177c0a1f238daf4593107fd20298b3598e0103054360d3b8d09d967defd8318f031185d68df1f95cfa68becf1390a9c5c6887665f1475142e3 + minimatch: "npm:^10.2.4" + checksum: 10c0/b24833c4c76e78ee075d306cd3f095db46b2db0f90cc13a6ee6e4275f9889731c05bf5403ab5fefb79c756e07ac9184ed0e04570341382f9eccbccc80e6d1a0c languageName: node linkType: hard -"@eslint/config-helpers@npm:^0.4.2": - version: 0.4.2 - resolution: "@eslint/config-helpers@npm:0.4.2" +"@eslint/config-helpers@npm:^0.5.5": + version: 0.5.5 + resolution: "@eslint/config-helpers@npm:0.5.5" dependencies: - "@eslint/core": "npm:^0.17.0" - checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 + "@eslint/core": "npm:^1.2.1" + checksum: 10c0/18889c062cd6bdbd4cd92fe57318c44465ea66184aa0ba204a4420712c66764c64093a7905b6c2ffde23e51b268ca2cec1a39c605d336bebf17ee1ba4f0fc0bb languageName: node linkType: hard -"@eslint/core@npm:^0.17.0": - version: 0.17.0 - resolution: "@eslint/core@npm:0.17.0" +"@eslint/core@npm:^1.2.1": + version: 1.2.1 + resolution: "@eslint/core@npm:1.2.1" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e + checksum: 10c0/10979b40588ecfef771fcb5013a542a35fb30692cc95a65f3481b0b36fbd89f5679efeb30d57f4eed35203d859aabace2a620177d6c536f71b299a1af2f3398f languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.5": - version: 3.3.5 - resolution: "@eslint/eslintrc@npm:3.3.5" - dependencies: - ajv: "npm:^6.14.0" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.1" - minimatch: "npm:^3.1.5" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/9fb9f1ca65e46d6173966e3aaa5bd353e3a65d7f1f582bebf77f578fab7d7960a399fac1ecfb1e7d52bd61f5cefd6531087ca52a3a3c388f2e1b4f1ebd3da8b7 - languageName: node - linkType: hard - -"@eslint/js@npm:9.39.4": - version: 9.39.4 - resolution: "@eslint/js@npm:9.39.4" - checksum: 10c0/5aa7dea2cbc5decf7f5e3b0c6f86a084ccee0f792d288ca8e839f8bc1b64e03e227068968e49b26096e6f71fd857ab6e42691d1b993826b9a3883f1bdd7a0e46 +"@eslint/js@npm:10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/9f3fcaf71ba7fdf65d82e8faad6ecfe97e11801cc3c362b306a88ea1ed1344ae0d35330dddb0e8ad18f010f6687a70b75491b9e01c8af57acd7987cee6b3ec6c languageName: node linkType: hard -"@eslint/object-schema@npm:^2.1.7": - version: 2.1.7 - resolution: "@eslint/object-schema@npm:2.1.7" - checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 +"@eslint/object-schema@npm:^3.0.5": + version: 3.0.5 + resolution: "@eslint/object-schema@npm:3.0.5" + checksum: 10c0/1db337431f520b99e9edda64ef5fafd7ec6a029843eeb608753025125b6649d861d843cffafafd3c4e37926d7d5f9ec0c6a8e3665c13c3da2144e8132892e92e languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.4.1": - version: 0.4.1 - resolution: "@eslint/plugin-kit@npm:0.4.1" +"@eslint/plugin-kit@npm:^0.7.1": + version: 0.7.1 + resolution: "@eslint/plugin-kit@npm:0.7.1" dependencies: - "@eslint/core": "npm:^0.17.0" + "@eslint/core": "npm:^1.2.1" levn: "npm:^0.4.1" - checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b + checksum: 10c0/335b0c1c46fd906cb50bd5ce442b9cee18dc44342ce35c718ba4a63d1aa51d2797f16a517b2f4fe371ccd777b6862fafb2dc8195e00e69197ef4cb17ab32c01b languageName: node linkType: hard @@ -5715,7 +5696,7 @@ __metadata: "@babel/preset-env": "npm:7.29.2" "@babel/preset-react": "npm:7.28.5" "@babel/preset-typescript": "npm:7.28.5" - "@eslint/js": "npm:9.39.4" + "@eslint/js": "npm:10.0.1" "@floating-ui/react": "npm:0.27.19" "@radix-ui/colors": "npm:2.1.0" "@radix-ui/react-accessible-icon": "npm:1.1.8" @@ -5775,7 +5756,7 @@ __metadata: conventional-changelog-conventionalcommits: "npm:9.3.1" cross-env: "npm:10.1.0" date-fns: "npm:4.1.0" - eslint: "npm:9.39.4" + eslint: "npm:10.2.1" eslint-config-prettier: "npm:10.1.8" eslint-plugin-jsx-a11y: "npm:6.10.2" eslint-plugin-prettier: "npm:5.5.5" @@ -5923,6 +5904,13 @@ __metadata: languageName: node linkType: hard +"@types/esrecurse@npm:^4.3.1": + version: 4.3.1 + resolution: "@types/esrecurse@npm:4.3.1" + checksum: 10c0/90dad74d5da3ad27606d8e8e757322f33171cfeaa15ad558b615cf71bb2a516492d18f55f4816384685a3eb2412142e732bbae9a4a7cd2cf3deb7572aa4ebe03 + languageName: node + linkType: hard + "@types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" @@ -5930,7 +5918,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.6": +"@types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 @@ -6813,21 +6801,21 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.12.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn@npm:^8.14.0, acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec languageName: node linkType: hard -"acorn@npm:^8.14.0, acorn@npm:^8.15.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" +"acorn@npm:^8.16.0": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e languageName: node linkType: hard @@ -9533,13 +9521,15 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.4.0": - version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0" +"eslint-scope@npm:^9.1.2": + version: 9.1.2 + resolution: "eslint-scope@npm:9.1.2" dependencies: + "@types/esrecurse": "npm:^4.3.1" + "@types/estree": "npm:^1.0.8" esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 + checksum: 10c0/9fb8bca5a73e5741efb6cec84467027b6cb6f4203ff9b43a938e272c5cd30800bde46a5c20dfd1609f840225f0b62b7673be391b20acadf8658ca9fa4729b3dd languageName: node linkType: hard @@ -9550,52 +9540,35 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.0.0": - version: 4.0.0 - resolution: "eslint-visitor-keys@npm:4.0.0" - checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^5.0.0": +"eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": version: 5.0.1 resolution: "eslint-visitor-keys@npm:5.0.1" checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 languageName: node linkType: hard -"eslint@npm:9.39.4": - version: 9.39.4 - resolution: "eslint@npm:9.39.4" +"eslint@npm:10.2.1": + version: 10.2.1 + resolution: "eslint@npm:10.2.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.2" - "@eslint/config-helpers": "npm:^0.4.2" - "@eslint/core": "npm:^0.17.0" - "@eslint/eslintrc": "npm:^3.3.5" - "@eslint/js": "npm:9.39.4" - "@eslint/plugin-kit": "npm:^0.4.1" + "@eslint-community/regexpp": "npm:^4.12.2" + "@eslint/config-array": "npm:^0.23.5" + "@eslint/config-helpers": "npm:^0.5.5" + "@eslint/core": "npm:^1.2.1" + "@eslint/plugin-kit": "npm:^0.7.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" ajv: "npm:^6.14.0" - chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.2.1" - espree: "npm:^10.4.0" - esquery: "npm:^1.5.0" + eslint-scope: "npm:^9.1.2" + eslint-visitor-keys: "npm:^5.0.1" + espree: "npm:^11.2.0" + esquery: "npm:^1.7.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^8.0.0" @@ -9605,8 +9578,7 @@ __metadata: imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.5" + minimatch: "npm:^10.2.4" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" peerDependencies: @@ -9616,29 +9588,18 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/1955067c2d991f0c84f4c4abfafe31bb47fa3b717a7fd3e43fe1e511c6f859d7700cbca969f85661dc4c130f7aeced5e5444884314198a54428f5e5141db9337 - languageName: node - linkType: hard - -"espree@npm:^10.0.1": - version: 10.1.0 - resolution: "espree@npm:10.1.0" - dependencies: - acorn: "npm:^8.12.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.0.0" - checksum: 10c0/52e6feaa77a31a6038f0c0e3fce93010a4625701925b0715cd54a2ae190b3275053a0717db698697b32653788ac04845e489d6773b508d6c2e8752f3c57470a0 + checksum: 10c0/176795a3794a785502fa5cd14a9609264c2be5405552d20fed3e499bd465c29639c91ac44619ae66787b0fb7494e72d112550a2136a735d92a26bc6a7af4915c languageName: node linkType: hard -"espree@npm:^10.4.0": - version: 10.4.0 - resolution: "espree@npm:10.4.0" +"espree@npm:^11.2.0": + version: 11.2.0 + resolution: "espree@npm:11.2.0" dependencies: - acorn: "npm:^8.15.0" + acorn: "npm:^8.16.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + eslint-visitor-keys: "npm:^5.0.1" + checksum: 10c0/cf87e18ffd9dc113eb8d16588e7757701bc10c9934a71cce8b89c2611d51672681a918307bd6b19ac3ccd0e7ba1cbccc2f815b36b52fa7e73097b251014c3d81 languageName: node linkType: hard @@ -9652,12 +9613,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 languageName: node linkType: hard @@ -10459,13 +10420,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d - languageName: node - linkType: hard - "globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -10832,7 +10786,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -12416,17 +12370,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.1": - version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 - languageName: node - linkType: hard - "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -13144,7 +13087,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:4.6.2, lodash.merge@npm:^4.6.2": +"lodash.merge@npm:4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 @@ -13513,7 +13456,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.5": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: From ed811ef450209ff307912479f77524e24f447d0c Mon Sep 17 00:00:00 2001 From: Massimiliano D'Elia Date: Tue, 28 Apr 2026 16:13:04 +0200 Subject: [PATCH 2/3] fix: replace eslint-plugin-react and eslint-plugin-react-hooks, and lint --- .yarnrc.yml | 5 + components/AriaTable/AriaTable.tsx | 2 +- components/Badge/Badge.stories.tsx | 2 +- components/Badge/Badge.tsx | 2 +- .../DateTimePicker/DateTimePicker.stories.tsx | 4 +- .../DateTimePickerInput.stories.tsx | 7 +- .../DateTimePickerInput.tsx | 6 +- components/Heading/Heading.vanilla.tsx | 3 + .../NavigationTree/NavigationTreeItem.tsx | 2 +- components/SidePanel/SidePanel.stories.tsx | 6 +- components/Skeleton/Skeleton.stories.tsx | 12 +- components/Text/Text.stories.tsx | 2 + eslint.config.js | 19 +- package.json | 3 +- yarn.lock | 1331 ++++------------- 15 files changed, 308 insertions(+), 1098 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index edc39ef2..efbc8e70 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -3,3 +3,8 @@ enableHardenedMode: false enableScripts: false nodeLinker: node-modules + +packageExtensions: + "eslint-plugin-jsx-a11y@*": + peerDependencies: + eslint: "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 || ^10" diff --git a/components/AriaTable/AriaTable.tsx b/components/AriaTable/AriaTable.tsx index 032b007e..7f32aaba 100644 --- a/components/AriaTable/AriaTable.tsx +++ b/components/AriaTable/AriaTable.tsx @@ -154,7 +154,7 @@ export const Tr = forwardRef, AriaTrProps>( ) : null, - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [isCollapsed], ); diff --git a/components/Badge/Badge.stories.tsx b/components/Badge/Badge.stories.tsx index 1ce2a494..f3952844 100644 --- a/components/Badge/Badge.stories.tsx +++ b/components/Badge/Badge.stories.tsx @@ -74,7 +74,7 @@ export const Interactive: StoryFn = (args) => ( Default {COLORS.map((color) => ( - + {color} ))} diff --git a/components/Badge/Badge.tsx b/components/Badge/Badge.tsx index 3e1756db..2fcb5673 100644 --- a/components/Badge/Badge.tsx +++ b/components/Badge/Badge.tsx @@ -146,7 +146,7 @@ export const Badge = React.forwardRef return asChild ? StyledButtonBadgeSlot : StyledButtonBadge; } return asChild ? StyledSpanBadgeSlot : StyledSpanBadge; - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [asChild]); return ; diff --git a/components/DateTimePicker/DateTimePicker.stories.tsx b/components/DateTimePicker/DateTimePicker.stories.tsx index b34b657e..5f7ac68b 100644 --- a/components/DateTimePicker/DateTimePicker.stories.tsx +++ b/components/DateTimePicker/DateTimePicker.stories.tsx @@ -42,7 +42,7 @@ const Component: Meta = { }; const DateTimePickerTemplate: StoryFn = (args) => { - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); const [minDate] = useState(() => new Date(args.minDate || Date.now())); return ( @@ -53,7 +53,7 @@ const DateTimePickerTemplate: StoryFn = (args) => minDate, }} calendar={{ mode: args.calendarMode, startDay: 1 }} - onDatesChange={onDatesChange} + onDatesChange={setSelectedDates} selectedDates={selectedDates} /> diff --git a/components/DateTimePickerInput/DateTimePickerInput.stories.tsx b/components/DateTimePickerInput/DateTimePickerInput.stories.tsx index 1a621fa6..955f0f6f 100644 --- a/components/DateTimePickerInput/DateTimePickerInput.stories.tsx +++ b/components/DateTimePickerInput/DateTimePickerInput.stories.tsx @@ -52,7 +52,8 @@ const Component: Meta = { }; const DateTimePickerTemplate: StoryFn = (args) => { - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); + const [minDate] = useState(() => new Date()); return (
@@ -60,9 +61,9 @@ const DateTimePickerTemplate: StoryFn = (arg diff --git a/components/DateTimePickerInput/DateTimePickerInput.tsx b/components/DateTimePickerInput/DateTimePickerInput.tsx index c0d1da13..19fb1a81 100644 --- a/components/DateTimePickerInput/DateTimePickerInput.tsx +++ b/components/DateTimePickerInput/DateTimePickerInput.tsx @@ -116,7 +116,7 @@ export const DateTimePickerInput = React.forwardRef< const arrowRef = useRef(null); const [inputValue, setInputValue] = useState(''); - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); const [isPickerOpen, setIsPickerOpen] = useState(false); const middleware = useMemo( @@ -159,7 +159,7 @@ export const DateTimePickerInput = React.forwardRef< const newDates = (value as string) .split(',') .map((d) => parse(d.trim(), formatStr, new Date())); - onDatesChange(newDates); + setSelectedDates(newDates); if (onChange) onChange(newDates); // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (err) { @@ -183,7 +183,7 @@ export const DateTimePickerInput = React.forwardRef< {...pickerProps} css={pickerCSS} onDatesChange={(d) => { - onDatesChange(d); + setSelectedDates(d); setInputValue(d.map((date) => format(date, formatStr)).join(', ')); if (onChange) onChange(d); }} diff --git a/components/Heading/Heading.vanilla.tsx b/components/Heading/Heading.vanilla.tsx index 39cd9962..235b37e4 100644 --- a/components/Heading/Heading.vanilla.tsx +++ b/components/Heading/Heading.vanilla.tsx @@ -39,6 +39,9 @@ function createHeadingComponent( type HeadingComponent = PolymorphicComponent>; const HeadingImpl = forwardRef( + // Safe: factory is called once at module load (e.g. `export const H1 = createHeading(...)`), + // not inside a render, so HeadingImpl gets a stable reference; no remount on re-render. + // eslint-disable-next-line @eslint-react/component-hook-factories ( { as, className, css, style, transform, ...props }: HeadingProps, ref?: PolymorphicRef, diff --git a/components/NavigationTree/NavigationTreeItem.tsx b/components/NavigationTree/NavigationTreeItem.tsx index 16ecc563..a8e39ac5 100644 --- a/components/NavigationTree/NavigationTreeItem.tsx +++ b/components/NavigationTree/NavigationTreeItem.tsx @@ -70,7 +70,7 @@ export const NavigationTreeItem = ({ }, }, }; - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [isExpandable, nestedChildrenLevel]); const focusStyle = useMemo(() => { diff --git a/components/SidePanel/SidePanel.stories.tsx b/components/SidePanel/SidePanel.stories.tsx index 92fc63fc..fd1e774f 100644 --- a/components/SidePanel/SidePanel.stories.tsx +++ b/components/SidePanel/SidePanel.stories.tsx @@ -88,11 +88,11 @@ Basic.args = { export const CombinedWithModal: StoryFn = (args) => { const [open, setOpen] = useState(false); - const [isModalOpen, setModalOpen] = useState(false); + const [isModalOpen, setIsModalOpen] = useState(false); return ( <> - setModalOpen(isModalOpen)}> + setIsModalOpen(isModalOpen)}> @@ -102,7 +102,7 @@ export const CombinedWithModal: StoryFn = (args) => { setOpen(isOpen)}> - setModalOpen(true)} /> + setIsModalOpen(true)} /> diff --git a/components/Skeleton/Skeleton.stories.tsx b/components/Skeleton/Skeleton.stories.tsx index 6b9c3df0..c811b1fa 100644 --- a/components/Skeleton/Skeleton.stories.tsx +++ b/components/Skeleton/Skeleton.stories.tsx @@ -90,7 +90,7 @@ export const Typographies: StoryFn = () => ( {TEXT_SIZES.map((size) => ( - + ))} @@ -102,7 +102,7 @@ const AVATAR_SIZES = ['1', '2', '3', '4', '5', '6'] as const; export const Avatars: StoryFn = () => ( {AVATAR_SIZES.map((size) => ( - + @@ -187,15 +187,15 @@ export const Customs: StoryFn = () => ( {Array(10) .fill(0) - .map(() => ( - + .map((_, i) => ( + ))} {Array(10) .fill(0) - .map(() => ( - + .map((_, i) => ( + ))} diff --git a/components/Text/Text.stories.tsx b/components/Text/Text.stories.tsx index 59af7d7b..406b7791 100644 --- a/components/Text/Text.stories.tsx +++ b/components/Text/Text.stories.tsx @@ -72,6 +72,7 @@ export const Transform: StoryFn = ({ ...args }) => ( {VARIANT_PARENTS.map((color) => ( = ({ ...args }) => ( {SIZE_PARENTS.map((fontSize) => ( ": - 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" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" @@ -16031,19 +15510,6 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - has-symbols: "npm:^1.1.0" - isarray: "npm:^2.0.5" - checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d - languageName: node - linkType: hard - "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -16051,16 +15517,6 @@ __metadata: languageName: node linkType: hard -"safe-push-apply@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - isarray: "npm:^2.0.5" - checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 - languageName: node - linkType: hard - "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -16072,17 +15528,6 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -16205,7 +15650,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": +"set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -16219,7 +15664,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": +"set-function-name@npm:^2.0.1": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: @@ -16231,17 +15676,6 @@ __metadata: languageName: node linkType: hard -"set-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "set-proto@npm:1.0.0" - dependencies: - dunder-proto: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -16258,41 +15692,6 @@ __metadata: languageName: node linkType: hard -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -16305,19 +15704,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -16567,16 +15953,6 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.1.0": - version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - internal-slot: "npm:^1.1.0" - checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 - languageName: node - linkType: hard - "storybook@npm:10.3.5": version: 10.3.5 resolution: "storybook@npm:10.3.5" @@ -16632,6 +16008,13 @@ __metadata: languageName: node linkType: hard +"string-ts@npm:^2.3.1": + version: 2.3.1 + resolution: "string-ts@npm:2.3.1" + checksum: 10c0/14b2829934713bf6cdf7ea54d948283af345e5c505bfb505aca949ab67235cbc99a3e335581f8a91f68935ac52c0d44b32112618658371e5593d5a75f26b3048 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -16707,52 +16090,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.12": - version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - regexp.prototype.flags: "npm:^1.5.3" - set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c - languageName: node - linkType: hard - -"string.prototype.repeat@npm:^1.0.0": - version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.10": - version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-data-property: "npm:^1.1.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-object-atoms: "npm:^1.0.0" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -16776,18 +16113,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.9": - version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 - languageName: node - linkType: hard - "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimstart@npm:1.0.8" @@ -17384,6 +16709,13 @@ __metadata: languageName: node linkType: hard +"ts-pattern@npm:^5.9.0": + version: 5.9.0 + resolution: "ts-pattern@npm:5.9.0" + checksum: 10c0/7640db25c39d29b287471b2b82d4f7b4674a02098c6ba4d10fed180adfb07d0e0c71930d9e59dc0d90654145e02fd320af63cf0df3c41e100d4154658a612a0a + languageName: node + linkType: hard + "tsconfig-paths@npm:^4.2.0": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -17498,17 +16830,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - "typed-array-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "typed-array-byte-length@npm:1.0.1" @@ -17522,19 +16843,6 @@ __metadata: languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e - languageName: node - linkType: hard - "typed-array-byte-offset@npm:^1.0.2": version: 1.0.2 resolution: "typed-array-byte-offset@npm:1.0.2" @@ -17549,21 +16857,6 @@ __metadata: languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.15" - reflect.getprototypeof: "npm:^1.0.9" - checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 - languageName: node - linkType: hard - "typed-array-length@npm:^1.0.6": version: 1.0.6 resolution: "typed-array-length@npm:1.0.6" @@ -17578,20 +16871,6 @@ __metadata: languageName: node linkType: hard -"typed-array-length@npm:^1.0.7": - version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 - languageName: node - linkType: hard - "typedarray.prototype.slice@npm:^1.0.3": version: 1.0.3 resolution: "typedarray.prototype.slice@npm:1.0.3" @@ -17689,18 +16968,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.1.0": - version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - which-boxed-primitive: "npm:^1.1.1" - checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 - languageName: node - linkType: hard - "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -18310,52 +17577,6 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": - version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" - dependencies: - is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.1" - is-number-object: "npm:^1.1.1" - is-string: "npm:^1.1.1" - is-symbol: "npm:^1.1.1" - checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.2.1": - version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.1.0" - is-finalizationregistry: "npm:^1.1.0" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.2.1" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.1.0" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" - dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 - languageName: node - linkType: hard - "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" @@ -18369,21 +17590,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -18696,16 +17902,7 @@ __metadata: languageName: node linkType: hard -"zod-validation-error@npm:^3.5.0 || ^4.0.0": - version: 4.0.2 - resolution: "zod-validation-error@npm:4.0.2" - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b - languageName: node - linkType: hard - -"zod@npm:^3.25.0 || ^4.0.0": +"zod@npm:^4.3.6": version: 4.3.6 resolution: "zod@npm:4.3.6" checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307 From 3014d9c7dc685a60de355981757be73221a2f845 Mon Sep 17 00:00:00 2001 From: Massimiliano D'Elia Date: Tue, 28 Apr 2026 16:24:21 +0200 Subject: [PATCH 3/3] feat: refactor some components to address previously unnoticed issues --- components/AriaTable/AriaTable.tsx | 2 ++ components/List/List.tsx | 7 ++++--- .../NavigationTree/NavigationTreeContainer.tsx | 15 ++++++--------- .../NavigationTree/NavigationTreeContext.tsx | 16 ++++++++++++++++ .../NavigationTree/NavigationTreeDrawer.tsx | 15 +++++++-------- components/NavigationTree/NavigationTreeItem.tsx | 10 +++------- 6 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 components/NavigationTree/NavigationTreeContext.tsx diff --git a/components/AriaTable/AriaTable.tsx b/components/AriaTable/AriaTable.tsx index 7f32aaba..7d49b294 100644 --- a/components/AriaTable/AriaTable.tsx +++ b/components/AriaTable/AriaTable.tsx @@ -114,6 +114,7 @@ export const Tr = forwardRef, AriaTrProps>( const [isCollapsed, setIsCollapsed] = useState(false); if (!asChild) { + // eslint-disable-next-line @eslint-react/no-children-to-array const arrayChildren = Children.toArray(children); const hasColSpanChildren = arrayChildren.some((child) => { if (!isValidElement(child)) { @@ -160,6 +161,7 @@ export const Tr = forwardRef, AriaTrProps>( const renderedChildren = useMemo(() => { if (asChild) { + // eslint-disable-next-line @eslint-react/no-clone-element return cloneElement( children as any, { diff --git a/components/List/List.tsx b/components/List/List.tsx index d1bbf9dc..4eb3237c 100644 --- a/components/List/List.tsx +++ b/components/List/List.tsx @@ -151,8 +151,7 @@ export const Ul = React.forwardRef, ListProps> ); export interface OrderedListProps - extends ComponentProps, - VariantProps { + extends ComponentProps, VariantProps { interactive?: boolean; } @@ -187,7 +186,8 @@ const ControlsWrapper = styled('div', { }); export interface ListItemProps - extends ComponentProps, + extends + ComponentProps, VariantProps, VariantProps { controls?: ReactNode; @@ -196,6 +196,7 @@ export const Li = React.forwardRef, ListItemPr ({ children, controls, align, justify, direction, gap, wrap, ...props }, forwardedRef) => { const { interactive } = useContext(ListContext); + // eslint-disable-next-line @eslint-react/no-children-to-array const childArray = React.Children.toArray(children); const nestedLists = childArray.filter( (child) => React.isValidElement(child) && (child.type === Ul || child.type === Ol), diff --git a/components/NavigationTree/NavigationTreeContainer.tsx b/components/NavigationTree/NavigationTreeContainer.tsx index e3cf8837..2de4a316 100644 --- a/components/NavigationTree/NavigationTreeContainer.tsx +++ b/components/NavigationTree/NavigationTreeContainer.tsx @@ -3,6 +3,7 @@ import React from 'react'; import { CSS } from '../../stitches.config'; import { NavigationContainer, NavigationContainerProps } from '../Navigation'; +import { NavigationTreeContext } from './NavigationTreeContext'; export interface NavigationTreeProps { children: React.ReactNode; @@ -19,13 +20,9 @@ export const NavigationTreeContainer = ({ fullWidth = false, ...props }: NavigationTreeProps & NavigationContainerProps) => { - const renderChildren = React.Children.map(children, (child) => { - return React.cloneElement(child as React.ReactElement, { - defaultCollapseIcon, - defaultExpandIcon, - fullWidth, - }); - }); - - return {renderChildren}; + return ( + + {children} + + ); }; diff --git a/components/NavigationTree/NavigationTreeContext.tsx b/components/NavigationTree/NavigationTreeContext.tsx new file mode 100644 index 00000000..49198552 --- /dev/null +++ b/components/NavigationTree/NavigationTreeContext.tsx @@ -0,0 +1,16 @@ +import { ChevronDownIcon, ChevronRightIcon } from '@radix-ui/react-icons'; +import React from 'react'; + +interface NavigationTreeContextValue { + defaultExpandIcon: React.ReactNode; + defaultCollapseIcon: React.ReactNode; + fullWidth: boolean; +} + +export const NavigationTreeContext = React.createContext({ + defaultExpandIcon: , + defaultCollapseIcon: , + fullWidth: false, +}); + +export const useNavigationTree = () => React.useContext(NavigationTreeContext); diff --git a/components/NavigationTree/NavigationTreeDrawer.tsx b/components/NavigationTree/NavigationTreeDrawer.tsx index cdb1bc6f..b962813b 100644 --- a/components/NavigationTree/NavigationTreeDrawer.tsx +++ b/components/NavigationTree/NavigationTreeDrawer.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { CSS } from '../../stitches.config'; import { NavigationDrawer, NavigationDrawerProps } from '../Navigation'; +import { NavigationTreeContext, useNavigationTree } from './NavigationTreeContext'; export interface NavigationTreeDrawerProps { children: React.ReactNode; @@ -14,15 +15,13 @@ export const NavigationTreeDrawer = ({ fullWidth = false, ...props }: NavigationTreeDrawerProps & NavigationDrawerProps) => { - const renderChildren = React.Children.map(children, (child) => { - return React.cloneElement(child as React.ReactElement, { - fullWidth, - }); - }); + const parentCtx = useNavigationTree(); return ( - - {renderChildren} - + + + {children} + + ); }; diff --git a/components/NavigationTree/NavigationTreeItem.tsx b/components/NavigationTree/NavigationTreeItem.tsx index a8e39ac5..1599e682 100644 --- a/components/NavigationTree/NavigationTreeItem.tsx +++ b/components/NavigationTree/NavigationTreeItem.tsx @@ -6,6 +6,7 @@ import { Flex } from '../Flex'; import { NavigationItem, NavigationItemProps } from '../Navigation'; import { Text } from '../Text'; import { NavigationTreeContainer } from './NavigationTreeContainer'; +import { useNavigationTree } from './NavigationTreeContext'; export interface NavigationTreeItemProps { label: string | ReactNode; @@ -13,12 +14,9 @@ export interface NavigationTreeItemProps { children?: React.ReactNode; defaultExpanded?: boolean; onClick?: () => void; - defaultExpandIcon?: React.ReactNode; - defaultCollapseIcon?: React.ReactNode; customExpandIcon?: React.ReactNode; customCollapseIcon?: React.ReactNode; nestedChildrenLevel?: number; - fullWidth?: boolean; } export const NavigationTreeItem = ({ @@ -27,16 +25,14 @@ export const NavigationTreeItem = ({ children, onClick, defaultExpanded = false, - defaultCollapseIcon, - defaultExpandIcon, customCollapseIcon, customExpandIcon, nestedChildrenLevel = 1, - fullWidth = false, ...props }: NavigationTreeItemProps & NavigationItemProps) => { + const { defaultCollapseIcon, defaultExpandIcon, fullWidth } = useNavigationTree(); const [isExpanded, setIsExpanded] = useState(defaultExpanded); - const isExpandable = useMemo(() => React.Children.count(children) > 0, [children]); + const isExpandable = useMemo(() => !!children, [children]); const hasStartAdornment = useMemo(() => !!props.startAdornment, [props.startAdornment]); const usedStartAdornment = useMemo( () =>