From bf75dec0ce2ff04b4a671db9a4c0ec5c630fe7b4 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Wed, 22 Oct 2025 19:41:17 -0700 Subject: [PATCH] migrate to react-router v7 and BrowserRouter --- package.json | 3 +- pnpm-lock.yaml | 67 +++++++++++-------- src/renderer/components/card/card-rows.tsx | 2 +- src/renderer/components/card/poster-card.tsx | 2 +- .../feature-carousel/feature-carousel.tsx | 2 +- .../components/item-card/item-card.tsx | 2 +- .../components/item-detail/item-detail.tsx | 2 +- .../columns/album-artists-column.tsx | 2 +- .../columns/artists-column.tsx | 2 +- .../columns/genre-badge-column.tsx | 2 +- .../item-table-list/columns/genre-column.tsx | 2 +- .../item-table-list/columns/title-column.tsx | 2 +- .../columns/title-combined-column.tsx | 2 +- .../virtual-table/cells/album-artist-cell.tsx | 2 +- .../virtual-table/cells/artist-cell.tsx | 2 +- .../cells/combined-title-cell.tsx | 2 +- .../virtual-table/cells/generic-cell.tsx | 2 +- .../virtual-table/cells/genre-cell.tsx | 2 +- .../virtual-table/hooks/use-virtual-table.ts | 2 +- .../routes/action-required-route.tsx | 2 +- .../action-required/routes/invalid-route.tsx | 2 +- .../components/album-detail-content.tsx | 2 +- .../albums/components/album-detail-header.tsx | 2 +- .../albums/routes/album-list-route.tsx | 2 +- .../routes/dummy-album-detail-route.tsx | 2 +- .../album-artist-detail-content.tsx | 2 +- .../components/item-details-modal.tsx | 2 +- .../components/full-screen-player-image.tsx | 2 +- .../player/components/left-controls.tsx | 2 +- .../search/components/home-commands.tsx | 2 +- .../search/components/search-content.tsx | 2 +- .../search/components/search-header.tsx | 2 +- .../shared/components/library-header.tsx | 2 +- .../sidebar/components/collapsed-sidebar.tsx | 2 +- .../sidebar/components/sidebar-item.tsx | 2 +- .../components/sidebar-playlist-list.tsx | 2 +- .../features/sidebar/components/sidebar.tsx | 2 +- .../features/songs/routes/song-list-route.tsx | 2 +- .../features/titlebar/components/app-menu.tsx | 2 +- src/renderer/layouts/auth-layout.tsx | 2 +- src/renderer/router/app-outlet.tsx | 2 +- src/renderer/router/app-router.tsx | 6 +- 42 files changed, 81 insertions(+), 73 deletions(-) diff --git a/package.json b/package.json index 782e914aa..bd515511f 100644 --- a/package.json +++ b/package.json @@ -124,8 +124,7 @@ "react-image": "^4.1.0", "react-loading-skeleton": "^3.5.0", "react-player": "^2.11.0", - "react-router": "^6.16.0", - "react-router-dom": "^6.16.0", + "react-router": "^7.9.4", "react-window-v2": "npm:react-window@^2.2.0", "semver": "^7.5.4", "string-to-color": "^2.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 129bdf10c..4d1438aeb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,7 +163,7 @@ importers: version: https://codeload.github.com/jeffvli/Node-MPV/tar.gz/32b4d64395289ad710c41d481d2707a7acfc228f nuqs: specifier: ^2.7.1 - version: 2.7.1(react-router-dom@6.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@6.30.1(react@19.1.0))(react@19.1.0) + version: 2.7.1(react-router-dom@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) overlayscrollbars: specifier: ^2.11.1 version: 2.11.3 @@ -201,11 +201,8 @@ importers: specifier: ^2.11.0 version: 2.16.0(react@19.1.0) react-router: - specifier: ^6.16.0 - version: 6.30.1(react@19.1.0) - react-router-dom: - specifier: ^6.16.0 - version: 6.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.9.4 + version: 7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react-window-v2: specifier: npm:react-window@^2.2.0 version: react-window@2.2.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -1669,10 +1666,6 @@ packages: peerDependencies: react: ^16.8 || ^17.0 || ^18.0 - '@remix-run/router@1.23.0': - resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} - engines: {node: '>=14.0.0'} - '@rolldown/pluginutils@1.0.0-beta.9': resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} @@ -2529,6 +2522,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + core-js-compat@3.45.1: resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} @@ -4572,18 +4569,22 @@ packages: '@types/react': optional: true - react-router-dom@6.30.1: - resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} - engines: {node: '>=14.0.0'} + react-router-dom@7.9.4: + resolution: {integrity: sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==} + engines: {node: '>=20.0.0'} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=18' + react-dom: '>=18' - react-router@6.30.1: - resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} - engines: {node: '>=14.0.0'} + react-router@7.9.4: + resolution: {integrity: sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==} + engines: {node: '>=20.0.0'} peerDependencies: - react: '>=16.8' + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} @@ -4936,6 +4937,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -7242,8 +7246,6 @@ snapshots: '@babel/runtime': 7.27.1 react: 19.1.0 - '@remix-run/router@1.23.0': {} - '@rolldown/pluginutils@1.0.0-beta.9': {} '@rollup/plugin-babel@5.3.1(@babel/core@7.27.1)(@types/babel__core@7.20.5)(rollup@2.79.2)': @@ -8215,6 +8217,8 @@ snapshots: convert-source-map@2.0.0: {} + cookie@1.0.2: {} + core-js-compat@3.45.1: dependencies: browserslist: 4.27.0 @@ -10034,13 +10038,13 @@ snapshots: dependencies: boolbase: 1.0.0 - nuqs@2.7.1(react-router-dom@6.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@6.30.1(react@19.1.0))(react@19.1.0): + nuqs@2.7.1(react-router-dom@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-router@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0): dependencies: '@standard-schema/spec': 1.0.0 react: 19.1.0 optionalDependencies: - react-router: 6.30.1(react@19.1.0) - react-router-dom: 6.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router: 7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router-dom: 7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) object-assign@4.1.1: {} @@ -10444,17 +10448,20 @@ snapshots: optionalDependencies: '@types/react': 18.3.23 - react-router-dom@6.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router-dom@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@remix-run/router': 1.23.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-router: 6.30.1(react@19.1.0) + react-router: 7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + optional: true - react-router@6.30.1(react@19.1.0): + react-router@7.9.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@remix-run/router': 1.23.0 + cookie: 1.0.2 react: 19.1.0 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) react-style-singleton@2.2.3(@types/react@18.3.23)(react@19.1.0): dependencies: @@ -10810,6 +10817,8 @@ snapshots: dependencies: randombytes: 2.1.0 + set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 diff --git a/src/renderer/components/card/card-rows.tsx b/src/renderer/components/card/card-rows.tsx index 3f18d9057..c04eefd57 100644 --- a/src/renderer/components/card/card-rows.tsx +++ b/src/renderer/components/card/card-rows.tsx @@ -3,7 +3,7 @@ import formatDuration from 'format-duration'; import React from 'react'; import { TFunction, useTranslation } from 'react-i18next'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './card-rows.module.css'; diff --git a/src/renderer/components/card/poster-card.tsx b/src/renderer/components/card/poster-card.tsx index 8704edb43..67d4351c8 100644 --- a/src/renderer/components/card/poster-card.tsx +++ b/src/renderer/components/card/poster-card.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './poster-card.module.css'; diff --git a/src/renderer/components/feature-carousel/feature-carousel.tsx b/src/renderer/components/feature-carousel/feature-carousel.tsx index 02f337031..647949729 100644 --- a/src/renderer/components/feature-carousel/feature-carousel.tsx +++ b/src/renderer/components/feature-carousel/feature-carousel.tsx @@ -4,7 +4,7 @@ import type { MouseEvent } from 'react'; import { AnimatePresence, motion } from 'motion/react'; import { useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './feature-carousel.module.css'; diff --git a/src/renderer/components/item-card/item-card.tsx b/src/renderer/components/item-card/item-card.tsx index 686e66a1c..c75db1c5c 100644 --- a/src/renderer/components/item-card/item-card.tsx +++ b/src/renderer/components/item-card/item-card.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx'; import { AnimatePresence } from 'motion/react'; import { Dispatch, Fragment, memo, ReactNode, SetStateAction, useState } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './item-card.module.css'; diff --git a/src/renderer/components/item-detail/item-detail.tsx b/src/renderer/components/item-detail/item-detail.tsx index 5810f669b..50a1a1f5f 100644 --- a/src/renderer/components/item-detail/item-detail.tsx +++ b/src/renderer/components/item-detail/item-detail.tsx @@ -1,6 +1,6 @@ import { AnimatePresence } from 'motion/react'; import { MouseEvent, useMemo, useState } from 'react'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './item-detail.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/album-artists-column.tsx b/src/renderer/components/item-list/item-table-list/columns/album-artists-column.tsx index eb1df8e0f..2158c3a91 100644 --- a/src/renderer/components/item-list/item-table-list/columns/album-artists-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/album-artists-column.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; import { Fragment, memo, useMemo } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './album-artists-column.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/artists-column.tsx b/src/renderer/components/item-list/item-table-list/columns/artists-column.tsx index 06473bf98..1d8be296c 100644 --- a/src/renderer/components/item-list/item-table-list/columns/artists-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/artists-column.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; import { Fragment, memo, useMemo } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './album-artists-column.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/genre-badge-column.tsx b/src/renderer/components/item-list/item-table-list/columns/genre-badge-column.tsx index 2c299e65f..54a64a628 100644 --- a/src/renderer/components/item-list/item-table-list/columns/genre-badge-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/genre-badge-column.tsx @@ -1,5 +1,5 @@ import { memo, useMemo } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './genre-badge-column.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx b/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx index bb96ca4f3..3269dcb55 100644 --- a/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/genre-column.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; import { Fragment, memo, useMemo } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './genre-column.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/title-column.tsx b/src/renderer/components/item-list/item-table-list/columns/title-column.tsx index cd140abbd..e2ed7a3a2 100644 --- a/src/renderer/components/item-list/item-table-list/columns/title-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/title-column.tsx @@ -1,5 +1,5 @@ import clsx from 'clsx'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './title-column.module.css'; diff --git a/src/renderer/components/item-list/item-table-list/columns/title-combined-column.tsx b/src/renderer/components/item-list/item-table-list/columns/title-combined-column.tsx index 62b98870a..5ad1c67fd 100644 --- a/src/renderer/components/item-list/item-table-list/columns/title-combined-column.tsx +++ b/src/renderer/components/item-list/item-table-list/columns/title-combined-column.tsx @@ -1,5 +1,5 @@ import { CSSProperties, useMemo } from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './title-combined-column.module.css'; diff --git a/src/renderer/components/virtual-table/cells/album-artist-cell.tsx b/src/renderer/components/virtual-table/cells/album-artist-cell.tsx index 059de9cda..179760c97 100644 --- a/src/renderer/components/virtual-table/cells/album-artist-cell.tsx +++ b/src/renderer/components/virtual-table/cells/album-artist-cell.tsx @@ -3,7 +3,7 @@ import type { ICellRendererParams } from '@ag-grid-community/core'; import React from 'react'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import { CellContainer } from '/@/renderer/components/virtual-table/cells/generic-cell'; import { AppRoute } from '/@/renderer/router/routes'; diff --git a/src/renderer/components/virtual-table/cells/artist-cell.tsx b/src/renderer/components/virtual-table/cells/artist-cell.tsx index bbbb66a74..982ebb79e 100644 --- a/src/renderer/components/virtual-table/cells/artist-cell.tsx +++ b/src/renderer/components/virtual-table/cells/artist-cell.tsx @@ -3,7 +3,7 @@ import type { ICellRendererParams } from '@ag-grid-community/core'; import React from 'react'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import { CellContainer } from '/@/renderer/components/virtual-table/cells/generic-cell'; import { AppRoute } from '/@/renderer/router/routes'; diff --git a/src/renderer/components/virtual-table/cells/combined-title-cell.tsx b/src/renderer/components/virtual-table/cells/combined-title-cell.tsx index ba21d7e31..2e536c554 100644 --- a/src/renderer/components/virtual-table/cells/combined-title-cell.tsx +++ b/src/renderer/components/virtual-table/cells/combined-title-cell.tsx @@ -2,7 +2,7 @@ import type { ICellRendererParams } from '@ag-grid-community/core'; import React, { useMemo } from 'react'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './combined-title-cell.module.css'; diff --git a/src/renderer/components/virtual-table/cells/generic-cell.tsx b/src/renderer/components/virtual-table/cells/generic-cell.tsx index 637598bc7..c014380b0 100644 --- a/src/renderer/components/virtual-table/cells/generic-cell.tsx +++ b/src/renderer/components/virtual-table/cells/generic-cell.tsx @@ -1,7 +1,7 @@ import type { ICellRendererParams } from '@ag-grid-community/core'; import clsx from 'clsx'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './generic-cell.module.css'; diff --git a/src/renderer/components/virtual-table/cells/genre-cell.tsx b/src/renderer/components/virtual-table/cells/genre-cell.tsx index e1755dbcb..9d3d987e6 100644 --- a/src/renderer/components/virtual-table/cells/genre-cell.tsx +++ b/src/renderer/components/virtual-table/cells/genre-cell.tsx @@ -2,7 +2,7 @@ import type { AlbumArtist, Artist } from '/@/shared/types/domain-types'; import type { ICellRendererParams } from '@ag-grid-community/core'; import React from 'react'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import { CellContainer } from '/@/renderer/components/virtual-table/cells/generic-cell'; import { useGenreRoute } from '/@/renderer/hooks/use-genre-route'; diff --git a/src/renderer/components/virtual-table/hooks/use-virtual-table.ts b/src/renderer/components/virtual-table/hooks/use-virtual-table.ts index d39d4b580..8322fc653 100644 --- a/src/renderer/components/virtual-table/hooks/use-virtual-table.ts +++ b/src/renderer/components/virtual-table/hooks/use-virtual-table.ts @@ -14,7 +14,7 @@ import debounce from 'lodash/debounce'; import orderBy from 'lodash/orderBy'; import { MutableRefObject, useCallback, useMemo } from 'react'; import { generatePath, useNavigate } from 'react-router'; -import { useSearchParams } from 'react-router-dom'; +import { useSearchParams } from 'react-router'; import { api } from '/@/renderer/api'; import { queryKeys, QueryPagination } from '/@/renderer/api/query-keys'; diff --git a/src/renderer/features/action-required/routes/action-required-route.tsx b/src/renderer/features/action-required/routes/action-required-route.tsx index 39b7bbad8..51040f751 100644 --- a/src/renderer/features/action-required/routes/action-required-route.tsx +++ b/src/renderer/features/action-required/routes/action-required-route.tsx @@ -1,6 +1,6 @@ import { openModal } from '@mantine/modals'; import { useTranslation } from 'react-i18next'; -import { Navigate } from 'react-router-dom'; +import { Navigate } from 'react-router'; import { PageHeader } from '/@/renderer/components/page-header/page-header'; import { ActionRequiredContainer } from '/@/renderer/features/action-required/components/action-required-container'; diff --git a/src/renderer/features/action-required/routes/invalid-route.tsx b/src/renderer/features/action-required/routes/invalid-route.tsx index 4fcb7c2cc..c986dbae6 100644 --- a/src/renderer/features/action-required/routes/invalid-route.tsx +++ b/src/renderer/features/action-required/routes/invalid-route.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'react-i18next'; -import { useLocation, useNavigate } from 'react-router-dom'; +import { useLocation, useNavigate } from 'react-router'; import { AnimatedPage } from '/@/renderer/features/shared/components/animated-page'; import { ActionIcon } from '/@/shared/components/action-icon/action-icon'; diff --git a/src/renderer/features/albums/components/album-detail-content.tsx b/src/renderer/features/albums/components/album-detail-content.tsx index 0f90612d8..90a029a4b 100644 --- a/src/renderer/features/albums/components/album-detail-content.tsx +++ b/src/renderer/features/albums/components/album-detail-content.tsx @@ -6,7 +6,7 @@ import { useQuery } from '@tanstack/react-query'; import { MutableRefObject, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath, useParams } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './album-detail-content.module.css'; diff --git a/src/renderer/features/albums/components/album-detail-header.tsx b/src/renderer/features/albums/components/album-detail-header.tsx index 379b9fed9..5fd479a3a 100644 --- a/src/renderer/features/albums/components/album-detail-header.tsx +++ b/src/renderer/features/albums/components/album-detail-header.tsx @@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query'; import { forwardRef, Ref, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath, useParams } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import { queryKeys } from '/@/renderer/api/query-keys'; import { albumQueries } from '/@/renderer/features/albums/api/album-api'; diff --git a/src/renderer/features/albums/routes/album-list-route.tsx b/src/renderer/features/albums/routes/album-list-route.tsx index 9c7c10b12..3349f8bb2 100644 --- a/src/renderer/features/albums/routes/album-list-route.tsx +++ b/src/renderer/features/albums/routes/album-list-route.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from 'react'; -import { useParams } from 'react-router-dom'; +import { useParams } from 'react-router'; import { ListContext } from '/@/renderer/context/list-context'; import { AlbumListContent } from '/@/renderer/features/albums/components/album-list-content'; diff --git a/src/renderer/features/albums/routes/dummy-album-detail-route.tsx b/src/renderer/features/albums/routes/dummy-album-detail-route.tsx index 6f691e488..e3ed8a2ce 100644 --- a/src/renderer/features/albums/routes/dummy-album-detail-route.tsx +++ b/src/renderer/features/albums/routes/dummy-album-detail-route.tsx @@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query'; import { Fragment } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath, useParams } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './dummy-album-detail-route.module.css'; diff --git a/src/renderer/features/artists/components/album-artist-detail-content.tsx b/src/renderer/features/artists/components/album-artist-detail-content.tsx index 7ea276c90..9c85a5224 100644 --- a/src/renderer/features/artists/components/album-artist-detail-content.tsx +++ b/src/renderer/features/artists/components/album-artist-detail-content.tsx @@ -3,7 +3,7 @@ import { useQuery } from '@tanstack/react-query'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath, useParams } from 'react-router'; -import { createSearchParams, Link } from 'react-router-dom'; +import { createSearchParams, Link } from 'react-router'; import styles from './album-artist-detail-content.module.css'; diff --git a/src/renderer/features/item-details/components/item-details-modal.tsx b/src/renderer/features/item-details/components/item-details-modal.tsx index 082076752..8a167d8f2 100644 --- a/src/renderer/features/item-details/components/item-details-modal.tsx +++ b/src/renderer/features/item-details/components/item-details-modal.tsx @@ -1,7 +1,7 @@ import { ReactNode } from 'react'; import { TFunction, useTranslation } from 'react-i18next'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import { SongPath } from '/@/renderer/features/item-details/components/song-path'; import { useGenreRoute } from '/@/renderer/hooks/use-genre-route'; diff --git a/src/renderer/features/player/components/full-screen-player-image.tsx b/src/renderer/features/player/components/full-screen-player-image.tsx index 84db03e64..e3242ae7c 100644 --- a/src/renderer/features/player/components/full-screen-player-image.tsx +++ b/src/renderer/features/player/components/full-screen-player-image.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import { AnimatePresence, HTMLMotionProps, motion, Variants } from 'motion/react'; import { Fragment, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './full-screen-player-image.module.css'; diff --git a/src/renderer/features/player/components/left-controls.tsx b/src/renderer/features/player/components/left-controls.tsx index 13fde6f69..2eafc3aa6 100644 --- a/src/renderer/features/player/components/left-controls.tsx +++ b/src/renderer/features/player/components/left-controls.tsx @@ -3,7 +3,7 @@ import clsx from 'clsx'; import { AnimatePresence, LayoutGroup, motion } from 'motion/react'; import React, { MouseEvent } from 'react'; import { useTranslation } from 'react-i18next'; -import { generatePath, Link } from 'react-router-dom'; +import { generatePath, Link } from 'react-router'; import styles from './left-controls.module.css'; diff --git a/src/renderer/features/search/components/home-commands.tsx b/src/renderer/features/search/components/home-commands.tsx index 00e3e9d90..835e854e1 100644 --- a/src/renderer/features/search/components/home-commands.tsx +++ b/src/renderer/features/search/components/home-commands.tsx @@ -3,7 +3,7 @@ import { nanoid } from 'nanoid/non-secure'; import { Dispatch, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath, useNavigate } from 'react-router'; -import { createSearchParams } from 'react-router-dom'; +import { createSearchParams } from 'react-router'; import { CreatePlaylistForm } from '/@/renderer/features/playlists/components/create-playlist-form'; import { Command, CommandPalettePages } from '/@/renderer/features/search/components/command'; diff --git a/src/renderer/features/search/components/search-content.tsx b/src/renderer/features/search/components/search-content.tsx index c26b1cb86..7dcbf8d57 100644 --- a/src/renderer/features/search/components/search-content.tsx +++ b/src/renderer/features/search/components/search-content.tsx @@ -3,7 +3,7 @@ import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/li import { RowDoubleClickedEvent } from '@ag-grid-community/core'; import { MutableRefObject } from 'react'; import { generatePath, useNavigate } from 'react-router'; -import { useParams, useSearchParams } from 'react-router-dom'; +import { useParams, useSearchParams } from 'react-router'; import { useCurrentSongRowStyles } from '/@/renderer/components/virtual-table/hooks/use-current-song-row-styles'; import { useVirtualTable } from '/@/renderer/components/virtual-table/hooks/use-virtual-table'; diff --git a/src/renderer/features/search/components/search-header.tsx b/src/renderer/features/search/components/search-header.tsx index 1dd1714e7..4c0cffaed 100644 --- a/src/renderer/features/search/components/search-header.tsx +++ b/src/renderer/features/search/components/search-header.tsx @@ -3,7 +3,7 @@ import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/li import debounce from 'lodash/debounce'; import { ChangeEvent, MutableRefObject } from 'react'; import { useTranslation } from 'react-i18next'; -import { generatePath, Link, useParams, useSearchParams } from 'react-router-dom'; +import { generatePath, Link, useParams, useSearchParams } from 'react-router'; import { PageHeader } from '/@/renderer/components/page-header/page-header'; import { FilterBar } from '/@/renderer/features/shared/components/filter-bar'; diff --git a/src/renderer/features/shared/components/library-header.tsx b/src/renderer/features/shared/components/library-header.tsx index 5518f7337..34b6e408b 100644 --- a/src/renderer/features/shared/components/library-header.tsx +++ b/src/renderer/features/shared/components/library-header.tsx @@ -3,7 +3,7 @@ import { AutoTextSize } from 'auto-text-size'; import clsx from 'clsx'; import { forwardRef, ReactNode, Ref, useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './library-header.module.css'; diff --git a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx index 6193daba3..34f410776 100644 --- a/src/renderer/features/sidebar/components/collapsed-sidebar.tsx +++ b/src/renderer/features/sidebar/components/collapsed-sidebar.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import { motion } from 'motion/react'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { NavLink, useNavigate } from 'react-router-dom'; +import { NavLink, useNavigate } from 'react-router'; import styles from './collapsed-sidebar.module.css'; diff --git a/src/renderer/features/sidebar/components/sidebar-item.tsx b/src/renderer/features/sidebar/components/sidebar-item.tsx index a7f7ac6cb..9881cefa5 100644 --- a/src/renderer/features/sidebar/components/sidebar-item.tsx +++ b/src/renderer/features/sidebar/components/sidebar-item.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; import { memo } from 'react'; -import { Link, LinkProps } from 'react-router-dom'; +import { Link, LinkProps } from 'react-router'; import styles from './sidebar-item.module.css'; diff --git a/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx b/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx index db94c629f..fc36e2862 100644 --- a/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx +++ b/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx @@ -4,7 +4,7 @@ import clsx from 'clsx'; import { MouseEvent, useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { generatePath } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import styles from './sidebar-playlist-list.module.css'; diff --git a/src/renderer/features/sidebar/components/sidebar.tsx b/src/renderer/features/sidebar/components/sidebar.tsx index 9d96d0225..763722d13 100644 --- a/src/renderer/features/sidebar/components/sidebar.tsx +++ b/src/renderer/features/sidebar/components/sidebar.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import { AnimatePresence, motion } from 'motion/react'; import { CSSProperties, MouseEvent, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { useLocation } from 'react-router-dom'; +import { useLocation } from 'react-router'; import styles from './sidebar.module.css'; diff --git a/src/renderer/features/songs/routes/song-list-route.tsx b/src/renderer/features/songs/routes/song-list-route.tsx index f1cad219d..1761d445c 100644 --- a/src/renderer/features/songs/routes/song-list-route.tsx +++ b/src/renderer/features/songs/routes/song-list-route.tsx @@ -1,6 +1,6 @@ import { useQuery } from '@tanstack/react-query'; import { useMemo, useState } from 'react'; -import { useParams, useSearchParams } from 'react-router-dom'; +import { useParams, useSearchParams } from 'react-router'; import { ListContext } from '/@/renderer/context/list-context'; import { genresQueries } from '/@/renderer/features/genres/api/genres-api'; diff --git a/src/renderer/features/titlebar/components/app-menu.tsx b/src/renderer/features/titlebar/components/app-menu.tsx index d6383c6dc..512da1e37 100644 --- a/src/renderer/features/titlebar/components/app-menu.tsx +++ b/src/renderer/features/titlebar/components/app-menu.tsx @@ -2,7 +2,7 @@ import { closeAllModals, openModal } from '@mantine/modals'; import isElectron from 'is-electron'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router'; -import { Link } from 'react-router-dom'; +import { Link } from 'react-router'; import packageJson from '../../../../../package.json'; diff --git a/src/renderer/layouts/auth-layout.tsx b/src/renderer/layouts/auth-layout.tsx index 3348cb011..e43e15918 100644 --- a/src/renderer/layouts/auth-layout.tsx +++ b/src/renderer/layouts/auth-layout.tsx @@ -1,4 +1,4 @@ -import { Outlet } from 'react-router-dom'; +import { Outlet } from 'react-router'; import styles from './auth-layout.module.css'; diff --git a/src/renderer/router/app-outlet.tsx b/src/renderer/router/app-outlet.tsx index 934992261..093464567 100644 --- a/src/renderer/router/app-outlet.tsx +++ b/src/renderer/router/app-outlet.tsx @@ -1,7 +1,7 @@ import isElectron from 'is-electron'; import { NuqsAdapter } from 'nuqs/adapters/react-router/v6'; import { useEffect, useMemo } from 'react'; -import { Navigate, Outlet } from 'react-router-dom'; +import { Navigate, Outlet } from 'react-router'; import { useServerAuthenticated } from '/@/renderer/hooks/use-server-authenticated'; import { AppRoute } from '/@/renderer/router/routes'; diff --git a/src/renderer/router/app-router.tsx b/src/renderer/router/app-router.tsx index 52379720f..8a705247a 100644 --- a/src/renderer/router/app-router.tsx +++ b/src/renderer/router/app-router.tsx @@ -1,5 +1,5 @@ import { lazy, Suspense } from 'react'; -import { HashRouter, Route, Routes } from 'react-router-dom'; +import { BrowserRouter, Route, Routes } from 'react-router'; import { AppRoute } from './routes'; @@ -69,7 +69,7 @@ const RouteErrorBoundary = lazy( export const AppRouter = () => { const router = ( - + { - + ); return }>{router};