diff --git a/package.json b/package.json index e4c7d449..05221d9b 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,12 @@ "description": "Meshtastic web client", "license": "GPL-3.0-only", "scripts": { - "dev": "vite --host", - "build": "tsc && pnpm check && vite build ", + "build": "rsbuild build", "check": "biome check .", "check:fix": "pnpm check --write", - "preview": "vite preview", + "dev": "rsbuild dev --open", + "format": "biome format --write", + "preview": "rsbuild preview", "package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ $(ls ./dist/output/)" }, "repository": { @@ -66,13 +67,14 @@ "devDependencies": { "@biomejs/biome": "^1.8.2", "@buf/meshtastic_protobufs.bufbuild_es": "1.10.0-20240906232734-3da561588c55.1", + "@rsbuild/core": "^1.0.10", + "@rsbuild/plugin-react": "^1.0.3", "@types/chrome": "^0.0.263", "@types/node": "^20.14.9", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@types/w3c-web-serial": "^1.0.6", "@types/web-bluetooth": "^0.0.20", - "@vitejs/plugin-react": "^4.3.1", "autoprefixer": "^10.4.19", "gzipper": "^7.2.0", "postcss": "^8.4.38", @@ -80,8 +82,6 @@ "tailwindcss": "^3.4.4", "tar": "^6.2.1", "tslib": "^2.6.3", - "typescript": "^5.5.2", - "vite": "^5.3.1", - "vite-plugin-environment": "^1.1.3" + "typescript": "^5.5.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e91a4c5..35f67520 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -138,6 +138,12 @@ importers: '@buf/meshtastic_protobufs.bufbuild_es': specifier: 1.10.0-20240906232734-3da561588c55.1 version: 1.10.0-20240906232734-3da561588c55.1(@bufbuild/protobuf@1.10.0) + '@rsbuild/core': + specifier: ^1.0.10 + version: 1.0.10 + '@rsbuild/plugin-react': + specifier: ^1.0.3 + version: 1.0.3(@rsbuild/core@1.0.10) '@types/chrome': specifier: ^0.0.263 version: 0.0.263 @@ -156,9 +162,6 @@ importers: '@types/web-bluetooth': specifier: ^0.0.20 version: 0.0.20 - '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.3.1(@types/node@20.14.9)) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -183,12 +186,6 @@ importers: typescript: specifier: ^5.5.2 version: 5.5.2 - vite: - specifier: ^5.3.1 - version: 5.3.1(@types/node@20.14.9) - vite-plugin-environment: - specifier: ^1.1.3 - version: 1.1.3(vite@5.3.1(@types/node@20.14.9)) packages: @@ -196,117 +193,10 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.24.7': - resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.24.7': - resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.24.7': - resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.24.7': - resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-hoist-variables@7.24.7': - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.24.7': - resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.24.7': - resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.7': - resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.24.7': - resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.24.7': - resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.24.7': resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.7': - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.24.7': - resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.7': - resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} - engines: {node: '>=6.9.0'} - '@biomejs/biome@1.8.2': resolution: {integrity: sha512-XafCzLgs0xbH0bCjYKxQ63ig2V86fZQMq1jiy5pyLToWk9aHxA8GAUxyBtklPHtPYZPGEPOYglQHj4jyfUp+Iw==} engines: {node: '>=14.21.3'} @@ -596,6 +486,18 @@ packages: '@meshtastic/js@2.3.7-5': resolution: {integrity: sha512-77wYoCl83PgRLkvWE8ko0YFm5LbolrfFPqoBkwLd2AFgZOHGsHTlUwA7cj82yhZM3f4mf7yTFxl+8CBawEAXRA==} + '@module-federation/runtime-tools@0.5.1': + resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} + + '@module-federation/runtime@0.5.1': + resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} + + '@module-federation/sdk@0.5.1': + resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} + + '@module-federation/webpack-bundler-runtime@0.5.1': + resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} + '@noble/curves@1.5.0': resolution: {integrity: sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==} @@ -1343,6 +1245,85 @@ packages: cpu: [x64] os: [win32] + '@rsbuild/core@1.0.10': + resolution: {integrity: sha512-617N8YzDeH5vymeeOyCqK0toO9yt7s2yey49OIvW9jZqBo0IvgbkFNQf34LDLsxVzy+cpf1nGrcYWjPKhVuGfQ==} + engines: {node: '>=16.7.0'} + hasBin: true + + '@rsbuild/plugin-react@1.0.3': + resolution: {integrity: sha512-HVfPiKINmDsIcLLs7YWAYQgzytVZOydBuPOFg5EoJiMHkFVjH0Rg3QViS3Hn6k3INqdc6ylpcYyOHHYItEIkWA==} + peerDependencies: + '@rsbuild/core': 1.x || ^1.0.1-rc.0 + + '@rspack/binding-darwin-arm64@1.0.8': + resolution: {integrity: sha512-1l8/eg3HNz53DHQO3fy5O5QKdYh8hSMZaWGtm3NR5IfdrTm2TaLL9tuR8oL2iHHtd87LEvVKHXdjlcuLV5IPNQ==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.0.8': + resolution: {integrity: sha512-7BbG8gXVWjtqJegDpsObzM/B90Eig1piEtcahvPdvlC92uZz3/IwtKPpMaywGBrf5RSI3U0nQMSekwz0cO1SOw==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.0.8': + resolution: {integrity: sha512-QnqCL0wmwYqT/IFx5q0aw7DsIOr8oYUa4+7JI8iiqRf3RuuRJExesVW9VuWr0jS2UvChKgmb8PvRtDy/0tshFw==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.0.8': + resolution: {integrity: sha512-Ns9TsE7zdUjimW5HURRW08BaMyAh16MDh97PPsGEMeRPx9plnRO9aXvuUG6t+0gy4KwlQdeq3BvUsbBpIo5Tow==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.0.8': + resolution: {integrity: sha512-lfqUuKCoyRN/gGeokhX/oNYqB6OpbtgQb57b0QuD8IaiH2a1ee0TtEVvRbyQNEDwht6lW4RTNg0RfMYu52LgXg==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.0.8': + resolution: {integrity: sha512-MgbHJWV5utVa1/U9skrXClydZ/eZw001++v4B6nb8myU6Ck1D02aMl9ESefb/sSA8TatLLxEXQ2VENG9stnPwQ==} + cpu: [x64] + os: [linux] + + '@rspack/binding-win32-arm64-msvc@1.0.8': + resolution: {integrity: sha512-3NN5VisnSOzhgqX77O/7NvcjPUueg1oIdMKoc5vElJCEu5FEXPqDhwZmr1PpBovaXshAcgExF3j54+20pwdg5g==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.0.8': + resolution: {integrity: sha512-17VQNC7PSygzsipSVoukDM/SOcVueVNsk9bZiB0Swl20BaqrlBts2Dvlmo+L+ZGsxOYI97WvA/zomMDv860usg==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.0.8': + resolution: {integrity: sha512-Vtjt74Soh09XUsV5Nw0YjZVSk/qtsjtPnzbSZluncSAVUs8l+X1ALcM6n1Jrt3TLTfcqf7a+VIsWOXAMqkCGUg==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.0.8': + resolution: {integrity: sha512-abRirbrjobcllLAamyeiWxT6Rb0wELUnITynQdqRbSweWm2lvnhm9YBv4BcOjvJBzhJtvRJo5JBtbKXjDTarug==} + + '@rspack/core@1.0.8': + resolution: {integrity: sha512-pbXwXYb4WQwb0l35P5v3l/NpDJXy1WiVE4IcQ/6LxZYU5NyZuqtsK0trR88xIVRZb9qU0JUeCdQq7Xa6Q+c3Xw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/lite-tapable@1.0.1': + resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} + engines: {node: '>=16.0.0'} + + '@rspack/plugin-react-refresh@1.0.0': + resolution: {integrity: sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true + '@stablelib/binary@1.0.1': resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} @@ -1358,6 +1339,9 @@ packages: '@stablelib/wipe@1.0.1': resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@turf/along@6.5.0': resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==} @@ -1679,18 +1663,6 @@ packages: '@turf/voronoi@6.5.0': resolution: {integrity: sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/chrome@0.0.263': resolution: {integrity: sha512-As0vzv99ov3M6ZR7R6VzhMWFZXkPMrFrCEXXVrMN576Cm70fTkj7Df2CF+qEo170JepX50pd11cX6O4DSAtl2Q==} @@ -1751,12 +1723,6 @@ packages: '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1765,10 +1731,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1902,10 +1864,6 @@ packages: caniuse-lite@1.0.30001638: resolution: {integrity: sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==} - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - cheap-ruler@4.0.0: resolution: {integrity: sha512-0BJa8f4t141BYKQyn9NSQt1PguFQXMXwZiA5shfoaBYHAb2fFk2RAX+tiWMoQU+Agtzt3mdt0JtuyshAXqZ+Vw==} @@ -1947,16 +1905,10 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1980,8 +1932,8 @@ packages: constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2038,15 +1990,6 @@ packages: d3-voronoi@1.1.2: resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==} - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - deep-equal@1.1.2: resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} engines: {node: '>= 0.4'} @@ -2119,6 +2062,9 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -2139,10 +2085,6 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -2204,10 +2146,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - geojson-equality@0.1.6: resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==} @@ -2260,10 +2198,6 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -2278,10 +2212,6 @@ packages: has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2315,6 +2245,9 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} @@ -2487,22 +2420,12 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - json-stringify-pretty-compact@3.0.0: resolution: {integrity: sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==} json-stringify-pretty-compact@4.0.0: resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - kdbush@4.0.2: resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} @@ -2539,9 +2462,6 @@ packages: resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.363.0: resolution: {integrity: sha512-AlsfPCsXQyQx7wwsIgzcKOL9LwC498LIMAo+c0Es5PkHJa33xwmYAkkSoKoJWWWSYQEStqu58/jT4tL2gi32uQ==} peerDependencies: @@ -2606,9 +2526,6 @@ packages: engines: {node: '>=10'} hasBin: true - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - murmurhash-js@1.0.0: resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} @@ -3016,10 +2933,6 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - serialize-to-js@3.1.2: resolution: {integrity: sha512-owllqNuDDEimQat7EPG0tH7JjO090xKNzUtYz6X+Sk2BXDnOCilDdNLwjWeFywG9xkJul1ULvtUQa9O4pUaY0w==} engines: {node: '>=4.0.0'} @@ -3092,6 +3005,9 @@ packages: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + ste-core@3.0.11: resolution: {integrity: sha512-ivkRENMh0mdGoPlZ4xVcEaC8rXQfTEfvonRw5m8VDKV7kgcbZbaNd1TnKl08wXbcLdT7okSc63HNP8cVhy95zg==} engines: {node: '>=4.2.4'} @@ -3143,10 +3059,6 @@ packages: supercluster@8.0.1: resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3203,10 +3115,6 @@ packages: tinyqueue@3.0.0: resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3313,11 +3221,6 @@ packages: resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} - vite-plugin-environment@1.1.3: - resolution: {integrity: sha512-9LBhB0lx+2lXVBEWxFZC+WO7PKEyE/ykJ7EPWCq95NEcCpblxamTbs5Dm3DLBGzwODpJMEnzQywJU8fw6XGGGA==} - peerDependencies: - vite: '>= 2.7' - vite-plugin-node-polyfills@0.22.0: resolution: {integrity: sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==} peerDependencies: @@ -3396,9 +3299,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -3438,160 +3338,10 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 - - '@babel/compat-data@7.24.7': {} - - '@babel/core@7.24.7': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-compilation-targets': 7.24.7 - '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) - '@babel/helpers': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - convert-source-map: 2.0.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.24.7': - dependencies: - '@babel/types': 7.24.7 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.24.7': - dependencies: - '@babel/compat-data': 7.24.7 - '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.24.7 - - '@babel/helper-function-name@7.24.7': - dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.7 - - '@babel/helper-hoist-variables@7.24.7': - dependencies: - '@babel/types': 7.24.7 - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.24.7': {} - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.24.7 - - '@babel/helper-string-parser@7.24.7': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-option@7.24.7': {} - - '@babel/helpers@7.24.7': - dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.7 - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/parser@7.24.7': - dependencies: - '@babel/types': 7.24.7 - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.7)': - dependencies: - '@babel/core': 7.24.7 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.7': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - - '@babel/traverse@7.24.7': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - debug: 4.3.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.7': - dependencies: - '@babel/helper-string-parser': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - '@biomejs/biome@1.8.2': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.8.2 @@ -3810,6 +3560,22 @@ snapshots: transitivePeerDependencies: - buffer + '@module-federation/runtime-tools@0.5.1': + dependencies: + '@module-federation/runtime': 0.5.1 + '@module-federation/webpack-bundler-runtime': 0.5.1 + + '@module-federation/runtime@0.5.1': + dependencies: + '@module-federation/sdk': 0.5.1 + + '@module-federation/sdk@0.5.1': {} + + '@module-federation/webpack-bundler-runtime@0.5.1': + dependencies: + '@module-federation/runtime': 0.5.1 + '@module-federation/sdk': 0.5.1 + '@noble/curves@1.5.0': dependencies: '@noble/hashes': 1.4.0 @@ -4542,6 +4308,78 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true + '@rsbuild/core@1.0.10': + dependencies: + '@rspack/core': 1.0.8(@swc/helpers@0.5.13) + '@rspack/lite-tapable': 1.0.1 + '@swc/helpers': 0.5.13 + core-js: 3.38.1 + optionalDependencies: + fsevents: 2.3.3 + + '@rsbuild/plugin-react@1.0.3(@rsbuild/core@1.0.10)': + dependencies: + '@rsbuild/core': 1.0.10 + '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) + react-refresh: 0.14.2 + + '@rspack/binding-darwin-arm64@1.0.8': + optional: true + + '@rspack/binding-darwin-x64@1.0.8': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.0.8': + optional: true + + '@rspack/binding-linux-arm64-musl@1.0.8': + optional: true + + '@rspack/binding-linux-x64-gnu@1.0.8': + optional: true + + '@rspack/binding-linux-x64-musl@1.0.8': + optional: true + + '@rspack/binding-win32-arm64-msvc@1.0.8': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.0.8': + optional: true + + '@rspack/binding-win32-x64-msvc@1.0.8': + optional: true + + '@rspack/binding@1.0.8': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.0.8 + '@rspack/binding-darwin-x64': 1.0.8 + '@rspack/binding-linux-arm64-gnu': 1.0.8 + '@rspack/binding-linux-arm64-musl': 1.0.8 + '@rspack/binding-linux-x64-gnu': 1.0.8 + '@rspack/binding-linux-x64-musl': 1.0.8 + '@rspack/binding-win32-arm64-msvc': 1.0.8 + '@rspack/binding-win32-ia32-msvc': 1.0.8 + '@rspack/binding-win32-x64-msvc': 1.0.8 + + '@rspack/core@1.0.8(@swc/helpers@0.5.13)': + dependencies: + '@module-federation/runtime-tools': 0.5.1 + '@rspack/binding': 1.0.8 + '@rspack/lite-tapable': 1.0.1 + caniuse-lite: 1.0.30001638 + optionalDependencies: + '@swc/helpers': 0.5.13 + + '@rspack/lite-tapable@1.0.1': {} + + '@rspack/plugin-react-refresh@1.0.0(react-refresh@0.14.2)': + dependencies: + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + optionalDependencies: + react-refresh: 0.14.2 + '@stablelib/binary@1.0.1': dependencies: '@stablelib/int': 1.0.1 @@ -4558,6 +4396,10 @@ snapshots: '@stablelib/wipe@1.0.1': {} + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.6.3 + '@turf/along@6.5.0': dependencies: '@turf/bearing': 6.5.0 @@ -5374,27 +5216,6 @@ snapshots: '@turf/invariant': 6.5.0 d3-voronoi: 1.1.2 - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.24.7 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.24.7 - '@types/chrome@0.0.263': dependencies: '@types/filesystem': 0.0.36 @@ -5457,25 +5278,10 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@vitejs/plugin-react@4.3.1(vite@5.3.1(@types/node@20.14.9))': - dependencies: - '@babel/core': 7.24.7 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 5.3.1(@types/node@20.14.9) - transitivePeerDependencies: - - supports-color - ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -5639,12 +5445,6 @@ snapshots: caniuse-lite@1.0.30001638: {} - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - cheap-ruler@4.0.0: {} chokidar@3.6.0: @@ -5698,16 +5498,10 @@ snapshots: - '@types/react' - '@types/react-dom' - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} commander@2.20.3: {} @@ -5727,7 +5521,7 @@ snapshots: constants-browserify@1.0.0: {} - convert-source-map@2.0.0: {} + core-js@3.38.1: {} core-util-is@1.0.3: {} @@ -5795,10 +5589,6 @@ snapshots: d3-voronoi@1.1.2: {} - debug@4.3.5: - dependencies: - ms: 2.1.2 - deep-equal@1.1.2: dependencies: is-arguments: 1.1.1 @@ -5899,6 +5689,10 @@ snapshots: dependencies: once: 1.4.0 + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -5945,8 +5739,6 @@ snapshots: escalade@3.1.2: {} - escape-string-regexp@1.0.5: {} - estree-walker@2.0.2: {} events@3.3.0: {} @@ -6010,8 +5802,6 @@ snapshots: functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} - geojson-equality@0.1.6: dependencies: deep-equal: 1.1.2 @@ -6069,8 +5859,6 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@11.12.0: {} - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -6087,8 +5875,6 @@ snapshots: has-bigints@1.0.2: {} - has-flag@3.0.0: {} - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 @@ -6127,6 +5913,8 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + html-entities@2.5.2: {} + https-browserify@1.0.0: {} ieee754@1.2.1: {} @@ -6275,14 +6063,10 @@ snapshots: js-tokens@4.0.0: {} - jsesc@2.5.2: {} - json-stringify-pretty-compact@3.0.0: {} json-stringify-pretty-compact@4.0.0: {} - json5@2.2.3: {} - kdbush@4.0.2: {} kind-of@6.0.3: {} @@ -6307,10 +6091,6 @@ snapshots: lru-cache@10.2.2: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - lucide-react@0.363.0(react@18.3.1): dependencies: react: 18.3.1 @@ -6421,8 +6201,6 @@ snapshots: mkdirp@1.0.4: {} - ms@2.1.2: {} - murmurhash-js@1.0.0: {} mz@2.7.0: @@ -6863,8 +6641,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - semver@6.3.1: {} - serialize-to-js@3.1.2: {} set-function-length@1.2.2: @@ -6944,6 +6720,8 @@ snapshots: dependencies: extend-shallow: 3.0.2 + stackframe@1.3.4: {} + ste-core@3.0.11: {} ste-simple-events@3.0.11: @@ -7010,10 +6788,6 @@ snapshots: dependencies: kdbush: 4.0.2 - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-preserve-symlinks-flag@1.0.0: {} tailwind-merge@2.3.0: @@ -7097,8 +6871,6 @@ snapshots: tinyqueue@3.0.0: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -7188,10 +6960,6 @@ snapshots: validator@13.12.0: {} - vite-plugin-environment@1.1.3(vite@5.3.1(@types/node@20.14.9)): - dependencies: - vite: 5.3.1(@types/node@20.14.9) - vite-plugin-node-polyfills@0.22.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.9)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) @@ -7266,8 +7034,6 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yallist@4.0.0: {} yaml@2.4.5: {} diff --git a/rsbuild.config.ts b/rsbuild.config.ts new file mode 100644 index 00000000..b4b29017 --- /dev/null +++ b/rsbuild.config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from "@rsbuild/core"; +import { pluginReact } from "@rsbuild/plugin-react"; +import { execSync } from "node:child_process"; + +let hash = ""; + +try { + hash = execSync("git rev-parse --short HEAD").toString().trim(); +} catch (error) { + hash = "DEV"; +} + +export default defineConfig({ + plugins: [pluginReact()], + source: { + define: { + "process.env.COMMIT_HASH": JSON.stringify(hash), + }, + alias: { + "@app": "./src", + "@pages": "./src/pages", + "@components": "./src/components", + "@core": "./src/core", + "@layouts": "./src/layouts", + }, + }, +}); diff --git a/src/App.tsx b/src/App.tsx index 48a806f4..c936bc9c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,15 +1,15 @@ -import { DeviceWrapper } from "@app/DeviceWrapper.js"; -import { PageRouter } from "@app/PageRouter.js"; -import { CommandPalette } from "@components/CommandPalette.js"; -import { DeviceSelector } from "@components/DeviceSelector.js"; -import { DialogManager } from "@components/Dialog/DialogManager.js"; -import { NewDeviceDialog } from "@components/Dialog/NewDeviceDialog.js"; -import { Toaster } from "@components/Toaster.js"; -import Footer from "@components/UI/Footer.js"; -import { ThemeController } from "@components/generic/ThemeController.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDeviceStore } from "@core/stores/deviceStore.js"; -import { Dashboard } from "@pages/Dashboard/index.js"; +import { DeviceWrapper } from "@app/DeviceWrapper.tsx"; +import { PageRouter } from "@app/PageRouter.tsx"; +import { CommandPalette } from "@components/CommandPalette.tsx"; +import { DeviceSelector } from "@components/DeviceSelector.tsx"; +import { DialogManager } from "@components/Dialog/DialogManager.tsx"; +import { NewDeviceDialog } from "@components/Dialog/NewDeviceDialog.tsx"; +import { Toaster } from "@components/Toaster.tsx"; +import Footer from "@components/UI/Footer.tsx"; +import { ThemeController } from "@components/generic/ThemeController.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDeviceStore } from "@core/stores/deviceStore.ts"; +import { Dashboard } from "@pages/Dashboard/index.tsx"; import { MapProvider } from "react-map-gl"; export const App = (): JSX.Element => { diff --git a/src/DeviceWrapper.tsx b/src/DeviceWrapper.tsx index 9384c303..d2420352 100644 --- a/src/DeviceWrapper.tsx +++ b/src/DeviceWrapper.tsx @@ -1,5 +1,5 @@ -import { DeviceContext } from "@core/stores/deviceStore.js"; -import type { Device } from "@core/stores/deviceStore.js"; +import { DeviceContext } from "@core/stores/deviceStore.ts"; +import type { Device } from "@core/stores/deviceStore.ts"; import type { ReactNode } from "react"; export interface DeviceWrapperProps { diff --git a/src/PageRouter.tsx b/src/PageRouter.tsx index 1fe44dfa..2bec9fdc 100644 --- a/src/PageRouter.tsx +++ b/src/PageRouter.tsx @@ -1,9 +1,9 @@ -import { useDevice } from "@core/stores/deviceStore.js"; -import { ChannelsPage } from "@pages/Channels.js"; -import { ConfigPage } from "@pages/Config/index.js"; -import { MapPage } from "@pages/Map.js"; -import { MessagesPage } from "@pages/Messages.js"; -import { NodesPage } from "@pages/Nodes.js"; +import { useDevice } from "@core/stores/deviceStore.ts"; +import { ChannelsPage } from "@pages/Channels.tsx"; +import { ConfigPage } from "@pages/Config/index.tsx"; +import { MapPage } from "@pages/Map.tsx"; +import { MessagesPage } from "@pages/Messages.tsx"; +import { NodesPage } from "@pages/Nodes.tsx"; export const PageRouter = (): JSX.Element => { const { activePage } = useDevice(); diff --git a/src/components/CommandPalette.tsx b/src/components/CommandPalette.tsx index 2062b740..efcd3954 100644 --- a/src/components/CommandPalette.tsx +++ b/src/components/CommandPalette.tsx @@ -5,9 +5,9 @@ import { CommandInput, CommandItem, CommandList, -} from "@components/UI/Command.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDevice, useDeviceStore } from "@core/stores/deviceStore.js"; +} from "@components/UI/Command.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDevice, useDeviceStore } from "@core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { useCommandState } from "cmdk"; import { diff --git a/src/components/DeviceSelector.tsx b/src/components/DeviceSelector.tsx index 1465c52b..42be3ecf 100644 --- a/src/components/DeviceSelector.tsx +++ b/src/components/DeviceSelector.tsx @@ -1,8 +1,8 @@ -import { DeviceSelectorButton } from "@components/DeviceSelectorButton.js"; -import { Separator } from "@components/UI/Seperator.js"; -import { Code } from "@components/UI/Typography/Code.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDeviceStore } from "@core/stores/deviceStore.js"; +import { DeviceSelectorButton } from "@components/DeviceSelectorButton.tsx"; +import { Separator } from "@components/UI/Seperator.tsx"; +import { Code } from "@components/UI/Typography/Code.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDeviceStore } from "@core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { HomeIcon, diff --git a/src/components/Dialog/DeviceNameDialog.tsx b/src/components/Dialog/DeviceNameDialog.tsx index 403f4e8c..3fd6fd2b 100644 --- a/src/components/Dialog/DeviceNameDialog.tsx +++ b/src/components/Dialog/DeviceNameDialog.tsx @@ -1,5 +1,5 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import { Button } from "@components/UI/Button.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import { Button } from "@components/UI/Button.tsx"; import { Dialog, DialogContent, @@ -7,9 +7,9 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Input } from "@components/UI/Input.js"; -import { Label } from "@components/UI/Label.js"; +} from "@components/UI/Dialog.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { Label } from "@components/UI/Label.tsx"; import { Protobuf } from "@meshtastic/js"; import { useForm } from "react-hook-form"; diff --git a/src/components/Dialog/DialogManager.tsx b/src/components/Dialog/DialogManager.tsx index 53e2509b..16e60120 100644 --- a/src/components/Dialog/DialogManager.tsx +++ b/src/components/Dialog/DialogManager.tsx @@ -1,10 +1,10 @@ -import { RemoveNodeDialog } from "@app/components/Dialog/RemoveNodeDialog.js"; -import { DeviceNameDialog } from "@components/Dialog/DeviceNameDialog.js"; -import { ImportDialog } from "@components/Dialog/ImportDialog.js"; -import { QRDialog } from "@components/Dialog/QRDialog.js"; -import { RebootDialog } from "@components/Dialog/RebootDialog.js"; -import { ShutdownDialog } from "@components/Dialog/ShutdownDialog.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import { RemoveNodeDialog } from "@app/components/Dialog/RemoveNodeDialog.tsx"; +import { DeviceNameDialog } from "@components/Dialog/DeviceNameDialog.tsx"; +import { ImportDialog } from "@components/Dialog/ImportDialog.tsx"; +import { QRDialog } from "@components/Dialog/QRDialog.tsx"; +import { RebootDialog } from "@components/Dialog/RebootDialog.tsx"; +import { ShutdownDialog } from "@components/Dialog/ShutdownDialog.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; export const DialogManager = (): JSX.Element => { const { channels, config, dialog, setDialogOpen } = useDevice(); diff --git a/src/components/Dialog/ImportDialog.tsx b/src/components/Dialog/ImportDialog.tsx index 37327096..c331911b 100644 --- a/src/components/Dialog/ImportDialog.tsx +++ b/src/components/Dialog/ImportDialog.tsx @@ -1,5 +1,5 @@ -import { Button } from "@components/UI/Button.js"; -import { Checkbox } from "@components/UI/Checkbox.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Checkbox } from "@components/UI/Checkbox.tsx"; import { Dialog, DialogContent, @@ -7,11 +7,11 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Input } from "@components/UI/Input.js"; -import { Label } from "@components/UI/Label.js"; -import { Switch } from "@components/UI/Switch.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +} from "@components/UI/Dialog.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { Label } from "@components/UI/Label.tsx"; +import { Switch } from "@components/UI/Switch.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; import { toByteArray } from "base64-js"; import { useEffect, useState } from "react"; diff --git a/src/components/Dialog/NewDeviceDialog.tsx b/src/components/Dialog/NewDeviceDialog.tsx index d3277884..6062d69c 100644 --- a/src/components/Dialog/NewDeviceDialog.tsx +++ b/src/components/Dialog/NewDeviceDialog.tsx @@ -1,20 +1,20 @@ -import { BLE } from "@components/PageComponents/Connect/BLE.js"; -import { HTTP } from "@components/PageComponents/Connect/HTTP.js"; -import { Serial } from "@components/PageComponents/Connect/Serial.js"; +import { BLE } from "@components/PageComponents/Connect/BLE.tsx"; +import { HTTP } from "@components/PageComponents/Connect/HTTP.tsx"; +import { Serial } from "@components/PageComponents/Connect/Serial.tsx"; import { Dialog, DialogContent, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; +} from "@components/UI/Dialog.tsx"; import { Tabs, TabsContent, TabsList, TabsTrigger, -} from "@components/UI/Tabs.js"; -import { Link } from "@components/UI/Typography/Link.js"; -import { Subtle } from "@components/UI/Typography/Subtle.js"; +} from "@components/UI/Tabs.tsx"; +import { Link } from "@components/UI/Typography/Link.tsx"; +import { Subtle } from "@components/UI/Typography/Subtle.tsx"; export interface TabElementProps { closeDialog: () => void; diff --git a/src/components/Dialog/PkiRegenerateDialog.tsx b/src/components/Dialog/PkiRegenerateDialog.tsx index 3edc221a..818e7207 100644 --- a/src/components/Dialog/PkiRegenerateDialog.tsx +++ b/src/components/Dialog/PkiRegenerateDialog.tsx @@ -1,4 +1,4 @@ -import { Button } from "@components/UI/Button.js"; +import { Button } from "@components/UI/Button.tsx"; import { Dialog, DialogContent, @@ -6,7 +6,7 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; +} from "@components/UI/Dialog.tsx"; export interface PkiRegenerateDialogProps { open: boolean; diff --git a/src/components/Dialog/QRDialog.tsx b/src/components/Dialog/QRDialog.tsx index 9a8853fa..9bd29ed2 100644 --- a/src/components/Dialog/QRDialog.tsx +++ b/src/components/Dialog/QRDialog.tsx @@ -1,4 +1,4 @@ -import { Checkbox } from "@components/UI/Checkbox.js"; +import { Checkbox } from "@components/UI/Checkbox.tsx"; import { Dialog, DialogContent, @@ -6,9 +6,9 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Input } from "@components/UI/Input.js"; -import { Label } from "@components/UI/Label.js"; +} from "@components/UI/Dialog.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { Label } from "@components/UI/Label.tsx"; import { Protobuf, type Types } from "@meshtastic/js"; import { fromByteArray } from "base64-js"; import { ClipboardIcon } from "lucide-react"; diff --git a/src/components/Dialog/RebootDialog.tsx b/src/components/Dialog/RebootDialog.tsx index 79ff86bd..3dbcb268 100644 --- a/src/components/Dialog/RebootDialog.tsx +++ b/src/components/Dialog/RebootDialog.tsx @@ -1,13 +1,13 @@ -import { Button } from "@components/UI/Button.js"; +import { Button } from "@components/UI/Button.tsx"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Input } from "@components/UI/Input.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +} from "@components/UI/Dialog.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { ClockIcon, RefreshCwIcon } from "lucide-react"; import { useState } from "react"; diff --git a/src/components/Dialog/RemoveNodeDialog.tsx b/src/components/Dialog/RemoveNodeDialog.tsx index b2db5d56..81bfcd04 100644 --- a/src/components/Dialog/RemoveNodeDialog.tsx +++ b/src/components/Dialog/RemoveNodeDialog.tsx @@ -1,6 +1,6 @@ import { useAppStore } from "@app/core/stores/appStore"; -import { useDevice } from "@app/core/stores/deviceStore.js"; -import { Button } from "@components/UI/Button.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import { Button } from "@components/UI/Button.tsx"; import { Dialog, DialogContent, @@ -8,8 +8,8 @@ import { DialogFooter, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Label } from "@components/UI/Label.js"; +} from "@components/UI/Dialog.tsx"; +import { Label } from "@components/UI/Label.tsx"; export interface RemoveNodeDialogProps { open: boolean; diff --git a/src/components/Dialog/ShutdownDialog.tsx b/src/components/Dialog/ShutdownDialog.tsx index cf34fee5..deb77770 100644 --- a/src/components/Dialog/ShutdownDialog.tsx +++ b/src/components/Dialog/ShutdownDialog.tsx @@ -1,13 +1,13 @@ -import { Button } from "@components/UI/Button.js"; +import { Button } from "@components/UI/Button.tsx"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, -} from "@components/UI/Dialog.js"; -import { Input } from "@components/UI/Input.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +} from "@components/UI/Dialog.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { ClockIcon, PowerIcon } from "lucide-react"; import { useState } from "react"; diff --git a/src/components/Form/DynamicForm.tsx b/src/components/Form/DynamicForm.tsx index f957e7f0..c9456b40 100644 --- a/src/components/Form/DynamicForm.tsx +++ b/src/components/Form/DynamicForm.tsx @@ -1,11 +1,11 @@ import { DynamicFormField, type FieldProps, -} from "@components/Form/DynamicFormField.js"; -import { FieldWrapper } from "@components/Form/FormWrapper.js"; -import { Button } from "@components/UI/Button.js"; -import { H4 } from "@components/UI/Typography/H4.js"; -import { Subtle } from "@components/UI/Typography/Subtle.js"; +} from "@components/Form/DynamicFormField.tsx"; +import { FieldWrapper } from "@components/Form/FormWrapper.tsx"; +import { Button } from "@components/UI/Button.tsx"; +import { H4 } from "@components/UI/Typography/H4.tsx"; +import { Subtle } from "@components/UI/Typography/Subtle.tsx"; import { type Control, type DefaultValues, diff --git a/src/components/Form/DynamicFormField.tsx b/src/components/Form/DynamicFormField.tsx index f66b24c1..388836d4 100644 --- a/src/components/Form/DynamicFormField.tsx +++ b/src/components/Form/DynamicFormField.tsx @@ -1,19 +1,19 @@ import { GenericInput, type InputFieldProps, -} from "@components/Form/FormInput.js"; +} from "@components/Form/FormInput.tsx"; import { PasswordGenerator, type PasswordGeneratorProps, -} from "@components/Form/FormPasswordGenerator.js"; +} from "@components/Form/FormPasswordGenerator.tsx"; import { type SelectFieldProps, SelectInput, -} from "@components/Form/FormSelect.js"; +} from "@components/Form/FormSelect.tsx"; import { type ToggleFieldProps, ToggleInput, -} from "@components/Form/FormToggle.js"; +} from "@components/Form/FormToggle.tsx"; import type { Control, FieldValues } from "react-hook-form"; export type FieldProps = diff --git a/src/components/Form/FormInput.tsx b/src/components/Form/FormInput.tsx index c4e5001d..5fef2794 100644 --- a/src/components/Form/FormInput.tsx +++ b/src/components/Form/FormInput.tsx @@ -1,8 +1,8 @@ import type { BaseFormBuilderProps, GenericFormElementProps, -} from "@components/Form/DynamicForm.js"; -import { Input } from "@components/UI/Input.js"; +} from "@components/Form/DynamicForm.tsx"; +import { Input } from "@components/UI/Input.tsx"; import type { LucideIcon } from "lucide-react"; import { Eye, EyeOff } from "lucide-react"; import type { ChangeEventHandler } from "react"; diff --git a/src/components/Form/FormPasswordGenerator.tsx b/src/components/Form/FormPasswordGenerator.tsx index 31bb2f1c..09e97ff5 100644 --- a/src/components/Form/FormPasswordGenerator.tsx +++ b/src/components/Form/FormPasswordGenerator.tsx @@ -1,8 +1,8 @@ import type { BaseFormBuilderProps, GenericFormElementProps, -} from "@components/Form/DynamicForm.js"; -import { Generator } from "@components/UI/Generator.js"; +} from "@components/Form/DynamicForm.tsx"; +import { Generator } from "@components/UI/Generator.tsx"; import { Eye, EyeOff } from "lucide-react"; import type { ChangeEventHandler, MouseEventHandler } from "react"; import { useState } from "react"; diff --git a/src/components/Form/FormSelect.tsx b/src/components/Form/FormSelect.tsx index b0c922d5..a97e390f 100644 --- a/src/components/Form/FormSelect.tsx +++ b/src/components/Form/FormSelect.tsx @@ -1,14 +1,14 @@ import type { BaseFormBuilderProps, GenericFormElementProps, -} from "@components/Form/DynamicForm.js"; +} from "@components/Form/DynamicForm.tsx"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@components/UI/Select.js"; +} from "@components/UI/Select.tsx"; import { Controller, type FieldValues } from "react-hook-form"; export interface SelectFieldProps extends BaseFormBuilderProps { diff --git a/src/components/Form/FormToggle.tsx b/src/components/Form/FormToggle.tsx index 7a461147..e79bac76 100644 --- a/src/components/Form/FormToggle.tsx +++ b/src/components/Form/FormToggle.tsx @@ -1,8 +1,8 @@ import type { BaseFormBuilderProps, GenericFormElementProps, -} from "@components/Form/DynamicForm.js"; -import { Switch } from "@components/UI/Switch.js"; +} from "@components/Form/DynamicForm.tsx"; +import { Switch } from "@components/UI/Switch.tsx"; import type { ChangeEvent } from "react"; import { Controller, type FieldValues } from "react-hook-form"; diff --git a/src/components/Form/FormWrapper.tsx b/src/components/Form/FormWrapper.tsx index 87f8aec2..7625946f 100644 --- a/src/components/Form/FormWrapper.tsx +++ b/src/components/Form/FormWrapper.tsx @@ -1,4 +1,4 @@ -import { Label } from "@components/UI/Label.js"; +import { Label } from "@components/UI/Label.tsx"; export interface FieldWrapperProps { label: string; diff --git a/src/components/PageComponents/Channel.tsx b/src/components/PageComponents/Channel.tsx index c89aad57..3655e5f8 100644 --- a/src/components/PageComponents/Channel.tsx +++ b/src/components/PageComponents/Channel.tsx @@ -1,7 +1,7 @@ -import type { ChannelValidation } from "@app/validation/channel.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useToast } from "@core/hooks/useToast.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { ChannelValidation } from "@app/validation/channel.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useToast } from "@core/hooks/useToast.ts"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; import { fromByteArray, toByteArray } from "base64-js"; import cryptoRandomString from "crypto-random-string"; diff --git a/src/components/PageComponents/Config/Bluetooth.tsx b/src/components/PageComponents/Config/Bluetooth.tsx index 797a6dff..006fab47 100644 --- a/src/components/PageComponents/Config/Bluetooth.tsx +++ b/src/components/PageComponents/Config/Bluetooth.tsx @@ -1,6 +1,6 @@ -import type { BluetoothValidation } from "@app/validation/config/bluetooth.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { BluetoothValidation } from "@app/validation/config/bluetooth.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Bluetooth = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Device.tsx b/src/components/PageComponents/Config/Device.tsx index e6df723d..d0e1f029 100644 --- a/src/components/PageComponents/Config/Device.tsx +++ b/src/components/PageComponents/Config/Device.tsx @@ -1,6 +1,6 @@ -import type { DeviceValidation } from "@app/validation/config/device.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { DeviceValidation } from "@app/validation/config/device.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Device = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Display.tsx b/src/components/PageComponents/Config/Display.tsx index 5d0d0813..5589a8a7 100644 --- a/src/components/PageComponents/Config/Display.tsx +++ b/src/components/PageComponents/Config/Display.tsx @@ -1,6 +1,6 @@ -import type { DisplayValidation } from "@app/validation/config/display.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { DisplayValidation } from "@app/validation/config/display.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Display = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/LoRa.tsx b/src/components/PageComponents/Config/LoRa.tsx index 79e7b810..80665f6c 100644 --- a/src/components/PageComponents/Config/LoRa.tsx +++ b/src/components/PageComponents/Config/LoRa.tsx @@ -1,6 +1,6 @@ -import type { LoRaValidation } from "@app/validation/config/lora.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { LoRaValidation } from "@app/validation/config/lora.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const LoRa = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Network.tsx b/src/components/PageComponents/Config/Network.tsx index 00426104..afda4eb5 100644 --- a/src/components/PageComponents/Config/Network.tsx +++ b/src/components/PageComponents/Config/Network.tsx @@ -1,10 +1,10 @@ -import type { NetworkValidation } from "@app/validation/config/network.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { NetworkValidation } from "@app/validation/config/network.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { convertIntToIpAddress, convertIpAddressToInt, -} from "@core/utils/ip.js"; +} from "@core/utils/ip.ts"; import { Protobuf } from "@meshtastic/js"; export const Network = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Position.tsx b/src/components/PageComponents/Config/Position.tsx index 531750e9..798da2e9 100644 --- a/src/components/PageComponents/Config/Position.tsx +++ b/src/components/PageComponents/Config/Position.tsx @@ -1,6 +1,6 @@ -import type { PositionValidation } from "@app/validation/config/position.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { PositionValidation } from "@app/validation/config/position.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Position = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Power.tsx b/src/components/PageComponents/Config/Power.tsx index 0cf685a3..4f52be5f 100644 --- a/src/components/PageComponents/Config/Power.tsx +++ b/src/components/PageComponents/Config/Power.tsx @@ -1,6 +1,6 @@ -import type { PowerValidation } from "@app/validation/config/power.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { PowerValidation } from "@app/validation/config/power.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Power = (): JSX.Element => { diff --git a/src/components/PageComponents/Config/Security.tsx b/src/components/PageComponents/Config/Security.tsx index 9848f491..7baaebda 100644 --- a/src/components/PageComponents/Config/Security.tsx +++ b/src/components/PageComponents/Config/Security.tsx @@ -1,11 +1,11 @@ import { PkiRegenerateDialog } from "@app/components/Dialog/PkiRegenerateDialog"; -import { DynamicForm } from "@app/components/Form/DynamicForm.js"; +import { DynamicForm } from "@app/components/Form/DynamicForm.tsx"; import { getX25519PrivateKey, getX25519PublicKey, } from "@app/core/utils/x25519"; -import type { SecurityValidation } from "@app/validation/config/security.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { SecurityValidation } from "@app/validation/config/security.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; import { fromByteArray, toByteArray } from "base64-js"; import { Eye, EyeOff } from "lucide-react"; diff --git a/src/components/PageComponents/Connect/BLE.tsx b/src/components/PageComponents/Connect/BLE.tsx index 0d78b4e1..82d8dd41 100644 --- a/src/components/PageComponents/Connect/BLE.tsx +++ b/src/components/PageComponents/Connect/BLE.tsx @@ -1,10 +1,10 @@ import type { TabElementProps } from "@app/components/Dialog/NewDeviceDialog"; -import { Button } from "@components/UI/Button.js"; -import { Mono } from "@components/generic/Mono.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDeviceStore } from "@core/stores/deviceStore.js"; -import { subscribeAll } from "@core/subscriptions.js"; -import { randId } from "@core/utils/randId.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Mono } from "@components/generic/Mono.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDeviceStore } from "@core/stores/deviceStore.ts"; +import { subscribeAll } from "@core/subscriptions.ts"; +import { randId } from "@core/utils/randId.ts"; import { BleConnection, Constants } from "@meshtastic/js"; import { useCallback, useEffect, useState } from "react"; diff --git a/src/components/PageComponents/Connect/HTTP.tsx b/src/components/PageComponents/Connect/HTTP.tsx index 1eb7ca5c..de776327 100644 --- a/src/components/PageComponents/Connect/HTTP.tsx +++ b/src/components/PageComponents/Connect/HTTP.tsx @@ -1,12 +1,12 @@ import type { TabElementProps } from "@app/components/Dialog/NewDeviceDialog"; -import { Button } from "@components/UI/Button.js"; -import { Input } from "@components/UI/Input.js"; -import { Label } from "@components/UI/Label.js"; -import { Switch } from "@components/UI/Switch.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDeviceStore } from "@core/stores/deviceStore.js"; -import { subscribeAll } from "@core/subscriptions.js"; -import { randId } from "@core/utils/randId.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { Label } from "@components/UI/Label.tsx"; +import { Switch } from "@components/UI/Switch.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDeviceStore } from "@core/stores/deviceStore.ts"; +import { subscribeAll } from "@core/subscriptions.ts"; +import { randId } from "@core/utils/randId.ts"; import { HttpConnection } from "@meshtastic/js"; import { useState } from "react"; import { Controller, useForm, useWatch } from "react-hook-form"; diff --git a/src/components/PageComponents/Connect/Serial.tsx b/src/components/PageComponents/Connect/Serial.tsx index 68ba70d6..38aab8fb 100644 --- a/src/components/PageComponents/Connect/Serial.tsx +++ b/src/components/PageComponents/Connect/Serial.tsx @@ -1,10 +1,10 @@ import type { TabElementProps } from "@app/components/Dialog/NewDeviceDialog"; -import { Button } from "@components/UI/Button.js"; -import { Mono } from "@components/generic/Mono.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDeviceStore } from "@core/stores/deviceStore.js"; -import { subscribeAll } from "@core/subscriptions.js"; -import { randId } from "@core/utils/randId.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Mono } from "@components/generic/Mono.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDeviceStore } from "@core/stores/deviceStore.ts"; +import { subscribeAll } from "@core/subscriptions.ts"; +import { randId } from "@core/utils/randId.ts"; import { SerialConnection } from "@meshtastic/js"; import { useCallback, useEffect, useState } from "react"; diff --git a/src/components/PageComponents/Messages/ChannelChat.tsx b/src/components/PageComponents/Messages/ChannelChat.tsx index 7507de97..79950bf8 100644 --- a/src/components/PageComponents/Messages/ChannelChat.tsx +++ b/src/components/PageComponents/Messages/ChannelChat.tsx @@ -1,11 +1,11 @@ -import { Subtle } from "@app/components/UI/Typography/Subtle.js"; +import { Subtle } from "@app/components/UI/Typography/Subtle.tsx"; import { type MessageWithState, useDevice, -} from "@app/core/stores/deviceStore.js"; -import { Message } from "@components/PageComponents/Messages/Message.js"; -import { MessageInput } from "@components/PageComponents/Messages/MessageInput.js"; -import { TraceRoute } from "@components/PageComponents/Messages/TraceRoute.js"; +} from "@app/core/stores/deviceStore.ts"; +import { Message } from "@components/PageComponents/Messages/Message.tsx"; +import { MessageInput } from "@components/PageComponents/Messages/MessageInput.tsx"; +import { TraceRoute } from "@components/PageComponents/Messages/TraceRoute.tsx"; import type { Protobuf, Types } from "@meshtastic/js"; import { InboxIcon } from "lucide-react"; diff --git a/src/components/PageComponents/Messages/Message.tsx b/src/components/PageComponents/Messages/Message.tsx index b958b803..d1d35784 100644 --- a/src/components/PageComponents/Messages/Message.tsx +++ b/src/components/PageComponents/Messages/Message.tsx @@ -1,4 +1,4 @@ -import type { MessageWithState } from "@app/core/stores/deviceStore.js"; +import type { MessageWithState } from "@app/core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import type { Protobuf } from "@meshtastic/js"; import { diff --git a/src/components/PageComponents/Messages/MessageInput.tsx b/src/components/PageComponents/Messages/MessageInput.tsx index 42a7fb6a..9a7c865a 100644 --- a/src/components/PageComponents/Messages/MessageInput.tsx +++ b/src/components/PageComponents/Messages/MessageInput.tsx @@ -1,6 +1,6 @@ -import { Button } from "@components/UI/Button.js"; -import { Input } from "@components/UI/Input.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Input } from "@components/UI/Input.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import type { Types } from "@meshtastic/js"; import { SendIcon } from "lucide-react"; diff --git a/src/components/PageComponents/Messages/TraceRoute.tsx b/src/components/PageComponents/Messages/TraceRoute.tsx index e2adf30e..5b768580 100644 --- a/src/components/PageComponents/Messages/TraceRoute.tsx +++ b/src/components/PageComponents/Messages/TraceRoute.tsx @@ -1,4 +1,4 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; import type { Protobuf } from "@meshtastic/js"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; diff --git a/src/components/PageComponents/ModuleConfig/AmbientLighting.tsx b/src/components/PageComponents/ModuleConfig/AmbientLighting.tsx index 275487a8..978ef633 100644 --- a/src/components/PageComponents/ModuleConfig/AmbientLighting.tsx +++ b/src/components/PageComponents/ModuleConfig/AmbientLighting.tsx @@ -1,6 +1,6 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import type { AmbientLightingValidation } from "@app/validation/moduleConfig/ambientLighting.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import type { AmbientLightingValidation } from "@app/validation/moduleConfig/ambientLighting.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; import { Protobuf } from "@meshtastic/js"; export const AmbientLighting = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/Audio.tsx b/src/components/PageComponents/ModuleConfig/Audio.tsx index 807218fb..c68bd9bf 100644 --- a/src/components/PageComponents/ModuleConfig/Audio.tsx +++ b/src/components/PageComponents/ModuleConfig/Audio.tsx @@ -1,6 +1,6 @@ -import type { AudioValidation } from "@app/validation/moduleConfig/audio.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { AudioValidation } from "@app/validation/moduleConfig/audio.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Audio = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/CannedMessage.tsx b/src/components/PageComponents/ModuleConfig/CannedMessage.tsx index 1ab3da31..5fb1046a 100644 --- a/src/components/PageComponents/ModuleConfig/CannedMessage.tsx +++ b/src/components/PageComponents/ModuleConfig/CannedMessage.tsx @@ -1,6 +1,6 @@ -import type { CannedMessageValidation } from "@app/validation/moduleConfig/cannedMessage.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { CannedMessageValidation } from "@app/validation/moduleConfig/cannedMessage.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const CannedMessage = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/DetectionSensor.tsx b/src/components/PageComponents/ModuleConfig/DetectionSensor.tsx index 8bf49d42..c7ec3c98 100644 --- a/src/components/PageComponents/ModuleConfig/DetectionSensor.tsx +++ b/src/components/PageComponents/ModuleConfig/DetectionSensor.tsx @@ -1,6 +1,6 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import type { DetectionSensorValidation } from "@app/validation/moduleConfig/detectionSensor.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import type { DetectionSensorValidation } from "@app/validation/moduleConfig/detectionSensor.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; import { Protobuf } from "@meshtastic/js"; export const DetectionSensor = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/ExternalNotification.tsx b/src/components/PageComponents/ModuleConfig/ExternalNotification.tsx index 44abc6c1..f6b52662 100644 --- a/src/components/PageComponents/ModuleConfig/ExternalNotification.tsx +++ b/src/components/PageComponents/ModuleConfig/ExternalNotification.tsx @@ -1,6 +1,6 @@ -import type { ExternalNotificationValidation } from "@app/validation/moduleConfig/externalNotification.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { ExternalNotificationValidation } from "@app/validation/moduleConfig/externalNotification.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const ExternalNotification = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/MQTT.tsx b/src/components/PageComponents/ModuleConfig/MQTT.tsx index 1dc324bb..bb9b1527 100644 --- a/src/components/PageComponents/ModuleConfig/MQTT.tsx +++ b/src/components/PageComponents/ModuleConfig/MQTT.tsx @@ -1,6 +1,6 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import type { MqttValidation } from "@app/validation/moduleConfig/mqtt.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import type { MqttValidation } from "@app/validation/moduleConfig/mqtt.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; import { Protobuf } from "@meshtastic/js"; export const MQTT = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/NeighborInfo.tsx b/src/components/PageComponents/ModuleConfig/NeighborInfo.tsx index 596638cc..9c878911 100644 --- a/src/components/PageComponents/ModuleConfig/NeighborInfo.tsx +++ b/src/components/PageComponents/ModuleConfig/NeighborInfo.tsx @@ -1,6 +1,6 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import type { NeighborInfoValidation } from "@app/validation/moduleConfig/neighborInfo.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import type { NeighborInfoValidation } from "@app/validation/moduleConfig/neighborInfo.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; import { Protobuf } from "@meshtastic/js"; export const NeighborInfo = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/Paxcounter.tsx b/src/components/PageComponents/ModuleConfig/Paxcounter.tsx index 42be1b14..e31a298c 100644 --- a/src/components/PageComponents/ModuleConfig/Paxcounter.tsx +++ b/src/components/PageComponents/ModuleConfig/Paxcounter.tsx @@ -1,6 +1,6 @@ -import type { PaxcounterValidation } from "@app/validation/moduleConfig/paxcounter.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { PaxcounterValidation } from "@app/validation/moduleConfig/paxcounter.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Paxcounter = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/RangeTest.tsx b/src/components/PageComponents/ModuleConfig/RangeTest.tsx index 4fb2abb8..a661805d 100644 --- a/src/components/PageComponents/ModuleConfig/RangeTest.tsx +++ b/src/components/PageComponents/ModuleConfig/RangeTest.tsx @@ -1,6 +1,6 @@ -import type { RangeTestValidation } from "@app/validation/moduleConfig/rangeTest.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { RangeTestValidation } from "@app/validation/moduleConfig/rangeTest.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const RangeTest = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/Serial.tsx b/src/components/PageComponents/ModuleConfig/Serial.tsx index 7fd40571..92db0d9a 100644 --- a/src/components/PageComponents/ModuleConfig/Serial.tsx +++ b/src/components/PageComponents/ModuleConfig/Serial.tsx @@ -1,6 +1,6 @@ -import type { SerialValidation } from "@app/validation/moduleConfig/serial.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { SerialValidation } from "@app/validation/moduleConfig/serial.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Serial = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/StoreForward.tsx b/src/components/PageComponents/ModuleConfig/StoreForward.tsx index 994f6051..6fe5c585 100644 --- a/src/components/PageComponents/ModuleConfig/StoreForward.tsx +++ b/src/components/PageComponents/ModuleConfig/StoreForward.tsx @@ -1,6 +1,6 @@ -import type { StoreForwardValidation } from "@app/validation/moduleConfig/storeForward.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { StoreForwardValidation } from "@app/validation/moduleConfig/storeForward.ts"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const StoreForward = (): JSX.Element => { diff --git a/src/components/PageComponents/ModuleConfig/Telemetry.tsx b/src/components/PageComponents/ModuleConfig/Telemetry.tsx index 5af2f2b5..24074f48 100644 --- a/src/components/PageComponents/ModuleConfig/Telemetry.tsx +++ b/src/components/PageComponents/ModuleConfig/Telemetry.tsx @@ -1,6 +1,6 @@ -import type { TelemetryValidation } from "@app/validation/moduleConfig/telemetry.js"; -import { DynamicForm } from "@components/Form/DynamicForm.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import type { TelemetryValidation } from "@app/validation/moduleConfig/telemetry.tsx"; +import { DynamicForm } from "@components/Form/DynamicForm.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Protobuf } from "@meshtastic/js"; export const Telemetry = (): JSX.Element => { diff --git a/src/components/PageLayout.tsx b/src/components/PageLayout.tsx index f6698b97..79495bdc 100644 --- a/src/components/PageLayout.tsx +++ b/src/components/PageLayout.tsx @@ -1,4 +1,4 @@ -import { cn } from "@app/core/utils/cn.js"; +import { cn } from "@app/core/utils/cn.ts"; import { AlignLeftIcon, type LucideIcon } from "lucide-react"; import Footer from "./UI/Footer"; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 116b6647..05f5ef19 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -1,8 +1,8 @@ -import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; -import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; -import { Subtle } from "@components/UI/Typography/Subtle.js"; -import { useDevice } from "@core/stores/deviceStore.js"; -import type { Page } from "@core/stores/deviceStore.js"; +import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.tsx"; +import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; +import { Subtle } from "@components/UI/Typography/Subtle.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; +import type { Page } from "@core/stores/deviceStore.ts"; import { BatteryMediumIcon, CpuIcon, diff --git a/src/components/Toaster.tsx b/src/components/Toaster.tsx index 4aa31845..cfe13a9d 100644 --- a/src/components/Toaster.tsx +++ b/src/components/Toaster.tsx @@ -1,4 +1,4 @@ -import { useToast } from "@core/hooks/useToast.js"; +import { useToast } from "@core/hooks/useToast.ts"; import { Toast, @@ -7,7 +7,7 @@ import { ToastProvider, ToastTitle, ToastViewport, -} from "@components/UI/Toast.js"; +} from "@components/UI/Toast.tsx"; export function Toaster() { const { toasts } = useToast(); diff --git a/src/components/UI/Button.tsx b/src/components/UI/Button.tsx index f903f25e..39418551 100644 --- a/src/components/UI/Button.tsx +++ b/src/components/UI/Button.tsx @@ -1,7 +1,7 @@ import { type VariantProps, cva } from "class-variance-authority"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const buttonVariants = cva( "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 dark:hover:bg-slate-800 dark:hover:text-slate-100 disabled:opacity-50 dark:focus:ring-slate-400 disabled:pointer-events-none dark:focus:ring-offset-slate-900 data-[state=open]:bg-slate-100 dark:data-[state=open]:bg-slate-800", diff --git a/src/components/UI/Checkbox.tsx b/src/components/UI/Checkbox.tsx index 38bc7873..7c0eaa9b 100644 --- a/src/components/UI/Checkbox.tsx +++ b/src/components/UI/Checkbox.tsx @@ -2,7 +2,7 @@ import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { Check } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Checkbox = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Command.tsx b/src/components/UI/Command.tsx index 00c51b61..63d77d28 100644 --- a/src/components/UI/Command.tsx +++ b/src/components/UI/Command.tsx @@ -3,8 +3,8 @@ import { Command as CommandPrimitive } from "cmdk"; import { Search } from "lucide-react"; import * as React from "react"; -import { Dialog, DialogContent } from "@components/UI/Dialog.js"; -import { cn } from "@core/utils/cn.js"; +import { Dialog, DialogContent } from "@components/UI/Dialog.tsx"; +import { cn } from "@core/utils/cn.ts"; const Command = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Dialog.tsx b/src/components/UI/Dialog.tsx index 5ab0c342..019b8142 100644 --- a/src/components/UI/Dialog.tsx +++ b/src/components/UI/Dialog.tsx @@ -2,7 +2,7 @@ import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Dialog = DialogPrimitive.Root; diff --git a/src/components/UI/DropdownMenu.tsx b/src/components/UI/DropdownMenu.tsx index 02f3eb45..26ccdbe9 100644 --- a/src/components/UI/DropdownMenu.tsx +++ b/src/components/UI/DropdownMenu.tsx @@ -2,7 +2,7 @@ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/src/components/UI/Generator.tsx b/src/components/UI/Generator.tsx index f9db3f89..cb8fea26 100644 --- a/src/components/UI/Generator.tsx +++ b/src/components/UI/Generator.tsx @@ -1,14 +1,14 @@ import * as React from "react"; -import { Button } from "@components/UI/Button.js"; -import { Input } from "@components/UI/Input.js"; +import { Button } from "@components/UI/Button.tsx"; +import { Input } from "@components/UI/Input.tsx"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, -} from "@components/UI/Select.js"; +} from "@components/UI/Select.tsx"; import type { LucideIcon } from "lucide-react"; export interface GeneratorProps extends React.BaseHTMLAttributes { diff --git a/src/components/UI/Input.tsx b/src/components/UI/Input.tsx index 630a6364..a397cef8 100644 --- a/src/components/UI/Input.tsx +++ b/src/components/UI/Input.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; import { type VariantProps, cva } from "class-variance-authority"; import type { LucideIcon } from "lucide-react"; diff --git a/src/components/UI/Label.tsx b/src/components/UI/Label.tsx index 9cef3b16..cb78b532 100644 --- a/src/components/UI/Label.tsx +++ b/src/components/UI/Label.tsx @@ -1,7 +1,7 @@ import * as LabelPrimitive from "@radix-ui/react-label"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Label = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Menubar.tsx b/src/components/UI/Menubar.tsx index 729665b3..bcf4d7ae 100644 --- a/src/components/UI/Menubar.tsx +++ b/src/components/UI/Menubar.tsx @@ -2,7 +2,7 @@ import * as MenubarPrimitive from "@radix-ui/react-menubar"; import { Check, ChevronRight, Circle } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const MenubarMenu = MenubarPrimitive.Menu; diff --git a/src/components/UI/Popover.tsx b/src/components/UI/Popover.tsx index 95641230..43977f2f 100644 --- a/src/components/UI/Popover.tsx +++ b/src/components/UI/Popover.tsx @@ -1,7 +1,7 @@ import * as PopoverPrimitive from "@radix-ui/react-popover"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Popover = PopoverPrimitive.Root; diff --git a/src/components/UI/ScrollArea.tsx b/src/components/UI/ScrollArea.tsx index 44f69e26..7415b64e 100644 --- a/src/components/UI/ScrollArea.tsx +++ b/src/components/UI/ScrollArea.tsx @@ -1,7 +1,7 @@ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const ScrollArea = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Select.tsx b/src/components/UI/Select.tsx index 59f5a9cd..32a0a8cb 100644 --- a/src/components/UI/Select.tsx +++ b/src/components/UI/Select.tsx @@ -2,7 +2,7 @@ import * as SelectPrimitive from "@radix-ui/react-select"; import { Check, ChevronDown } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Select = SelectPrimitive.Root; diff --git a/src/components/UI/Seperator.tsx b/src/components/UI/Seperator.tsx index 6b5a9692..20a5511b 100644 --- a/src/components/UI/Seperator.tsx +++ b/src/components/UI/Seperator.tsx @@ -1,7 +1,7 @@ import * as SeparatorPrimitive from "@radix-ui/react-separator"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Separator = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Sidebar/SidebarSection.tsx b/src/components/UI/Sidebar/SidebarSection.tsx index ed6cb767..acff2dab 100644 --- a/src/components/UI/Sidebar/SidebarSection.tsx +++ b/src/components/UI/Sidebar/SidebarSection.tsx @@ -1,4 +1,4 @@ -import { H4 } from "@components/UI/Typography/H4.js"; +import { H4 } from "@components/UI/Typography/H4.tsx"; export interface SidebarSectionProps { label: string; diff --git a/src/components/UI/Sidebar/sidebarButton.tsx b/src/components/UI/Sidebar/sidebarButton.tsx index ef8f3ff6..c3f30e79 100644 --- a/src/components/UI/Sidebar/sidebarButton.tsx +++ b/src/components/UI/Sidebar/sidebarButton.tsx @@ -1,4 +1,4 @@ -import { Button } from "@components/UI/Button.js"; +import { Button } from "@components/UI/Button.tsx"; import type { LucideIcon } from "lucide-react"; export interface SidebarButtonProps { diff --git a/src/components/UI/Switch.tsx b/src/components/UI/Switch.tsx index c3e97fdc..c395547d 100644 --- a/src/components/UI/Switch.tsx +++ b/src/components/UI/Switch.tsx @@ -1,7 +1,7 @@ import * as SwitchPrimitives from "@radix-ui/react-switch"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Switch = React.forwardRef< React.ElementRef, diff --git a/src/components/UI/Tabs.tsx b/src/components/UI/Tabs.tsx index f8c83e6d..66f126da 100644 --- a/src/components/UI/Tabs.tsx +++ b/src/components/UI/Tabs.tsx @@ -1,7 +1,7 @@ import * as TabsPrimitive from "@radix-ui/react-tabs"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const Tabs = TabsPrimitive.Root; diff --git a/src/components/UI/Toast.tsx b/src/components/UI/Toast.tsx index a3080fbf..ca8dfc90 100644 --- a/src/components/UI/Toast.tsx +++ b/src/components/UI/Toast.tsx @@ -3,7 +3,7 @@ import { type VariantProps, cva } from "class-variance-authority"; import { X } from "lucide-react"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const ToastProvider = ToastPrimitives.Provider; diff --git a/src/components/UI/Tooltip.tsx b/src/components/UI/Tooltip.tsx index 9cdc8f83..bde4b344 100644 --- a/src/components/UI/Tooltip.tsx +++ b/src/components/UI/Tooltip.tsx @@ -1,7 +1,7 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip"; import * as React from "react"; -import { cn } from "@core/utils/cn.js"; +import { cn } from "@core/utils/cn.ts"; const TooltipProvider = TooltipPrimitive.Provider; diff --git a/src/components/UI/Typography/H4.tsx b/src/components/UI/Typography/H4.tsx index e2562d6e..33eeb0af 100644 --- a/src/components/UI/Typography/H4.tsx +++ b/src/components/UI/Typography/H4.tsx @@ -1,4 +1,4 @@ -import { cn } from "@app/core/utils/cn.js"; +import { cn } from "@app/core/utils/cn.ts"; export interface H4Props { className?: string; diff --git a/src/components/UI/Typography/Subtle.tsx b/src/components/UI/Typography/Subtle.tsx index 172e37ec..2772453c 100644 --- a/src/components/UI/Typography/Subtle.tsx +++ b/src/components/UI/Typography/Subtle.tsx @@ -1,4 +1,4 @@ -import { cn } from "@app/core/utils/cn.js"; +import { cn } from "@app/core/utils/cn.ts"; export interface SubtleProps { className?: string; diff --git a/src/components/generic/ThemeController.tsx b/src/components/generic/ThemeController.tsx index c1d89ce0..6dec03ad 100644 --- a/src/components/generic/ThemeController.tsx +++ b/src/components/generic/ThemeController.tsx @@ -1,4 +1,4 @@ -import { useAppStore } from "@core/stores/appStore.js"; +import { useAppStore } from "@core/stores/appStore.ts"; import type { ReactNode } from "react"; export interface ThemeControllerProps { diff --git a/src/core/hooks/useToast.ts b/src/core/hooks/useToast.ts index 90b9a1c5..f64cf45a 100644 --- a/src/core/hooks/useToast.ts +++ b/src/core/hooks/useToast.ts @@ -1,6 +1,6 @@ import { type ReactNode, useSyncExternalStore } from "react"; -import type { ToastActionElement, ToastProps } from "@components/UI/Toast.js"; +import type { ToastActionElement, ToastProps } from "@components/UI/Toast.tsx"; const TOAST_LIMIT = 1; const TOAST_REMOVE_DELAY = 1000000; @@ -30,21 +30,21 @@ type ActionType = typeof actionTypes; type Action = | { - type: ActionType["ADD_TOAST"]; - toast: ToasterToast; - } + type: ActionType["ADD_TOAST"]; + toast: ToasterToast; + } | { - type: ActionType["UPDATE_TOAST"]; - toast: Partial; - } + type: ActionType["UPDATE_TOAST"]; + toast: Partial; + } | { - type: ActionType["DISMISS_TOAST"]; - toastId?: ToasterToast["id"]; - } + type: ActionType["DISMISS_TOAST"]; + toastId?: ToasterToast["id"]; + } | { - type: ActionType["REMOVE_TOAST"]; - toastId?: ToasterToast["id"]; - }; + type: ActionType["REMOVE_TOAST"]; + toastId?: ToasterToast["id"]; + }; interface State { toasts: ToasterToast[]; @@ -80,7 +80,7 @@ export const reducer = (state: State, action: Action): State => { return { ...state, toasts: state.toasts.map((t) => - t.id === action.toast.id ? { ...t, ...action.toast } : t, + t.id === action.toast.id ? { ...t, ...action.toast } : t ), }; @@ -102,10 +102,10 @@ export const reducer = (state: State, action: Action): State => { toasts: state.toasts.map((t) => t.id === toastId || toastId === undefined ? { - ...t, - open: false, - } - : t, + ...t, + open: false, + } + : t ), }; } @@ -190,4 +190,4 @@ function useToast() { }; } -export { useToast, toast }; +export { toast, useToast }; diff --git a/src/core/subscriptions.ts b/src/core/subscriptions.ts index 36bc72d2..afba12b7 100644 --- a/src/core/subscriptions.ts +++ b/src/core/subscriptions.ts @@ -1,4 +1,4 @@ -import type { Device } from "@core/stores/deviceStore.js"; +import type { Device } from "@core/stores/deviceStore.ts"; import { Protobuf, type Types } from "@meshtastic/js"; export const subscribeAll = ( diff --git a/src/index.tsx b/src/index.tsx index bbd5808d..33d79536 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4,7 +4,7 @@ import "maplibre-gl/dist/maplibre-gl.css"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; -import { App } from "@app/App.js"; +import { App } from "@app/App.tsx"; const container = document.getElementById("root") as HTMLElement; const root = createRoot(container); diff --git a/src/pages/Channels.tsx b/src/pages/Channels.tsx index 83eefdbd..3468aa0e 100644 --- a/src/pages/Channels.tsx +++ b/src/pages/Channels.tsx @@ -3,11 +3,11 @@ import { TabsContent, TabsList, TabsTrigger, -} from "@app/components/UI/Tabs.js"; -import { Channel } from "@components/PageComponents/Channel.js"; -import { PageLayout } from "@components/PageLayout.js"; -import { Sidebar } from "@components/Sidebar.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +} from "@app/components/UI/Tabs.tsx"; +import { Channel } from "@components/PageComponents/Channel.tsx"; +import { PageLayout } from "@components/PageLayout.tsx"; +import { Sidebar } from "@components/Sidebar.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Types } from "@meshtastic/js"; import type { Protobuf } from "@meshtastic/js"; import { ImportIcon, QrCodeIcon } from "lucide-react"; diff --git a/src/pages/Config/DeviceConfig.tsx b/src/pages/Config/DeviceConfig.tsx index 45973e60..e870b944 100644 --- a/src/pages/Config/DeviceConfig.tsx +++ b/src/pages/Config/DeviceConfig.tsx @@ -1,18 +1,18 @@ -import { Bluetooth } from "@components/PageComponents/Config/Bluetooth.js"; -import { Device } from "@components/PageComponents/Config/Device.js"; -import { Display } from "@components/PageComponents/Config/Display.js"; -import { LoRa } from "@components/PageComponents/Config/LoRa.js"; -import { Network } from "@components/PageComponents/Config/Network.js"; -import { Position } from "@components/PageComponents/Config/Position.js"; -import { Power } from "@components/PageComponents/Config/Power.js"; -import { Security } from "@components/PageComponents/Config/Security.js"; +import { Bluetooth } from "@components/PageComponents/Config/Bluetooth.tsx"; +import { Device } from "@components/PageComponents/Config/Device.tsx"; +import { Display } from "@components/PageComponents/Config/Display.tsx"; +import { LoRa } from "@components/PageComponents/Config/LoRa.tsx"; +import { Network } from "@components/PageComponents/Config/Network.tsx"; +import { Position } from "@components/PageComponents/Config/Position.tsx"; +import { Power } from "@components/PageComponents/Config/Power.tsx"; +import { Security } from "@components/PageComponents/Config/Security.tsx"; import { Tabs, TabsContent, TabsList, TabsTrigger, -} from "@components/UI/Tabs.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +} from "@components/UI/Tabs.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; export const DeviceConfig = (): JSX.Element => { const { metadata } = useDevice(); diff --git a/src/pages/Config/ModuleConfig.tsx b/src/pages/Config/ModuleConfig.tsx index 276553da..95bd3dd1 100644 --- a/src/pages/Config/ModuleConfig.tsx +++ b/src/pages/Config/ModuleConfig.tsx @@ -1,21 +1,21 @@ -import { AmbientLighting } from "@app/components/PageComponents/ModuleConfig/AmbientLighting.js"; -import { DetectionSensor } from "@app/components/PageComponents/ModuleConfig/DetectionSensor.js"; -import { NeighborInfo } from "@app/components/PageComponents/ModuleConfig/NeighborInfo.js"; -import { Audio } from "@components/PageComponents/ModuleConfig/Audio.js"; -import { CannedMessage } from "@components/PageComponents/ModuleConfig/CannedMessage.js"; -import { ExternalNotification } from "@components/PageComponents/ModuleConfig/ExternalNotification.js"; -import { MQTT } from "@components/PageComponents/ModuleConfig/MQTT.js"; -import { Paxcounter } from "@components/PageComponents/ModuleConfig/Paxcounter.js"; -import { RangeTest } from "@components/PageComponents/ModuleConfig/RangeTest.js"; -import { Serial } from "@components/PageComponents/ModuleConfig/Serial.js"; -import { StoreForward } from "@components/PageComponents/ModuleConfig/StoreForward.js"; -import { Telemetry } from "@components/PageComponents/ModuleConfig/Telemetry.js"; +import { AmbientLighting } from "@app/components/PageComponents/ModuleConfig/AmbientLighting.tsx"; +import { DetectionSensor } from "@app/components/PageComponents/ModuleConfig/DetectionSensor.tsx"; +import { NeighborInfo } from "@app/components/PageComponents/ModuleConfig/NeighborInfo.tsx"; +import { Audio } from "@components/PageComponents/ModuleConfig/Audio.tsx"; +import { CannedMessage } from "@components/PageComponents/ModuleConfig/CannedMessage.tsx"; +import { ExternalNotification } from "@components/PageComponents/ModuleConfig/ExternalNotification.tsx"; +import { MQTT } from "@components/PageComponents/ModuleConfig/MQTT.tsx"; +import { Paxcounter } from "@components/PageComponents/ModuleConfig/Paxcounter.tsx"; +import { RangeTest } from "@components/PageComponents/ModuleConfig/RangeTest.tsx"; +import { Serial } from "@components/PageComponents/ModuleConfig/Serial.tsx"; +import { StoreForward } from "@components/PageComponents/ModuleConfig/StoreForward.tsx"; +import { Telemetry } from "@components/PageComponents/ModuleConfig/Telemetry.tsx"; import { Tabs, TabsContent, TabsList, TabsTrigger, -} from "@components/UI/Tabs.js"; +} from "@components/UI/Tabs.tsx"; export const ModuleConfig = (): JSX.Element => { const tabs = [ diff --git a/src/pages/Config/index.tsx b/src/pages/Config/index.tsx index c568670a..c942940c 100644 --- a/src/pages/Config/index.tsx +++ b/src/pages/Config/index.tsx @@ -1,11 +1,11 @@ -import { useDevice } from "@app/core/stores/deviceStore.js"; -import { PageLayout } from "@components/PageLayout.js"; -import { Sidebar } from "@components/Sidebar.js"; -import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; -import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; -import { useToast } from "@core/hooks/useToast.js"; -import { DeviceConfig } from "@pages/Config/DeviceConfig.js"; -import { ModuleConfig } from "@pages/Config/ModuleConfig.js"; +import { useDevice } from "@app/core/stores/deviceStore.ts"; +import { PageLayout } from "@components/PageLayout.tsx"; +import { Sidebar } from "@components/Sidebar.tsx"; +import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.tsx"; +import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; +import { useToast } from "@core/hooks/useToast.ts"; +import { DeviceConfig } from "@pages/Config/DeviceConfig.tsx"; +import { ModuleConfig } from "@pages/Config/ModuleConfig.tsx"; import { BoxesIcon, SaveIcon, SettingsIcon } from "lucide-react"; import { useState } from "react"; diff --git a/src/pages/Dashboard/index.tsx b/src/pages/Dashboard/index.tsx index 3bbbbd9f..ee2c4693 100644 --- a/src/pages/Dashboard/index.tsx +++ b/src/pages/Dashboard/index.tsx @@ -1,9 +1,9 @@ -import { useAppStore } from "@app/core/stores/appStore.js"; -import { useDeviceStore } from "@app/core/stores/deviceStore.js"; -import { Button } from "@components/UI/Button.js"; -import { Separator } from "@components/UI/Seperator.js"; -import { H3 } from "@components/UI/Typography/H3.js"; -import { Subtle } from "@components/UI/Typography/Subtle.js"; +import { useAppStore } from "@app/core/stores/appStore.ts"; +import { useDeviceStore } from "@app/core/stores/deviceStore.ts"; +import { Button } from "@components/UI/Button.tsx"; +import { Separator } from "@components/UI/Seperator.tsx"; +import { H3 } from "@components/UI/Typography/H3.tsx"; +import { Subtle } from "@components/UI/Typography/Subtle.tsx"; import { BluetoothIcon, ListPlusIcon, diff --git a/src/pages/Map.tsx b/src/pages/Map.tsx index 42cc5fcb..68587e44 100644 --- a/src/pages/Map.tsx +++ b/src/pages/Map.tsx @@ -1,11 +1,11 @@ -import { Subtle } from "@app/components/UI/Typography/Subtle.js"; -import { cn } from "@app/core/utils/cn.js"; -import { PageLayout } from "@components/PageLayout.js"; -import { Sidebar } from "@components/Sidebar.js"; -import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; -import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; -import { useAppStore } from "@core/stores/appStore.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import { Subtle } from "@app/components/UI/Typography/Subtle.tsx"; +import { cn } from "@app/core/utils/cn.ts"; +import { PageLayout } from "@components/PageLayout.tsx"; +import { Sidebar } from "@components/Sidebar.tsx"; +import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.tsx"; +import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; +import { useAppStore } from "@core/stores/appStore.ts"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; import { bbox, lineString } from "@turf/turf"; diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index 4e7fbae9..28a35d2c 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -1,14 +1,14 @@ -import { ChannelChat } from "@components/PageComponents/Messages/ChannelChat.js"; -import { PageLayout } from "@components/PageLayout.js"; -import { Sidebar } from "@components/Sidebar.js"; -import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.js"; -import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.js"; -import { useToast } from "@core/hooks/useToast.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import { ChannelChat } from "@components/PageComponents/Messages/ChannelChat.tsx"; +import { PageLayout } from "@components/PageLayout.tsx"; +import { Sidebar } from "@components/Sidebar.tsx"; +import { SidebarSection } from "@components/UI/Sidebar/SidebarSection.tsx"; +import { SidebarButton } from "@components/UI/Sidebar/sidebarButton.tsx"; +import { useToast } from "@core/hooks/useToast.ts"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { Protobuf, Types } from "@meshtastic/js"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; -import { getChannelName } from "@pages/Channels.js"; +import { getChannelName } from "@pages/Channels.tsx"; import { HashIcon, LockIcon, LockOpenIcon, WaypointsIcon } from "lucide-react"; import { useState } from "react"; diff --git a/src/pages/Nodes.tsx b/src/pages/Nodes.tsx index 038d81a8..f66ad1ff 100644 --- a/src/pages/Nodes.tsx +++ b/src/pages/Nodes.tsx @@ -1,11 +1,11 @@ import Footer from "@app/components/UI/Footer"; import { useAppStore } from "@app/core/stores/appStore"; -import { Sidebar } from "@components/Sidebar.js"; -import { Button } from "@components/UI/Button.js"; -import { Mono } from "@components/generic/Mono.js"; -import { Table } from "@components/generic/Table/index.js"; -import { TimeAgo } from "@components/generic/Table/tmp/TimeAgo.js"; -import { useDevice } from "@core/stores/deviceStore.js"; +import { Sidebar } from "@components/Sidebar.tsx"; +import { Button } from "@components/UI/Button.tsx"; +import { Mono } from "@components/generic/Mono.tsx"; +import { Table } from "@components/generic/Table/index.tsx"; +import { TimeAgo } from "@components/generic/Table/tmp/TimeAgo.tsx"; +import { useDevice } from "@core/stores/deviceStore.ts"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { Protobuf } from "@meshtastic/js"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; diff --git a/src/validation/rasterSource.ts b/src/validation/rasterSource.ts index 0afeec77..965206d4 100644 --- a/src/validation/rasterSource.ts +++ b/src/validation/rasterSource.ts @@ -1,6 +1,6 @@ import { IsArray, IsBoolean, IsNumber, IsString, IsUrl } from "class-validator"; -import type { RasterSource } from "@core/stores/appStore.js"; +import type { RasterSource } from "@core/stores/appStore.ts"; export class MapValidation { @IsArray() diff --git a/tsconfig.json b/tsconfig.json index af036a6e..4cf9d6f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,6 +34,7 @@ "@types/w3c-web-serial" ], "strictPropertyInitialization": false, - "experimentalDecorators": true + "experimentalDecorators": true, + "allowImportingTsExtensions": true, } }