From 6b575784c3a41c3e3e9bd38dd97c43600a0df60d Mon Sep 17 00:00:00 2001 From: Ronja Date: Wed, 16 Sep 2026 14:11:40 +0200 Subject: [PATCH 1/4] feat(routes): add favourites page --- t29-project-1/package-lock.json | 60 +++++++++++++++++++++++++- t29-project-1/package.json | 3 +- t29-project-1/src/App.tsx | 2 + t29-project-1/src/main.tsx | 9 +++- t29-project-1/src/pages/Favourites.tsx | 8 ++++ 5 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 t29-project-1/src/pages/Favourites.tsx diff --git a/t29-project-1/package-lock.json b/t29-project-1/package-lock.json index 997e31d..cdafae6 100644 --- a/t29-project-1/package-lock.json +++ b/t29-project-1/package-lock.json @@ -13,7 +13,8 @@ "dotenv": "^17.4.2", "express": "^5.2.1", "react": "^19.2.8", - "react-dom": "^19.2.8" + "react-dom": "^19.2.8", + "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -3758,6 +3759,57 @@ "react": "^19.2.8" } }, + "node_modules/react-router": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.4.tgz", + "integrity": "sha512-PUPQcMhMGRAslLcvtlPz/kmzBEWPhLdgLFrL7pLNepBL6dX0lWj4WD2cUYVgYCuT3jxvghYFg81cDTj44DhetQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.4.tgz", + "integrity": "sha512-yrfmJHIpDG7taCpqKjT1G5B6q3O2K+RN8/fgNf0lTjCwiPbQ0ei6vXX9ZjQR+7ld8Tr7Z5xmyMnZ8YJrphWQUw==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.4" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "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", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3898,6 +3950,12 @@ "url": "https://opencollective.com/express" } }, + "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/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", diff --git a/t29-project-1/package.json b/t29-project-1/package.json index 19bf385..36cd6ac 100644 --- a/t29-project-1/package.json +++ b/t29-project-1/package.json @@ -30,7 +30,8 @@ "dotenv": "^17.4.2", "express": "^5.2.1", "react": "^19.2.8", - "react-dom": "^19.2.8" + "react-dom": "^19.2.8", + "react-router-dom": "^7.18.4" }, "devDependencies": { "@eslint/js": "^10.0.1", diff --git a/t29-project-1/src/App.tsx b/t29-project-1/src/App.tsx index d9b3191..6b4b7f2 100644 --- a/t29-project-1/src/App.tsx +++ b/t29-project-1/src/App.tsx @@ -1,6 +1,7 @@ import { useCatNavigation } from './hooks/useCatNavigation'; import { NavPrevious, NavNext } from './components/ActionButtons'; import { CatCard } from './components/CatCard'; +import { Link } from 'react-router-dom'; import './App.css'; export default function App() { @@ -15,6 +16,7 @@ export default function App() { return (
+ Favourites