Skip to content

Commit e13e446

Browse files
okhsunrogYatekii
authored andcommitted
Improved navbar styling
1 parent 518a021 commit e13e446

File tree

4 files changed

+74
-14
lines changed

4 files changed

+74
-14
lines changed

src/components/Head.astro

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ const fontCss = FONTS.map(
5757
}
5858
<style is:inline set:html={fontCss}></style>
5959

60+
<!-- Custom search styles -->
61+
<style is:inline>
62+
.pagefind-ui--rounded .pagefind-ui__search-input {
63+
border-radius: 9999px;
64+
padding-left: 1rem;
65+
padding-right: 1rem;
66+
}
67+
.pagefind-ui--rounded .pagefind-ui__form {
68+
width: 100%;
69+
}
70+
</style>
71+
6072
<!-- Canonical URL -->
6173
<link rel="canonical" href={canonicalURL} />
6274

src/components/HeaderLink.astro

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
import type { HTMLAttributes } from "astro/types";
3+
import { Icon } from "astro-icon/components";
34
45
type Props = HTMLAttributes<"a">;
56
@@ -11,11 +12,12 @@ const isActive =
1112
const finalHref = href?.toString().startsWith("http")
1213
? href
1314
: import.meta.env.BASE_URL + href;
15+
const isExternal = href?.toString().startsWith("http");
1416
---
1517

1618
<li
1719
class:list={[
18-
"flex items-center content-center mx-2 border-b-2 font-bold active:mx-2 hover:border-b-green text-sm md:text-md",
20+
"flex items-center content-center mx-2 border-b-2 font-bold active:mx-2 hover:border-b-green text-sm md:text-md w-full md:w-auto",
1921
{
2022
"border-b-green": isActive,
2123
"border-white dark:border-gray-800": !isActive,
@@ -24,8 +26,8 @@ const finalHref = href?.toString().startsWith("http")
2426
>
2527
<a
2628
href={finalHref}
27-
class:list={[className, "hover:text-green whitespace-nowrap"]}
29+
class:list={[className, "hover:text-green whitespace-nowrap py-2 px-2 flex items-center w-full"]}
2830
{...props}
29-
><slot />
31+
><slot />{isExternal && <Icon name="line-md--external-link" class="inline ml-1" />}
3032
</a>
3133
</li>

src/icons/hamburger-menu.svg

Lines changed: 6 additions & 0 deletions
Loading

src/layouts/Html.astro

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ const { title, description, image, fluid } = Astro.props;
1717
<div
1818
class="border-b-[1px] border-slate-200 dark:border-slate-600 bg-white dark:bg-gray-800"
1919
>
20-
<header class="h-full px-4 md:px-16">
20+
<header class="relative z-20 h-full px-4 md:px-16">
2121
<nav
22-
class="h-48 md:h-16 flex flex-col md:flex-row justify-around place-items-center max-w-7xl mx-auto"
22+
class="h-16 flex flex-row justify-between items-center max-w-7xl mx-auto"
2323
>
24-
<a href={import.meta.env.BASE_URL}>
24+
<a href={import.meta.env.BASE_URL} class="flex-shrink-0">
2525
<h1
2626
class="py-5 text-lg w-max font-semibold font-[Inter] transition"
2727
>
@@ -32,29 +32,60 @@ const { title, description, image, fluid } = Astro.props;
3232
</h1>
3333
</a>
3434

35-
<div class="w-1 h-24"></div>
36-
<div class="absolute md:static w-full px-3 md:px-20">
35+
<div class="hidden md:block flex-grow max-w-md mx-4">
3736
<Search
3837
id="search"
39-
className="pagefind-ui my-2"
38+
className="pagefind-ui pagefind-ui--rounded my-2"
4039
uiOptions={{ showImages: false }}
4140
/>
4241
</div>
4342

4443
<ul
45-
class="h-full flex flex-row justify-center align-middle space-x-1 md:space-x-2 md:ml-auto"
44+
class="hidden md:flex flex-row items-center space-x-2 md:ml-auto"
4645
>
4746
<HeaderLink href="targets">Targets</HeaderLink>
4847
<HeaderLink href="docs">Documentation</HeaderLink>
4948
<HeaderLink href="blog">Blog</HeaderLink>
5049
<HeaderLink href="https://shop.probe.rs/" target="_blank"
51-
>Shop <Icon
52-
name="line-md--external-link"
53-
class="inline"
54-
/></HeaderLink
50+
>Shop</HeaderLink
51+
>
52+
<HeaderLink href="https://github.com/probe-rs/probe-rs" target="_blank"
53+
><Icon name="line-md--github-loop" class="inline mr-1" /> GitHub</HeaderLink
5554
>
5655
</ul>
56+
57+
<button
58+
id="mobile-menu-toggle"
59+
class="md:hidden flex items-center p-2 text-black dark:text-white"
60+
aria-label="Toggle mobile menu"
61+
>
62+
<Icon name="hamburger-menu" class="text-2xl" />
63+
</button>
5764
</nav>
65+
66+
<div
67+
id="mobile-menu"
68+
class="hidden md:hidden absolute top-full left-0 right-0 bg-white dark:bg-gray-800 shadow-lg z-10 px-4 py-3"
69+
>
70+
<div class="mb-4">
71+
<Search
72+
id="mobile-search"
73+
className="pagefind-ui pagefind-ui--rounded my-2"
74+
uiOptions={{ showImages: false }}
75+
/>
76+
</div>
77+
<ul class="flex flex-col w-full">
78+
<HeaderLink href="targets">Targets</HeaderLink>
79+
<HeaderLink href="docs">Documentation</HeaderLink>
80+
<HeaderLink href="blog">Blog</HeaderLink>
81+
<HeaderLink href="https://shop.probe.rs/" target="_blank"
82+
>Shop</HeaderLink
83+
>
84+
<HeaderLink href="https://github.com/probe-rs/probe-rs" target="_blank"
85+
><Icon name="line-md--github-loop" class="inline mr-1" /> GitHub</HeaderLink
86+
>
87+
</ul>
88+
</div>
5889
</header>
5990
</div>
6091

@@ -82,5 +113,14 @@ const { title, description, image, fluid } = Astro.props;
82113
</div>
83114
</footer>
84115
</div>
116+
117+
<script>
118+
document.getElementById('mobile-menu-toggle')?.addEventListener('click', () => {
119+
const mobileMenu = document.getElementById('mobile-menu');
120+
if (mobileMenu) {
121+
mobileMenu.classList.toggle('hidden');
122+
}
123+
});
124+
</script>
85125
</body>
86126
</html>

0 commit comments

Comments
 (0)