diff --git a/package-lock.json b/package-lock.json
index cd2b0d0..91b1c47 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,32 +9,32 @@
"version": "0.1.0",
"dependencies": {
"@hello-pangea/dnd": "^18.0.1",
- "@mantine/core": "^8.0.1",
- "@mantine/hooks": "^8.0.1",
- "@mantine/notifications": "^8.0.1",
- "@tanstack/react-query": "^5.76.2",
- "@tanstack/react-query-devtools": "^5.76.2",
- "@tanstack/react-query-persist-client": "^5.76.2",
+ "@mantine/core": "^8.0.2",
+ "@mantine/hooks": "^8.0.2",
+ "@mantine/notifications": "^8.0.2",
+ "@tanstack/react-query": "^5.80.6",
+ "@tanstack/react-query-devtools": "^5.80.6",
+ "@tanstack/react-query-persist-client": "^5.80.6",
"idb-keyval": "^6.2.2",
- "jotai": "^2.12.4",
+ "jotai": "^2.12.5",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-icons": "^5.5.0",
- "react-router-dom": "^7.6.0",
+ "react-router-dom": "^7.6.2",
"recharts": "^2.15.3"
},
"devDependencies": {
- "@types/node": "^22.15.21",
- "@types/react": "^19.1.5",
- "@types/react-dom": "^19.1.5",
- "@vitejs/plugin-react": "^4.5.0",
- "@vitest/coverage-v8": "^3.1.4",
- "@vitest/ui": "^3.1.4",
+ "@types/node": "^22.15.30",
+ "@types/react": "^19.1.6",
+ "@types/react-dom": "^19.1.6",
+ "@vitejs/plugin-react": "^4.5.1",
+ "@vitest/coverage-v8": "^3.2.2",
+ "@vitest/ui": "^3.2.2",
"typescript": "^5.8.3",
"vite": "^6.3.5",
"vite-plugin-dts": "~4.5.4",
"vite-tsconfig-paths": "^5.1.4",
- "vitest": "^3.1.4"
+ "vitest": "^3.2.2"
}
},
"node_modules/@ampproject/remapping": {
@@ -925,9 +925,9 @@
}
},
"node_modules/@mantine/core": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.0.1.tgz",
- "integrity": "sha512-4ezaxKjChSPtawamQ3KrJq+x506uTouXlL0Z5fP+t105KnyxMrAJUENhbh2ivD4pq9Zh1BFiD9IWzyu3IXFR8w==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.0.2.tgz",
+ "integrity": "sha512-2Ps7bRTeTbRwAKTCL9xdflPz0pwOlTq6ohyTbDZMCADqecf09GHI7GiX+HJatqbPZ2t8jK0fN1b48YhjJaxTqg==",
"license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.26.28",
@@ -938,40 +938,40 @@
"type-fest": "^4.27.0"
},
"peerDependencies": {
- "@mantine/hooks": "8.0.1",
+ "@mantine/hooks": "8.0.2",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/hooks": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.0.1.tgz",
- "integrity": "sha512-GvLdM4Ro3QcDyIgqrdXsUZmeeKye2TNL/k3mEr9JhM5KacHQjr83JPp0u9eLobn7kiyBqpLTYmVYAbmjJdCxHw==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.0.2.tgz",
+ "integrity": "sha512-0jpEdC0KIAZ54D5kd9rJudrEm6vkvnrL9yYHnkuNbxokXSzDdYA/wpHnKR5WW+u6fW4JF6A6A7gN1vXKeC9MSw==",
"license": "MIT",
"peerDependencies": {
"react": "^18.x || ^19.x"
}
},
"node_modules/@mantine/notifications": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-8.0.1.tgz",
- "integrity": "sha512-7TX9OyAmUcok3qffnheS7gTAMKDczETy8XEYDr38Sy/XIoXLjM+3CwO+a/vfd1F9oW2LvkahkHT0Ey+vBOVd0Q==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-8.0.2.tgz",
+ "integrity": "sha512-whSuoCCZxQF3VM40sumCte9tA79to8OCV/vv0z8PeVTj/eKlaTR+P9LKigO9ovhuNELrvvO3Rxcnno5aMBz0oA==",
"license": "MIT",
"dependencies": {
- "@mantine/store": "8.0.1",
+ "@mantine/store": "8.0.2",
"react-transition-group": "4.4.5"
},
"peerDependencies": {
- "@mantine/core": "8.0.1",
- "@mantine/hooks": "8.0.1",
+ "@mantine/core": "8.0.2",
+ "@mantine/hooks": "8.0.2",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/store": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/@mantine/store/-/store-8.0.1.tgz",
- "integrity": "sha512-3wfUDeiERXJEI+MGgRAbh+9aY35D9oE4UzquLqZh8cIiH5i5g64Y/eJx3PfjHgO5+Zeu6lbgTgL6k4lg4a2SBQ==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@mantine/store/-/store-8.0.2.tgz",
+ "integrity": "sha512-/LuizGWAXjVnLLZ55f0QYotiqb8GlHpIb4KRf4LqRkbsA6UAZEVb6beuk0vI2Azf6vfuh7sTHu1xVC5zI6C+Cw==",
"license": "MIT",
"peerDependencies": {
"react": "^18.x || ^19.x"
@@ -1573,9 +1573,9 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.76.2",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.76.2.tgz",
- "integrity": "sha512-PFGwWh5ss9cJQ67l6bZ7hqXbisX2gy13G2jP+VGY1bgdbCfOMWh6UBVnN62QbFXro6CCoX9hYzTnZHr6Rz00YQ==",
+ "version": "5.80.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.6.tgz",
+ "integrity": "sha512-nl7YxT/TAU+VTf+e2zTkObGTyY8YZBMnbgeA1ee66lIVqzKlYursAII6z5t0e6rXgwUMJSV4dshBTNacNpZHbQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1583,9 +1583,9 @@
}
},
"node_modules/@tanstack/query-devtools": {
- "version": "5.76.0",
- "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.76.0.tgz",
- "integrity": "sha512-1p92nqOBPYVqVDU0Ua5nzHenC6EGZNrLnB2OZphYw8CNA1exuvI97FVgIKON7Uug3uQqvH/QY8suUKpQo8qHNQ==",
+ "version": "5.80.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.80.0.tgz",
+ "integrity": "sha512-D6gH4asyjaoXrCOt5vG5Og/YSj0D/TxwNQgtLJIgWbhbWCC/emu2E92EFoVHh4ppVWg1qT2gKHvKyQBEFZhCuA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1593,12 +1593,12 @@
}
},
"node_modules/@tanstack/query-persist-client-core": {
- "version": "5.76.2",
- "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.76.2.tgz",
- "integrity": "sha512-aue39xihS9bK2pg+Tg+WMneysQAV3HhrWsFJhOQ0WL6is+ybpBoSFACny/opxroOWGK6uRHHEQ/oS1n/6Dh23Q==",
+ "version": "5.80.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.80.6.tgz",
+ "integrity": "sha512-jBztiVMUQTK5XfaMZXJTGO9pVJ8zWMqh7/QcJHheCGSccIh1IEKKIRtlgEadQONVyl7am5BT90QasQUHNKajsQ==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.76.2"
+ "@tanstack/query-core": "5.80.6"
},
"funding": {
"type": "github",
@@ -1606,12 +1606,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.76.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.76.2.tgz",
- "integrity": "sha512-rGkWberCrFdIxMdvSAJM/UOKeu0O/JVTbMmfhQoJpiU9Uq0EDx2EMCadnNuJWbXR4smDA2t7DY3NKkYFmDVS5A==",
+ "version": "5.80.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.6.tgz",
+ "integrity": "sha512-izX+5CnkpON3NQGcEm3/d7LfFQNo9ZpFtX2QsINgCYK9LT2VCIdi8D3bMaMSNhrAJCznRoAkFic76uvLroALBw==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.76.2"
+ "@tanstack/query-core": "5.80.6"
},
"funding": {
"type": "github",
@@ -1622,36 +1622,36 @@
}
},
"node_modules/@tanstack/react-query-devtools": {
- "version": "5.76.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.76.2.tgz",
- "integrity": "sha512-XQqPM7ByqhitYtzzRXpFcPXY2FIMGY13atJoQnDInxX+ko7wOhAJg51QGzSxQwZ2JEy91taj0IaIUh3pOz2buw==",
+ "version": "5.80.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.80.6.tgz",
+ "integrity": "sha512-y7Es0OJ4RYQxrPYsuuQP0jxjgJ40a03UbEPmJ6vwf/ERVMRoRIMkpjtvPxf1D+n9nwPfWmGdD0jW8Wxd+TxeEw==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-devtools": "5.76.0"
+ "@tanstack/query-devtools": "5.80.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "@tanstack/react-query": "^5.76.2",
+ "@tanstack/react-query": "^5.80.6",
"react": "^18 || ^19"
}
},
"node_modules/@tanstack/react-query-persist-client": {
- "version": "5.76.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.76.2.tgz",
- "integrity": "sha512-Zi0THj+7SRcNzSur28SEHs8UfByfX6vYWIG8V1ItregHGw8jswAiLB64HIGmaJqwewNJhHANJictIxXkz3k8ug==",
+ "version": "5.80.6",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.80.6.tgz",
+ "integrity": "sha512-RgR/MgaUcrwhlMJ/v/SYIxPBgO/7JOAMpl/B1r7yJMSqhPdwo9SAw6M1H4Lt0PDNgiUJDAmVfLfnn7Y7LguxvQ==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-persist-client-core": "5.76.2"
+ "@tanstack/query-persist-client-core": "5.80.6"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "@tanstack/react-query": "^5.76.2",
+ "@tanstack/react-query": "^5.80.6",
"react": "^18 || ^19"
}
},
@@ -1702,6 +1702,16 @@
"@babel/types": "^7.20.7"
}
},
+ "node_modules/@types/chai": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz",
+ "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/deep-eql": "*"
+ }
+ },
"node_modules/@types/d3-array": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
@@ -1756,6 +1766,13 @@
"resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
"integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="
},
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/estree": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
@@ -1764,9 +1781,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.15.21",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz",
- "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==",
+ "version": "22.15.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz",
+ "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1774,9 +1791,9 @@
}
},
"node_modules/@types/react": {
- "version": "19.1.5",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.5.tgz",
- "integrity": "sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==",
+ "version": "19.1.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz",
+ "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -1784,9 +1801,9 @@
}
},
"node_modules/@types/react-dom": {
- "version": "19.1.5",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz",
- "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==",
+ "version": "19.1.6",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz",
+ "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -1800,9 +1817,9 @@
"license": "MIT"
},
"node_modules/@vitejs/plugin-react": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz",
- "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.1.tgz",
+ "integrity": "sha512-uPZBqSI0YD4lpkIru6M35sIfylLGTyhGHvDZbNLuMA73lMlwJKz5xweH7FajfcCAc2HnINciejA9qTz0dr0M7A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1821,15 +1838,16 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.4.tgz",
- "integrity": "sha512-G4p6OtioySL+hPV7Y6JHlhpsODbJzt1ndwHAFkyk6vVjpK03PFsKnauZIzcd0PrK4zAbc5lc+jeZ+eNGiMA+iw==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.2.tgz",
+ "integrity": "sha512-RVAi5xnqedSKvaoQyCTWvncMk8eYZcTTOsLK7XmnfOEvdGP/O/upA0/MA8Ss+Qs++mj0GcSRi/whR0S5iBPpTQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.3.0",
"@bcoe/v8-coverage": "^1.0.2",
- "debug": "^4.4.0",
+ "ast-v8-to-istanbul": "^0.3.3",
+ "debug": "^4.4.1",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
"istanbul-lib-source-maps": "^5.0.6",
@@ -1844,8 +1862,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "3.1.4",
- "vitest": "3.1.4"
+ "@vitest/browser": "3.2.2",
+ "vitest": "3.2.2"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -1854,14 +1872,15 @@
}
},
"node_modules/@vitest/expect": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.4.tgz",
- "integrity": "sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.2.tgz",
+ "integrity": "sha512-ipHw0z669vEMjzz3xQE8nJX1s0rQIb7oEl4jjl35qWTwm/KIHERIg/p/zORrjAaZKXfsv7IybcNGHwhOOAPMwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.1.4",
- "@vitest/utils": "3.1.4",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "3.2.2",
+ "@vitest/utils": "3.2.2",
"chai": "^5.2.0",
"tinyrainbow": "^2.0.0"
},
@@ -1870,13 +1889,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.4.tgz",
- "integrity": "sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.2.tgz",
+ "integrity": "sha512-jKojcaRyIYpDEf+s7/dD3LJt53c0dPfp5zCPXz9H/kcGrSlovU/t1yEaNzM9oFME3dcd4ULwRI/x0Po1Zf+LTw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.1.4",
+ "@vitest/spy": "3.2.2",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17"
},
@@ -1885,7 +1904,7 @@
},
"peerDependencies": {
"msw": "^2.4.9",
- "vite": "^5.0.0 || ^6.0.0"
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
},
"peerDependenciesMeta": {
"msw": {
@@ -1907,9 +1926,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.4.tgz",
- "integrity": "sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.2.tgz",
+ "integrity": "sha512-FY4o4U1UDhO9KMd2Wee5vumwcaHw7Vg4V7yR4Oq6uK34nhEJOmdRYrk3ClburPRUA09lXD/oXWZ8y/Sdma0aUQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1920,13 +1939,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.4.tgz",
- "integrity": "sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.2.tgz",
+ "integrity": "sha512-GYcHcaS3ejGRZYed2GAkvsjBeXIEerDKdX3orQrBJqLRiea4NSS9qvn9Nxmuy1IwIB+EjFOaxXnX79l8HFaBwg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.1.4",
+ "@vitest/utils": "3.2.2",
"pathe": "^2.0.3"
},
"funding": {
@@ -1934,13 +1953,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.4.tgz",
- "integrity": "sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.2.tgz",
+ "integrity": "sha512-aMEI2XFlR1aNECbBs5C5IZopfi5Lb8QJZGGpzS8ZUHML5La5wCbrbhLOVSME68qwpT05ROEEOAZPRXFpxZV2wA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.1.4",
+ "@vitest/pretty-format": "3.2.2",
"magic-string": "^0.30.17",
"pathe": "^2.0.3"
},
@@ -1949,48 +1968,48 @@
}
},
"node_modules/@vitest/spy": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.4.tgz",
- "integrity": "sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.2.tgz",
+ "integrity": "sha512-6Utxlx3o7pcTxvp0u8kUiXtRFScMrUg28KjB3R2hon7w4YqOFAEA9QwzPVVS1QNL3smo4xRNOpNZClRVfpMcYg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tinyspy": "^3.0.2"
+ "tinyspy": "^4.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/ui": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.1.4.tgz",
- "integrity": "sha512-CFc2Bpb3sz4Sdt53kdNGq+qZKLftBwX4qZLC03CBUc0N1LJrOoL0ZeK0oq/708mtnpwccL0BZCY9d1WuiBSr7Q==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.2.2.tgz",
+ "integrity": "sha512-xHif5tkQOZK4YjA44rrzmvXMI1cb1Qato3P+NL/gwyoK5LdZx0f5Q59Il25JtuhN/htBvrT+Copt3Q4Ma4gJbg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.1.4",
+ "@vitest/utils": "3.2.2",
"fflate": "^0.8.2",
"flatted": "^3.3.3",
"pathe": "^2.0.3",
"sirv": "^3.0.1",
- "tinyglobby": "^0.2.13",
+ "tinyglobby": "^0.2.14",
"tinyrainbow": "^2.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vitest": "3.1.4"
+ "vitest": "3.2.2"
}
},
"node_modules/@vitest/utils": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.4.tgz",
- "integrity": "sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.2.tgz",
+ "integrity": "sha512-qJYMllrWpF/OYfWHP32T31QCaLa3BAzT/n/8mNGhPdVcjY+JYazQFO1nsJvXU12Kp1xMpNY4AGuljPTNjQve6A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.1.4",
+ "@vitest/pretty-format": "3.2.2",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
@@ -2188,6 +2207,35 @@
"node": ">=12"
}
},
+ "node_modules/ast-v8-to-istanbul": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz",
+ "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "estree-walker": "^3.0.3",
+ "js-tokens": "^9.0.1"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -2347,6 +2395,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -2492,10 +2549,11 @@
"dev": true
},
"node_modules/debug": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
- "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
@@ -2708,7 +2766,8 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/foreground-child": {
"version": "3.3.0",
@@ -2976,9 +3035,9 @@
"dev": true
},
"node_modules/jotai": {
- "version": "2.12.4",
- "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.12.4.tgz",
- "integrity": "sha512-eFXLJol4oOLM8BS1+QV+XwaYQITG8n1tatBCFl4F5HE3zR5j2WIK8QpMt7VJIYmlogNUZfvB7wjwLoVk+umB9Q==",
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.12.5.tgz",
+ "integrity": "sha512-G8m32HW3lSmcz/4mbqx0hgJIQ0ekndKWiYP7kWVKi0p6saLXdSoye+FZiOFyonnd7Q482LCzm8sMDl7Ar1NWDw==",
"license": "MIT",
"engines": {
"node": ">=12.20.0"
@@ -3531,9 +3590,9 @@
}
},
"node_modules/react-router": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz",
- "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz",
+ "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -3553,12 +3612,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz",
- "integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==",
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz",
+ "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==",
"license": "MIT",
"dependencies": {
- "react-router": "7.6.0"
+ "react-router": "7.6.2"
},
"engines": {
"node": ">=20.0.0"
@@ -3568,15 +3627,6 @@
"react-dom": ">=18"
}
},
- "node_modules/react-router/node_modules/cookie": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
- "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/react-smooth": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz",
@@ -4065,9 +4115,9 @@
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4082,9 +4132,9 @@
}
},
"node_modules/tinypool": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
- "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz",
+ "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4102,9 +4152,9 @@
}
},
"node_modules/tinyspy": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
- "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz",
+ "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4425,17 +4475,17 @@
}
},
"node_modules/vite-node": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.4.tgz",
- "integrity": "sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.2.tgz",
+ "integrity": "sha512-Xj/jovjZvDXOq2FgLXu8NsY4uHUMWtzVmMC2LkCu9HWdr9Qu1Is5sanX3Z4jOFKdohfaWDnEJWp9pRP0vVpAcA==",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
- "debug": "^4.4.0",
+ "debug": "^4.4.1",
"es-module-lexer": "^1.7.0",
"pathe": "^2.0.3",
- "vite": "^5.0.0 || ^6.0.0"
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
},
"bin": {
"vite-node": "vite-node.mjs"
@@ -4494,32 +4544,34 @@
}
},
"node_modules/vitest": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.4.tgz",
- "integrity": "sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.2.tgz",
+ "integrity": "sha512-fyNn/Rp016Bt5qvY0OQvIUCwW2vnaEBLxP42PmKbNIoasSYjML+8xyeADOPvBe+Xfl/ubIw4og7Lt9jflRsCNw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "3.1.4",
- "@vitest/mocker": "3.1.4",
- "@vitest/pretty-format": "^3.1.4",
- "@vitest/runner": "3.1.4",
- "@vitest/snapshot": "3.1.4",
- "@vitest/spy": "3.1.4",
- "@vitest/utils": "3.1.4",
+ "@types/chai": "^5.2.2",
+ "@vitest/expect": "3.2.2",
+ "@vitest/mocker": "3.2.2",
+ "@vitest/pretty-format": "^3.2.2",
+ "@vitest/runner": "3.2.2",
+ "@vitest/snapshot": "3.2.2",
+ "@vitest/spy": "3.2.2",
+ "@vitest/utils": "3.2.2",
"chai": "^5.2.0",
- "debug": "^4.4.0",
+ "debug": "^4.4.1",
"expect-type": "^1.2.1",
"magic-string": "^0.30.17",
"pathe": "^2.0.3",
+ "picomatch": "^4.0.2",
"std-env": "^3.9.0",
"tinybench": "^2.9.0",
"tinyexec": "^0.3.2",
- "tinyglobby": "^0.2.13",
- "tinypool": "^1.0.2",
+ "tinyglobby": "^0.2.14",
+ "tinypool": "^1.1.0",
"tinyrainbow": "^2.0.0",
- "vite": "^5.0.0 || ^6.0.0",
- "vite-node": "3.1.4",
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0",
+ "vite-node": "3.2.2",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -4535,8 +4587,8 @@
"@edge-runtime/vm": "*",
"@types/debug": "^4.1.12",
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.1.4",
- "@vitest/ui": "3.1.4",
+ "@vitest/browser": "3.2.2",
+ "@vitest/ui": "3.2.2",
"happy-dom": "*",
"jsdom": "*"
},
diff --git a/package.json b/package.json
index 436023a..28079f2 100644
--- a/package.json
+++ b/package.json
@@ -11,31 +11,31 @@
},
"dependencies": {
"@hello-pangea/dnd": "^18.0.1",
- "@mantine/core": "^8.0.1",
- "@mantine/hooks": "^8.0.1",
- "@mantine/notifications": "^8.0.1",
- "@tanstack/react-query": "^5.76.2",
- "@tanstack/react-query-devtools": "^5.76.2",
- "@tanstack/react-query-persist-client": "^5.76.2",
+ "@mantine/core": "^8.0.2",
+ "@mantine/hooks": "^8.0.2",
+ "@mantine/notifications": "^8.0.2",
+ "@tanstack/react-query": "^5.80.6",
+ "@tanstack/react-query-devtools": "^5.80.6",
+ "@tanstack/react-query-persist-client": "^5.80.6",
"idb-keyval": "^6.2.2",
- "jotai": "^2.12.4",
+ "jotai": "^2.12.5",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-icons": "^5.5.0",
- "react-router-dom": "^7.6.0",
+ "react-router-dom": "^7.6.2",
"recharts": "^2.15.3"
},
"devDependencies": {
- "@types/node": "^22.15.21",
- "@types/react": "^19.1.5",
- "@types/react-dom": "^19.1.5",
- "@vitejs/plugin-react": "^4.5.0",
- "@vitest/coverage-v8": "^3.1.4",
- "@vitest/ui": "^3.1.4",
+ "@types/node": "^22.15.30",
+ "@types/react": "^19.1.6",
+ "@types/react-dom": "^19.1.6",
+ "@vitejs/plugin-react": "^4.5.1",
+ "@vitest/coverage-v8": "^3.2.2",
+ "@vitest/ui": "^3.2.2",
"typescript": "^5.8.3",
"vite": "^6.3.5",
"vite-plugin-dts": "~4.5.4",
"vite-tsconfig-paths": "^5.1.4",
- "vitest": "^3.1.4"
+ "vitest": "^3.2.2"
}
}
diff --git a/src/components/WeatherModal/CurrentWeather.tsx b/src/components/WeatherModal/CurrentWeather.tsx
index b8dea97..1f55135 100644
--- a/src/components/WeatherModal/CurrentWeather.tsx
+++ b/src/components/WeatherModal/CurrentWeather.tsx
@@ -30,7 +30,6 @@ export default function CurrentWeather({ current }: { current: CW }) {
);
}
}, [sunStateData]);
-
return (
<>
{current ? (
@@ -202,7 +201,7 @@ export default function CurrentWeather({ current }: { current: CW }) {
className={themeIconClasses.weatherIcon}
classNames={themeIconClasses}
>
-
+
item.isDaytime);
const night = forecast.slice(2, 14).filter((item: ExtendedForecast) => !item.isDaytime);
return (
@@ -30,7 +32,7 @@ export default function ExtendedForecastCard({
Extended Forecast
-
+
{day.map((item: ExtendedForecast, index: number) => {
const short = item.shortForecast.includes('And')
? item.shortForecast.substring(0, item.shortForecast.indexOf('And'))
diff --git a/src/pages/homepage/components/Search/Search.tsx b/src/pages/homepage/components/Search/Search.tsx
index e0c45a8..86ee8ca 100644
--- a/src/pages/homepage/components/Search/Search.tsx
+++ b/src/pages/homepage/components/Search/Search.tsx
@@ -280,16 +280,20 @@ export default function Search({
const [showFillButton, setShowFillButton] = useState(false);
if (item.option.searchTerm !== undefined) {
const m = new Date(item.option.dateTimeStamp);
- const year = m.getUTCFullYear();
+ const year = `${m.getUTCFullYear()}`.slice(-2);
const month = `0${m.getUTCMonth() + 1}`.slice(-2);
const day = `0${m.getUTCDate()}`.slice(-2);
const hours = `0${m.getUTCHours()}`.slice(-2);
const minutes = `0${m.getUTCMinutes()}`.slice(-2);
- const seconds = `0${m.getUTCSeconds()}`.slice(-2);
- const dateString = `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`;
+ const dateString = isMobile
+ ? `${month}/${day}/${year}`
+ : `${month}/${day}/${year} ${hours}:${minutes}`;
return (
{
handleSearchHistoryItem(item);
}}
@@ -300,7 +304,7 @@ export default function Search({
setShowFillButton(false);
}}
>
-
+
)}
-
- {item.option.searchTerm}
+
+ {item.option.searchTerm}
+
+
{dateString}
- {showFillButton && (
- {
- e.stopPropagation();
- mutateAsync({
- method: 'DELETE',
- endpoint: searchEndpoint,
- body: { id: item.option.id },
- });
- }}
- >
-
-
- )}
+
+ {showFillButton && (
+ {
+ e.stopPropagation();
+ mutateAsync({
+ method: 'DELETE',
+ endpoint: searchEndpoint,
+ body: { id: item.option.id },
+ });
+ }}
+ >
+
+
+ )}
+
);
}
diff --git a/src/pages/homepage/components/SettingsButton/SettingsButton.tsx b/src/pages/homepage/components/SettingsButton/SettingsButton.tsx
index 3a56593..82bbed7 100644
--- a/src/pages/homepage/components/SettingsButton/SettingsButton.tsx
+++ b/src/pages/homepage/components/SettingsButton/SettingsButton.tsx
@@ -101,7 +101,15 @@ function SettingsButton() {
}, [allThemeData, allThemeDataIsFetched]);
return (
<>
- {overlayOpened && }
+ {overlayOpened && (
+ {
+ e.stopPropagation();
+ }}
+ />
+ )}