From 68970f59083cfd090012d402d228d257f4e0ae49 Mon Sep 17 00:00:00 2001 From: Thomas Camlong Date: Mon, 29 Sep 2025 10:55:52 +0200 Subject: [PATCH 001/121] chore: update biome config + package dependencies - Deleted the biome.json configuration file. - Updated dependencies in package.json: - lucide-react from ^0.543.0 to ^0.544.0 - next from 15.5.2 to 15.5.4 - posthog-js from ^1.262.0 to ^1.268.7 - posthog-node from ^5.8.2 to ^5.9.1 - @biomejs/biome from 1.9.4 to 2.2.4 - Updated package manager version from pnpm@10.15.1 to pnpm@10.17.1 --- web/{biome.json => biome.jsonc} | 21 ++-- web/package.json | 12 +- web/pnpm-lock.yaml | 196 ++++++++++++++++---------------- 3 files changed, 118 insertions(+), 111 deletions(-) rename web/{biome.json => biome.jsonc} (65%) diff --git a/web/biome.json b/web/biome.jsonc similarity index 65% rename from web/biome.json rename to web/biome.jsonc index 6738ae2b..d8a9893e 100644 --- a/web/biome.json +++ b/web/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", "vcs": { "enabled": true, "clientKind": "git", @@ -7,15 +7,16 @@ }, "files": { "ignoreUnknown": false, - "ignore": ["src/components/ui/**"] + "includes": [ + "src/**", + "!src/components/ui" + ] }, "formatter": { + "lineWidth": 140, "enabled": true, "indentStyle": "tab" }, - "organizeImports": { - "enabled": true - }, "linter": { "enabled": true, "rules": { @@ -25,11 +26,17 @@ } } }, + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } + }, "javascript": { "formatter": { - "lineWidth": 140, "semicolons": "asNeeded", "quoteStyle": "double" } } -} +} \ No newline at end of file diff --git a/web/package.json b/web/package.json index a44b1760..7137f03a 100644 --- a/web/package.json +++ b/web/package.json @@ -47,12 +47,12 @@ "embla-carousel-react": "^8.6.0", "framer-motion": "^12.23.12", "input-otp": "^1.4.2", - "lucide-react": "^0.543.0", + "lucide-react": "^0.544.0", "motion": "^12.23.12", - "next": "15.5.2", + "next": "15.5.4", "next-themes": "^0.4.6", - "posthog-js": "^1.262.0", - "posthog-node": "^5.8.2", + "posthog-js": "^1.268.7", + "posthog-node": "^5.9.1", "react": "^19.1.1", "react-day-picker": "8.10.1", "react-dom": "^19.1.1", @@ -67,7 +67,7 @@ "zod": "^4.1.5" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "2.2.4", "@tailwindcss/postcss": "^4.1.13", "@types/canvas-confetti": "^1.9.0", "@types/node": "^22.18.1", @@ -77,7 +77,7 @@ "typescript": "^5.9.2", "wrangler": "^4.35.0" }, - "packageManager": "pnpm@10.15.1", + "packageManager": "pnpm@10.17.1", "pnpm": { "onlyBuiltDependencies": [ "@biomejs/biome", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 41ea229e..b8032f54 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -117,23 +117,23 @@ importers: specifier: ^1.4.2 version: 1.4.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) lucide-react: - specifier: ^0.543.0 - version: 0.543.0(react@19.1.1) + specifier: ^0.544.0 + version: 0.544.0(react@19.1.1) motion: specifier: ^12.23.12 version: 12.23.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 15.5.4 + version: 15.5.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) posthog-js: - specifier: ^1.262.0 - version: 1.265.1 + specifier: ^1.268.7 + version: 1.268.7 posthog-node: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.1 + version: 5.9.1 react: specifier: ^19.1.1 version: 19.1.1 @@ -172,8 +172,8 @@ importers: version: 4.1.5 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.2.4 + version: 2.2.4 '@tailwindcss/postcss': specifier: ^4.1.13 version: 4.1.13 @@ -209,55 +209,55 @@ packages: resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.2.4': + resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.2.4': + resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.2.4': + resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.2.4': + resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.2.4': + resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.2.4': + resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.2.4': + resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.2.4': + resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.2.4': + resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -735,53 +735,53 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@next/env@15.5.2': - resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} + '@next/env@15.5.4': + resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} - '@next/swc-darwin-arm64@15.5.2': - resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==} + '@next/swc-darwin-arm64@15.5.4': + resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.2': - resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==} + '@next/swc-darwin-x64@15.5.4': + resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.2': - resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==} + '@next/swc-linux-arm64-gnu@15.5.4': + resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.2': - resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==} + '@next/swc-linux-arm64-musl@15.5.4': + resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.2': - resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==} + '@next/swc-linux-x64-gnu@15.5.4': + resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.2': - resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==} + '@next/swc-linux-x64-musl@15.5.4': + resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.2': - resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==} + '@next/swc-win32-arm64-msvc@15.5.4': + resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.2': - resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==} + '@next/swc-win32-x64-msvc@15.5.4': + resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -795,8 +795,8 @@ packages: '@poppinss/exception@1.2.2': resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} - '@posthog/core@1.0.2': - resolution: {integrity: sha512-hWk3rUtJl2crQK0WNmwg13n82hnTwB99BT99/XI5gZSvIlYZ1TPmMZE8H2dhJJ98J/rm9vYJ/UXNzw3RV5HTpQ==} + '@posthog/core@1.2.1': + resolution: {integrity: sha512-zNw96BipqM5/Tf161Q8/K5zpwGY3ezfb2wz+Yc3fIT5OQHW8eEzkQldPgtFKMUkqImc73ukEa2IdUpS6vEGH7w==} '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -1878,8 +1878,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lucide-react@0.543.0: - resolution: {integrity: sha512-fpVfuOQO0V3HBaOA1stIiP/A2fPCXHIleRZL16Mx3HmjTYwNSbimhnFBygs2CAfU1geexMX5ItUcWBGUaqw5CA==} + lucide-react@0.544.0: + resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1940,8 +1940,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.2: - resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==} + next@15.5.4: + resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -1985,8 +1985,8 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.265.1: - resolution: {integrity: sha512-FKZtHIOBZ8pH80qXmWhoc2qUCkmOnKRdwKiyGourG03h7uV2w74cEmpVDtBxs2jSEbjMCbRi554W5lp6GsREOA==} + posthog-js@1.268.7: + resolution: {integrity: sha512-1KtdqykQ/EftFbBDbDgpdmViQ7AdRuEnDjpk4SNvNx4TtTC2JKQkDVBr+N4NDvoBbEKDO+Tn8mTEV/cMstpMSw==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 rrweb-snapshot: 2.0.0-alpha.17 @@ -1996,8 +1996,8 @@ packages: rrweb-snapshot: optional: true - posthog-node@5.8.2: - resolution: {integrity: sha512-z3XRvYwnc3T/1999FKzv16YTpxERQqLunULl2vkOPfgbCXUGNyJWLgcbTcED2ZIDE11jjZhrSph4De6OSMLphw==} + posthog-node@5.9.1: + resolution: {integrity: sha512-Tydweh2Q3s2dy1b77NOYOaBfphSUNd6zmEPbU7yCuWnz8vU0nk2jObDRUQClTMGJZnr+HSj6ZVWvosrAN1d1dQ==} engines: {node: '>=20'} preact@10.26.5: @@ -2278,39 +2278,39 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.2.4': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 + '@biomejs/cli-darwin-arm64': 2.2.4 + '@biomejs/cli-darwin-x64': 2.2.4 + '@biomejs/cli-linux-arm64': 2.2.4 + '@biomejs/cli-linux-arm64-musl': 2.2.4 + '@biomejs/cli-linux-x64': 2.2.4 + '@biomejs/cli-linux-x64-musl': 2.2.4 + '@biomejs/cli-win32-arm64': 2.2.4 + '@biomejs/cli-win32-x64': 2.2.4 - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64@2.2.4': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.2.4': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.2.4': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.2.4': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.2.4': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.2.4': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.2.4': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.2.4': optional: true '@cloudflare/kv-asset-handler@0.4.0': @@ -2635,30 +2635,30 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@next/env@15.5.2': {} + '@next/env@15.5.4': {} - '@next/swc-darwin-arm64@15.5.2': + '@next/swc-darwin-arm64@15.5.4': optional: true - '@next/swc-darwin-x64@15.5.2': + '@next/swc-darwin-x64@15.5.4': optional: true - '@next/swc-linux-arm64-gnu@15.5.2': + '@next/swc-linux-arm64-gnu@15.5.4': optional: true - '@next/swc-linux-arm64-musl@15.5.2': + '@next/swc-linux-arm64-musl@15.5.4': optional: true - '@next/swc-linux-x64-gnu@15.5.2': + '@next/swc-linux-x64-gnu@15.5.4': optional: true - '@next/swc-linux-x64-musl@15.5.2': + '@next/swc-linux-x64-musl@15.5.4': optional: true - '@next/swc-win32-arm64-msvc@15.5.2': + '@next/swc-win32-arm64-msvc@15.5.4': optional: true - '@next/swc-win32-x64-msvc@15.5.2': + '@next/swc-win32-x64-msvc@15.5.4': optional: true '@poppinss/colors@4.1.5': @@ -2673,7 +2673,7 @@ snapshots: '@poppinss/exception@1.2.2': {} - '@posthog/core@1.0.2': {} + '@posthog/core@1.2.1': {} '@radix-ui/number@1.1.1': {} @@ -3724,7 +3724,7 @@ snapshots: dependencies: js-tokens: 4.0.0 - lucide-react@0.543.0(react@19.1.1): + lucide-react@0.544.0(react@19.1.1): dependencies: react: 19.1.1 @@ -3781,9 +3781,9 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - next@15.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next@15.5.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@next/env': 15.5.2 + '@next/env': 15.5.4 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001726 postcss: 8.4.31 @@ -3791,14 +3791,14 @@ snapshots: react-dom: 19.1.1(react@19.1.1) styled-jsx: 5.1.6(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.2 - '@next/swc-darwin-x64': 15.5.2 - '@next/swc-linux-arm64-gnu': 15.5.2 - '@next/swc-linux-arm64-musl': 15.5.2 - '@next/swc-linux-x64-gnu': 15.5.2 - '@next/swc-linux-x64-musl': 15.5.2 - '@next/swc-win32-arm64-msvc': 15.5.2 - '@next/swc-win32-x64-msvc': 15.5.2 + '@next/swc-darwin-arm64': 15.5.4 + '@next/swc-darwin-x64': 15.5.4 + '@next/swc-linux-arm64-gnu': 15.5.4 + '@next/swc-linux-arm64-musl': 15.5.4 + '@next/swc-linux-x64-gnu': 15.5.4 + '@next/swc-linux-x64-musl': 15.5.4 + '@next/swc-win32-arm64-msvc': 15.5.4 + '@next/swc-win32-x64-msvc': 15.5.4 sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' @@ -3826,17 +3826,17 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.265.1: + posthog-js@1.268.7: dependencies: - '@posthog/core': 1.0.2 + '@posthog/core': 1.2.1 core-js: 3.41.0 fflate: 0.4.8 preact: 10.26.5 web-vitals: 4.2.4 - posthog-node@5.8.2: + posthog-node@5.9.1: dependencies: - '@posthog/core': 1.0.2 + '@posthog/core': 1.2.1 preact@10.26.5: {} From b5c72677fcd1b61e91b8cbfce98face8fa1d7321 Mon Sep 17 00:00:00 2001 From: Thomas Camlong Date: Mon, 29 Sep 2025 11:01:14 +0200 Subject: [PATCH 002/121] chore: format codebase --- web/biome.jsonc | 9 +- web/src/app/error.tsx | 11 +- web/src/app/globals.css | 46 ++-- web/src/app/icons/[icon]/opengraph-image.tsx | 4 +- web/src/app/icons/[icon]/page.tsx | 21 +- web/src/app/icons/layout.tsx | 2 +- web/src/app/icons/opengraph-image.tsx | 2 +- web/src/app/icons/page.tsx | 2 +- web/src/app/layout.tsx | 12 +- web/src/app/not-found.tsx | 10 +- web/src/app/sitemap.ts | 2 +- web/src/components/carbon.tsx | 11 +- web/src/components/command-menu.tsx | 12 +- web/src/components/footer.tsx | 2 +- web/src/components/header-nav.tsx | 2 +- web/src/components/header.tsx | 6 +- web/src/components/heart.tsx | 3 +- web/src/components/hero.tsx | 10 +- web/src/components/icon-actions.tsx | 213 ++++++++---------- web/src/components/icon-card.tsx | 14 +- web/src/components/icon-details.tsx | 63 ++---- web/src/components/icon-grid.tsx | 3 +- web/src/components/icon-search.tsx | 15 +- web/src/components/icon-submission-form.tsx | 6 +- web/src/components/license-notice.tsx | 4 +- .../magicui/interactive-hover-button.tsx | 2 +- web/src/components/magicui/marquee.tsx | 2 +- web/src/components/recently-added-icons.tsx | 16 +- web/src/components/theme-switcher.tsx | 3 +- web/src/lib/utils.ts | 2 +- 30 files changed, 220 insertions(+), 290 deletions(-) diff --git a/web/biome.jsonc b/web/biome.jsonc index d8a9893e..b006be2d 100644 --- a/web/biome.jsonc +++ b/web/biome.jsonc @@ -7,10 +7,7 @@ }, "files": { "ignoreUnknown": false, - "includes": [ - "src/**", - "!src/components/ui" - ] + "includes": ["src/**", "!src/components/ui"] }, "formatter": { "lineWidth": 140, @@ -22,6 +19,8 @@ "rules": { "recommended": true, "suspicious": { + "noExplicitAny": "off", + "noUnknownAtRules": "off", "noArrayIndexKey": "off" } } @@ -39,4 +38,4 @@ "quoteStyle": "double" } } -} \ No newline at end of file +} diff --git a/web/src/app/error.tsx b/web/src/app/error.tsx index 817702ae..00c703fc 100644 --- a/web/src/app/error.tsx +++ b/web/src/app/error.tsx @@ -1,18 +1,11 @@ "use client" -import { Button } from "@/components/ui/button" import { AlertTriangle, ArrowLeft, RefreshCcw } from "lucide-react" -import Link from "next/link" import { useRouter } from "next/navigation" import { useEffect } from "react" +import { Button } from "@/components/ui/button" -export default function ErrorPage({ - error, - reset, -}: { - error: Error & { digest?: string } - reset: () => void -}) { +export default function ErrorPage({ error, reset }: { error: Error & { digest?: string }; reset: () => void }) { const router = useRouter() useEffect(() => { diff --git a/web/src/app/globals.css b/web/src/app/globals.css index 7b0f563e..15d912d9 100644 --- a/web/src/app/globals.css +++ b/web/src/app/globals.css @@ -125,20 +125,20 @@ --background: oklch(0.99 0 0); --foreground: oklch(0.32 0 0); - --card: oklch(1.0 0 0); + --card: oklch(1 0 0); --card-foreground: oklch(0.32 0 0); - --popover: oklch(1.0 0 0); + --popover: oklch(1 0 0); --popover-foreground: oklch(0.32 0 0); --primary: oklch(0.67 0.2 23.8); - --primary-foreground: oklch(1.0 0 0); - --secondary: oklch(0.97 0.0 264.54); + --primary-foreground: oklch(1 0 0); + --secondary: oklch(0.97 0 264.54); --secondary-foreground: oklch(0.45 0.03 256.8); - --muted: oklch(0.98 0.0 247.84); + --muted: oklch(0.98 0 247.84); --muted-foreground: oklch(0.55 0.02 264.36); --accent: oklch(0.967 0.001 286.375); --accent-foreground: oklch(0.21 0.006 285.885); --destructive: oklch(0.64 0.21 25.33); - --destructive-foreground: oklch(1.0 0 0); + --destructive-foreground: oklch(1 0 0); --border: oklch(0.9 0.01 247.88); --input: oklch(0.92 0.004 286.32); @@ -159,16 +159,11 @@ --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05); --shadow-xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05); - --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px - hsl(0 0% 0% / 0.1); - --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px - hsl(0 0% 0% / 0.1); - --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 2px 4px -1px - hsl(0 0% 0% / 0.1); - --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 4px 6px -1px - hsl(0 0% 0% / 0.1); - --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 8px 10px -1px - hsl(0 0% 0% / 0.1); + --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1); + --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1); + --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 2px 4px -1px hsl(0 0% 0% / 0.1); + --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 4px 6px -1px hsl(0 0% 0% / 0.1); + --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 8px 10px -1px hsl(0 0% 0% / 0.1); --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.25); --magic-gradient-color: oklch(0.67 0.2 23.8 / 15%); @@ -182,7 +177,7 @@ --popover: oklch(0.29 0.02 268.4); --popover-foreground: oklch(0.92 0 0); --primary: oklch(0.67 0.2 23.8); - --primary-foreground: oklch(1.0 0 0); + --primary-foreground: oklch(1 0 0); --secondary: oklch(0.31 0.03 266.71); --secondary-foreground: oklch(0.92 0 0); --muted: oklch(0.31 0.03 266.71); @@ -190,7 +185,7 @@ --accent: oklch(0.34 0.06 267.59); --accent-foreground: oklch(0.88 0.06 254.13); --destructive: oklch(0.64 0.21 25.33); - --destructive-foreground: oklch(1.0 0 0); + --destructive-foreground: oklch(1 0 0); --border: oklch(0.38 0.03 269.73); --input: oklch(1 0 0 / 15%); @@ -211,16 +206,11 @@ --shadow-2xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05); --shadow-xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.05); - --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px - hsl(0 0% 0% / 0.1); - --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px - hsl(0 0% 0% / 0.1); - --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 2px 4px -1px - hsl(0 0% 0% / 0.1); - --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 4px 6px -1px - hsl(0 0% 0% / 0.1); - --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 8px 10px -1px - hsl(0 0% 0% / 0.1); + --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1); + --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1); + --shadow-md: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 2px 4px -1px hsl(0 0% 0% / 0.1); + --shadow-lg: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 4px 6px -1px hsl(0 0% 0% / 0.1); + --shadow-xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 8px 10px -1px hsl(0 0% 0% / 0.1); --shadow-2xl: 0px 1px 3px 0px hsl(0 0% 0% / 0.25); --magic-gradient-color: oklch(0.27 0 0); diff --git a/web/src/app/icons/[icon]/opengraph-image.tsx b/web/src/app/icons/[icon]/opengraph-image.tsx index 9994f4eb..67157dec 100644 --- a/web/src/app/icons/[icon]/opengraph-image.tsx +++ b/web/src/app/icons/[icon]/opengraph-image.tsx @@ -1,7 +1,7 @@ import { readFile } from "node:fs/promises" import { join } from "node:path" -import { getAllIcons } from "@/lib/api" import { ImageResponse } from "next/og" +import { getAllIcons } from "@/lib/api" export const dynamic = "force-static" @@ -42,7 +42,7 @@ export default async function Image({ params }: { params: { icon: string } }) { const iconPath = join(process.cwd(), `../png/${icon}.png`) console.log(`Generating opengraph image for ${icon} (${index + 1} / ${totalIcons}) from path ${iconPath}`) iconData = await readFile(iconPath) - } catch (error) { + } catch (_error) { console.error(`Icon ${icon} was not found locally`) } diff --git a/web/src/app/icons/[icon]/page.tsx b/web/src/app/icons/[icon]/page.tsx index 230f263b..6f5884fc 100644 --- a/web/src/app/icons/[icon]/page.tsx +++ b/web/src/app/icons/[icon]/page.tsx @@ -1,8 +1,8 @@ +import type { Metadata, ResolvingMetadata } from "next" +import { notFound } from "next/navigation" import { IconDetails } from "@/components/icon-details" import { BASE_URL, WEB_URL } from "@/constants" import { getAllIcons, getAuthorData } from "@/lib/api" -import type { Metadata, ResolvingMetadata } from "next" -import { notFound } from "next/navigation" export const dynamicParams = false export async function generateStaticParams() { @@ -19,7 +19,7 @@ type Props = { searchParams: Promise<{ [key: string]: string | string[] | undefined }> } -export async function generateMetadata({ params, searchParams }: Props, parent: ResolvingMetadata): Promise { +export async function generateMetadata({ params, searchParams }: Props, _parent: ResolvingMetadata): Promise { const { icon } = await params const iconsData = await getAllIcons() if (!iconsData[icon]) { @@ -76,13 +76,14 @@ export async function generateMetadata({ params, searchParams }: Props, parent: type: "website", url: pageUrl, siteName: "Dashboard Icons", - images: [{ - url: `${BASE_URL}/webp/${icon}.webp`, - width: 512, - height: 512, - alt: `${formattedIconName} icon`, - }] - + images: [ + { + url: `${BASE_URL}/webp/${icon}.webp`, + width: 512, + height: 512, + alt: `${formattedIconName} icon`, + }, + ], }, twitter: { card: "summary_large_image", diff --git a/web/src/app/icons/layout.tsx b/web/src/app/icons/layout.tsx index d59fc873..3d7dd7f5 100644 --- a/web/src/app/icons/layout.tsx +++ b/web/src/app/icons/layout.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/lib/utils" import type React from "react" +import { cn } from "@/lib/utils" interface BackgroundWrapperProps { children: React.ReactNode diff --git a/web/src/app/icons/opengraph-image.tsx b/web/src/app/icons/opengraph-image.tsx index 96b34dd7..e29bb7e3 100644 --- a/web/src/app/icons/opengraph-image.tsx +++ b/web/src/app/icons/opengraph-image.tsx @@ -1,5 +1,5 @@ -import { getAllIcons } from "@/lib/api" import { ImageResponse } from "next/og" +import { getAllIcons } from "@/lib/api" export const dynamic = "force-static" diff --git a/web/src/app/icons/page.tsx b/web/src/app/icons/page.tsx index 2fbff9e3..a20e94ef 100644 --- a/web/src/app/icons/page.tsx +++ b/web/src/app/icons/page.tsx @@ -1,7 +1,7 @@ +import type { Metadata } from "next" import { IconSearch } from "@/components/icon-search" import { BASE_URL } from "@/constants" import { getIconsArray } from "@/lib/api" -import type { Metadata } from "next" export async function generateMetadata(): Promise { const icons = await getIconsArray() diff --git a/web/src/app/layout.tsx b/web/src/app/layout.tsx index 877a60c5..b1e93b77 100644 --- a/web/src/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -1,12 +1,12 @@ -import { PostHogProvider } from "@/components/PostHogProvider" -import { Footer } from "@/components/footer" -import { HeaderWrapper } from "@/components/header-wrapper" -import { LicenseNotice } from "@/components/license-notice" -import { BASE_URL, WEB_URL, getDescription, websiteTitle } from "@/constants" -import { getTotalIcons } from "@/lib/api" import type { Metadata, Viewport } from "next" import { Inter } from "next/font/google" import { Toaster } from "sonner" +import { Footer } from "@/components/footer" +import { HeaderWrapper } from "@/components/header-wrapper" +import { LicenseNotice } from "@/components/license-notice" +import { PostHogProvider } from "@/components/PostHogProvider" +import { BASE_URL, getDescription, WEB_URL, websiteTitle } from "@/constants" +import { getTotalIcons } from "@/lib/api" import "./globals.css" import { ThemeProvider } from "./theme-provider" diff --git a/web/src/app/not-found.tsx b/web/src/app/not-found.tsx index 7eca533f..a7fd77f4 100644 --- a/web/src/app/not-found.tsx +++ b/web/src/app/not-found.tsx @@ -1,13 +1,9 @@ +import { AlertTriangle, ArrowLeft } from "lucide-react" +import Link from "next/link" import { IconSubmissionContent } from "@/components/icon-submission-form" import { Button } from "@/components/ui/button" -import { AlertTriangle, ArrowLeft, PlusCircle } from "lucide-react" -import Link from "next/link" -export default function NotFound({ - error, -}: { - error: Error & { digest?: string } -}) { +export default function NotFound({ error }: { error: Error & { digest?: string } }) { return (
diff --git a/web/src/app/sitemap.ts b/web/src/app/sitemap.ts index 1b7114c3..6c5954ce 100644 --- a/web/src/app/sitemap.ts +++ b/web/src/app/sitemap.ts @@ -1,6 +1,6 @@ +import type { MetadataRoute } from "next" import { BASE_URL, WEB_URL } from "@/constants" import { getAllIcons } from "@/lib/api" -import type { MetadataRoute } from "next" export const dynamic = "force-static" diff --git a/web/src/components/carbon.tsx b/web/src/components/carbon.tsx index 8974959a..4de6a404 100644 --- a/web/src/components/carbon.tsx +++ b/web/src/components/carbon.tsx @@ -1,11 +1,5 @@ import { useEffect, useRef } from "react" export function Carbon() { - // biome-ignore lint/style/noNonNullAssertion: - const ref = useRef(null!) - if (process.env.NODE_ENV === "development") { - return null - } - useEffect(() => { const serve = "CW7IKKQM" const placement = "dashboardiconscom" @@ -16,6 +10,11 @@ export function Carbon() { ref.current.appendChild(s) }, []) + const ref = useRef(null!) + if (process.env.NODE_ENV === "development") { + return null + } + return ( <>