diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bc748fd378..265d5c4a71 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -50,7 +50,7 @@ "react-error-boundary": "^3.1.4", "react-joyride": "^2.8.2", "react-phone-input-2": "^2.15.1", - "react-router-dom": "^6.30.6", + "react-router": "^7.18.3", "react-table": "^7.8.0", "yup": "^0.32.11" }, @@ -7287,15 +7287,6 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@remix-run/router": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.4.tgz", - "integrity": "sha512-q7j5geK7xs3UJSdm9/iytUNclBnLmYx1EnSeCFXHPeutdqgIMeFeHtUZgS3EhlKxdBEAu8OwtJCwmLrEzpSs7Q==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -20441,35 +20432,38 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/react-router": { - "version": "6.30.6", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.6.tgz", - "integrity": "sha512-5HfK7k5im7LTOB0EqCQmfvy4C13G92Ssj1VTmouTK3AJvyjKTnFuCV0vcMAD/JS+JC4DvDIBRrlAeJIFjh5VWg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.3.tgz", + "integrity": "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.4" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=16.8" + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, - "node_modules/react-router-dom": { - "version": "6.30.6", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.6.tgz", - "integrity": "sha512-0RHKZz7wwffvkU+2MFVT2NnjK44ssLEV+m0CAJaS2Ksmorrwj7WxH00jO0SOCW26/tINUnJHToXblDs33I38YQ==", + "node_modules/react-router/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", - "dependencies": { - "@remix-run/router": "1.23.4", - "react-router": "6.30.6" - }, "engines": { - "node": ">=14.0.0" + "node": ">=18" }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/react-shallow-renderer": { @@ -21170,6 +21164,12 @@ "node": ">= 0.8" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -29049,11 +29049,6 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, - "@remix-run/router": { - "version": "1.23.4", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.4.tgz", - "integrity": "sha512-q7j5geK7xs3UJSdm9/iytUNclBnLmYx1EnSeCFXHPeutdqgIMeFeHtUZgS3EhlKxdBEAu8OwtJCwmLrEzpSs7Q==" - }, "@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -38663,20 +38658,19 @@ } }, "react-router": { - "version": "6.30.6", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.6.tgz", - "integrity": "sha512-5HfK7k5im7LTOB0EqCQmfvy4C13G92Ssj1VTmouTK3AJvyjKTnFuCV0vcMAD/JS+JC4DvDIBRrlAeJIFjh5VWg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.3.tgz", + "integrity": "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==", "requires": { - "@remix-run/router": "1.23.4" - } - }, - "react-router-dom": { - "version": "6.30.6", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.6.tgz", - "integrity": "sha512-0RHKZz7wwffvkU+2MFVT2NnjK44ssLEV+m0CAJaS2Ksmorrwj7WxH00jO0SOCW26/tINUnJHToXblDs33I38YQ==", - "requires": { - "@remix-run/router": "1.23.4", - "react-router": "6.30.6" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "dependencies": { + "cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==" + } } }, "react-shallow-renderer": { @@ -39199,6 +39193,11 @@ } } }, + "set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==" + }, "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 0f7941d950..56aa20ede3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -60,7 +60,7 @@ "react-error-boundary": "^3.1.4", "react-joyride": "^2.8.2", "react-phone-input-2": "^2.15.1", - "react-router-dom": "^6.30.6", + "react-router": "^7.18.3", "react-table": "^7.8.0", "yup": "^0.32.11" }, diff --git a/frontend/src/__tests__/LocaleSwitcher.test.js b/frontend/src/__tests__/LocaleSwitcher.test.js index cd34064c64..f8920a9c0f 100644 --- a/frontend/src/__tests__/LocaleSwitcher.test.js +++ b/frontend/src/__tests__/LocaleSwitcher.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { waitFor, render } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import userEvent from '@testing-library/user-event' import { LocaleSwitcher } from '../app/LocaleSwitcher' diff --git a/frontend/src/admin/AdminPage.js b/frontend/src/admin/AdminPage.js index 80ceb91b24..96c9459d5b 100644 --- a/frontend/src/admin/AdminPage.js +++ b/frontend/src/admin/AdminPage.js @@ -3,7 +3,7 @@ import { Button, Flex, Stack, Text, useToast, Select } from '@chakra-ui/react' import { AddIcon } from '@chakra-ui/icons' import { Trans, useLingui } from '@lingui/react/macro' import { useQuery } from '@apollo/client' -import { Link as RouteLink, useNavigate, useParams } from 'react-router-dom' +import { Link as RouteLink, useNavigate, useParams } from 'react-router' import { AdminPanel } from './AdminPanel' import { OrganizationInformation } from './OrganizationInformation' diff --git a/frontend/src/admin/__tests__/AdminDomainCard.test.js b/frontend/src/admin/__tests__/AdminDomainCard.test.js index 46d1eb1d9f..2c48033d37 100644 --- a/frontend/src/admin/__tests__/AdminDomainCard.test.js +++ b/frontend/src/admin/__tests__/AdminDomainCard.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { List, theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/admin/__tests__/AdminDomains.test.js b/frontend/src/admin/__tests__/AdminDomains.test.js index f3de2b82d4..ff5473abf5 100644 --- a/frontend/src/admin/__tests__/AdminDomains.test.js +++ b/frontend/src/admin/__tests__/AdminDomains.test.js @@ -1,7 +1,7 @@ import React from 'react' import { fireEvent, render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/admin/__tests__/AdminPage.test.js b/frontend/src/admin/__tests__/AdminPage.test.js index 50ec096d92..bb2951beaa 100644 --- a/frontend/src/admin/__tests__/AdminPage.test.js +++ b/frontend/src/admin/__tests__/AdminPage.test.js @@ -5,7 +5,7 @@ import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import AdminPage from '../AdminPage' import { waitFor, render } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import userEvent from '@testing-library/user-event' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/admin/__tests__/AdminPanel.test.js b/frontend/src/admin/__tests__/AdminPanel.test.js index c9ecfc7f06..3808f67831 100644 --- a/frontend/src/admin/__tests__/AdminPanel.test.js +++ b/frontend/src/admin/__tests__/AdminPanel.test.js @@ -4,7 +4,7 @@ import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { makeVar } from '@apollo/client' import { AdminPanel } from '../AdminPanel' import { createCache } from '../../client' diff --git a/frontend/src/admin/__tests__/AuditLogTable.test.js b/frontend/src/admin/__tests__/AuditLogTable.test.js index d9860efe8d..ae769f5c8b 100644 --- a/frontend/src/admin/__tests__/AuditLogTable.test.js +++ b/frontend/src/admin/__tests__/AuditLogTable.test.js @@ -5,7 +5,7 @@ import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { AuditLogTable } from '../AuditLogTable' import { waitFor, render } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import userEvent from '@testing-library/user-event' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/admin/__tests__/DomainTagsList.test.js b/frontend/src/admin/__tests__/DomainTagsList.test.js index 2b980e044c..d44fb82d0e 100644 --- a/frontend/src/admin/__tests__/DomainTagsList.test.js +++ b/frontend/src/admin/__tests__/DomainTagsList.test.js @@ -1,6 +1,6 @@ import React from 'react' import { ChakraProvider, theme } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { makeVar } from '@apollo/client' diff --git a/frontend/src/admin/__tests__/OrganizationInformation.test.js b/frontend/src/admin/__tests__/OrganizationInformation.test.js index 279bdf1202..e115498ef8 100644 --- a/frontend/src/admin/__tests__/OrganizationInformation.test.js +++ b/frontend/src/admin/__tests__/OrganizationInformation.test.js @@ -1,6 +1,6 @@ import React from 'react' import { ChakraProvider, theme } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { act, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/admin/__tests__/SuperAdminUserList.test.js b/frontend/src/admin/__tests__/SuperAdminUserList.test.js index 75a2dccb48..2c3cbd9b59 100644 --- a/frontend/src/admin/__tests__/SuperAdminUserList.test.js +++ b/frontend/src/admin/__tests__/SuperAdminUserList.test.js @@ -1,6 +1,6 @@ import React from 'react' import { fireEvent, render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/admin/__tests__/UserList.test.js b/frontend/src/admin/__tests__/UserList.test.js index 418457bc2e..10d87fa0f1 100644 --- a/frontend/src/admin/__tests__/UserList.test.js +++ b/frontend/src/admin/__tests__/UserList.test.js @@ -1,6 +1,6 @@ import React from 'react' import { fireEvent, render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/admin/__tests__/UserListModal.test.js b/frontend/src/admin/__tests__/UserListModal.test.js index d21c830849..c8c28369e6 100644 --- a/frontend/src/admin/__tests__/UserListModal.test.js +++ b/frontend/src/admin/__tests__/UserListModal.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider, useDisclosure } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/app/App.js b/frontend/src/app/App.js index b0cf9ebc19..14ee699c52 100644 --- a/frontend/src/app/App.js +++ b/frontend/src/app/App.js @@ -1,5 +1,5 @@ import React, { Suspense } from 'react' -import { Link as RouteLink, Routes, Route, Navigate } from 'react-router-dom' +import { Link as RouteLink, Routes, Route, Navigate } from 'react-router' import { AlertDescription, AlertTitle, Box, Code, CSSReset, Flex, Link, Skeleton, Text } from '@chakra-ui/react' import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" diff --git a/frontend/src/app/ContactUsPage.js b/frontend/src/app/ContactUsPage.js index 7ac31800b9..31e3d13a34 100644 --- a/frontend/src/app/ContactUsPage.js +++ b/frontend/src/app/ContactUsPage.js @@ -1,7 +1,7 @@ import React from 'react' import { Trans } from "@lingui/react/macro" import { Box, Divider, Heading, Button, Text, Link } from '@chakra-ui/react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' export default function ContactUsPage() { return ( diff --git a/frontend/src/app/FloatingMenu.js b/frontend/src/app/FloatingMenu.js index e7efbce810..1f3a50d950 100644 --- a/frontend/src/app/FloatingMenu.js +++ b/frontend/src/app/FloatingMenu.js @@ -1,6 +1,6 @@ import { FloatingMenuLink } from './FloatingMenuLink' import React from 'react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import { Box, Button, diff --git a/frontend/src/app/FloatingMenuLink.js b/frontend/src/app/FloatingMenuLink.js index ab98cfb31e..0ea6340dba 100644 --- a/frontend/src/app/FloatingMenuLink.js +++ b/frontend/src/app/FloatingMenuLink.js @@ -1,6 +1,6 @@ import React from 'react' import { Link, Text } from '@chakra-ui/react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import { bool, string } from 'prop-types' export const FloatingMenuLink = ({ to, text, isExternal, ...props }) => { diff --git a/frontend/src/app/Navigation.js b/frontend/src/app/Navigation.js index cf55f2f732..4a519b4130 100644 --- a/frontend/src/app/Navigation.js +++ b/frontend/src/app/Navigation.js @@ -1,5 +1,5 @@ import React from 'react' -import { Link as ReactRouterLink } from 'react-router-dom' +import { Link as ReactRouterLink } from 'react-router' import { Flex, Stack } from '@chakra-ui/react' import { node } from 'prop-types' diff --git a/frontend/src/app/PrivatePage.js b/frontend/src/app/PrivatePage.js index 6c375efade..06b4d9eef7 100644 --- a/frontend/src/app/PrivatePage.js +++ b/frontend/src/app/PrivatePage.js @@ -1,6 +1,6 @@ import React from 'react' import { bool, func } from 'prop-types' -import { Navigate, useLocation } from 'react-router-dom' +import { Navigate, useLocation } from 'react-router' import { Page } from './Page' // A wrapper for that redirects to the login diff --git a/frontend/src/app/ScrollToAnchor.js b/frontend/src/app/ScrollToAnchor.js index ab7e3051cb..f71a64a6b5 100644 --- a/frontend/src/app/ScrollToAnchor.js +++ b/frontend/src/app/ScrollToAnchor.js @@ -1,4 +1,4 @@ -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { useEffect, useRef, useState } from 'react' function isInteractiveElement(element) { diff --git a/frontend/src/app/SlideMessage.js b/frontend/src/app/SlideMessage.js index 36de7aa7f5..0c1ccd7a7c 100644 --- a/frontend/src/app/SlideMessage.js +++ b/frontend/src/app/SlideMessage.js @@ -17,7 +17,7 @@ import { Slide, } from '@chakra-ui/react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import { bool, func } from 'prop-types' const emailUrlEn = 'https://www.tbs-sct.gc.ca/pol/doc-eng.aspx?id=27600' diff --git a/frontend/src/app/TopBanner.js b/frontend/src/app/TopBanner.js index 2df0ea448b..6f3bdcc797 100644 --- a/frontend/src/app/TopBanner.js +++ b/frontend/src/app/TopBanner.js @@ -2,7 +2,7 @@ import React from 'react' import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" import { Box, Button, Flex, useToast, Image, Link, Skeleton } from '@chakra-ui/react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import { useMutation } from '@apollo/client' import sigEn from '../images/goc-header-logo-dark-en.svg' diff --git a/frontend/src/app/__tests__/App.test.js b/frontend/src/app/__tests__/App.test.js index def4e881d6..ba774e6fff 100644 --- a/frontend/src/app/__tests__/App.test.js +++ b/frontend/src/app/__tests__/App.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { cleanup, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/app/__tests__/ContactUsPage.test.js b/frontend/src/app/__tests__/ContactUsPage.test.js index 76ff46c917..f0c6da4420 100644 --- a/frontend/src/app/__tests__/ContactUsPage.test.js +++ b/frontend/src/app/__tests__/ContactUsPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/app/__tests__/FloatingMenu.test.js b/frontend/src/app/__tests__/FloatingMenu.test.js index 2339d3eaa5..52284e0c21 100644 --- a/frontend/src/app/__tests__/FloatingMenu.test.js +++ b/frontend/src/app/__tests__/FloatingMenu.test.js @@ -3,7 +3,7 @@ import { cleanup, render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router' import { fireEvent } from '@testing-library/dom' import { MockedProvider } from '@apollo/client/testing' import { makeVar } from '@apollo/client' diff --git a/frontend/src/app/__tests__/FloatingMenuLink.test.js b/frontend/src/app/__tests__/FloatingMenuLink.test.js index e074f34bee..ff5586e556 100644 --- a/frontend/src/app/__tests__/FloatingMenuLink.test.js +++ b/frontend/src/app/__tests__/FloatingMenuLink.test.js @@ -3,7 +3,7 @@ import { render, waitFor, fireEvent } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { makeVar } from '@apollo/client' import { FloatingMenuLink } from '../FloatingMenuLink' diff --git a/frontend/src/app/__tests__/NotificationBanner.test.js b/frontend/src/app/__tests__/NotificationBanner.test.js index 9b0c71f1b6..91b98f1946 100644 --- a/frontend/src/app/__tests__/NotificationBanner.test.js +++ b/frontend/src/app/__tests__/NotificationBanner.test.js @@ -4,7 +4,7 @@ import { render } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { NotificationBanner } from '../NotificationBanner' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/app/__tests__/PrivatePage.test.js b/frontend/src/app/__tests__/PrivatePage.test.js index 6913607607..7702111ebe 100644 --- a/frontend/src/app/__tests__/PrivatePage.test.js +++ b/frontend/src/app/__tests__/PrivatePage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render } from '@testing-library/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { makeVar } from '@apollo/client' diff --git a/frontend/src/app/__tests__/ReadGuidancePage.test.js b/frontend/src/app/__tests__/ReadGuidancePage.test.js index 5d3ddd8ce2..db5e89f84b 100644 --- a/frontend/src/app/__tests__/ReadGuidancePage.test.js +++ b/frontend/src/app/__tests__/ReadGuidancePage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { cleanup, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/app/__tests__/SlideMessage.test.js b/frontend/src/app/__tests__/SlideMessage.test.js index 6a5c0f6121..d4d8125a1a 100644 --- a/frontend/src/app/__tests__/SlideMessage.test.js +++ b/frontend/src/app/__tests__/SlideMessage.test.js @@ -4,7 +4,7 @@ import { cleanup, render } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { SlideMessage } from '../SlideMessage' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/app/__tests__/TopBanner.test.js b/frontend/src/app/__tests__/TopBanner.test.js index 6522ef27af..e3232f5ccb 100644 --- a/frontend/src/app/__tests__/TopBanner.test.js +++ b/frontend/src/app/__tests__/TopBanner.test.js @@ -4,7 +4,7 @@ import { cleanup, fireEvent, render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { TopBanner } from '../TopBanner' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/auth/CreateUserPage.js b/frontend/src/auth/CreateUserPage.js index 19455ccf15..28368f70e3 100644 --- a/frontend/src/auth/CreateUserPage.js +++ b/frontend/src/auth/CreateUserPage.js @@ -1,7 +1,7 @@ import React from 'react' import { Box, Button, Heading, Stack, Text, useToast, Checkbox, Link } from '@chakra-ui/react' import { useMutation } from '@apollo/client' -import { Link as RouteLink, useParams, useNavigate, useLocation } from 'react-router-dom' +import { Link as RouteLink, useParams, useNavigate, useLocation } from 'react-router' import { Formik } from 'formik' import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" diff --git a/frontend/src/auth/EmailValidationPage.js b/frontend/src/auth/EmailValidationPage.js index 70dddf2d30..d6cf8cce6f 100644 --- a/frontend/src/auth/EmailValidationPage.js +++ b/frontend/src/auth/EmailValidationPage.js @@ -6,7 +6,7 @@ import { CheckCircleIcon, WarningIcon, } from '@chakra-ui/icons' -import { Link as RouteLink, useParams } from 'react-router-dom' +import { Link as RouteLink, useParams } from 'react-router' import { useMutation } from '@apollo/client' import { LoadingMessage } from '../components/LoadingMessage' diff --git a/frontend/src/auth/ForgotPasswordPage.js b/frontend/src/auth/ForgotPasswordPage.js index 100dca746e..c6f6121541 100644 --- a/frontend/src/auth/ForgotPasswordPage.js +++ b/frontend/src/auth/ForgotPasswordPage.js @@ -4,7 +4,7 @@ import { Trans } from "@lingui/react/macro" import { Box, Button, Heading, Stack, Text, useToast } from '@chakra-ui/react' import { object, string } from 'yup' import { Formik } from 'formik' -import { Link as RouteLink, useNavigate } from 'react-router-dom' +import { Link as RouteLink, useNavigate } from 'react-router' import { useMutation } from '@apollo/client' import { EmailField } from '../components/fields/EmailField' diff --git a/frontend/src/auth/ResetPasswordPage.js b/frontend/src/auth/ResetPasswordPage.js index 481c279987..73ea819ee0 100644 --- a/frontend/src/auth/ResetPasswordPage.js +++ b/frontend/src/auth/ResetPasswordPage.js @@ -4,7 +4,7 @@ import { Trans } from "@lingui/react/macro" import { Box, Button, Heading, Text, useToast } from '@chakra-ui/react' import { object, ref, string } from 'yup' import { Formik } from 'formik' -import { useNavigate, useParams } from 'react-router-dom' +import { useNavigate, useParams } from 'react-router' import { useMutation } from '@apollo/client' import { PasswordConfirmation } from '../components/fields/PasswordConfirmation' diff --git a/frontend/src/auth/SignInPage.js b/frontend/src/auth/SignInPage.js index db141aec14..2b796975c2 100644 --- a/frontend/src/auth/SignInPage.js +++ b/frontend/src/auth/SignInPage.js @@ -1,7 +1,7 @@ import React from 'react' import { Trans, useLingui } from "@lingui/react/macro" import { Box, Button, Checkbox, Flex, Heading, Link, Text, useToast } from '@chakra-ui/react' -import { Link as RouteLink, useNavigate, useLocation } from 'react-router-dom' +import { Link as RouteLink, useNavigate, useLocation } from 'react-router' import { useMutation } from '@apollo/client' import { Formik } from 'formik' diff --git a/frontend/src/auth/TwoFactorAuthenticatePage.js b/frontend/src/auth/TwoFactorAuthenticatePage.js index bb515cab4a..649158e1c1 100644 --- a/frontend/src/auth/TwoFactorAuthenticatePage.js +++ b/frontend/src/auth/TwoFactorAuthenticatePage.js @@ -1,7 +1,7 @@ import React from 'react' import { Trans, useLingui } from "@lingui/react/macro" import { Box, Button, Heading, Stack, Text, useToast } from '@chakra-ui/react' -import { useNavigate, useLocation, useParams } from 'react-router-dom' +import { useNavigate, useLocation, useParams } from 'react-router' import { useMutation } from '@apollo/client' import { ErrorMessage, Formik } from 'formik' diff --git a/frontend/src/auth/__tests__/CreateUserPage.test.js b/frontend/src/auth/__tests__/CreateUserPage.test.js index 6e4bb007b3..2caf7fb428 100644 --- a/frontend/src/auth/__tests__/CreateUserPage.test.js +++ b/frontend/src/auth/__tests__/CreateUserPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/auth/__tests__/EmailValidationPage.test.js b/frontend/src/auth/__tests__/EmailValidationPage.test.js index a6dddc19fc..abb22a9a28 100644 --- a/frontend/src/auth/__tests__/EmailValidationPage.test.js +++ b/frontend/src/auth/__tests__/EmailValidationPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/auth/__tests__/ForgotPasswordPage.test.js b/frontend/src/auth/__tests__/ForgotPasswordPage.test.js index a4f32736ea..f5cb1d16aa 100644 --- a/frontend/src/auth/__tests__/ForgotPasswordPage.test.js +++ b/frontend/src/auth/__tests__/ForgotPasswordPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/auth/__tests__/ResetPasswordPage.test.js b/frontend/src/auth/__tests__/ResetPasswordPage.test.js index 2e258e9f95..80ff508900 100644 --- a/frontend/src/auth/__tests__/ResetPasswordPage.test.js +++ b/frontend/src/auth/__tests__/ResetPasswordPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/auth/__tests__/SignInPage.test.js b/frontend/src/auth/__tests__/SignInPage.test.js index 952683f55d..759576dba8 100644 --- a/frontend/src/auth/__tests__/SignInPage.test.js +++ b/frontend/src/auth/__tests__/SignInPage.test.js @@ -1,5 +1,5 @@ import React from 'react' -import { MemoryRouter, createMemoryRouter, RouterProvider } from 'react-router-dom' +import { MemoryRouter, createMemoryRouter, RouterProvider } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { fireEvent, render, waitFor } from '@testing-library/react' diff --git a/frontend/src/auth/__tests__/TwoFactorAuthenticatePage.test.js b/frontend/src/auth/__tests__/TwoFactorAuthenticatePage.test.js index 01152ef83d..e60e6c6cce 100644 --- a/frontend/src/auth/__tests__/TwoFactorAuthenticatePage.test.js +++ b/frontend/src/auth/__tests__/TwoFactorAuthenticatePage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/components/__tests__/Dropdown.test.js b/frontend/src/components/__tests__/Dropdown.test.js index 0a76941b55..35ff3ed2f0 100644 --- a/frontend/src/components/__tests__/Dropdown.test.js +++ b/frontend/src/components/__tests__/Dropdown.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { waitFor, render, fireEvent } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { Dropdown } from '../Dropdown' import userEvent from '@testing-library/user-event' diff --git a/frontend/src/components/__tests__/ExportButton.test.js b/frontend/src/components/__tests__/ExportButton.test.js index df32cf281e..5d9de3e912 100644 --- a/frontend/src/components/__tests__/ExportButton.test.js +++ b/frontend/src/components/__tests__/ExportButton.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { waitFor, render, fireEvent } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { ExportButton } from '../ExportButton' diff --git a/frontend/src/components/__tests__/MonthSelect.test.js b/frontend/src/components/__tests__/MonthSelect.test.js index 895dd37bf0..c11df94b83 100644 --- a/frontend/src/components/__tests__/MonthSelect.test.js +++ b/frontend/src/components/__tests__/MonthSelect.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { waitFor, render, fireEvent } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { MonthSelect } from '../MonthSelect' const handleChange = jest.fn() diff --git a/frontend/src/components/__tests__/UserCard.test.js b/frontend/src/components/__tests__/UserCard.test.js index 0de9cf99c5..673b72e424 100644 --- a/frontend/src/components/__tests__/UserCard.test.js +++ b/frontend/src/components/__tests__/UserCard.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/createOrganization/CreateOrganizationPage.js b/frontend/src/createOrganization/CreateOrganizationPage.js index bfa37fa20a..0139aa0fb5 100644 --- a/frontend/src/createOrganization/CreateOrganizationPage.js +++ b/frontend/src/createOrganization/CreateOrganizationPage.js @@ -3,7 +3,7 @@ import { Box, Button, Flex, SimpleGrid, Heading, Stack, useToast, Switch, Badge import { Trans, useLingui } from "@lingui/react/macro" import { useMutation } from '@apollo/client' import { Formik } from 'formik' -import { Link as RouteLink, useNavigate } from 'react-router-dom' +import { Link as RouteLink, useNavigate } from 'react-router' import { CreateOrganizationField } from '../components/fields/CreateOrganizationField' diff --git a/frontend/src/createOrganization/__tests__/CreateOrganizationPage.test.js b/frontend/src/createOrganization/__tests__/CreateOrganizationPage.test.js index 6906ff0628..3604e26233 100644 --- a/frontend/src/createOrganization/__tests__/CreateOrganizationPage.test.js +++ b/frontend/src/createOrganization/__tests__/CreateOrganizationPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/dmarc/DmarcByDomainPage.js b/frontend/src/dmarc/DmarcByDomainPage.js index 5aa21547ec..334107ea60 100644 --- a/frontend/src/dmarc/DmarcByDomainPage.js +++ b/frontend/src/dmarc/DmarcByDomainPage.js @@ -17,7 +17,7 @@ import { import { LinkIcon, SearchIcon } from '@chakra-ui/icons' import { Trans, useLingui } from "@lingui/react/macro" import { ErrorBoundary } from 'react-error-boundary' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import withSuperAdmin from '../app/withSuperAdmin' import { TrackerTable } from '../components/TrackerTable' diff --git a/frontend/src/dmarc/DmarcReportPage.js b/frontend/src/dmarc/DmarcReportPage.js index 758a795852..f50a4b96a6 100644 --- a/frontend/src/dmarc/DmarcReportPage.js +++ b/frontend/src/dmarc/DmarcReportPage.js @@ -17,7 +17,7 @@ import { t } from '@lingui/core/macro' import { Trans } from '@lingui/react/macro' import { useLingui } from '@lingui/react' import { number } from 'prop-types' -import { Link as RouteLink, useNavigate, useParams } from 'react-router-dom' +import { Link as RouteLink, useNavigate, useParams } from 'react-router' import { ErrorBoundary } from 'react-error-boundary' import { DmarcReportSummaryGraph } from './DmarcReportSummaryGraph' diff --git a/frontend/src/dmarc/__tests__/DmarcByDomainPage.test.js b/frontend/src/dmarc/__tests__/DmarcByDomainPage.test.js index 7a038d13c0..757c34e809 100644 --- a/frontend/src/dmarc/__tests__/DmarcByDomainPage.test.js +++ b/frontend/src/dmarc/__tests__/DmarcByDomainPage.test.js @@ -6,7 +6,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { makeVar } from '@apollo/client' import { matchMediaSize } from '../../helpers/matchMedia' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import userEvent from '@testing-library/user-event' import DmarcByDomainPage from '../DmarcByDomainPage' import { UserVarProvider } from '../../utilities/userState' diff --git a/frontend/src/dmarc/__tests__/DmarcReportPage.test.js b/frontend/src/dmarc/__tests__/DmarcReportPage.test.js index 4a319d61c1..95485f51d5 100644 --- a/frontend/src/dmarc/__tests__/DmarcReportPage.test.js +++ b/frontend/src/dmarc/__tests__/DmarcReportPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/dmarc/__tests__/ExportRuaListButton.test.js b/frontend/src/dmarc/__tests__/ExportRuaListButton.test.js index c74414ba8a..724276071f 100644 --- a/frontend/src/dmarc/__tests__/ExportRuaListButton.test.js +++ b/frontend/src/dmarc/__tests__/ExportRuaListButton.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { MockedProvider } from '@apollo/client/testing' import { waitFor, render, fireEvent } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { ExportRuaListButton } from '../ExportRuaListButton' diff --git a/frontend/src/domains/DomainCard.js b/frontend/src/domains/DomainCard.js index 0182fe0a55..bfd96ec6f5 100644 --- a/frontend/src/domains/DomainCard.js +++ b/frontend/src/domains/DomainCard.js @@ -15,7 +15,7 @@ import { Tooltip, useToast, } from '@chakra-ui/react' -import { Link as RouteLink, useLocation } from 'react-router-dom' +import { Link as RouteLink, useLocation } from 'react-router' import { array, bool, object, string } from 'prop-types' import { StatusBadge } from './StatusBadge' import { ScanDomainButton } from './ScanDomainButton' diff --git a/frontend/src/domains/__tests__/DomainCard.test.js b/frontend/src/domains/__tests__/DomainCard.test.js index 119d95bf77..18d718e818 100644 --- a/frontend/src/domains/__tests__/DomainCard.test.js +++ b/frontend/src/domains/__tests__/DomainCard.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { List, theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/domains/__tests__/DomainListFilters.test.js b/frontend/src/domains/__tests__/DomainListFilters.test.js index e343a5dc01..c70c5f61c2 100644 --- a/frontend/src/domains/__tests__/DomainListFilters.test.js +++ b/frontend/src/domains/__tests__/DomainListFilters.test.js @@ -8,7 +8,7 @@ import { UserVarProvider } from '../../utilities/userState' import { makeVar } from '@apollo/client' import { createCache } from '../../client' import { ChakraProvider, theme } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' describe('DomainListFilters', () => { let setFilters diff --git a/frontend/src/domains/__tests__/DomainsPage.test.js b/frontend/src/domains/__tests__/DomainsPage.test.js index c7578c4eb9..01d5da6a74 100644 --- a/frontend/src/domains/__tests__/DomainsPage.test.js +++ b/frontend/src/domains/__tests__/DomainsPage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { ChakraProvider, theme } from '@chakra-ui/react' -import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/domains/__tests__/ScanDomain.test.js b/frontend/src/domains/__tests__/ScanDomain.test.js index 8b96897987..d7c2a7e5be 100644 --- a/frontend/src/domains/__tests__/ScanDomain.test.js +++ b/frontend/src/domains/__tests__/ScanDomain.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/guidance/GuidancePage.js b/frontend/src/guidance/GuidancePage.js index 8f842024e2..4b5caa8948 100644 --- a/frontend/src/guidance/GuidancePage.js +++ b/frontend/src/guidance/GuidancePage.js @@ -24,7 +24,7 @@ import { } from '@chakra-ui/react' import { ScanDomainButton } from '../domains/ScanDomainButton' -import { Link as RouteLink, useNavigate, useLocation, useParams } from 'react-router-dom' +import { Link as RouteLink, useNavigate, useLocation, useParams } from 'react-router' import { WebGuidance } from './WebGuidance' import { EmailGuidance } from './EmailGuidance' import { t } from '@lingui/core/macro' diff --git a/frontend/src/guidance/__tests__/AdditionalFindings.test.js b/frontend/src/guidance/__tests__/AdditionalFindings.test.js index 3e80632454..d6f6ec2d19 100644 --- a/frontend/src/guidance/__tests__/AdditionalFindings.test.js +++ b/frontend/src/guidance/__tests__/AdditionalFindings.test.js @@ -5,7 +5,7 @@ import { MockedProvider } from '@apollo/client/testing' import { UserVarProvider } from '../../utilities/userState' import { ChakraProvider, theme } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { makeVar } from '@apollo/client' import { i18n } from '@lingui/core' import { GUIDANCE_ADDITIONAL_FINDINGS } from '../../graphql/queries' diff --git a/frontend/src/guidance/__tests__/GuidancePage.test.js b/frontend/src/guidance/__tests__/GuidancePage.test.js index 0ced46cccb..d74e011c44 100644 --- a/frontend/src/guidance/__tests__/GuidancePage.test.js +++ b/frontend/src/guidance/__tests__/GuidancePage.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { render, waitFor, fireEvent } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/guidance/__tests__/GuidanceTagDetails.test.js b/frontend/src/guidance/__tests__/GuidanceTagDetails.test.js index 7bdfac6c41..6f0b07786b 100644 --- a/frontend/src/guidance/__tests__/GuidanceTagDetails.test.js +++ b/frontend/src/guidance/__tests__/GuidanceTagDetails.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider, Accordion } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/guidance/__tests__/GuidanceTagList.test.js b/frontend/src/guidance/__tests__/GuidanceTagList.test.js index 4abb30cce8..2e09ca6360 100644 --- a/frontend/src/guidance/__tests__/GuidanceTagList.test.js +++ b/frontend/src/guidance/__tests__/GuidanceTagList.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { render, waitFor } from '@testing-library/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/index.js b/frontend/src/index.js index 504d15beec..899c161024 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -1,7 +1,7 @@ import React, { useEffect } from 'react' import { ChakraProvider } from '@chakra-ui/react' import { createRoot } from 'react-dom/client' -import { BrowserRouter as Router, useNavigate, useLocation } from 'react-router-dom' +import { BrowserRouter as Router, useNavigate, useLocation } from 'react-router' import { ApolloProvider, useMutation, useQuery } from '@apollo/client' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' @@ -106,7 +106,7 @@ const setUpApp = async () => { - + diff --git a/frontend/src/organizationDetails/OrganizationDetails.js b/frontend/src/organizationDetails/OrganizationDetails.js index 924db16ec4..cfc3e79797 100644 --- a/frontend/src/organizationDetails/OrganizationDetails.js +++ b/frontend/src/organizationDetails/OrganizationDetails.js @@ -18,7 +18,7 @@ import { } from '@chakra-ui/react' import { ArrowLeftIcon, CheckCircleIcon } from '@chakra-ui/icons' import { UserIcon } from '../theme/Icons' -import { Link as RouteLink, useParams, useNavigate } from 'react-router-dom' +import { Link as RouteLink, useParams, useNavigate } from 'react-router' import { ErrorBoundary } from 'react-error-boundary' import { OrganizationDomains } from './OrganizationDomains' diff --git a/frontend/src/organizationDetails/__tests__/OrganizationAffiliations.test.js b/frontend/src/organizationDetails/__tests__/OrganizationAffiliations.test.js index 1274993da1..8a7c397656 100644 --- a/frontend/src/organizationDetails/__tests__/OrganizationAffiliations.test.js +++ b/frontend/src/organizationDetails/__tests__/OrganizationAffiliations.test.js @@ -1,7 +1,7 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/organizationDetails/__tests__/OrganizationDetails.test.js b/frontend/src/organizationDetails/__tests__/OrganizationDetails.test.js index cfc1313a93..8dbda1c00b 100644 --- a/frontend/src/organizationDetails/__tests__/OrganizationDetails.test.js +++ b/frontend/src/organizationDetails/__tests__/OrganizationDetails.test.js @@ -1,7 +1,7 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/organizationDetails/__tests__/OrganizationDomains.test.js b/frontend/src/organizationDetails/__tests__/OrganizationDomains.test.js index ca6b02cb88..c45549cc76 100644 --- a/frontend/src/organizationDetails/__tests__/OrganizationDomains.test.js +++ b/frontend/src/organizationDetails/__tests__/OrganizationDomains.test.js @@ -1,7 +1,7 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' -import { createMemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, RouterProvider } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/organizations/OrganizationCard.js b/frontend/src/organizations/OrganizationCard.js index 9cdbde19af..b720bbd56b 100644 --- a/frontend/src/organizations/OrganizationCard.js +++ b/frontend/src/organizations/OrganizationCard.js @@ -1,7 +1,7 @@ import React from 'react' import { Box, Flex, Progress, Stack, Text } from '@chakra-ui/react' import { CheckCircleIcon } from '@chakra-ui/icons' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' import { bool, number, object, string } from 'prop-types' import { Trans } from "@lingui/react/macro" diff --git a/frontend/src/organizations/__tests__/OrganizationCard.test.js b/frontend/src/organizations/__tests__/OrganizationCard.test.js index 86fe4c01db..82398c8fc1 100644 --- a/frontend/src/organizations/__tests__/OrganizationCard.test.js +++ b/frontend/src/organizations/__tests__/OrganizationCard.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { List, theme, ChakraProvider, ListItem } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/organizations/__tests__/Organizations.test.js b/frontend/src/organizations/__tests__/Organizations.test.js index 0ae4adb97a..8278c044c5 100644 --- a/frontend/src/organizations/__tests__/Organizations.test.js +++ b/frontend/src/organizations/__tests__/Organizations.test.js @@ -1,6 +1,6 @@ import React from 'react' import { theme, ChakraProvider } from '@chakra-ui/react' -import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router-dom' +import { createMemoryRouter, MemoryRouter, RouterProvider } from 'react-router' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' import { I18nProvider } from '@lingui/react' diff --git a/frontend/src/organizations/__tests__/RequestOrgInviteModal.test.js b/frontend/src/organizations/__tests__/RequestOrgInviteModal.test.js index 48f5eb822a..6769af1dfa 100644 --- a/frontend/src/organizations/__tests__/RequestOrgInviteModal.test.js +++ b/frontend/src/organizations/__tests__/RequestOrgInviteModal.test.js @@ -1,6 +1,6 @@ import React from 'react' import { render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider, useDisclosure } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/setupTests.js b/frontend/src/setupTests.js index a0e09b69c5..e3839030aa 100644 --- a/frontend/src/setupTests.js +++ b/frontend/src/setupTests.js @@ -10,9 +10,8 @@ window.alert = () => {} window.matchMedia = () => ({}) -// react-router-dom uses Remix router and since -// Remix router is failing for some reason around the Request obj -global['Request'] = jest.fn().mockImplementation(() => ({ +global['Request'] = jest.fn().mockImplementation((_url, init = {}) => ({ + method: init.method || 'GET', signal: { removeEventListener: () => {}, addEventListener: () => {}, diff --git a/frontend/src/summaries/HistoricalSummariesGraph.js b/frontend/src/summaries/HistoricalSummariesGraph.js index 3287a01dac..1dcaa7df6e 100644 --- a/frontend/src/summaries/HistoricalSummariesGraph.js +++ b/frontend/src/summaries/HistoricalSummariesGraph.js @@ -18,7 +18,7 @@ import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" import { func } from 'prop-types' import useSearchParam from '../utilities/useSearchParam' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { ABTestVariant, ABTestWrapper } from '../app/ABTestWrapper' const getDate = ({ date }) => new Date(date) diff --git a/frontend/src/summaries/__tests__/HistoricalSummariesGraph.test.js b/frontend/src/summaries/__tests__/HistoricalSummariesGraph.test.js index f37812586c..ab2a64fbba 100644 --- a/frontend/src/summaries/__tests__/HistoricalSummariesGraph.test.js +++ b/frontend/src/summaries/__tests__/HistoricalSummariesGraph.test.js @@ -5,7 +5,7 @@ import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' import { historicalSummariesData } from '../../fixtures/summaryListData' import { HistoricalSummariesGraph } from '../HistoricalSummariesGraph' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { UserVarProvider } from '../../utilities/userState' import { makeVar } from '@apollo/client' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/termsConditions/TermsConditionsPage.js b/frontend/src/termsConditions/TermsConditionsPage.js index 7547d23c2b..9e73e58e75 100644 --- a/frontend/src/termsConditions/TermsConditionsPage.js +++ b/frontend/src/termsConditions/TermsConditionsPage.js @@ -3,7 +3,7 @@ import { Box, Divider, Heading, Link, List, ListItem } from '@chakra-ui/react' import { LinkIcon } from '@chakra-ui/icons' import { Trans } from "@lingui/react/macro" import { useLingui } from '@lingui/react' -import { Link as RouteLink } from 'react-router-dom' +import { Link as RouteLink } from 'react-router' export default function TermsConditionsPage() { const { i18n } = useLingui() diff --git a/frontend/src/user/MyTrackerPage.js b/frontend/src/user/MyTrackerPage.js index d3da8d338e..b2157bec52 100644 --- a/frontend/src/user/MyTrackerPage.js +++ b/frontend/src/user/MyTrackerPage.js @@ -2,7 +2,7 @@ import React, { useEffect } from 'react' import { useQuery } from '@apollo/client' import { Trans } from "@lingui/react/macro" import { Box, Flex, Heading, Tab, TabList, TabPanel, TabPanels, Tabs, Text } from '@chakra-ui/react' -import { useParams, useNavigate } from 'react-router-dom' +import { useParams, useNavigate } from 'react-router' import { ErrorBoundary } from 'react-error-boundary' import { OrganizationDomains } from '../organizationDetails/OrganizationDomains' diff --git a/frontend/src/user/UserPage.js b/frontend/src/user/UserPage.js index 8a3c3a8129..807c3d2a66 100644 --- a/frontend/src/user/UserPage.js +++ b/frontend/src/user/UserPage.js @@ -17,7 +17,7 @@ import { } from '@chakra-ui/react' import { useMutation, useQuery } from '@apollo/client' import { QUERY_CURRENT_USER } from '../graphql/queries' -import { useNavigate } from 'react-router-dom' +import { useNavigate } from 'react-router' import { Trans, useLingui } from "@lingui/react/macro" import { Formik } from 'formik' import { string } from 'prop-types' diff --git a/frontend/src/user/__tests__/EditableUserDisplayName.test.js b/frontend/src/user/__tests__/EditableUserDisplayName.test.js index abd332f6f6..a93293cad6 100644 --- a/frontend/src/user/__tests__/EditableUserDisplayName.test.js +++ b/frontend/src/user/__tests__/EditableUserDisplayName.test.js @@ -3,7 +3,7 @@ import { render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { fireEvent } from '@testing-library/dom' import { makeVar } from '@apollo/client' diff --git a/frontend/src/user/__tests__/EditableUserEmail.test.js b/frontend/src/user/__tests__/EditableUserEmail.test.js index 19200cad82..c60ff57581 100644 --- a/frontend/src/user/__tests__/EditableUserEmail.test.js +++ b/frontend/src/user/__tests__/EditableUserEmail.test.js @@ -3,7 +3,7 @@ import { render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { fireEvent } from '@testing-library/dom' import { makeVar } from '@apollo/client' diff --git a/frontend/src/user/__tests__/EditableUserPassword.test.js b/frontend/src/user/__tests__/EditableUserPassword.test.js index 4024d1abcf..df5c6c9aa8 100644 --- a/frontend/src/user/__tests__/EditableUserPassword.test.js +++ b/frontend/src/user/__tests__/EditableUserPassword.test.js @@ -3,7 +3,7 @@ import { render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { fireEvent } from '@testing-library/dom' import { makeVar } from '@apollo/client' diff --git a/frontend/src/user/__tests__/EditableUserPhoneNumber.test.js b/frontend/src/user/__tests__/EditableUserPhoneNumber.test.js index 0d87169efe..9532da2b70 100644 --- a/frontend/src/user/__tests__/EditableUserPhoneNumber.test.js +++ b/frontend/src/user/__tests__/EditableUserPhoneNumber.test.js @@ -3,7 +3,7 @@ import { render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { fireEvent } from '@testing-library/dom' import { makeVar } from '@apollo/client' diff --git a/frontend/src/user/__tests__/EditableUserTFAMethod.test.js b/frontend/src/user/__tests__/EditableUserTFAMethod.test.js index 8150d6197d..c8bb912a50 100644 --- a/frontend/src/user/__tests__/EditableUserTFAMethod.test.js +++ b/frontend/src/user/__tests__/EditableUserTFAMethod.test.js @@ -3,7 +3,7 @@ import { waitFor, render, fireEvent } from '@testing-library/react' import { ChakraProvider, theme } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import { makeVar } from '@apollo/client' import { EditableUserTFAMethod } from '../EditableUserTFAMethod' diff --git a/frontend/src/user/__tests__/InsideUserSwitch.test.js b/frontend/src/user/__tests__/InsideUserSwitch.test.js index d6e0106816..90bf9c7067 100644 --- a/frontend/src/user/__tests__/InsideUserSwitch.test.js +++ b/frontend/src/user/__tests__/InsideUserSwitch.test.js @@ -3,7 +3,7 @@ import { render, waitFor } from '@testing-library/react' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { MockedProvider } from '@apollo/client/testing' import userEvent from '@testing-library/user-event' import { makeVar } from '@apollo/client' diff --git a/frontend/src/user/__tests__/MyTrackerPage.test.js b/frontend/src/user/__tests__/MyTrackerPage.test.js index 1e88f86bb4..42e241e9d5 100644 --- a/frontend/src/user/__tests__/MyTrackerPage.test.js +++ b/frontend/src/user/__tests__/MyTrackerPage.test.js @@ -1,7 +1,7 @@ import React from 'react' import { fireEvent, render, waitFor } from '@testing-library/react' import { MockedProvider } from '@apollo/client/testing' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' diff --git a/frontend/src/user/__tests__/UserPage.test.js b/frontend/src/user/__tests__/UserPage.test.js index 3a2d1dbf9d..baffbc1003 100644 --- a/frontend/src/user/__tests__/UserPage.test.js +++ b/frontend/src/user/__tests__/UserPage.test.js @@ -1,7 +1,7 @@ import React from 'react' import { i18n } from '@lingui/core' import { fireEvent, render, waitFor } from '@testing-library/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { theme, ChakraProvider } from '@chakra-ui/react' import { I18nProvider } from '@lingui/react' import { MockedProvider } from '@apollo/client/testing' diff --git a/frontend/src/userOnboarding/__tests__/TourButton.test.js b/frontend/src/userOnboarding/__tests__/TourButton.test.js index 75afbcccf5..3210c1cd8e 100644 --- a/frontend/src/userOnboarding/__tests__/TourButton.test.js +++ b/frontend/src/userOnboarding/__tests__/TourButton.test.js @@ -2,7 +2,7 @@ import React from 'react' import { render, fireEvent } from '@testing-library/react' import { TourButton } from '../components/TourButton' import * as useTourModule from '../hooks/useTour' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { I18nProvider } from '@lingui/react' import { i18n } from '@lingui/core' @@ -11,9 +11,9 @@ jest.mock('../hooks/useTour', () => ({ useTour: jest.fn(), })) -// Mock useLocation hook from react-router-dom -jest.mock('react-router-dom', () => ({ - ...jest.requireActual('react-router-dom'), +// Mock useLocation hook from react-router +jest.mock('react-router', () => ({ + ...jest.requireActual('react-router'), useLocation: jest.fn(), })) @@ -21,7 +21,7 @@ describe('TourTextButton', () => { it('calls startTour with the correct tour name when clicked', () => { const mockStartTour = jest.fn() useTourModule.useTour.mockReturnValue({ startTour: mockStartTour }) - const mockUseLocation = require('react-router-dom').useLocation + const mockUseLocation = require('react-router').useLocation mockUseLocation.mockReturnValue({ pathname: '/' }) const { getByRole } = render( diff --git a/frontend/src/userOnboarding/__tests__/TourComponent.test.js b/frontend/src/userOnboarding/__tests__/TourComponent.test.js index e0c79c6eb1..13b6780d43 100644 --- a/frontend/src/userOnboarding/__tests__/TourComponent.test.js +++ b/frontend/src/userOnboarding/__tests__/TourComponent.test.js @@ -6,7 +6,7 @@ import { UserVarProvider } from '../../utilities/userState' import { ApolloClient, makeVar } from '@apollo/client' import { I18nProvider } from '@lingui/react' import { ChakraProvider, theme } from '@chakra-ui/react' -import { MemoryRouter } from 'react-router-dom' +import { MemoryRouter } from 'react-router' import { TourProvider } from '../contexts/TourContext' import { i18n } from '@lingui/core' import { fireEvent } from '@testing-library/dom' diff --git a/frontend/src/userOnboarding/components/TourButton.js b/frontend/src/userOnboarding/components/TourButton.js index 54cfc7686b..41b5c3f988 100644 --- a/frontend/src/userOnboarding/components/TourButton.js +++ b/frontend/src/userOnboarding/components/TourButton.js @@ -1,5 +1,5 @@ import React from 'react' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { useTour } from '../hooks/useTour' // import { QuestionOutlineIcon } from '@chakra-ui/icons' // import { IconButton } from '@chakra-ui/react' diff --git a/frontend/src/userOnboarding/components/TourComponent.js b/frontend/src/userOnboarding/components/TourComponent.js index dbfd6291b2..e3d5521c93 100644 --- a/frontend/src/userOnboarding/components/TourComponent.js +++ b/frontend/src/userOnboarding/components/TourComponent.js @@ -6,7 +6,7 @@ import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" import { useUserVar } from '../../utilities/userState' import theme from '../../theme/canada' -import { useLocation } from 'react-router-dom' +import { useLocation } from 'react-router' import { toursConfig, matchPathname } from './TourButton' import { COMPLETE_TOUR } from '../../graphql/mutations' import { useMutation } from '@apollo/client' diff --git a/frontend/src/utilities/useSearchParam.js b/frontend/src/utilities/useSearchParam.js index edf9dfdaac..0457f52836 100644 --- a/frontend/src/utilities/useSearchParam.js +++ b/frontend/src/utilities/useSearchParam.js @@ -1,5 +1,5 @@ import React, { useEffect } from 'react' -import { useNavigate, useLocation } from 'react-router-dom' +import { useNavigate, useLocation } from 'react-router' function useSearchParam({ name, validOptions, defaultValue }) { const { search } = useLocation()