diff --git a/app/package.json b/app/package.json
index a3ecc716..58bb4269 100644
--- a/app/package.json
+++ b/app/package.json
@@ -18,8 +18,8 @@
"@tailwindcss/vite": "^4.1.18",
"@types/geojson": "^7946.0.10",
"axios": "^1.13.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"react-rnd": "^10.4.1",
"react-router-dom": "^7.10.1",
"utopia-ui": "^3.0.112",
@@ -29,8 +29,8 @@
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
"@eslint/js": "^9.36.0",
"@types/node": "^24.10.2",
- "@types/react": "^18.2.79",
- "@types/react-dom": "^18.2.25",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.0.0",
"daisyui": "^5.5.14",
"eslint": "^9.39.2",
diff --git a/lib/package.json b/lib/package.json
index 07b5124d..fbcf0503 100644
--- a/lib/package.json
+++ b/lib/package.json
@@ -55,8 +55,8 @@
"@types/geojson": "^7946.0.14",
"@types/leaflet": "^1.9.21",
"@types/leaflet.markercluster": "^1.5.5",
- "@types/react": "^18.2.0",
- "@types/react-dom": "^18.0.5",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
"@vitest/coverage-v8": "^3.0.5",
"cypress": "^15.7.1",
@@ -77,8 +77,8 @@
"happy-dom": "^20.0.11",
"postcss": "^8.4.21",
"prettier": "^3.7.4",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"rollup": "^4.53.5",
"rollup-plugin-dts": "^6.3.0",
"rollup-plugin-postcss": "^4.0.2",
@@ -94,8 +94,8 @@
"vitest": "^3.0.5"
},
"peerDependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"react-router-dom": "^7.10.1"
},
"dependencies": {
@@ -123,12 +123,12 @@
"react-icons": "^5.5.0",
"react-image-crop": "^11.0.10",
"react-inlinesvg": "^4.2.0",
- "react-leaflet": "^4.2.1",
- "react-leaflet-cluster": "^3.1.1",
+ "react-leaflet": "^5.0.0",
+ "react-leaflet-cluster": "^4.0.0",
"react-markdown": "^9.0.1",
"react-photo-album": "^3.3.0",
"react-qr-code": "^2.0.16",
- "react-toastify": "^9.1.3",
+ "react-toastify": "^11.0.5",
"remark-breaks": "^4.0.0",
"tiptap-markdown": "^0.9.0",
"yet-another-react-lightbox": "^3.27.0"
diff --git a/lib/src/Components/AppShell/ContextWrapper.tsx b/lib/src/Components/AppShell/ContextWrapper.tsx
index 646aaed9..0f4e42eb 100644
--- a/lib/src/Components/AppShell/ContextWrapper.tsx
+++ b/lib/src/Components/AppShell/ContextWrapper.tsx
@@ -31,24 +31,24 @@ const CloseButton = ({ closeToast }: CloseButtonProps) => (
export const ContextWrapper = ({ children }: { children: React.ReactNode }) => {
const isWrapped = useContext(ContextCheckContext)
-
const isInsideRouter = useInRouterContext()
- let returnValue = children
+ // Build the component tree from inside out
+ let content = <>{children}>
if (!isWrapped) {
- returnValue = (
+ content = (
- {returnValue}
+ {content}
)
}
if (!isInsideRouter) {
- returnValue = {returnValue}
+ content = {content}
}
- return returnValue
+ return content
}
// eslint-disable-next-line react/prop-types
diff --git a/lib/src/Components/AppShell/UserControl.tsx b/lib/src/Components/AppShell/UserControl.tsx
index ff0ef561..e6622a03 100644
--- a/lib/src/Components/AppShell/UserControl.tsx
+++ b/lib/src/Components/AppShell/UserControl.tsx
@@ -32,7 +32,7 @@ export const UserControl = () => {
return 'Bye bye'
},
// other options
- icon: '👋',
+ icon: () => '👋',
},
error: {
render({ data }) {
diff --git a/lib/src/Components/Auth/LoginPage.tsx b/lib/src/Components/Auth/LoginPage.tsx
index b1c8fbb1..4e395923 100644
--- a/lib/src/Components/Auth/LoginPage.tsx
+++ b/lib/src/Components/Auth/LoginPage.tsx
@@ -65,7 +65,7 @@ export function LoginPage({ inviteApi, showRequestPassword }: Props) {
return `Hi ${data?.first_name ? data.first_name : 'Traveler'}`
},
// other options
- icon: '✌️',
+ icon: () => '✌️',
},
error: {
render({ data }) {
diff --git a/lib/src/Components/Auth/RequestPasswordPage.tsx b/lib/src/Components/Auth/RequestPasswordPage.tsx
index 0d13d436..1977f886 100644
--- a/lib/src/Components/Auth/RequestPasswordPage.tsx
+++ b/lib/src/Components/Auth/RequestPasswordPage.tsx
@@ -24,7 +24,7 @@ export function RequestPasswordPage({ resetUrl }: { resetUrl: string }) {
return 'Check your mailbox'
},
// other options
- icon: '📬',
+ icon: () => '📬',
},
error: {
render({ data }) {
diff --git a/lib/src/Components/Auth/SignupPage.tsx b/lib/src/Components/Auth/SignupPage.tsx
index 296ec7bb..880767b9 100644
--- a/lib/src/Components/Auth/SignupPage.tsx
+++ b/lib/src/Components/Auth/SignupPage.tsx
@@ -29,7 +29,7 @@ export function SignupPage() {
return `Hi ${data?.first_name ? data.first_name : 'Traveler'}`
},
// other options
- icon: '✌️',
+ icon: () => '✌️',
},
error: {
render({ data }) {
diff --git a/lib/src/Components/Input/Autocomplete.tsx b/lib/src/Components/Input/Autocomplete.tsx
index ae9be9c7..bf58aedb 100644
--- a/lib/src/Components/Input/Autocomplete.tsx
+++ b/lib/src/Components/Input/Autocomplete.tsx
@@ -23,17 +23,18 @@ export const Autocomplete = ({
}) => {
const [filteredSuggestions, setFilteredSuggestions] = useState([])
const [heighlightedSuggestion, setHeighlightedSuggestion] = useState(0)
+ const inputRef = useRef(null)
useEffect(() => {
pushFilteredSuggestions && setFilteredSuggestions(pushFilteredSuggestions)
}, [pushFilteredSuggestions])
useEffect(() => {
- setFocus && inputRef.current?.focus()
+ if (setFocus) {
+ inputRef.current?.focus()
+ }
}, [setFocus])
- const inputRef = useRef()
-
const getSuggestions = (value) => {
const inputValue = value.trim().toLowerCase()
const inputLength = inputValue.length
diff --git a/lib/src/Components/Map/hooks/useClusterRef.tsx b/lib/src/Components/Map/hooks/useClusterRef.tsx
index 191bd629..93b78b06 100644
--- a/lib/src/Components/Map/hooks/useClusterRef.tsx
+++ b/lib/src/Components/Map/hooks/useClusterRef.tsx
@@ -6,16 +6,16 @@ import { createContext, useContext, useState } from 'react'
type UseClusterRefManagerResult = ReturnType
const ClusterRefContext = createContext({
- clusterRef: {} as React.MutableRefObject,
+ clusterRef: {} as React.RefObject,
setClusterRef: () => {},
})
function useClusterRefManager(): {
clusterRef: any
- setClusterRef: React.Dispatch>>
+ setClusterRef: React.Dispatch>>
} {
- const [clusterRef, setClusterRef] = useState>(
- {} as React.MutableRefObject,
+ const [clusterRef, setClusterRef] = useState>(
+ {} as React.RefObject,
)
return { clusterRef, setClusterRef }
diff --git a/lib/src/Components/Map/hooks/useTimeout.tsx b/lib/src/Components/Map/hooks/useTimeout.tsx
index 2a49cb23..2b5b1983 100644
--- a/lib/src/Components/Map/hooks/useTimeout.tsx
+++ b/lib/src/Components/Map/hooks/useTimeout.tsx
@@ -1,20 +1,17 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-/* eslint-disable @typescript-eslint/no-unsafe-argument */
-/* eslint-disable @typescript-eslint/no-unsafe-return */
-/* eslint-disable @typescript-eslint/no-unsafe-call */
-/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { useCallback, useEffect, useRef } from 'react'
-export const useTimeout = (callback, delay) => {
+export const useTimeout = (callback: () => void, delay: number) => {
const callbackRef = useRef(callback)
- const timeoutRef = useRef()
+ const timeoutRef = useRef | null>(null)
useEffect(() => {
callbackRef.current = callback
}, [callback])
const set = useCallback(() => {
- timeoutRef.current = setTimeout(() => callbackRef.current(), delay)
+ timeoutRef.current = setTimeout(() => {
+ callbackRef.current()
+ }, delay)
}, [delay])
const clear = useCallback(() => {
diff --git a/package-lock.json b/package-lock.json
index 3583de8d..472934d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,8 +19,8 @@
"@tailwindcss/vite": "^4.1.18",
"@types/geojson": "^7946.0.10",
"axios": "^1.13.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"react-rnd": "^10.4.1",
"react-router-dom": "^7.10.1",
"utopia-ui": "^3.0.112",
@@ -30,8 +30,8 @@
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
"@eslint/js": "^9.36.0",
"@types/node": "^24.10.2",
- "@types/react": "^18.2.79",
- "@types/react-dom": "^18.2.25",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.0.0",
"daisyui": "^5.5.14",
"eslint": "^9.39.2",
@@ -57,6 +57,26 @@
"node": ">=22.20.0"
}
},
+ "app/node_modules/@types/react": {
+ "version": "19.2.7",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
+ "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "app/node_modules/@types/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
"app/node_modules/@typescript-eslint/types": {
"version": "8.48.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz",
@@ -137,6 +157,33 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "app/node_modules/react": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
+ "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "app/node_modules/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.3"
+ }
+ },
+ "app/node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
"lib": {
"name": "utopia-ui",
"version": "3.0.112",
@@ -166,12 +213,12 @@
"react-icons": "^5.5.0",
"react-image-crop": "^11.0.10",
"react-inlinesvg": "^4.2.0",
- "react-leaflet": "^4.2.1",
- "react-leaflet-cluster": "^3.1.1",
+ "react-leaflet": "^5.0.0",
+ "react-leaflet-cluster": "^4.0.0",
"react-markdown": "^9.0.1",
"react-photo-album": "^3.3.0",
"react-qr-code": "^2.0.16",
- "react-toastify": "^9.1.3",
+ "react-toastify": "^11.0.5",
"remark-breaks": "^4.0.0",
"tiptap-markdown": "^0.9.0",
"yet-another-react-lightbox": "^3.27.0"
@@ -189,8 +236,8 @@
"@types/geojson": "^7946.0.14",
"@types/leaflet": "^1.9.21",
"@types/leaflet.markercluster": "^1.5.5",
- "@types/react": "^18.2.0",
- "@types/react-dom": "^18.0.5",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
"@vitest/coverage-v8": "^3.0.5",
"cypress": "^15.7.1",
@@ -211,8 +258,8 @@
"happy-dom": "^20.0.11",
"postcss": "^8.4.21",
"prettier": "^3.7.4",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"rollup": "^4.53.5",
"rollup-plugin-dts": "^6.3.0",
"rollup-plugin-postcss": "^4.0.2",
@@ -231,11 +278,42 @@
"node": ">=22.20.0"
},
"peerDependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
"react-router-dom": "^7.10.1"
}
},
+ "lib/node_modules/@react-leaflet/core": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-3.0.0.tgz",
+ "integrity": "sha512-3EWmekh4Nz+pGcr+xjf0KNyYfC3U2JjnkWsh0zcqaexYqmmB5ZhH37kz41JXGmKzpaMZCnPofBBm64i+YrEvGQ==",
+ "license": "Hippocratic-2.1",
+ "peerDependencies": {
+ "leaflet": "^1.9.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
+ }
+ },
+ "lib/node_modules/@types/react": {
+ "version": "19.2.7",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
+ "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "lib/node_modules/@types/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
"lib/node_modules/@typescript-eslint/types": {
"version": "8.48.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz",
@@ -316,6 +394,63 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "lib/node_modules/react": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
+ "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "lib/node_modules/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.3"
+ }
+ },
+ "lib/node_modules/react-leaflet": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-5.0.0.tgz",
+ "integrity": "sha512-CWbTpr5vcHw5bt9i4zSlPEVQdTVcML390TjeDG0cK59z1ylexpqC6M1PJFjV8jD7CF+ACBFsLIDs6DRMoLEofw==",
+ "license": "Hippocratic-2.1",
+ "dependencies": {
+ "@react-leaflet/core": "^3.0.0"
+ },
+ "peerDependencies": {
+ "leaflet": "^1.9.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
+ }
+ },
+ "lib/node_modules/react-leaflet-cluster": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/react-leaflet-cluster/-/react-leaflet-cluster-4.0.0.tgz",
+ "integrity": "sha512-Lu75+KOu2ruGyAx8LoCQvlHuw+3CLLJQGEoSk01ymsDN/YnCiRV6ChkpsvaruVyYBPzUHwiskFw4Jo7WHj5qNw==",
+ "license": "SEE LICENSE IN ",
+ "dependencies": {
+ "leaflet.markercluster": "^1.5.3"
+ },
+ "peerDependencies": {
+ "@react-leaflet/core": "^3.0.0",
+ "leaflet": "^1.9.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "react-leaflet": "^5.0.0"
+ }
+ },
+ "lib/node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
"node_modules/@adobe/css-tools": {
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz",
@@ -3085,17 +3220,6 @@
"url": "https://opencollective.com/pkgr"
}
},
- "node_modules/@react-leaflet/core": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz",
- "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==",
- "license": "Hippocratic-2.1",
- "peerDependencies": {
- "leaflet": "^1.9.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
"node_modules/@remirror/core-constants": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz",
@@ -4982,13 +5106,15 @@
"version": "15.7.15",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/react": {
"version": "18.3.26",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz",
"integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -4999,6 +5125,7 @@
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
"integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"@types/react": "^18.0.0"
}
@@ -7012,9 +7139,9 @@
}
},
"node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
"node_modules/cypress": {
@@ -13398,6 +13525,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -13420,6 +13548,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -13506,35 +13635,6 @@
"license": "MIT",
"peer": true
},
- "node_modules/react-leaflet": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz",
- "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==",
- "license": "Hippocratic-2.1",
- "dependencies": {
- "@react-leaflet/core": "^2.1.0"
- },
- "peerDependencies": {
- "leaflet": "^1.9.0",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/react-leaflet-cluster": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/react-leaflet-cluster/-/react-leaflet-cluster-3.1.1.tgz",
- "integrity": "sha512-g39QohKNrmIwHNlL0KTv+a9PYYWDtcRAsnHHytJyRhIgjxGxs4/SXe/Zr4kP8IZoEzxbqCMkJqUsFBEZJqKp2g==",
- "license": "SEE LICENSE IN ",
- "dependencies": {
- "leaflet.markercluster": "^1.5.3"
- },
- "peerDependencies": {
- "leaflet": "^1.8.0",
- "react": "^18.2.0 || ^19.0.0",
- "react-dom": "^18.2.0 || ^19.0.0",
- "react-leaflet": "^4.0.0"
- }
- },
"node_modules/react-markdown": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz",
@@ -13663,16 +13763,25 @@
}
},
"node_modules/react-toastify": {
- "version": "9.1.3",
- "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz",
- "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz",
+ "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==",
"license": "MIT",
"dependencies": {
- "clsx": "^1.1.1"
+ "clsx": "^2.1.1"
},
"peerDependencies": {
- "react": ">=16",
- "react-dom": ">=16"
+ "react": "^18 || ^19",
+ "react-dom": "^18 || ^19"
+ }
+ },
+ "node_modules/react-toastify/node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/redent": {
@@ -14217,6 +14326,7 @@
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
}