Skip to content

Commit 425fec8

Browse files
committed
dev: Improve UI
1 parent 0313476 commit 425fec8

File tree

1 file changed

+143
-18
lines changed

1 file changed

+143
-18
lines changed

src/components/Header.astro

Lines changed: 143 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,7 @@ const arURL = getRelativeLocaleUrl("ar");
2222
<header>
2323
<div class="logo">
2424
<a href={homeURL}>
25-
<img
26-
src={logo.src}
27-
alt="fossify logo"
28-
width="52"
29-
height="52"
30-
/>
25+
<img src={logo.src} alt="fossify logo" width="52" height="52" />
3126
<h1>fossify</h1>
3227
</a>
3328
</div>
@@ -37,26 +32,30 @@ const arURL = getRelativeLocaleUrl("ar");
3732
<li><a href={blogURL}>{strings?.data.header.blog}</a></li>
3833
<li><a href={aboutURL}>{strings?.data.header.about}</a></li>
3934
<details id="langs">
40-
<summary>
41-
{
42-
lang === "en" ? "English" : lang === "ar" ? "العربية" : "lang"
43-
}</summary
44-
>
45-
<ul>
46-
<li>
47-
<a href={enURL}>Engish</a>
35+
<summary aria-label="Language selector">
36+
{lang === "en" ? "English" : lang === "ar" ? "العربية" : "lang"}
37+
<span class="chevron">▼</span>
38+
</summary>
39+
<ul role="menu">
40+
<li role="menuitem">
41+
<a href={enURL}>English</a>
4842
</li>
49-
<li>
43+
<li role="menuitem">
5044
<a href={arURL}>العربية</a>
5145
</li>
5246
</ul>
5347
</details>
5448
</ul>
5549
</nav>
5650
<div class="icons">
57-
<a href="https://github.com/FossifyOrg" target="_blank"
58-
><Icon name="github" size={30} /></a
51+
<a
52+
href="https://github.com/FossifyOrg"
53+
target="_blank"
54+
aria-label="Visit Fossify on GitHub"
55+
class="icon-link"
5956
>
57+
<Icon name="github" size={30} />
58+
</a>
6059
<ToggleDark />
6160
</div>
6261
</header>
@@ -69,12 +68,18 @@ const arURL = getRelativeLocaleUrl("ar");
6968
padding-block: 1.5rem;
7069
align-content: center;
7170
align-items: center;
71+
border-bottom: 1px solid var(--outline-variant);
72+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
7273

7374
display: grid;
7475
grid-template-areas: "logo nav icons";
7576
grid-template-columns: 3fr 3fr 0.5fr;
7677
gap: 1rem;
7778
min-height: 5rem;
79+
position: sticky;
80+
top: 0;
81+
z-index: 100;
82+
backdrop-filter: blur(10px);
7883
}
7984

8085
@media (width < 50em) {
@@ -98,6 +103,21 @@ const arURL = getRelativeLocaleUrl("ar");
98103
display: flex;
99104
align-items: center;
100105
gap: 1rem;
106+
transition:
107+
transform 0.2s ease,
108+
opacity 0.2s ease;
109+
border-radius: 0.5rem;
110+
padding: 0.5rem;
111+
}
112+
113+
.logo > a:hover {
114+
transform: scale(1.02);
115+
opacity: 0.9;
116+
}
117+
118+
.logo > a:focus-visible {
119+
outline: 2px solid var(--primary);
120+
outline-offset: 2px;
101121
}
102122

103123
.logo > a > img {
@@ -144,6 +164,21 @@ const arURL = getRelativeLocaleUrl("ar");
144164
text-transform: capitalize;
145165
color: var(--on-primary-container);
146166
line-height: 1.2;
167+
padding: 0.5rem 1rem;
168+
border-radius: 0.25rem;
169+
transition: all 0.2s ease;
170+
position: relative;
171+
}
172+
173+
nav > ul a:hover {
174+
background-color: var(--primary);
175+
color: var(--on-primary);
176+
transform: translateY(-1px);
177+
}
178+
179+
nav > ul a:focus-visible {
180+
outline: 2px solid var(--on-primary-container);
181+
outline-offset: 2px;
147182
}
148183

149184
details {
@@ -153,9 +188,41 @@ const arURL = getRelativeLocaleUrl("ar");
153188
user-select: none;
154189
}
155190

191+
details[open] summary {
192+
background-color: var(--primary);
193+
color: var(--on-primary);
194+
}
195+
196+
details[open] summary .chevron {
197+
transform: rotate(180deg);
198+
}
199+
156200
details > summary {
157201
text-align: center;
158202
font-weight: 600;
203+
padding: 0.5rem 1rem;
204+
border-radius: 0.25rem;
205+
transition: all 0.2s ease;
206+
display: flex;
207+
align-items: center;
208+
gap: 0.5rem;
209+
list-style: none;
210+
}
211+
212+
details > summary::-webkit-details-marker {
213+
display: none;
214+
}
215+
216+
details > summary:hover {
217+
background-color: var(--primary);
218+
color: var(--on-primary);
219+
transform: translateY(-1px);
220+
}
221+
222+
details > summary .chevron {
223+
transition: transform 0.2s ease;
224+
font-size: 0.75rem;
225+
margin-left: 0.25rem;
159226
}
160227

161228
details > ul {
@@ -166,16 +233,46 @@ const arURL = getRelativeLocaleUrl("ar");
166233
width: min-content;
167234
position: absolute;
168235
left: 0;
169-
top: 2em;
236+
top: calc(100% + 0.5rem);
170237
border-radius: 1rem;
171238
right: 0;
172239
list-style: none;
173240
display: grid;
174241
gap: 1rem;
242+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
243+
border: 1px solid var(--outline-variant);
244+
animation: slideDown 0.2s ease;
245+
z-index: 10;
246+
}
247+
248+
@keyframes slideDown {
249+
from {
250+
opacity: 0;
251+
transform: translateY(-10px);
252+
}
253+
to {
254+
opacity: 1;
255+
transform: translateY(0);
256+
}
175257
}
176258

177259
details > ul a {
178260
color: var(--on-surface);
261+
padding: 0.5rem;
262+
border-radius: 0.5rem;
263+
transition: all 0.2s ease;
264+
display: block;
265+
text-decoration: none;
266+
}
267+
268+
details > ul a:hover {
269+
background-color: var(--primary-container);
270+
color: var(--on-primary-container);
271+
}
272+
273+
details > ul a:focus-visible {
274+
outline: 2px solid var(--primary);
275+
outline-offset: 2px;
179276
}
180277

181278
.icons {
@@ -190,4 +287,32 @@ const arURL = getRelativeLocaleUrl("ar");
190287
[data-icon] {
191288
color: var(--on-surface);
192289
}
290+
291+
.icon-link {
292+
padding: 0.5rem;
293+
border-radius: 0.5rem;
294+
transition: all 0.2s ease;
295+
display: flex;
296+
align-items: center;
297+
justify-content: center;
298+
}
299+
300+
.icon-link:hover {
301+
background-color: var(--primary-container);
302+
color: var(--on-primary-container);
303+
transform: translateY(-1px);
304+
}
305+
306+
.icon-link:focus-visible {
307+
outline: 2px solid var(--primary);
308+
outline-offset: 2px;
309+
}
310+
311+
.icon-link [data-icon] {
312+
transition: color 0.2s ease;
313+
}
314+
315+
.icon-link:hover [data-icon] {
316+
color: var(--on-primary-container);
317+
}
193318
</style>

0 commit comments

Comments
 (0)