Minor updates to styles and package updates
All checks were successful
Deploy to production / build (push) Successful in 19s

This commit is contained in:
2026-10-15 13:58:35 -05:00
parent 142a45ef54
commit ffd241dad8
7 changed files with 265 additions and 275 deletions

View File

@@ -117,7 +117,6 @@ sudo pm2 start server.cjs
- Mobile improvements
- New Carousel on weather description
- Updates to weather modal
- Add mantine-led for monitoring status (https://gfazioli.github.io/mantine-led)
- Explore https://gfazioli.github.io/mantine-scene/
- Explore https://gfazioli.github.io/mantine-window/

346
package-lock.json generated
View File

@@ -8,44 +8,44 @@
"name": "triggerfrontend",
"version": "1.2.0",
"dependencies": {
"@gfazioli/mantine-border-animate": "^3.0.5",
"@gfazioli/mantine-depth-select": "^2.0.15",
"@gfazioli/mantine-parallax": "^4.0.13",
"@gfazioli/mantine-reflection": "^3.0.13",
"@gfazioli/mantine-text-animate": "^4.0.15",
"@gfazioli/mantine-border-animate": "^3.0.6",
"@gfazioli/mantine-depth-select": "^2.0.16",
"@gfazioli/mantine-parallax": "^4.0.14",
"@gfazioli/mantine-reflection": "^3.0.14",
"@gfazioli/mantine-text-animate": "^4.0.16",
"@hello-pangea/dnd": "^18.0.1",
"@mantine/core": "^9.7.1",
"@mantine/dates": "^9.7.1",
"@mantine/form": "^9.7.1",
"@mantine/hooks": "^9.7.1",
"@mantine/notifications": "^9.7.1",
"@tanstack/react-query": "^5.104.1",
"@tanstack/react-query-devtools": "^5.104.1",
"@tanstack/react-query-persist-client": "^5.104.1",
"@tanstack/react-table": "^9.2.8",
"@tanstack/react-virtual": "^3.14.14",
"@mantine/core": "^9.7.2",
"@mantine/dates": "^9.7.2",
"@mantine/form": "^9.7.2",
"@mantine/hooks": "^9.7.2",
"@mantine/notifications": "^9.7.2",
"@tanstack/react-query": "^5.104.3",
"@tanstack/react-query-devtools": "^5.104.3",
"@tanstack/react-query-persist-client": "^5.104.3",
"@tanstack/react-table": "^9.3.1",
"@tanstack/react-virtual": "^3.14.20",
"idb-keyval": "^6.3.0",
"jotai": "^3.0.1",
"openmeteo": "^1.2.3",
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react": "^19.3.1",
"react-dom": "^19.3.1",
"react-fontpicker-ts": "^1.3.0",
"react-icons": "^5.7.0",
"react-router-dom": "^7.18.4",
"recharts": "^3.10.1"
},
"devDependencies": {
"@types/node": "^26.6.4",
"@types/node": "^26.6.5",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@vitejs/plugin-react": "^6.1.2",
"@vitest/coverage-v8": "^5.0.3",
"@vitest/ui": "^5.0.3",
"@vitest/coverage-v8": "^5.0.5",
"@vitest/ui": "^5.0.5",
"typescript": "^7.0.2",
"vite": "^8.3.4",
"vite-plugin-dts": "~5.1.2",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^5.0.3"
"vitest": "^5.0.5"
}
},
"node_modules/@babel/helper-string-parser": {
@@ -176,9 +176,9 @@
"integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="
},
"node_modules/@gfazioli/mantine-border-animate": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-border-animate/-/mantine-border-animate-3.0.5.tgz",
"integrity": "sha512-xLptIv20MNMUzX2d+qjPcFlw+8kaGuveeflwh8whOCstBvkPFhJWuNRc9tYnYPX3clHojXcyflFbNBzDXYIYXQ==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-border-animate/-/mantine-border-animate-3.0.6.tgz",
"integrity": "sha512-NIv+ptF/QHO69fM0EGVyWGCbv76peX4upXJX8ZXMgvEP7wlOCN9iIKVKnAqe8rS4W516240n7QjL2JsrGplEnw==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=9.0.0",
@@ -189,9 +189,9 @@
}
},
"node_modules/@gfazioli/mantine-depth-select": {
"version": "2.0.15",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-depth-select/-/mantine-depth-select-2.0.15.tgz",
"integrity": "sha512-+UngbSSRzTS48Tst7dXB3l0lO20BzWPMYorY0xKDaDHp6KjIUWcSMLNF82KjU8dxKjuSOUBZYqDf45a07n4ihw==",
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-depth-select/-/mantine-depth-select-2.0.16.tgz",
"integrity": "sha512-nz6SzfJfeojRxoI4aAuI65+S0fovcXydMNhRnSv7yzZHbFIo1rFeq57oTGYqfLdPFcpoKWj1l+0VC/f0K6zp6g==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=9.0.0",
@@ -201,9 +201,9 @@
}
},
"node_modules/@gfazioli/mantine-parallax": {
"version": "4.0.13",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-parallax/-/mantine-parallax-4.0.13.tgz",
"integrity": "sha512-bnvj3/rOXQHrm+MBI3FeE+P3+j30yDH5WUeOHZHkWJp9qGeY1Wlvq6UI6MkVEe43k9igWfHazsQpu7cafXFCrA==",
"version": "4.0.14",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-parallax/-/mantine-parallax-4.0.14.tgz",
"integrity": "sha512-qOr1/O/hyc/HRqNf2ZkdTyO+koSIf54WL1oqWjty5hIoNKk5mm+QF6rghEnjxjjmH+UX5PU7gmtGlGheAvKo6A==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=9.0.0",
@@ -213,9 +213,9 @@
}
},
"node_modules/@gfazioli/mantine-reflection": {
"version": "3.0.13",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-reflection/-/mantine-reflection-3.0.13.tgz",
"integrity": "sha512-sSE+yCR1nW0gHAIBOFfst4S4fjkRZUR8JWKAroLTpZ+8Qg+hpuLknWbpuGlW0DqdK11bGc9Yin6SB+GdypToFg==",
"version": "3.0.14",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-reflection/-/mantine-reflection-3.0.14.tgz",
"integrity": "sha512-LFct88684p3XvG1oNXQejQW0++LDU+opGg5SasXo5m3bgiHjR07QlRbEDoL1j2AxcUhY6H7XpjNGEDELLapaOg==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=9.0.0",
@@ -225,9 +225,9 @@
}
},
"node_modules/@gfazioli/mantine-text-animate": {
"version": "4.0.15",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-4.0.15.tgz",
"integrity": "sha512-Le2b9mkwmfkabM2dvnUhWyV0ZCrrnHfwG0aymS+aMyhrKvSdAeKecsfGfPUL68JWvUr3rRFzGq8hRiuf4yIWzA==",
"version": "4.0.16",
"resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-4.0.16.tgz",
"integrity": "sha512-UHe8BO/FCuO2LawcIVZcazjmYOFgyT3Xs0ikhoG2mGlYBbrG+eOLdNnG/fw8KvOiB1pzb0T8vrtIWUFd3qMTNQ==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=9.0.0",
@@ -348,9 +348,9 @@
}
},
"node_modules/@mantine/core": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/core/-/core-9.7.1.tgz",
"integrity": "sha512-SU1xklOfdEDzpPhw35ti9rF4QRE9HUongCe37C+xCO2Ea8MLJkAzreCrMxb8qcCij+gnF7SQbtTCBa1r+pKxYA==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/core/-/core-9.7.2.tgz",
"integrity": "sha512-+cggJDD0PO057SwZU/dKlWPjp0LaAn1nEM9W1m/Ia4Cjb/Hy9DjZ4I7R7xirp/eZ6xnV7OqeGmPFSJ8zeGa5kQ==",
"license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.27.20",
@@ -360,31 +360,31 @@
"type-fest": "^5.10.0"
},
"peerDependencies": {
"@mantine/hooks": "9.7.1",
"@mantine/hooks": "9.7.2",
"react": "^19.2.0",
"react-dom": "^19.2.0"
}
},
"node_modules/@mantine/dates": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-9.7.1.tgz",
"integrity": "sha512-oFQf8b0cW2ArcdP6r0ATMA4gJN3D8Nc29J7wE4E2xM5mI1+nW6k47L0E45uKwxFb9CqdhXaN+XA9lbrkWkMfsg==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-9.7.2.tgz",
"integrity": "sha512-z57sziOW1/hyGlR43I1kBE78hvfKvEWzRqznK0qTeKADLBflzGxUsZRL0GMQ1LUbQCp+Jog6MQnzgRFV3FHwsg==",
"license": "MIT",
"dependencies": {
"clsx": "^2.1.1"
},
"peerDependencies": {
"@mantine/core": "9.7.1",
"@mantine/hooks": "9.7.1",
"@mantine/core": "9.7.2",
"@mantine/hooks": "9.7.2",
"dayjs": ">=1.0.0",
"react": "^19.2.0",
"react-dom": "^19.2.0"
}
},
"node_modules/@mantine/form": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/form/-/form-9.7.1.tgz",
"integrity": "sha512-fVjWYdiMBw21z/bqUkFghyV1MsANHoqCZaXji0k4KJaRCHh7cD3qhBuLIVhc2hUCKXQ3cHiJTHLz3ayoE/mRZg==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/form/-/form-9.7.2.tgz",
"integrity": "sha512-+EskrnXLI0tzLzYh634pD3gcwZsaos5PjfxNW0Kpg7O15gugescdJnFcm4CCrNX57Saw/6fZn9IEqPx8/AcvRQ==",
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
@@ -396,34 +396,34 @@
}
},
"node_modules/@mantine/hooks": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-9.7.1.tgz",
"integrity": "sha512-C1xD4A3bfB87nUsLHr42WqOabnK4G+fCyEf8FN14EEiZAcKjdcWJbK63qxhIXFKuHCc3acLbpm2ts9UqmLASTw==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-9.7.2.tgz",
"integrity": "sha512-11emsRp/Mg+vfaKVyoMwiMdCHmO/15XOL6JG9fACkclVZnLPBVvRIaDdRBudsR3ALGZ5iTzrArPJDjjoeO6X4w==",
"license": "MIT",
"peerDependencies": {
"react": "^19.2.0"
}
},
"node_modules/@mantine/notifications": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-9.7.1.tgz",
"integrity": "sha512-gmN+rTrjwYFJqaIqDQtQfoTJ/OR0wSxqxIihOHD5/S/sYUycVi9wDqK4tub5y8x0HeQH4kNkehPMN4l1Uk0A6A==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-9.7.2.tgz",
"integrity": "sha512-Lf/oS2bpWgalgJ7Uy2Gh2V/kqnIIM3zkeWYy+GZKunfbiQGyuDBasOGd/4RYu5ga7b8vxJzC/zINi/UdpFuxoQ==",
"license": "MIT",
"dependencies": {
"@mantine/store": "9.7.1",
"@mantine/store": "9.7.2",
"react-transition-group": "4.4.5"
},
"peerDependencies": {
"@mantine/core": "9.7.1",
"@mantine/hooks": "9.7.1",
"@mantine/core": "9.7.2",
"@mantine/hooks": "9.7.2",
"react": "^19.2.0",
"react-dom": "^19.2.0"
}
},
"node_modules/@mantine/store": {
"version": "9.7.1",
"resolved": "https://registry.npmjs.org/@mantine/store/-/store-9.7.1.tgz",
"integrity": "sha512-CYCQHWt7zFrUe2kVQmFAWnQaZbiDUoN2VeMJBI/vf1XybGj+itTEB6cnvoX4C8yOrln3sXe4BIoIf46pUhnEhA==",
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@mantine/store/-/store-9.7.2.tgz",
"integrity": "sha512-ERjk46CbQeSqytWTq5cAzT4o9MBAzzvVXpPlD36B5NwB5hmbjQfdUKcr0PlZfG04a/PDPdLPvAiVp7Eeh0tk8A==",
"license": "MIT",
"peerDependencies": {
"react": "^19.2.0"
@@ -1008,9 +1008,9 @@
}
},
"node_modules/@tanstack/query-core": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.104.1.tgz",
"integrity": "sha512-TiRghcrGkUTE+M4JBxvpPSpBhxvIzQairw+cksrHYGr+2uwC77yW1SY9nYxnYRYOppvucf8rEg6b5byoz4rTpw==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.104.3.tgz",
"integrity": "sha512-DZY9TuJAOgU3UyHUhXb4CcTYEHNZszlwkPg4VViIwTxOKzLprPUU+rbaPZQd3srqkGOtpaDdKpW972UV/LKlcg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1018,9 +1018,9 @@
}
},
"node_modules/@tanstack/query-devtools": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.104.1.tgz",
"integrity": "sha512-wmXnQbnwEz+SctYMTrwsOWWNHKhCsVgtaliL9E+VI2vx2Xr773d/MpcrbIU1hEOUqC3p7x59swXFUPDLbplT3g==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.104.3.tgz",
"integrity": "sha512-2Hd8r9G7352GmM9Olu5rdgbslRFH71F5gVxknhgpkgPMgKse7IantVDu1NIeZbynlgsz6K3HhiY7dyq47mAb2A==",
"license": "MIT",
"dependencies": {
"@kobalte/core": "^0.13.14",
@@ -1028,7 +1028,7 @@
"@solid-primitives/resize-observer": "^2.2.0",
"@solid-primitives/storage": "^1.3.11",
"@tanstack/match-sorter-utils": "^9.1.2",
"@tanstack/query-core": "5.104.1",
"@tanstack/query-core": "5.104.3",
"clsx": "^2.1.1",
"goober": "^2.1.19",
"solid-js": "^1.9.15",
@@ -1041,12 +1041,12 @@
}
},
"node_modules/@tanstack/query-persist-client-core": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.104.1.tgz",
"integrity": "sha512-ONiadXqe56iNrw6RESqKILpTIVG9ZMI/DageTQnrBDt/nZ6WiP4G13iIiMwJEsiO12gQ3Gychx8tcFIPw4k25g==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.104.3.tgz",
"integrity": "sha512-6nhc/QbMpkKeuAM81SFSdcsJ9B8dm3fGHPODbau2cRSDyqcXiSl7sXQM7POVktch/YdgIGYPIQyZOQQaRarHMA==",
"license": "MIT",
"dependencies": {
"@tanstack/query-core": "5.104.1"
"@tanstack/query-core": "5.104.3"
},
"funding": {
"type": "github",
@@ -1054,12 +1054,12 @@
}
},
"node_modules/@tanstack/react-query": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.104.1.tgz",
"integrity": "sha512-Zz70EgjahNI7aCz8BZxM3vUGU44ycxEAzMuCUjLeA7SVhhOkg3ZgPjPJPvHjs6Rmky/dtmnu1WzjGHNHmhCoZQ==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.104.3.tgz",
"integrity": "sha512-5Ts1ImwJKqoJgPkLxl9WrPQy1JEoEmti3MaaODCfBamHUGFk57IFrc+AIksPq+BAm10EsroX56qm398Z42LG7w==",
"license": "MIT",
"dependencies": {
"@tanstack/query-core": "5.104.1"
"@tanstack/query-core": "5.104.3"
},
"funding": {
"type": "github",
@@ -1070,37 +1070,37 @@
}
},
"node_modules/@tanstack/react-query-devtools": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.104.1.tgz",
"integrity": "sha512-0GoLxe08PVxnkbrHFwO+7fkgbc07xEcoBfdYvbTv63e6Fe7uz7PGyOxKeQTOXKGMmTfoniaISOqkjDzKC/66Ng==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.104.3.tgz",
"integrity": "sha512-5wRAGOZYQ+YUow/qKCnwXuB+UoHOymeyjC5vs5rJyGdir5yZ+JSyp3D59gqxvnFAXnjfFtzCepArR46f1PfSwg==",
"license": "MIT",
"dependencies": {
"@tanstack/query-devtools": "5.104.1"
"@tanstack/query-devtools": "5.104.3"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
"@tanstack/react-query": "^5.104.1",
"@tanstack/react-query": "^5.104.3",
"@types/react": "^18 || ^19",
"react": "^18 || ^19"
}
},
"node_modules/@tanstack/react-query-persist-client": {
"version": "5.104.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.104.1.tgz",
"integrity": "sha512-kU3YaqjkwEUzUUfPF0JVg56d6gJKWHaFVqOlQztwc4C2IT0P5sv/23orrSoQqjxKaUe6Ejw5IIQtA/G12uNmow==",
"version": "5.104.3",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.104.3.tgz",
"integrity": "sha512-Dooa5cQ2Ter+9yHD3oD6vUzY+X4VEG9l9XkilX5OWFXMAtCEC+rSXwlfwYqNEMzAVigH7AcdubeRj2Vm+rCf8g==",
"license": "MIT",
"dependencies": {
"@tanstack/query-persist-client-core": "5.104.1"
"@tanstack/query-persist-client-core": "5.104.3"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
"@tanstack/react-query": "^5.104.1",
"@tanstack/react-query": "^5.104.3",
"react": "^18 || ^19"
}
},
@@ -1123,13 +1123,13 @@
}
},
"node_modules/@tanstack/react-table": {
"version": "9.2.8",
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-9.2.8.tgz",
"integrity": "sha512-cJxgratJm3uMm2sXnmY3PCTvcvIEFleCJ2uSOM2nxCmIY8RWA1KjXt5fsWGlYisL7DODr2w9YpLRQ3i/7MdIsQ==",
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-9.3.1.tgz",
"integrity": "sha512-E6Ya5TnY6EaGyZYIUqig/29Lr/gJSAubQkLJFqiWkUl5nRCr0Xr9hvJot+NiRTtG+TzGxHTiqUW3bnLtQxlHug==",
"license": "MIT",
"dependencies": {
"@tanstack/react-store": "^0.11.2",
"@tanstack/table-core": "9.2.8"
"@tanstack/table-core": "9.3.1"
},
"engines": {
"node": ">=20"
@@ -1143,12 +1143,12 @@
}
},
"node_modules/@tanstack/react-virtual": {
"version": "3.14.14",
"resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.14.14.tgz",
"integrity": "sha512-eo/arVIpYi9rGJXR5y4fDoTiz+BBOc4HKVBKQMoPRswxJtP6HV8iupW/DkBE9TRh+PjzikIDHw2h7aV25g0Z4w==",
"version": "3.14.20",
"resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.14.20.tgz",
"integrity": "sha512-9hbhFlc0lznjXmWYDB/KEl7PJxEPz0Qnj2FzJFse98miGvXtx7jzjE5jlasmtczmZ6TxXsyI4v7PuyGQm2q1nQ==",
"license": "MIT",
"dependencies": {
"@tanstack/virtual-core": "3.18.0"
"@tanstack/virtual-core": "3.19.5"
},
"funding": {
"type": "github",
@@ -1170,9 +1170,9 @@
}
},
"node_modules/@tanstack/table-core": {
"version": "9.2.8",
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-9.2.8.tgz",
"integrity": "sha512-M4D6fY5jnc7z7TaoD3Pjvz5R+8MbhzCGYdkcFf2T1AgjigwLinvFWZh6mtqfN016A7yGIroOL0GiTlVGsTh6Vg==",
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-9.3.1.tgz",
"integrity": "sha512-zQvlxSNi2qGM3L4jh85Z6hqMfdIR5qOfD9KHOU32nuKFJGN0RlJ7UvV1lsPb1fPVhpFYI0VP3jJGxLdLDpTKjQ==",
"license": "MIT",
"dependencies": {
"@tanstack/store": "^0.11.2"
@@ -1186,9 +1186,9 @@
}
},
"node_modules/@tanstack/virtual-core": {
"version": "3.18.0",
"resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.18.0.tgz",
"integrity": "sha512-8frWsyfyBwLGoDQ6wN6Lq3CoT8j4BPJUzE6nH4P9mruLhxPOamk82prC3JxRMLJzYnNa9ISaZ8NtfxEiOGkHEQ==",
"version": "3.19.5",
"resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.19.5.tgz",
"integrity": "sha512-X/wq6DtSK/XClznMM+I4JE63yyIwmyPk4Ts83bD0VKaIbwHNdRsO5QipCPX+3OovqYyr0puQNpbmp8+SPhspNg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1275,9 +1275,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "26.6.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
"integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
"version": "26.6.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz",
"integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1659,27 +1659,27 @@
}
},
"node_modules/@vitest/coverage-v8": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.3.tgz",
"integrity": "sha512-+klsyz7BvT1vCU28Zkfzms1Ia78XD0V41U3FUtRaa3S+vOr/EXvK1O6BvVD7l1RzEjm6SONR2aybOvDDf9u0mQ==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-5.0.5.tgz",
"integrity": "sha512-4KpkGdIrSqBihx/JyP/e+S+IKB98etg1XDQiLAxksLfcShnwi1VReGeOT9NI43hLHbknosKp/1CCLn9Zgcs8mg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^1.0.2",
"@vitest/istanbul-lib-coverage": "^1.0.0",
"@vitest/istanbul-lib-report": "^1.0.0",
"ast-v8-to-istanbul": "^1.0.5",
"magicast": "^0.5.4",
"obug": "^2.1.4",
"std-env": "^4.2.0",
"tinyrainbow": "^3.1.1"
"@vitest/istanbul-lib-coverage": "^1.0.2",
"@vitest/istanbul-lib-report": "^1.0.2",
"ast-v8-to-istanbul": "^1.0.7",
"magicast": "^0.5.5",
"obug": "^3.0.0",
"std-env": "^4.3.0",
"tinyrainbow": "^3.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"@vitest/browser": "5.0.3",
"vitest": "5.0.3"
"@vitest/browser": "5.0.5",
"vitest": "5.0.5"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -1688,9 +1688,9 @@
}
},
"node_modules/@vitest/istanbul-lib-coverage": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.1.tgz",
"integrity": "sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz",
"integrity": "sha512-9J/JMwOf9AoJhAywhrn7ScKTL38hsWQP/qPG60OtaAFcQ5OXPwKsxZFlbnuCKmZ61m8/lGgHYnFpdyQZUvG/iA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1698,35 +1698,35 @@
}
},
"node_modules/@vitest/istanbul-lib-report": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-report/-/istanbul-lib-report-1.0.1.tgz",
"integrity": "sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@vitest/istanbul-lib-report/-/istanbul-lib-report-1.0.2.tgz",
"integrity": "sha512-gUsfXZJbzPamoIY5TvHFiMMoXESBrUMo+xqaj+rYrWI69+EnvRlYBlP96ZnHPY4vX8kyUpgAnFUCg5wZG/HkDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/istanbul-lib-coverage": "1.0.1"
"@vitest/istanbul-lib-coverage": "1.0.2"
},
"engines": {
"node": ">=22"
}
},
"node_modules/@vitest/mocker": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.3.tgz",
"integrity": "sha512-T8sWAIbkSyAjkwTcaEc3Iu0o9A27X1/kdXrizhZkGuSKScRQtRzclfAMpOTcGdXCsqxeWlpGy3XjqaW8CpLORg==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.5.tgz",
"integrity": "sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.31",
"@vitest/spy": "5.0.3",
"@vitest/spy": "5.0.5",
"estree-walker": "^3.0.3",
"magic-string": "^1.2.3"
"magic-string": "^1.4.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"msw": "^2.4.9",
"msw": "^2.4.9 || ^3.0.0",
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
@@ -1749,22 +1749,22 @@
}
},
"node_modules/@vitest/pretty-format": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-5.0.3.tgz",
"integrity": "sha512-3hr5eV5z2ff0l2Q1vaKQbB4j3M3tElw8stDokEOTqXJB3Es5VrT8gBRIMY59gGuFp8Y61sWlWFK1aNUH5dHDYw==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-5.0.5.tgz",
"integrity": "sha512-24sSdIlMA9DVPXnYiB9siwU0bTd887Y9jX3+vabztCSsvHwo7ipvJ/a2L3Rljw8+2rK1f5fCj3h5U9I/Jsqgbw==",
"dev": true,
"license": "MIT",
"dependencies": {
"tinyrainbow": "^3.1.1"
"tinyrainbow": "^3.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/spy": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.3.tgz",
"integrity": "sha512-XhFysQTB8AZ+P4gMi+Lpo99vg2AZi0qKpaB9yXQl37+CaMEAPO3iH/wGVnSyL5MPERiLezpqTVtrR6UZH5GCXg==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-5.0.5.tgz",
"integrity": "sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1772,36 +1772,36 @@
}
},
"node_modules/@vitest/ui": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-5.0.3.tgz",
"integrity": "sha512-9dfvqDBvSbHM6y9YVXxAypkl2z7mrWozK/JFo237qI0cj/3M/kzDKiVZqzi3TE54Ler7Jditud7OMBZCyUvRHA==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-5.0.5.tgz",
"integrity": "sha512-dCoGUOdgmCaSB2g+WQ/spPCBkytAWdNUkFSXY4z+eYp2d8JEOY8v0uDRaJTG9qf/kTlTVZ4CuYMYMz/f1HS/qQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/utils": "5.0.3",
"@vitest/utils": "5.0.5",
"fflate": "^0.8.3",
"flatted": "^3.4.4",
"pathe": "^2.0.3",
"sirv": "^3.0.2",
"tinyrainbow": "^3.1.1"
"tinyrainbow": "^3.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"vitest": "5.0.3"
"vitest": "5.0.5"
}
},
"node_modules/@vitest/utils": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-5.0.3.tgz",
"integrity": "sha512-77fDTZv8eu1CzlIfgPU2yrl5MXSUaUAOvgdZEeVm3X3WIxUubIX2SforqS6176lT32HCF6uBVMYVqfHxw7o6eg==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-5.0.5.tgz",
"integrity": "sha512-/rBu7gzLDQI/SC79Tn98b5DwOgaHU/Gt4I9OVeP3YofzNaYtbImRCOJQmT1S6vOJg9gEIlWC+r3QxKkjuSa1nQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@vitest/pretty-format": "5.0.3",
"@vitest/pretty-format": "5.0.5",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.1"
"tinyrainbow": "^3.2.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
@@ -2710,9 +2710,9 @@
}
},
"node_modules/obug": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/obug/-/obug-2.2.1.tgz",
"integrity": "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz",
"integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==",
"dev": true,
"funding": [
"https://github.com/sponsors/sxzz",
@@ -2847,24 +2847,24 @@
"integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ=="
},
"node_modules/react": {
"version": "19.3.0",
"resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz",
"integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==",
"version": "19.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz",
"integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "19.3.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz",
"integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==",
"version": "19.3.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz",
"integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.28.0"
},
"peerDependencies": {
"react": "^19.3.0"
"react": "^19.3.1"
}
},
"node_modules/react-fontpicker-ts": {
@@ -3280,9 +3280,9 @@
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
},
"node_modules/tinybench": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.1.tgz",
"integrity": "sha512-IAbQaPJIIdhVxi0mqy9lez1wEwje0UQf9F1vwtbelEG5Nbgn0nPOxCvU+mNeNS9gyJTAhrHp74CbUaSynQpZcQ==",
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.2.2.tgz",
"integrity": "sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3684,23 +3684,23 @@
}
},
"node_modules/vitest": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.3.tgz",
"integrity": "sha512-xMw97S3rjdtj5dkVat7jCsqWBpvchs3RlpQctUqwJD0KkERk40vz2fJ77lDwW/Vzh/pk18eItYAzkodhSes3jQ==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/vitest/-/vitest-5.0.5.tgz",
"integrity": "sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/chai": "^5.2.2",
"@vitest/mocker": "5.0.3",
"chai": "^6.2.2",
"@vitest/mocker": "5.0.5",
"chai": "^6.3.0",
"es-module-lexer": "^2.3.2",
"expect-type": "^1.4.0",
"magic-string": "^1.2.3",
"obug": "^2.1.4",
"magic-string": "^1.4.3",
"obug": "^3.0.0",
"picomatch": "^4.0.7",
"std-env": "^4.2.0",
"tinybench": "^6.1.4",
"tinyexec": "^1.3.0",
"std-env": "^4.3.0",
"tinybench": "^6.2.2",
"tinyexec": "^1.3.1",
"tinyglobby": "^0.2.17",
"why-is-node-running": "3.2.1"
},
@@ -3717,12 +3717,12 @@
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^22.0.0 || >=24.0.0",
"@vitest/browser-playwright": "5.0.3",
"@vitest/browser-preview": "5.0.3",
"@vitest/browser-playwright": "5.0.5",
"@vitest/browser-preview": "5.0.5",
"@vitest/browser-webdriverio": "^5.0.0-beta.5 || >=5.0.0",
"@vitest/coverage-istanbul": "5.0.3",
"@vitest/coverage-v8": "5.0.3",
"@vitest/ui": "5.0.3",
"@vitest/coverage-istanbul": "5.0.5",
"@vitest/coverage-v8": "5.0.5",
"@vitest/ui": "5.0.5",
"happy-dom": "*",
"jsdom": "*",
"vite": "^6.4.0 || ^7.0.0 || ^8.0.0"

