diff --git a/package-lock.json b/package-lock.json
index df276ce8a..a2d822adb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
},
"devDependencies": {
"@cypress/react18": "^2.0.1",
- "@mate-academy/scripts": "^1.9.12",
+ "@mate-academy/scripts": "^2.1.3",
"@mate-academy/students-ts-config": "*",
"@mate-academy/stylelint-config": "*",
"@types/node": "^20.14.10",
@@ -1184,10 +1184,11 @@
}
},
"node_modules/@mate-academy/scripts": {
- "version": "1.9.12",
- "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.9.12.tgz",
- "integrity": "sha512-/OcmxMa34lYLFlGx7Ig926W1U1qjrnXbjFJ2TzUcDaLmED+A5se652NcWwGOidXRuMAOYLPU2jNYBEkKyXrFJA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-2.1.3.tgz",
+ "integrity": "sha512-a07wHTj/1QUK2Aac5zHad+sGw4rIvcNl5lJmJpAD7OxeSbnCdyI6RXUHwXhjF5MaVo9YHrJ0xVahyERS2IIyBQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/rest": "^17.11.2",
"@types/get-port": "^4.2.0",
diff --git a/package.json b/package.json
index 919fbd42b..77fc93ccf 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
},
"devDependencies": {
"@cypress/react18": "^2.0.1",
- "@mate-academy/scripts": "^1.9.12",
+ "@mate-academy/scripts": "^2.1.3",
"@mate-academy/students-ts-config": "*",
"@mate-academy/stylelint-config": "*",
"@types/node": "^20.14.10",
diff --git a/src/App.tsx b/src/App.tsx
index adcb8594e..01755eae1 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -2,6 +2,10 @@ import { PeoplePage } from './components/PeoplePage';
import { Navbar } from './components/Navbar';
import './App.scss';
+import { Navigate, Route, Routes } from 'react-router-dom';
+
+const HomePage = () =>
Home Page
;
+const NotFoundPage = () => Page not found
;
export const App = () => {
return (
@@ -10,9 +14,14 @@ export const App = () => {
-
Home Page
-
Page not found
-
+
+ } />
+ } />
+
+ } />
+
+ } />
+
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx
index 3f63898b2..4ac1b022d 100644
--- a/src/components/Navbar.tsx
+++ b/src/components/Navbar.tsx
@@ -1,4 +1,9 @@
+import { NavLink, useLocation } from 'react-router-dom';
+import classNames from 'classnames';
+
export const Navbar = () => {
+ const { search } = useLocation();
+
return (
diff --git a/src/components/PeopleFilters.tsx b/src/components/PeopleFilters.tsx
index c9c819cd3..6585bffa7 100644
--- a/src/components/PeopleFilters.tsx
+++ b/src/components/PeopleFilters.tsx
@@ -1,18 +1,59 @@
+import { useSearchParams } from 'react-router-dom';
+import classNames from 'classnames';
+import { SearchLink } from './SearchLink';
+import { getSearchWith } from '../utils/searchHelper';
+
export const PeopleFilters = () => {
+ const [searchParams, setSearchParams] = useSearchParams();
+
+ const sex = searchParams.get('sex');
+ const query = searchParams.get('query') || '';
+
+ const handleQueryChange = (event: React.ChangeEvent) => {
+ const newQuery = event.target.value || null;
+
+ const newSearch = getSearchWith(searchParams, { query: newQuery });
+
+ setSearchParams(newSearch);
+ };
+
+ const selectedCenturies = searchParams.getAll('centuries');
+
+ const toggleCentury = (century: string) => {
+ if (selectedCenturies.includes(century)) {
+ const updatedCenturies = selectedCenturies.filter(c => c !== century);
+
+ return updatedCenturies.length > 0 ? updatedCenturies : null;
+ }
+
+ return [...selectedCenturies, century];
+ };
+
return (