1
+ import Input from "@/components/Input" ;
1
2
import Link from "next/link" ;
2
- import { memo } from "react" ;
3
3
import { useRouter } from "next/router" ;
4
- import { useEffect , useState } from "react" ;
5
- import createRoute from "@/helper/createRoute" ;
6
- import { For } from "@/utils" ;
7
- import Input from "@/components/Input" ;
8
-
9
- const routes = [
10
- createRoute ( "/" , "Home" ) ,
11
- createRoute ( "/genre" , "Genre List" ) ,
12
- createRoute ( "/season" , "Season Anime" ) ,
13
- ] ;
4
+ import { memo , useEffect , useState } from "react" ;
14
5
15
6
const Navbar = ( ) => {
16
7
const router = useRouter ( ) ;
@@ -22,24 +13,12 @@ const Navbar = () => {
22
13
e . preventDefault ( ) ;
23
14
if ( inputValue . length === 0 ) return ;
24
15
router . push ( `/search/${ inputValue . split ( " " ) . join ( "+" ) } ` ) ;
25
- setInputValue ( "" ) ;
26
16
} ;
27
17
28
18
useEffect ( ( ) => {
29
- const toggle = document . getElementById ( "toggle" ) ;
30
19
const navUl = document . querySelector ( "nav ul" ) ;
31
20
const searchInput = document . querySelector ( "form input.search-input" ) ;
32
21
33
- const openNavMenu = ( ) => {
34
- toggle . classList . add ( "hamburger-active" ) ;
35
- navUl . classList . remove ( "hidden" ) ;
36
- navUl . classList . add ( "flex" ) ;
37
-
38
- setTimeout ( ( ) => {
39
- navUl . classList . add ( "slide" ) ;
40
- } , 10 ) ;
41
- } ;
42
-
43
22
const closeNavMenu = ( ) => {
44
23
toggle . classList . remove ( "hamburger-active" ) ;
45
24
navUl . classList . remove ( "slide" ) ;
@@ -50,11 +29,6 @@ const Navbar = () => {
50
29
} , 100 ) ;
51
30
} ;
52
31
53
- const toggleFunc = ( ) => {
54
- if ( ! navUl . classList . contains ( "slide" ) ) openNavMenu ( ) ;
55
- else closeNavMenu ( ) ;
56
- } ;
57
-
58
32
const searchInputKeypressFunc = ( e ) => {
59
33
if ( e . key === "Enter" ) closeNavMenu ( ) ;
60
34
} ;
@@ -64,20 +38,18 @@ const Navbar = () => {
64
38
closeNavMenu ( ) ;
65
39
} ;
66
40
67
- toggle . addEventListener ( "click" , toggleFunc ) ;
68
41
searchInput . addEventListener ( "keypress" , searchInputKeypressFunc ) ;
69
42
window . addEventListener ( "click" , windowClickFunc ) ;
70
43
71
44
return ( ) => {
72
- toggle . removeEventListener ( "click" , toggleFunc ) ;
73
45
searchInput . removeEventListener ( "keypress" , searchInputKeypressFunc ) ;
74
46
window . removeEventListener ( "click" , windowClickFunc ) ;
75
47
} ;
76
48
} , [ ] ) ;
77
49
78
50
return (
79
51
< header >
80
- < nav className = "bg-gray-900 py-2.5 2xl:py-3 z-[999] w-full transition-all duration-300 text-white border-b relative border-b-slate-700" >
52
+ < nav className = "bg-gray-900 py-1.5 md:py- 2.5 2xl:py-3 z-[999] w-full transition-all duration-300 text-white border-b relative border-b-slate-700" >
81
53
< div className = "container flex justify-between items-center py-1 relative" >
82
54
< div >
83
55
< h1 className = "text-center bg-gradient-to-r from-sky-500 to-indigo-500 bg-clip-text text-transparent font-bold text-3xl 2xl:text-4xl hidden md:block" >
@@ -87,36 +59,7 @@ const Navbar = () => {
87
59
</ a >
88
60
</ Link >
89
61
</ h1 >
90
- < form onSubmit = { submitHandler } className = "md:hidden" >
91
- < Input
92
- type = "search"
93
- name = "search"
94
- placeholder = "Search Anime Here ..."
95
- autoComplete = "off"
96
- width = "w-11/12"
97
- value = { inputValue }
98
- onChange = { searchFunc }
99
- />
100
- </ form >
101
62
</ div >
102
- < ul className = "absolute text-lg font-semibold right-0 flex-col bg-slate-800 backdrop-blur-lg h-[50vh] md:h-[30vh] xl:h-[40vh] top-[75px] bottom-0 justify-evenly items-center -z-[199] w-[65%] md:w-[30%] lg:w-[20%] transition-all duration-200 rounded-md border border-slate-600 navbar-nav px-8 md:px-0 hidden" >
103
- < For
104
- each = { routes }
105
- render = { ( { path, name } , index ) => (
106
- < li key = { index } >
107
- < Link href = { path } >
108
- < a
109
- className = { `transition-all duration-200 py-1 border-b-2 border-transparent hover:border-b-slate-200 selection:bg-emerald-500 selection:text-emerald-900 ${
110
- currentPath === path . split ( "/" ) [ 1 ] ? "active" : ""
111
- } `}
112
- >
113
- { name }
114
- </ a >
115
- </ Link >
116
- </ li >
117
- ) }
118
- />
119
- </ ul >
120
63
< div className = "flex items-center justify-center" >
121
64
< div className = "hidden md:block mr-4" >
122
65
< form onSubmit = { submitHandler } >
@@ -130,18 +73,21 @@ const Navbar = () => {
130
73
/>
131
74
</ form >
132
75
</ div >
133
- < div className = "relative" >
134
- < input
135
- type = "checkbox"
136
- id = "toggle"
137
- className = "absolute w-[30px] h-[30px] z-[999] opacity-0 cursor-pointer"
138
- />
139
- < span className = "hamburger-line origin-top-right" > </ span >
140
- < span className = "hamburger-line" > </ span >
141
- < span className = "hamburger-line origin-bottom-right" > </ span >
142
- </ div >
143
76
</ div >
144
77
</ div >
78
+ < div className = "container pb-2 md:hidden" >
79
+ < form onSubmit = { submitHandler } className = "md:hidden" >
80
+ < Input
81
+ type = "search"
82
+ name = "search"
83
+ placeholder = "Search Anime Here ..."
84
+ autoComplete = "off"
85
+ width = "w-full"
86
+ value = { inputValue }
87
+ onChange = { searchFunc }
88
+ />
89
+ </ form >
90
+ </ div >
145
91
</ nav >
146
92
</ header >
147
93
) ;
0 commit comments