1
1
import { Show , createMemo , createSignal , onCleanup , onMount } from "solid-js" ;
2
- import { A } from "~/ui/i18n-anchor" ;
2
+ import { A , type RouterLinkProps } from "~/ui/i18n-anchor" ;
3
3
import { isServer } from "solid-js/web" ;
4
4
5
5
import { Logo , GitHubIcon , DiscordIcon } from "~/ui/logo" ;
@@ -17,6 +17,26 @@ const ClientSearch = clientOnly(() =>
17
17
import ( "../search" ) . then ( ( m ) => ( { default : m . Search } ) )
18
18
) ;
19
19
20
+ interface NavLinkProps extends RouterLinkProps {
21
+ active ?: boolean ;
22
+ }
23
+
24
+ function NavLink ( props : NavLinkProps ) {
25
+ return (
26
+ < A
27
+ class = "border-b-2 text-slate-900 dark:text-slate-200 relative overflow-hidden drop-shadow-[0_35px_35px_rgba(1,1,1,1.75)] px-2 transition-all duration-250"
28
+ classList = { {
29
+ "border-b-blue-500 dark:bottom-b-blue-500" : props . active ,
30
+ "border-transparent" : ! props . active ,
31
+ } }
32
+ addLocale
33
+ { ...props }
34
+ >
35
+ { props . children }
36
+ </ A >
37
+ ) ;
38
+ }
39
+
20
40
interface Entry {
21
41
title : string ;
22
42
path : string ;
@@ -93,47 +113,30 @@ export function MainHeader(props: NavProps) {
93
113
94
114
< ul class = "order-2 col-span-2 lg:col-span-1 flex pt-6 lg:pt-0 lg:w-auto w-full gap-5 justify-center" >
95
115
< li >
96
- < A
116
+ < NavLink
97
117
href = "/"
98
- class = "text-slate-900 dark:text-slate-200 relative overflow-hidden drop-shadow-[0_35px_35px_rgba(1,1,1,1.75)] px-2"
99
- classList = { {
100
- "border-b-2 border-b-blue-500 dark:bottom-b-blue-500 transition-all duration-250" :
101
- project ( ) === "solid" && ! translatedLocale ( ) ,
102
- } }
103
- addLocale
118
+ active = { project ( ) === "solid" && ! translatedLocale ( ) }
104
119
>
105
120
Core
106
- </ A >
121
+ </ NavLink >
107
122
</ li >
108
123
< li >
109
- < A
124
+ < NavLink
110
125
href = "/solid-router/"
111
- class = "text-slate-900 dark:text-slate-200 px-2"
112
- activeClass = "border-b-2 border-b-blue-500 dark:bottom-b-blue-500 transition-all duration-250"
113
- addLocale
126
+ active = { project ( ) === "solid-router" }
114
127
>
115
128
Router
116
- </ A >
129
+ </ NavLink >
117
130
</ li >
118
131
< li >
119
- < A
120
- href = "/solid-start/"
121
- class = "text-slate-900 dark:text-slate-200 px-2"
122
- activeClass = "border-b-2 border-b-blue-500 dark:bottom-b-blue-500 transition-all duration-250"
123
- addLocale
124
- >
132
+ < NavLink href = "/solid-start/" active = { project ( ) === "solid-start" } >
125
133
SolidStart
126
- </ A >
134
+ </ NavLink >
127
135
</ li >
128
136
< li >
129
- < A
130
- href = "/solid-meta/"
131
- class = "text-slate-900 dark:text-slate-200 px-2"
132
- activeClass = "border-b-2 border-b-blue-500 dark:bottom-b-blue-500 transition-all duration-250"
133
- addLocale
134
- >
137
+ < NavLink href = "/solid-meta/" active = { project ( ) === "solid-meta" } >
135
138
Meta
136
- </ A >
139
+ </ NavLink >
137
140
</ li >
138
141
</ ul >
139
142
0 commit comments