Skip to content

Commit 1dd62ba

Browse files
committed
Dependencies updated with refactoring and normalization of hooks and correction of bugs in child-type prop-types
1 parent 0050a1e commit 1dd62ba

15 files changed

+165
-162
lines changed

eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import reactHooks from 'eslint-plugin-react-hooks'
55
import reactRefresh from 'eslint-plugin-react-refresh'
66

77
export default [
8-
{ ignores: ['build'] },
8+
{ ignores: ['build', 'src/App.test.js'] },
99
{
1010
files: ['**/*.{js,jsx}'],
1111
languageOptions: {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"@testing-library/jest-dom": "^6.6.3",
4343
"@testing-library/react": "^16.2.0",
4444
"@testing-library/user-event": "^14.6.1",
45+
"prop-types": "^15.8.1",
4546
"react": "^19.0.0",
4647
"react-dom": "^19.0.0",
4748
"react-scripts": "5.0.1",

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/Content.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
import PropTypes from 'prop-types';
2+
13
export default function Content({children}) {
24
return (
35
<article className="content">
46
{children}
57
</article>
68
);
7-
}
9+
}
10+
11+
Content.propTypes = {
12+
name: PropTypes.string.isRequired,
13+
children: PropTypes.node
14+
};

src/components/Header.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
import PropTypes from 'prop-types';
2+
13
export default function Header({children}) {
24
return (
35
<header id="home" className="header scroll-snap js-slider">
46
{children}
57
</header>
68
)
7-
}
9+
}
10+
11+
Header.propTypes = {
12+
name: PropTypes.string.isRequired,
13+
children: PropTypes.node
14+
};

src/components/Layout.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
import PropTypes from 'prop-types';
2+
13
export default function Layout({children}) {
24
return (
35
<main className="container">
46
{children}
57
</main>
68
);
7-
}
9+
}
10+
11+
Layout.propTypes = {
12+
name: PropTypes.string.isRequired,
13+
children: PropTypes.node
14+
};

src/components/Navigation.jsx

Lines changed: 8 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,18 @@
1-
import React, { useEffect, useState } from 'react';
2-
3-
const navTabs = [
4-
{
5-
titre: "Home",
6-
url: "#home",
7-
active: ""
8-
},
9-
{
10-
titre: "Project",
11-
url: "#project",
12-
active: ""
13-
},
14-
{
15-
titre: "Lab",
16-
url: "#lab",
17-
active: ""
18-
},
19-
{
20-
titre: "Blog",
21-
url: "#blog",
22-
active: ""
23-
},
24-
{
25-
titre: "Photos",
26-
url: "#photos",
27-
active: ""
28-
},
29-
{
30-
titre: "About",
31-
url: "#about",
32-
active: ""
33-
}
34-
]
1+
import { useStickySliderNav } from '../hooks/useStickySliderNav';
352

363
export default function Navigation() {
37-
const [isNavSticky, setIsNavSticky] = useState(false);
38-
const [activeTab, setActiveTab] = useState(0);
39-
40-
useEffect(() => {
41-
const navSticky = document.getElementById('js-nav-sticky');
42-
// const navTabs = document.querySelectorAll('.js-nav-tab');
43-
const sliders = document.querySelectorAll('.js-slider');
44-
const sticky = navSticky.offsetTop;
45-
46-
const navStickyHandler = () => {
47-
setIsNavSticky(window.scrollY >= sticky);
48-
49-
for (let i = sliders.length - 1; i >= 0; i--) {
50-
if (window.scrollY + 50 >= sliders[i].offsetTop) {
51-
setActiveTab(i);
52-
break;
53-
}
54-
}
55-
};
56-
57-
window.addEventListener('scroll', navStickyHandler);
4+
const { isNavSticky, isActiveTab, navTabs } = useStickySliderNav();
585

59-
return () => {
60-
window.removeEventListener('scroll', navStickyHandler);
61-
};
62-
}, []);
636
return (
647
<nav id="js-nav-sticky" className={`nav ${isNavSticky ? 'nav-sticky' : ''}`}>
65-
{navTabs.map((tab, index) => (
8+
{navTabs.map((navTab, index) => (
669
<a
6710
key={index}
68-
className={`nav-tab js-nav-tab ${activeTab === index ? 'active' : ''}`}
69-
href={tab.url}>{tab.titre}</a>
11+
className={`nav-tab js-nav-tab ${isActiveTab === index ? 'active' : ''}`}
12+
href={navTab.url}
13+
>
14+
{navTab.titre}
15+
</a>
7016

7117
))}
7218
</nav>

src/components/ScrollToTop.jsx

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
import { useScrollToTop } from "../utils";
2-
import { UseScrollToTop } from "../hooks/UseScollToTop";
1+
import { useScrollToTop } from "../hooks/useScollToTop.jsx";
32

43
export default function ScrollToTop() {
5-
const {isVisible} = UseScrollToTop();
4+
const { isVisible, scrollToTop} = useScrollToTop(300);
65
return (
76
<>
8-
{isVisible && (
9-
<button
10-
className="scroll"
11-
onClick={useScrollToTop}
12-
type="button"
13-
aria-label="Scroll to top"
14-
title="Scroll to top"
15-
/>
16-
)}
7+
<button
8+
className="scroll"
9+
style={{ display: isVisible ? "block" : "none" }}
10+
onClick={scrollToTop}
11+
type="button"
12+
aria-label="Scroll to top"
13+
title="Scroll to top"
14+
/>
1715
</>
18-
1916
)
2017
}

src/components/ToggleDarkMode.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import {UseToggleDarkMode} from "../hooks/UseToggleDarkMode";
1+
import {useToggleDarkMode} from "../hooks/useToggleDarkMode.jsx";
22

33
export default function ToggleDarkMode() {
4-
const {theme, handleToggleTheme} = UseToggleDarkMode()
4+
const {theme, handleToggleTheme} = useToggleDarkMode()
55

66
return (
77
<button

src/hooks/UseScollToTop.jsx

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)