Skip to content

Commit de1e1ce

Browse files
style: active navigation text highlighting and add .nojekyll
1 parent 49366ac commit de1e1ce

2 files changed

Lines changed: 54 additions & 33 deletions

File tree

public/.nojekyll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Prevent GitHub Pages from attempting Jekyll processing on Astro outputs

src/layouts/BaseLayout.astro

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)