@@ -21,6 +21,8 @@ function App() {
2121 const theme : Theme = template === 'classic' ? 'light' : 'dark'
2222 // hacker template overrides the shared nav/footer to terminal green
2323 const isHacker = template === 'hacker'
24+ // netflix template overrides the shared nav/footer to Netflix style
25+ const isNetflix = template === 'netflix'
2426
2527 const [ mobileMenuOpen , setMobileMenuOpen ] = useState ( false )
2628
@@ -117,17 +119,23 @@ function App() {
117119
118120 const rootClasses = isHacker
119121 ? 'min-h-screen bg-black text-green-400'
120- : 'min-h-screen bg-slate-50 text-slate-900 dark:bg-[#050509] dark:text-slate-50'
122+ : isNetflix
123+ ? 'min-h-screen bg-[#141414] text-white'
124+ : 'min-h-screen bg-slate-50 text-slate-900 dark:bg-[#050509] dark:text-slate-50'
121125 const headerClasses = isHacker
122126 ? 'sticky top-0 z-20 border-b border-green-900/60 bg-black/95 backdrop-blur font-mono'
123- : theme === 'dark'
124- ? 'sticky top-0 z-20 border-b border-white/5 bg-[#050509]/90 backdrop-blur'
125- : 'sticky top-0 z-20 border-b border-slate-200 bg-slate-50/90 backdrop-blur'
127+ : isNetflix
128+ ? 'sticky top-0 z-20 border-b border-white/5 bg-[#141414]/95 backdrop-blur'
129+ : theme === 'dark'
130+ ? 'sticky top-0 z-20 border-b border-white/5 bg-[#050509]/90 backdrop-blur'
131+ : 'sticky top-0 z-20 border-b border-slate-200 bg-slate-50/90 backdrop-blur'
126132 const footerClasses = isHacker
127133 ? 'border-t border-green-900/60 bg-black py-4 text-xs text-green-900 font-mono'
128- : theme === 'dark'
129- ? 'border-t border-slate-800 bg-gradient-to-b from-[#111120] to-[#050509] py-6 text-xs text-slate-400'
130- : 'border-t border-slate-200 bg-gradient-to-b from-slate-50 to-slate-100 py-6 text-xs text-slate-600'
134+ : isNetflix
135+ ? 'border-t border-white/5 bg-[#141414] py-6 text-xs text-[#999]'
136+ : theme === 'dark'
137+ ? 'border-t border-slate-800 bg-gradient-to-b from-[#111120] to-[#050509] py-6 text-xs text-slate-400'
138+ : 'border-t border-slate-200 bg-gradient-to-b from-slate-50 to-slate-100 py-6 text-xs text-slate-600'
131139
132140 const navInitials = ( ( ) => {
133141 const name = ( hero . title || '' ) . trim ( )
@@ -143,14 +151,16 @@ function App() {
143151 < div className = "mx-auto flex max-w-5xl items-center justify-between px-4 py-3 sm:px-6 sm:py-4" >
144152 < Link
145153 to = "/"
146- className = { `inline-flex items-center gap-2 no-underline ${ isHacker ? 'text-green-500' : 'text-slate-900 dark:text-slate-100' } ` }
154+ className = { `inline-flex items-center gap-2 no-underline ${ isHacker ? 'text-green-500' : isNetflix ? 'text-white' : 'text-slate-900 dark:text-slate-100' } ` }
147155 aria-label = { `${ hero . title } home` }
148156 >
149157 { isHacker ? (
150158 < span className = "font-mono text-sm text-green-500" >
151159 < span className = "text-green-800" > ~/</ span > { navInitials }
152160 < span className = "inline-block w-1.5 h-3.5 bg-green-500 animate-pulse ml-0.5 align-middle" />
153161 </ span >
162+ ) : isNetflix ? (
163+ < span className = "text-lg font-black text-[#e50914] tracking-tight" > { navInitials } </ span >
154164 ) : (
155165 < span className = "flex h-8 w-8 items-center justify-center rounded-xl bg-gradient-to-tr from-blue-600 to-cyan-400 text-xs font-semibold text-[#050509]" aria-hidden = "true" >
156166 { navInitials }
@@ -171,6 +181,14 @@ function App() {
171181 } ) }
172182 < a href = { `${ import . meta. env . BASE_URL } #stats` } className = "transition hover:text-green-400" > stats</ a >
173183 </ nav >
184+ ) : isNetflix ? (
185+ < nav className = "hidden md:flex items-center gap-5 text-sm font-medium text-[#e5e5e5]" aria-label = "Primary" >
186+ < Link to = "/" className = "transition hover:text-white" > Home</ Link >
187+ < Link to = "/videos" className = "transition hover:text-white" > Videos</ Link >
188+ < Link to = "/blogs" className = "transition hover:text-white" > Blogs</ Link >
189+ < Link to = "/projects" className = "transition hover:text-white" > Projects</ Link >
190+ < a href = { `${ import . meta. env . BASE_URL } #stats` } className = "transition hover:text-white" > Stats</ a >
191+ </ nav >
174192 ) : (
175193 < nav className = "hidden md:flex items-center gap-3 text-xs font-medium text-slate-700 dark:text-slate-300" aria-label = "Primary" >
176194 < Link to = "/" className = "border-b border-transparent pb-0.5 transition-colors hover:border-slate-500 hover:text-slate-900 dark:hover:border-slate-400 dark:hover:text-slate-50" > Home</ Link >
@@ -186,7 +204,7 @@ function App() {
186204 < button
187205 type = "button"
188206 onClick = { ( ) => setMobileMenuOpen ( ( prev ) => ! prev ) }
189- className = { `flex h-8 w-8 items-center justify-center rounded-md transition ${ isHacker ? 'text-green-700 hover:bg-green-900/20' : 'text-slate-600 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-800' } ` }
207+ className = { `flex h-8 w-8 items-center justify-center rounded-md transition ${ isHacker ? 'text-green-700 hover:bg-green-900/20' : isNetflix ? 'text-white hover:bg-white/10' : 'text-slate-600 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-800' } ` }
190208 aria-label = { mobileMenuOpen ? 'Close menu' : 'Open menu' }
191209 >
192210 { mobileMenuOpen ? (
@@ -205,15 +223,15 @@ function App() {
205223 { /* Mobile dropdown menu */ }
206224 { mobileMenuOpen && (
207225 < nav
208- className = { `border-t md:hidden backdrop-blur ${ isHacker ? 'border-green-900/60 bg-black/95 font-mono text-xs text-green-700' : 'border-slate-200 bg-slate-50/95 dark:border-white/5 dark:bg-[#050509]/95' } ` }
226+ className = { `border-t md:hidden backdrop-blur ${ isHacker ? 'border-green-900/60 bg-black/95 font-mono text-xs text-green-700' : isNetflix ? 'border-white/5 bg-[#141414]/95 text-sm text-[#e5e5e5]' : 'border-slate-200 bg-slate-50/95 dark:border-white/5 dark:bg-[#050509]/95' } ` }
209227 aria-label = "Mobile navigation"
210228 >
211- < div className = { `mx-auto flex max-w-5xl flex-col px-4 py-2 ${ isHacker ? '' : 'text-sm font-medium text-slate-700 dark:text-slate-300' } ` } >
212- < Link to = "/" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `py-2.5 transition-colors ${ isHacker ? 'hover:text-green-400' : 'hover:text-slate-900 dark:hover:text-slate-50' } ` } > { isHacker ? '~ home' : 'Home' } </ Link >
213- < Link to = "/videos" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : 'border-slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50' } ` } > { isHacker ? '~/videos' : ' Videos' } </ Link >
214- < Link to = "/blogs" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : 'border-slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50' } ` } > { isHacker ? '~/blogs' : ' Blogs' } </ Link >
215- < Link to = "/projects" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : 'border-slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50' } ` } > { isHacker ? '~/projects' : ' Projects' } </ Link >
216- < a href = { `${ import . meta. env . BASE_URL } #stats` } onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : 'border-slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50' } ` } > { isHacker ? '~/stats' : 'Stats' } </ a >
229+ < div className = { `mx-auto flex max-w-5xl flex-col px-4 py-2 ${ isHacker ? '' : isNetflix ? 'font-medium' : 'text-sm font-medium text-slate-700 dark:text-slate-300' } ` } >
230+ < Link to = "/" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `py-2.5 transition-colors ${ isHacker ? 'hover:text-green-400' : isNetflix ? 'hover:text-white' : 'hover:text-slate-900 dark:hover:text-slate-50' } ` } > { isHacker ? '~ home' : 'Home' } </ Link >
231+ < Link to = "/videos" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : isNetflix ? 'border-white/5 hover:text-white' : 'border- slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50'} ` } > Videos</ Link >
232+ < Link to = "/blogs" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : isNetflix ? 'border-white/5 hover:text-white' : 'border- slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50'} ` } > Blogs</ Link >
233+ < Link to = "/projects" onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : isNetflix ? 'border-white/5 hover:text-white' : 'border- slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50'} ` } > Projects</ Link >
234+ < a href = { `${ import . meta. env . BASE_URL } #stats` } onClick = { ( ) => setMobileMenuOpen ( false ) } className = { `border-t py-2.5 transition-colors ${ isHacker ? 'border-green-900/40 hover:text-green-400' : isNetflix ? 'border-white/5 hover:text-white' : 'border-slate-200/60 hover:text-slate-900 dark:border-white/5 dark:hover:text-slate-50' } ` } > { isHacker ? '~/stats' : 'Stats' } </ a >
217235 </ div >
218236 </ nav >
219237 ) }
0 commit comments