@@ -3,7 +3,7 @@ import React, {
3
3
useCallback ,
4
4
useEffect ,
5
5
useRef ,
6
- useState
6
+ useState ,
7
7
} from "react" ;
8
8
import { GoSearch , GoRows } from "react-icons/go" ;
9
9
import { GoSun , GoMoon } from "react-icons/go" ;
@@ -17,7 +17,7 @@ import Link from "next/link";
17
17
18
18
const client = new MeiliSearch ( {
19
19
host : "https://search.liara.ir" ,
20
- apiKey : "53c93d9ce3308e48a7ad701d4b402d3190324a09e1607f14baae9bd4f805bb11"
20
+ apiKey : "53c93d9ce3308e48a7ad701d4b402d3190324a09e1607f14baae9bd4f805bb11" ,
21
21
} ) ;
22
22
23
23
const Header = ( { setShowSidebar } ) => {
@@ -42,10 +42,10 @@ const Header = ({ setShowSidebar }) => {
42
42
} ) ;
43
43
44
44
useEffect ( ( ) => {
45
- const handleKeydown = event => {
45
+ const handleKeydown = ( event ) => {
46
46
if ( ( event . metaKey || event . ctrlKey ) && event . key === "k" ) {
47
47
event . preventDefault ( ) ;
48
- setSearchOpen ( prev => ! prev ) ;
48
+ setSearchOpen ( ( prev ) => ! prev ) ;
49
49
}
50
50
if ( event . key === "Escape" ) {
51
51
setSearchOpen ( false ) ;
@@ -57,43 +57,43 @@ const Header = ({ setShowSidebar }) => {
57
57
} ;
58
58
} , [ ] ) ;
59
59
60
- useEffect (
61
- ( ) => {
62
- if ( darkMode ) {
63
- document . documentElement . classList . add ( "dark" ) ;
64
- } else {
65
- document . documentElement . classList . remove ( "dark" ) ;
66
- }
67
- localStorage . setItem ( "dark" , JSON . stringify ( darkMode ) ) ;
68
- } ,
69
- [ darkMode ]
70
- ) ;
60
+ useEffect ( ( ) => {
61
+ if ( darkMode ) {
62
+ document . documentElement . classList . add ( "dark" ) ;
63
+ } else {
64
+ document . documentElement . classList . remove ( "dark" ) ;
65
+ }
66
+ localStorage . setItem ( "dark" , JSON . stringify ( darkMode ) ) ;
67
+ } , [ darkMode ] ) ;
71
68
72
69
const toggleDarkMode = ( ) => {
73
70
const newMode = ! darkMode ;
74
71
setDarkMode ( newMode ) ;
75
72
} ;
76
73
77
- const handleMeiliSearch = value => {
74
+ const handleMeiliSearch = ( value ) => {
78
75
const userAgent = new UAParser ( window . navigator . userAgent ) ;
79
76
const eventData = {
80
77
term : value ,
81
78
browser : userAgent . getBrowser ( ) . name ,
82
79
browserVersion : userAgent . getBrowser ( ) . version ,
83
80
os : userAgent . getOS ( ) . name ,
84
- osVersion : userAgent . getOS ( ) . version
81
+ osVersion : userAgent . getOS ( ) . version ,
85
82
} ;
86
83
87
- return client . index ( "docs" ) . search ( value , { limit : 10 } ) . then ( res => {
88
- setResults ( res . hits ) ;
89
- setNotFound ( value != "" && res . hits . length == 0 ) ;
90
- if ( res . hits . length == 0 ) {
91
- setCurrent ( undefined ) ;
92
- }
93
- } ) ;
84
+ return client
85
+ . index ( "docs" )
86
+ . search ( value , { limit : 10 } )
87
+ . then ( ( res ) => {
88
+ setResults ( res . hits ) ;
89
+ setNotFound ( value != "" && res . hits . length == 0 ) ;
90
+ if ( res . hits . length == 0 ) {
91
+ setCurrent ( undefined ) ;
92
+ }
93
+ } ) ;
94
94
} ;
95
95
96
- const handleChangeValue = e => {
96
+ const handleChangeValue = ( e ) => {
97
97
const { value } = e . target ;
98
98
setValue ( value ) ;
99
99
if ( value != "" ) {
@@ -107,7 +107,7 @@ const Header = ({ setShowSidebar }) => {
107
107
setSearchOpen ( ! searchOpen ) ;
108
108
} ;
109
109
110
- const handleArrow = arrow => {
110
+ const handleArrow = ( arrow ) => {
111
111
switch ( arrow . keyCode ) {
112
112
case 38 :
113
113
const Negative = index > 0 ? index - 1 : results . length - 1 ;
@@ -128,21 +128,18 @@ const Header = ({ setShowSidebar }) => {
128
128
break ;
129
129
}
130
130
} ;
131
- useEffect (
132
- ( ) => {
133
- if ( results . length == 0 ) return ;
134
- setCurrent ( results . filter ( ( _ , idx ) => idx == index ) [ "0" ] ) ;
135
- if ( value == "" ) {
136
- setValue ( false ) ;
137
- }
138
- } ,
139
- [ results , index ]
140
- ) ;
131
+ useEffect ( ( ) => {
132
+ if ( results . length == 0 ) return ;
133
+ setCurrent ( results . filter ( ( _ , idx ) => idx == index ) [ "0" ] ) ;
134
+ if ( value == "" ) {
135
+ setValue ( false ) ;
136
+ }
137
+ } , [ results , index ] ) ;
141
138
142
- const handleHover = item => {
139
+ const handleHover = ( item ) => {
143
140
setCurrent ( results . filter ( ( _ , idx ) => idx == item ) [ "0" ] ) ;
144
141
} ;
145
- const handleSuggestion = value => {
142
+ const handleSuggestion = ( value ) => {
146
143
handleMeiliSearch ( value ) ;
147
144
return ( valueRef . current . value = value ) ;
148
145
} ;
@@ -154,7 +151,7 @@ const Header = ({ setShowSidebar }) => {
154
151
href = "/"
155
152
className = "flex md:hidden mt-4 mb-3 items-center gap-2 font-semibold"
156
153
>
157
- < img className = "logo-sidebar" src = { "/static/logo.svg" } width = "55 " />
154
+ < img src = { "/static/logo.svg" } width = "60 " />
158
155
< span className = "text-[11px] px-1 py-0 font-medium text-[#fff] bg-[#333] rounded" >
159
156
مستندات
160
157
</ span >
@@ -170,8 +167,7 @@ const Header = ({ setShowSidebar }) => {
170
167
جستجو کنید
171
168
</ div >
172
169
< div className = "badge-cmd-k hidden absolute md:block top-[5px] left-[5px] text-[15px] h-[21px] w-[40px] text-[#707070] bg-[#ededed] px-1 rounded border border-[#d7d7d7]" >
173
- K
174
- < span className = "text-[10px] mr-[5px]" > ⌘</ span >
170
+ K< span className = "text-[10px] mr-[5px]" > ⌘</ span >
175
171
</ div >
176
172
</ button >
177
173
@@ -208,9 +204,9 @@ const Header = ({ setShowSidebar }) => {
208
204
</ button >
209
205
</ div >
210
206
</ nav >
211
- { searchOpen &&
207
+ { searchOpen && (
212
208
< Fragment >
213
- < div className = "search-box" onKeyDown = { e => handleArrow ( e ) } >
209
+ < div className = "search-box" onKeyDown = { ( e ) => handleArrow ( e ) } >
214
210
< input
215
211
ref = { valueRef }
216
212
placeholder = "جستجو"
@@ -240,30 +236,35 @@ const Header = ({ setShowSidebar }) => {
240
236
< div className = "results" >
241
237
< ul >
242
238
{ results != "" &&
243
- results . map ( ( item , index ) =>
239
+ results . map ( ( item , index ) => (
244
240
< li key = { index } >
245
241
< Link
246
242
href = { item . element ? item . url + item . element : item . url }
247
243
onClick = { ( ) => setSearchOpen ( false ) }
248
- className = { `url_results ${ current != undefined &&
244
+ className = { `url_results ${
245
+ current != undefined &&
249
246
item . id == current . id &&
250
- `current-result ` } `}
247
+ `current-result `
248
+ } `}
251
249
onMouseEnter = { ( ) => handleHover ( index ) }
252
250
>
253
251
< div className = "platform_container" >
254
- { item . platform &&
252
+ { item . platform && (
255
253
< div className = "w-[30px] p-1 ml-3 bg-[#333] rounded-md" >
256
254
< PlatformIcon platform = { item . platform } />
257
- </ div > }
255
+ </ div >
256
+ ) }
258
257
< p className = "" >
259
258
{ item . title }
260
- { item . type === "video" &&
259
+ { item . type === "video" && (
261
260
< Fragment >
262
- { " " } -{ " " }
261
+ { " " }
262
+ -{ " " }
263
263
< span className = "bg-[#2563eb22] px-2 text-[12px] py-1 rounded-lg" >
264
264
ویدیو
265
265
</ span >
266
- </ Fragment > }
266
+ </ Fragment >
267
+ ) }
267
268
</ p >
268
269
</ div >
269
270
< img
@@ -272,8 +273,8 @@ const Header = ({ setShowSidebar }) => {
272
273
/>
273
274
</ Link >
274
275
</ li >
275
- ) }
276
- { notFound &&
276
+ ) ) }
277
+ { notFound && (
277
278
< li >
278
279
< a className = "url_results" >
279
280
< div className = "platform_container" >
@@ -283,12 +284,14 @@ const Header = ({ setShowSidebar }) => {
283
284
</ p >
284
285
</ div >
285
286
</ a >
286
- </ li > }
287
+ </ li >
288
+ ) }
287
289
</ ul >
288
290
</ div >
289
291
</ div >
290
292
< span className = "search-box-effect" onClick = { handleSearch } />
291
- </ Fragment > }
293
+ </ Fragment >
294
+ ) }
292
295
</ header >
293
296
) ;
294
297
} ;
0 commit comments