View File

@@ -10,43 +10,43 @@
"preview": "vite preview"
},
"dependencies": {
"@gfazioli/mantine-border-animate": "^3.0.5",
"@gfazioli/mantine-depth-select": "^2.0.15",
"@gfazioli/mantine-parallax": "^4.0.13",
"@gfazioli/mantine-reflection": "^3.0.13",
"@gfazioli/mantine-text-animate": "^4.0.15",
"@gfazioli/mantine-border-animate": "^3.0.6",
"@gfazioli/mantine-depth-select": "^2.0.16",
"@gfazioli/mantine-parallax": "^4.0.14",
"@gfazioli/mantine-reflection": "^3.0.14",
"@gfazioli/mantine-text-animate": "^4.0.16",
"@hello-pangea/dnd": "^18.0.1",
"@mantine/core": "^9.7.1",
"@mantine/dates": "^9.7.1",
"@mantine/form": "^9.7.1",
"@mantine/hooks": "^9.7.1",
"@mantine/notifications": "^9.7.1",
"@tanstack/react-query": "^5.104.1",
"@tanstack/react-query-devtools": "^5.104.1",
"@tanstack/react-query-persist-client": "^5.104.1",
"@tanstack/react-table": "^9.2.8",
"@tanstack/react-virtual": "^3.14.14",
"@mantine/core": "^9.7.2",
"@mantine/dates": "^9.7.2",
"@mantine/form": "^9.7.2",
"@mantine/hooks": "^9.7.2",
"@mantine/notifications": "^9.7.2",
"@tanstack/react-query": "^5.104.3",
"@tanstack/react-query-devtools": "^5.104.3",
"@tanstack/react-query-persist-client": "^5.104.3",
"@tanstack/react-table": "^9.3.1",
"@tanstack/react-virtual": "^3.14.20",
"idb-keyval": "^6.3.0",
"jotai": "^3.0.1",
"openmeteo": "^1.2.3",
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react": "^19.3.1",
"react-dom": "^19.3.1",
"react-fontpicker-ts": "^1.3.0",
"react-icons": "^5.7.0",
"react-router-dom": "^7.18.4",
"recharts": "^3.10.1"
},
"devDependencies": {
"@types/node": "^26.6.4",
"@types/node": "^26.6.5",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@vitejs/plugin-react": "^6.1.2",
"@vitest/coverage-v8": "^5.0.3",
"@vitest/ui": "^5.0.3",
"@vitest/coverage-v8": "^5.0.5",
"@vitest/ui": "^5.0.5",
"typescript": "^7.0.2",
"vite": "^8.3.4",
"vite-plugin-dts": "~5.1.2",
"vite-tsconfig-paths": "^6.1.1",
"vitest": "^5.0.3"
"vitest": "^5.0.5"
}
}

