@@ -38,6 +38,8 @@ function App() {
3838 const isNetflix = template === 'netflix'
3939 // threejs template gets sci-fi HUD navbar
4040 const isThreejs = template === 'threejs'
41+ // minecraft template gets game UI styling
42+ const isMinecraft = template === 'minecraft'
4143
4244 const showSearch = ( githubConfig as { showSearch ?: boolean } ) . showSearch !== false
4345
@@ -172,25 +174,31 @@ function App() {
172174 ? 'min-h-screen bg-[#141414] text-white'
173175 : isThreejs
174176 ? 'min-h-screen bg-[#050509] text-slate-50'
175- : 'min-h-screen bg-slate-50 text-slate-900 dark:bg-[#050509] dark:text-slate-50'
177+ : isMinecraft
178+ ? 'min-h-screen bg-[#1a1a2e] text-white'
179+ : 'min-h-screen bg-slate-50 text-slate-900 dark:bg-[#050509] dark:text-slate-50'
176180 const headerClasses = isHacker
177181 ? 'sticky top-0 z-20 border-b border-green-900/60 bg-black/95 backdrop-blur font-mono'
178182 : isNetflix
179183 ? 'sticky top-0 z-20 border-b border-white/5 bg-[#141414]/95 backdrop-blur'
180184 : isThreejs
181185 ? 'sticky top-0 z-20 bg-[#050509]/80 backdrop-blur-md'
182- : theme === 'dark'
183- ? 'sticky top-0 z-20 border-b border-white/5 bg-[#050509]/90 backdrop-blur'
184- : 'sticky top-0 z-20 border-b border-slate-200 bg-slate-50/90 backdrop-blur'
186+ : isMinecraft
187+ ? 'sticky top-0 z-20 border-b-2 border-[#3b3b3b] bg-[#8b8b8b]/95 backdrop-blur'
188+ : theme === 'dark'
189+ ? 'sticky top-0 z-20 border-b border-white/5 bg-[#050509]/90 backdrop-blur'
190+ : 'sticky top-0 z-20 border-b border-slate-200 bg-slate-50/90 backdrop-blur'
185191 const footerClasses = isHacker
186192 ? 'border-t border-green-900/60 bg-black py-4 text-xs text-green-900 font-mono'
187193 : isNetflix
188194 ? 'border-t border-white/5 bg-[#141414] py-6 text-xs text-[#999]'
189195 : isThreejs
190196 ? 'border-t border-blue-900/30 bg-gradient-to-b from-[#080c18] to-[#050509] py-6 text-xs text-slate-400'
191- : theme === 'dark'
192- ? 'border-t border-slate-800 bg-gradient-to-b from-[#111120] to-[#050509] py-6 text-xs text-slate-400'
193- : 'border-t border-slate-200 bg-gradient-to-b from-slate-50 to-slate-100 py-6 text-xs text-slate-600'
197+ : isMinecraft
198+ ? 'border-t-2 border-[#3b3b3b] bg-[#8b8b8b] py-6 text-xs text-[#3b3b3b]'
199+ : theme === 'dark'
200+ ? 'border-t border-slate-800 bg-gradient-to-b from-[#111120] to-[#050509] py-6 text-xs text-slate-400'
201+ : 'border-t border-slate-200 bg-gradient-to-b from-slate-50 to-slate-100 py-6 text-xs text-slate-600'
194202
195203 const navInitials = ( ( ) => {
196204 const name = ( hero . title || '' ) . trim ( )
@@ -348,7 +356,7 @@ function App() {
348356 < div className = "mx-auto flex max-w-5xl items-center justify-between px-4 py-3 sm:px-6 sm:py-4" >
349357 < Link
350358 to = "/"
351- className = { `inline-flex items-center gap-2 no-underline ${ isHacker ? 'text-green-500' : isNetflix ? 'text-white' : 'text-slate-900 dark:text-slate-100' } ` }
359+ className = { `inline-flex items-center gap-2 no-underline ${ isHacker ? 'text-green-500' : isNetflix ? 'text-white' : isMinecraft ? 'text-white' : 'text-slate-900 dark:text-slate-100' } ` }
352360 aria-label = { `${ hero . title } home` }
353361 >
354362 { isHacker ? (
@@ -358,6 +366,12 @@ function App() {
358366 </ span >
359367 ) : isNetflix ? (
360368 < span className = "text-lg font-black text-[#e50914] tracking-tight" > { navInitials } </ span >
369+ ) : isMinecraft ? (
370+ < span className = "relative inline-block border-2 border-[#3b3b3b] bg-[#5c7a29] px-2 py-0.5 text-sm font-bold text-white drop-shadow-[1px_1px_0_#3f3f00]" >
371+ < span className = "pointer-events-none absolute inset-0 border-t border-l border-[#8acd32]" />
372+ < span className = "pointer-events-none absolute inset-0 border-b border-r border-[#3a5a19]" />
373+ < span className = "relative" > { navInitials } </ span >
374+ </ span >
361375 ) : (
362376 < 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" >
363377 { navInitials }
@@ -386,6 +400,18 @@ function App() {
386400 < Link to = "/projects" className = "transition hover:text-white" > Projects</ Link >
387401 < a href = { `${ import . meta. env . BASE_URL } #stats` } className = "transition hover:text-white" > Stats</ a >
388402 </ nav >
403+ ) : isMinecraft ? (
404+ < nav className = "hidden md:flex items-center gap-1 text-xs font-bold" aria-label = "Primary" >
405+ { ( [ '/' , '/videos' , '/blogs' , '/projects' ] as const ) . map ( ( path , i ) => {
406+ const labels = [ 'Home' , 'Videos' , 'Blogs' , 'Projects' ]
407+ return (
408+ < Link key = { path } to = { path } className = "relative border-2 border-[#3b3b3b] bg-[#6b6b6b] px-2.5 py-1 text-[#d4d4d4] transition-all hover:bg-[#555555] hover:text-white" >
409+ { labels [ i ] }
410+ </ Link >
411+ )
412+ } ) }
413+ < a href = { `${ import . meta. env . BASE_URL } #stats` } className = "relative border-2 border-[#3b3b3b] bg-[#6b6b6b] px-2.5 py-1 text-[#d4d4d4] transition-all hover:bg-[#555555] hover:text-white" > Stats</ a >
414+ </ nav >
389415 ) : (
390416 < nav className = "hidden md:flex items-center gap-3 text-xs font-medium text-slate-700 dark:text-slate-300" aria-label = "Primary" >
391417 < 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 >
@@ -408,7 +434,9 @@ function App() {
408434 ? 'border-green-900 bg-green-950/40 text-green-600 hover:bg-green-900/30'
409435 : isNetflix
410436 ? 'border-white/10 bg-white/5 text-[#e5e5e5] hover:bg-white/10'
411- : 'border-indigo-300/60 bg-indigo-50 text-indigo-600 hover:bg-indigo-100 dark:border-indigo-500/30 dark:bg-indigo-500/10 dark:text-indigo-300 dark:hover:bg-indigo-500/20'
437+ : isMinecraft
438+ ? 'border-[#3b3b3b] bg-[#5c7a29] text-white hover:bg-[#6b8e3e] rounded-none'
439+ : 'border-indigo-300/60 bg-indigo-50 text-indigo-600 hover:bg-indigo-100 dark:border-indigo-500/30 dark:bg-indigo-500/10 dark:text-indigo-300 dark:hover:bg-indigo-500/20'
412440 } `}
413441 >
414442 < ForkIcon className = "h-3 w-3 fill-current" />
@@ -421,7 +449,7 @@ function App() {
421449 < button
422450 type = "button"
423451 onClick = { ( ) => setMobileMenuOpen ( ( prev ) => ! prev ) }
424- 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' } ` }
452+ 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' : isMinecraft ? 'text-[#3b3b3b] hover:bg-[#6b6b6b]' : 'text-slate-600 hover:bg-slate-100 dark:text-slate-300 dark:hover:bg-slate-800' } ` }
425453 aria-label = { mobileMenuOpen ? 'Close menu' : 'Open menu' }
426454 >
427455 { mobileMenuOpen ? (
@@ -440,7 +468,7 @@ function App() {
440468 { /* Mobile dropdown menu */ }
441469 { mobileMenuOpen && (
442470 < nav
443- 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' } ` }
471+ 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]' : isMinecraft ? 'border-[#3b3b3b] bg-[#8b8b8b]/95 text-sm text-[#3b3b3b] font-bold' : 'border-slate-200 bg-slate-50/95 dark:border-white/5 dark:bg-[#050509]/95' } ` }
444472 aria-label = "Mobile navigation"
445473 >
446474 < 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' } ` } >
0 commit comments