@@ -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