@@ -10,6 +10,26 @@ const {
1010 title = " Shakir Ahmed Ibrahim | Cloud Native, DevOps & Systems Engineering Portfolio" ,
1111 description = " Engineering portfolio & technical notes by Shakir Ahmed Ibrahim. Cloud architecture, Kubernetes guides, and AI/ML systems."
1212} = Astro .props ;
13+
14+ const currentPath = Astro .url .pathname ;
15+ const isActive = (path : string ) => {
16+ if (path === ' /' ) return currentPath === ' /' ;
17+ if (path .startsWith (' /#' )) return currentPath === ' /' ;
18+ return currentPath === path || currentPath .startsWith (` ${path }/ ` );
19+ };
20+
21+ const navItems = [
22+ { href: ' /' , label: ' Home' },
23+ { href: ' /cv' , label: ' CV / Resume' },
24+ { href: ' /projects' , label: ' Projects' },
25+ { href: ' /accreditations' , label: ' Certifications' },
26+ { href: ' /awards' , label: ' Awards' },
27+ { href: ' /videos' , label: ' Videos' },
28+ { href: ' /github' , label: ' GitHub Activity' },
29+ { href: ' /#skills' , label: ' Skills' },
30+ { href: ' /blog' , label: ' Blog' },
31+ { href: ' /about' , label: ' About' },
32+ ];
1333---
1434
1535<!DOCTYPE html >
@@ -27,16 +47,14 @@ const {
2747 <header class =" site-header" >
2848 <div class =" container header-content" >
2949 <nav class =" nav-links" >
30- <a href =" /" >Home</a >
31- <a href =" /cv" >CV / Resume</a >
32- <a href =" /projects" >Projects</a >
33- <a href =" /accreditations" >Certifications</a >
34- <a href =" /awards" >Awards</a >
35- <a href =" /videos" >Videos</a >
36- <a href =" /github" >GitHub Activity</a >
37- <a href =" /#skills" >Skills</a >
38- <a href =" /blog" >Blog</a >
39- <a href =" /about" >About</a >
50+ { navItems .map ((item ) => {
51+ const active = isActive (item .href );
52+ return (
53+ <a href = { item .href } class :list = { [{ active }]} >
54+ { item .label }
55+ </a >
56+ );
57+ })}
4058 </nav >
4159 </div >
4260 </header >
@@ -71,44 +89,44 @@ const {
7189 backdrop-filter: blur(16px);
7290 -webkit-backdrop-filter: blur(16px);
7391 border-bottom: 1px solid var(--border-glass);
74- padding: 1rem 0;
92+ padding: 0.75rem 0;
7593 }
7694
7795 .header-content {
7896 display: flex;
79- justify-content: space-between ;
97+ justify-content: center ;
8098 align-items: center;
8199 }
82100
83- .brand {
84- font-size: 1.25rem;
85- font-weight: 700;
86- color: var(--text-main);
87- font-family: var(--font-mono);
88- text-decoration: none;
89- }
90-
91- .brand-accent {
92- color: var(--accent-blue);
93- }
94-
95- .brand-code {
96- color: var(--accent-indigo);
97- }
98-
99101 .nav-links {
100102 display: flex;
101- gap: 1.5rem;
103+ gap: 0.5rem;
104+ flex-wrap: wrap;
105+ justify-content: center;
102106 }
103107
104108 .nav-links a {
109+ padding: 0.4rem 0.85rem;
110+ border-radius: 8px;
105111 color: var(--text-muted);
106112 font-weight: 500;
107- font-size: 0.95rem;
113+ font-size: 0.92rem;
114+ transition: all 0.2s ease;
115+ border: 1px solid transparent;
108116 }
109117
110118 .nav-links a:hover {
119+ color: var(--text-main);
120+ background: rgba(255, 255, 255, 0.05);
121+ border-color: rgba(255, 255, 255, 0.08);
122+ }
123+
124+ .nav-links a.active {
111125 color: var(--accent-blue);
126+ background: rgba(56, 189, 248, 0.12);
127+ border-color: rgba(56, 189, 248, 0.3);
128+ font-weight: 600;
129+ box-shadow: 0 0 12px rgba(56, 189, 248, 0.15);
112130 }
113131
114132 .site-main {
@@ -142,9 +160,11 @@ const {
142160 gap: 1rem;
143161 }
144162 .nav-links {
145- flex-wrap: wrap;
146- justify-content: center;
147- gap: 1rem;
163+ gap: 0.35rem;
164+ }
165+ .nav-links a {
166+ font-size: 0.85rem;
167+ padding: 0.35rem 0.65rem;
148168 }
149169 }
150170</style >
0 commit comments