1
- import { useState , useEffect } from "react" ;
1
+ import { useState , useEffect } from "react" ;
2
2
import { Bars3Icon , XMarkIcon } from "@heroicons/react/24/solid" ;
3
3
import Logo from "@/assets/Logo.png" ;
4
4
import Link from "../shared/Link" ;
5
5
import { CurrentPage } from "@/Utils/CurrentPage" ;
6
6
import ActionButton from "../shared/ActionButton" ;
7
- import closeNavbar from ' @/Context/CloseNavbar' ;
7
+ import closeNavbar from " @/Context/CloseNavbar" ;
8
8
9
9
type Props = {
10
10
currentPage : CurrentPage ;
@@ -13,123 +13,144 @@ type Props = {
13
13
14
14
function Navbar ( { currentPage, setCurrentPage } : Props ) {
15
15
const [ isMenuToggles , setIsMenuToggles ] = useState < boolean > ( false ) ;
16
- const [ screenAbove1080 , setScreenAbove1080 ] = useState ( false )
16
+ const [ screenAbove1080 , setScreenAbove1080 ] = useState ( false ) ;
17
+ const [ isMoreThenZero , setIsMoreThenZero ] = useState < boolean > ( false ) ;
17
18
18
- useEffect ( ( ) => {
19
- const handleSizeOfScreen = ( ) => {
20
- if ( window . innerWidth > 1080 ) {
21
- setScreenAbove1080 ( true )
22
- setIsMenuToggles ( false )
23
- } else {
24
- setScreenAbove1080 ( false )
19
+ useEffect ( ( ) => {
20
+ const handleSizeOfScreen = ( ) => {
21
+ if ( window . innerWidth > 1080 ) {
22
+ setScreenAbove1080 ( true ) ;
23
+ setIsMenuToggles ( false ) ;
24
+ } else {
25
+ setScreenAbove1080 ( false ) ;
25
26
}
26
- }
27
+ } ;
27
28
28
- window . addEventListener ( "resize" , handleSizeOfScreen )
29
+ window . addEventListener ( "resize" , handleSizeOfScreen ) ;
29
30
30
- return ( ) => window . removeEventListener ( "resize" , handleSizeOfScreen )
31
+ return ( ) => window . removeEventListener ( "resize" , handleSizeOfScreen ) ;
32
+ } , [ ] ) ;
31
33
32
- } , [ ] )
34
+ useEffect ( ( ) => {
35
+ const handleScroll = ( ) => {
36
+ if ( window . scrollY > 0 ) {
37
+ setIsMoreThenZero ( true ) ;
38
+ setCurrentPage ( CurrentPage . Home ) ;
39
+ } else if ( window . scrollY === 0 ) {
40
+ setIsMoreThenZero ( false ) ;
41
+ }
42
+ } ;
43
+
44
+ window . addEventListener ( "scroll" , handleScroll ) ;
45
+
46
+ return ( ) => window . removeEventListener ( "scroll" , handleScroll ) ;
47
+ } , [ ] ) ;
33
48
34
49
const isMobileScreen =
35
50
! screenAbove1080 && isMenuToggles
36
51
? "opacity-1 translate-x-6 "
37
52
: "opacity-0 -translate-x-6 " ;
38
53
39
54
return (
40
- < closeNavbar . Provider value = { {
41
- isMenuToggles,
42
- setIsMenuToggles
43
- } } >
44
- < nav >
45
- < div className = "fixed top-0 p-6 w-full z-30" >
46
- < div className = "w-5/6 mx-auto " >
47
- < div className = "w-full gap-16 flex items-center justify-between " >
48
- { /* logo */ }
49
- < figure className = "" >
50
- < img src = { Logo } alt = "Logo" />
51
- </ figure >
52
- < div className = "hidden md:flex w-full justify-between items-center gap-16 list-none text-sm " >
53
- { /* left side of navbar */ }
54
- < div className = "flex item-center justify-center gap-6 font-montserrat" >
55
- < Link
56
- page = "Home"
57
- currentPage = { currentPage }
58
- setCurrentPage = { setCurrentPage }
59
- />
60
- < Link
61
- page = "Benefits"
62
- currentPage = { currentPage }
63
- setCurrentPage = { setCurrentPage }
64
- />
65
- < Link
66
- page = "Our Classes"
67
- currentPage = { currentPage }
68
- setCurrentPage = { setCurrentPage }
69
- />
70
- < Link
71
- page = "Contact Us"
72
- currentPage = { currentPage }
73
- setCurrentPage = { setCurrentPage }
74
- />
55
+ < closeNavbar . Provider
56
+ value = { {
57
+ isMenuToggles,
58
+ setIsMenuToggles,
59
+ } }
60
+ >
61
+ < nav >
62
+ < div
63
+ className = { `fixed top-0 p-6 w-full z-30 ${ isMoreThenZero ? "bg-primary-100 drop-shadow transition duration-150" : "" } ` }
64
+ >
65
+ < div className = "w-5/6 mx-auto " >
66
+ < div className = "w-full gap-16 flex items-center justify-between " >
67
+ { /* logo */ }
68
+ < figure className = "" >
69
+ < img src = { Logo } alt = "Logo" />
70
+ </ figure >
71
+ < div className = "hidden md:flex w-full justify-between items-center gap-16 list-none text-sm " >
72
+ { /* left side of navbar */ }
73
+ < div className = "flex item-center justify-center gap-6 font-montserrat" >
74
+ < Link
75
+ page = "Home"
76
+ currentPage = { currentPage }
77
+ setCurrentPage = { setCurrentPage }
78
+ />
79
+ < Link
80
+ page = "Benefits"
81
+ currentPage = { currentPage }
82
+ setCurrentPage = { setCurrentPage }
83
+ />
84
+ < Link
85
+ page = "Our Classes"
86
+ currentPage = { currentPage }
87
+ setCurrentPage = { setCurrentPage }
88
+ />
89
+ < Link
90
+ page = "Contact Us"
91
+ currentPage = { currentPage }
92
+ setCurrentPage = { setCurrentPage }
93
+ />
94
+ </ div >
95
+ { /* right side of navbar */ }
96
+ < div className = "flex items-center justify-center gap-6 font-montserrat" >
97
+ < button > Sign In</ button >
98
+ < ActionButton
99
+ setCurrentPage = { setCurrentPage }
100
+ target = { CurrentPage . ContactUs }
101
+ content = "Become a Member "
102
+ />
103
+ </ div >
75
104
</ div >
76
- { /* right side of navbar */ }
77
- < div className = "flex items-center justify-center gap-6 font-montserrat" >
78
- < button > Sign In </ button >
79
- < ActionButton
80
- setCurrentPage = { setCurrentPage }
81
- target = { CurrentPage . ContactUs }
82
- content = "Become a Member "
105
+ { /* mobile menu button */ }
106
+ < button
107
+ className = "block md:hidden rounded-full bg-secondary-500 p-2"
108
+ onClick = { ( ) => setIsMenuToggles ( ! isMenuToggles ) }
109
+ >
110
+ < Bars3Icon
111
+ className = "w-6 h-6 text-white "
83
112
/>
84
- </ div >
113
+ </ button >
85
114
</ div >
86
- { /* mobile menu button */ }
87
- < button className = "block md:hidden rounded-full bg-secondary-500 p-2" >
88
- < Bars3Icon
89
- className = "w-6 h-6 text-white"
90
- onClick = { ( ) => setIsMenuToggles ( ! isMenuToggles ) }
91
- />
92
- </ button >
93
115
</ div >
94
116
</ div >
95
- </ div >
96
- { /*Mobile menu */ }
97
- < div
98
- className = { ` ${ isMobileScreen } w-[300px] fixed right-0 bottom-0 h-full bg-primary-100 drop-shadow-xl z-40 duration-200` }
99
- >
100
- { /* close button */ }
101
- < div className = "w-full flex justify-end p-12" >
102
- < XMarkIcon
103
- className = "w-8 h-8 text-gray-400"
104
- onClick = { ( ) => setIsMenuToggles ( ! isMenuToggles ) }
105
- / >
106
- </ div >
107
- { /* links in the mobile menu */ }
108
- < div className = "flex flex-col mx-auto gap-6 w-full justify-center ml-[30%] text-2xl" >
109
- < Link
110
- page = "Home"
111
- currentPage = { currentPage }
112
- setCurrentPage = { setCurrentPage }
113
- />
114
- < Link
115
- page = "Benefits"
116
- currentPage = { currentPage }
117
- setCurrentPage = { setCurrentPage }
118
- />
119
- < Link
120
- page = "Our Classes"
121
- currentPage = { currentPage }
122
- setCurrentPage = { setCurrentPage }
123
- />
124
- < Link
125
- page = "Contact Us"
126
- currentPage = { currentPage }
127
- setCurrentPage = { setCurrentPage }
128
- / >
117
+ { /*Mobile menu */ }
118
+ < div
119
+ className = { ` ${ isMobileScreen } w-[300px] fixed right-0 bottom-0 h-full bg-primary-100 drop-shadow-xl z-40 duration-200` }
120
+ >
121
+ { /* close button */ }
122
+ < div className = "w-full flex justify-end p-12" >
123
+ < XMarkIcon
124
+ className = "w-8 h-8 text-gray-400"
125
+ onClick = { ( ) => setIsMenuToggles ( ! isMenuToggles ) }
126
+ />
127
+ </ div >
128
+ { /* links in the mobile menu */ }
129
+ < div className = "flex flex-col mx-auto gap-6 w-full justify-center ml-[30%] text-2xl" >
130
+ < Link
131
+ page = "Home"
132
+ currentPage = { currentPage }
133
+ setCurrentPage = { setCurrentPage }
134
+ />
135
+ < Link
136
+ page = "Benefits"
137
+ currentPage = { currentPage }
138
+ setCurrentPage = { setCurrentPage }
139
+ />
140
+ < Link
141
+ page = "Our Classes"
142
+ currentPage = { currentPage }
143
+ setCurrentPage = { setCurrentPage }
144
+ />
145
+ < Link
146
+ page = "Contact Us"
147
+ currentPage = { currentPage }
148
+ setCurrentPage = { setCurrentPage }
149
+ />
150
+ </ div >
129
151
</ div >
130
- </ div >
131
- </ nav >
132
- </ closeNavbar . Provider >
152
+ </ nav >
153
+ </ closeNavbar . Provider >
133
154
) ;
134
155
}
135
156
0 commit comments