View File

@@ -57,7 +57,7 @@ export function AppItem({
h={height}
w={width}
duration={3}
beamMode={'conic'}
beamMode={'wedge'}
borderWidth={scale * 3}
borderOpacity={0.75}
size={(scale * 48) / (width / height < 2 ? 2 : 1)}

View File

@@ -1,7 +1,7 @@
import { ActionIcon, Box, Card, Group, Stack, Text } from '@mantine/core';
import { useCommonHooks } from 'hooks';
import { FaLocationArrow, FaSun, FaWind } from 'react-icons/fa';
import { FaDroplet, FaX } from 'react-icons/fa6';
import { FaArrowLeft, FaLocationArrow, FaSun, FaWind } from 'react-icons/fa';
import { FaDroplet } from 'react-icons/fa6';
import { WiRain, WiSunrise, WiSunset } from 'react-icons/wi';
import { textClasses } from 'styles';
import { WeatherCodes } from 'types';
@@ -32,29 +32,12 @@ export default function ExtendedForecastDetails({
borderRadius: '8px',
overflow: 'visible',
cursor: 'default',
boxShadow:
'15px 15px 2px color-mix(in srgb, var(--mantine-color-border-0), transparent 50%)',
}}
onClick={(e) => {
e.stopPropagation();
}}
p={0}
>
<ActionIcon
pos={'absolute'}
top={-12}
right={-12}
style={{
borderRadius: '100%',
boxShadow: '2px 2px var(--mantine-color-search-0)',
}}
onClick={() => {
setSelectedDay(undefined);
setSelectedHourly(undefined);
}}
>
<FaX />
</ActionIcon>
<Group
w={'100%'}
justify='center'
@@ -66,11 +49,25 @@ export default function ExtendedForecastDetails({
borderTopRightRadius: '8px',
}}
>
<ActionIcon
pos={'absolute'}
left={16}
style={{
borderRadius: '100%',
boxShadow: '2px 2px var(--mantine-color-search-0)',
}}
onClick={() => {
setSelectedDay(undefined);
setSelectedHourly(undefined);
}}
>
<FaArrowLeft />
</ActionIcon>
<Text fw={600} fz={'1.5rem'}>
{selectedDay.time.toLocaleDateString('en-US', { weekday: 'long' })}
{selectedDay?.time.toLocaleDateString('en-US', { weekday: 'long' })}
</Text>
<Text fw={600} fz={'1.5rem'}>
{selectedDay.time.toLocaleDateString()}
{selectedDay?.time.toLocaleDateString()}
</Text>
</Group>
<Stack align='center' p={16}>
@@ -95,8 +92,8 @@ export default function ExtendedForecastDetails({
leftSide={<Text>Feels like</Text>}
rightSide={
<Text>
{selectedDay.apparentTemperatureMax?.toFixed(0) ??
selectedDay.temperatureMax?.toFixed(0)}
{selectedDay?.apparentTemperatureMax?.toFixed(0) ??
selectedDay?.temperatureMax?.toFixed(0)}
°<sup>F</sup>
</Text>
}
@@ -105,12 +102,12 @@ export default function ExtendedForecastDetails({
</Box>
<Group pos={'relative'}>
<Text fz={isMobile ? '5rem' : '7rem'} fw={400} style={{ lineHeight: 1 }}>
{selectedDay.temperatureMax?.toFixed(0)}
{selectedDay?.temperatureMax?.toFixed(0)}
<sup style={{ fontSize: '3rem' }}>°F</sup>
</Text>
<Text style={{ lineHeight: 1 }} pos={'absolute'} bottom={20} right={0}>
/ {selectedDay.temperatureMin?.toFixed(0)}°<sup>F</sup>
/ {selectedDay?.temperatureMin?.toFixed(0)}°<sup>F</sup>
</Text>
<Box
style={{
@@ -131,7 +128,7 @@ export default function ExtendedForecastDetails({
</Group>
<Group
justify={
WeatherCodes[Number(selectedDay.weatherCode)].length > 25
WeatherCodes[Number(selectedDay?.weatherCode)]?.length > 25
? 'flex-start'
: 'center'
}
@@ -146,21 +143,21 @@ export default function ExtendedForecastDetails({
>
<Text
className={
WeatherCodes[Number(selectedDay.weatherCode)].length > 25
WeatherCodes[Number(selectedDay?.weatherCode)]?.length > 25
? textClasses.autoScrollText
: undefined
}
classNames={textClasses}
style={{ lineHeight: 1 }}
>
{selectedDay.temperature_2m?.toFixed(0) === '69'
{selectedDay?.temperature_2m?.toFixed(0) === '69'
? 'Nice'
: WeatherCodes[Number(selectedDay.weatherCode)]}
: WeatherCodes[Number(selectedDay?.weatherCode)]}
</Text>
</Group>
</Stack>
<Stack>
<WeatherIcon size={'xl'} code={selectedDay.weatherCode} />
<WeatherIcon size={'xl'} code={selectedDay?.weatherCode} />
</Stack>
</Group>
@@ -174,7 +171,7 @@ export default function ExtendedForecastDetails({
<Text>Wind</Text>
</Group>
}
rightSide={<Text>{selectedDay.windSpeed?.toFixed(0)}mph</Text>}
rightSide={<Text>{selectedDay?.windSpeed?.toFixed(0)}mph</Text>}
highlight='right'
/>
<WeatherFeaturePill
@@ -184,7 +181,7 @@ export default function ExtendedForecastDetails({
<Text>Gusts</Text>
</Group>
}
rightSide={<Text>{selectedDay.windGusts?.toFixed(0)}mph</Text>}
rightSide={<Text>{selectedDay?.windGusts?.toFixed(0)}mph</Text>}
highlight='right'
/>
</Stack>
@@ -203,11 +200,11 @@ export default function ExtendedForecastDetails({
<FaLocationArrow
style={{
color: 'var(--mantine-color-accent-0)',
transform: `rotate(${-48 + (selectedDay.windDirection || 0)}deg)`,
transform: `rotate(${-48 + (selectedDay?.windDirection || 0)}deg)`,
}}
/>
</Box>
<Text fz={12}>{selectedDay.windDirection?.toFixed(0)}°</Text>
<Text fz={12}>{selectedDay?.windDirection?.toFixed(0)}°</Text>
</Stack>
</Group>
<Group justify='space-between'>
@@ -229,7 +226,7 @@ export default function ExtendedForecastDetails({
}}
/>
</Box>
<Text fz={12}>UV {selectedDay.uvIndexMax?.toFixed(0)}</Text>
<Text fz={12}>UV {selectedDay?.uvIndexMax?.toFixed(0)}</Text>
</Stack>
<Stack gap={4}>
<WeatherFeaturePill
@@ -246,7 +243,7 @@ export default function ExtendedForecastDetails({
/>
</Group>
}
rightSide={<Text>{selectedDay.sunrise}</Text>}
rightSide={<Text>{selectedDay?.sunrise}</Text>}
highlight='left'
/>
<WeatherFeaturePill
@@ -263,7 +260,7 @@ export default function ExtendedForecastDetails({
/>
</Group>
}
rightSide={<Text>{selectedDay.sunset}</Text>}
rightSide={<Text>{selectedDay?.sunset}</Text>}
highlight='left'
/>
</Stack>
@@ -297,7 +294,7 @@ export default function ExtendedForecastDetails({
<Text>Precipitation %</Text>
</Group>
}
rightSide={<Text>{selectedDay.precipitationProbability}%</Text>}
rightSide={<Text>{selectedDay?.precipitationProbability}%</Text>}
highlight='right'
/>
<WeatherFeaturePill
@@ -307,7 +304,7 @@ export default function ExtendedForecastDetails({
<Text>Precipitation In.</Text>
</Group>
}
rightSide={<Text>{selectedDay.precipitationSum.toFixed(2)} in.</Text>}
rightSide={<Text>{selectedDay?.precipitationSum.toFixed(2)} in.</Text>}
highlight='right'
/>
</Stack>

View File

@@ -82,7 +82,7 @@ export default function WeatherGraphs({
</Group>
)}
<ResponsiveContainer width={'100%'} height={150}>
<ComposedChart data={hourlyForecast}>
<ComposedChart data={hourlyForecast} responsive>
<XAxis
type='category'
stroke={'var(--mantine-color-primary-0)'}
@@ -129,7 +129,7 @@ export default function WeatherGraphs({
</ComposedChart>
</ResponsiveContainer>
<ResponsiveContainer width={'100%'} height={150}>
<AreaChart data={hourlyForecast}>
<AreaChart data={hourlyForecast} responsive>
<defs>
<linearGradient id={colorPrecipitation} x1='0' y1='0' x2='0' y2='1'>
<stop

View File

@@ -1,4 +1,4 @@
import { Group, Modal, Overlay, Stack, Text } from '@mantine/core';
import { Box, Group, Modal, Text } from '@mantine/core';
import { useCommonHooks } from 'hooks';
import { useEffect, useState } from 'react';
import { modalClasses } from 'styles';
@@ -85,26 +85,28 @@ export function WeatherModal({
</Modal.Title>
<Modal.CloseButton />
</Modal.Header>
<Modal.Body m={0}>
<Stack w={'100%'} h={'100%'} pos={'relative'}>
{selectedDay && (
<Overlay
h={'100%'}
opacity={1}
blur={10}
onClick={() => setSelectedDay(undefined)}
<Modal.Body style={{ overflowX: 'hidden', whiteSpace: 'nowrap' }}>
<Group w={'200%'} gap={0}>
<Box
w={'50%'}
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'color-mix(in srgb, black, transparent 50%)',
transition: 'all 0.3s ease-in-out',
transform: selectedDay ? 'translateX(-110%)' : 'translateX(0%)',
}}
>
<Stack
w={'65%'}
align={'center'}
justify={'center'}
style={{ cursor: 'pointer' }}
<CurrentWeather current={current} />
<WeatherGraphs hourly={current?.hourly} />
<ExtendedForecastCard
daily={current?.daily}
setSelectedDay={setSelectedDay}
/>
</Box>
<Box
w={'50%'}
style={{
transition: 'all 0.3s ease-in-out',
transform: selectedDay ? 'translateX(-100%)' : 'translateX(10%)',
}}
>
<ExtendedForecastDetails
selectedDay={selectedDay}
@@ -112,16 +114,8 @@ export function WeatherModal({
selectedHourly={selectedHourly}
setSelectedHourly={setSelectedHourly}
/>
</Stack>
</Overlay>
)}
<CurrentWeather current={current} />
<WeatherGraphs hourly={current?.hourly} />
<ExtendedForecastCard
daily={current?.daily}
setSelectedDay={setSelectedDay}
/>
</Stack>
</Box>
</Group>
</Modal.Body>
</Modal.Content>
</Modal.Root>