Skip to content

Commit 58c00e2

Browse files
committed
✨ Accept active state for menu items
1 parent 9143a5c commit 58c00e2

File tree

6 files changed

+32
-9
lines changed

6 files changed

+32
-9
lines changed

src/components/Menu/Menu.astro

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ const wrapMenu = (logo?.url || logo?.html) && items?.length && Astro.slots.has('
5454
<ul>
5555
{items.map(item => (
5656
<li>
57-
<a href={item.url} target={item.target}>
57+
<a
58+
href={item.url}
59+
target={item.target}
60+
class:list={[item.active && styles.active]}
61+
>
5862
{item.name}
5963
</a>
6064
</li>

src/components/Menu/Menu.svelte

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@
5050
<ul>
5151
{#each items as item}
5252
<li>
53-
<a href={item.url} target={item.target}>
53+
<a
54+
href={item.url}
55+
target={item.target}
56+
class={item.active ? styles.active : null}
57+
>
5458
{item.name}
5559
</a>
5660
</li>

src/components/Menu/Menu.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ const Menu = ({
6262
<ul>
6363
{items.map((item, index) => (
6464
<li key={index}>
65-
<a href={item.url} target={item.target}>
65+
<a
66+
href={item.url}
67+
target={item.target}
68+
className={item.active ? styles.active : undefined}
69+
>
6670
{item.name}
6771
</a>
6872
</li>

src/components/Menu/menu.module.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@
7575
&:hover {
7676
@include typography(primary);
7777
}
78+
79+
&.active {
80+
@include typography(primary);
81+
}
7882
}
7983
}
8084

src/components/Menu/menu.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export type MenuProps = {
33
url: string
44
name: string
55
target?: string
6+
active?: boolean
67
}[]
78
logo?: {
89
url?: string

src/static/Layout.astro

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@ const menuClasses = [
1010
].filter(Boolean).join(' ')
1111
1212
const theme = (Astro.cookies.get('w-theme')?.value || 'theme-dark') as string
13+
const isPath = (path: string) => Astro.url.pathname.includes(path)
1314
1415
const menu = {
1516
logo: {
1617
html: logo
1718
},
1819
items: [
19-
{ url: '/resets', name: 'Resets' },
20-
{ url: '/svelte', name: 'Svelte' },
21-
{ url: '/react', name: 'React' }
20+
{ url: '/svelte', name: 'Svelte', active: isPath('svelte') },
21+
{ url: '/react', name: 'React', active: isPath('react') },
22+
{ url: '/resets', name: 'Resets', active: isPath('resets') },
23+
{ url: '/utilities', name: 'Utilities', active: isPath('utilities') }
2224
]
2325
}
2426
@@ -60,7 +62,7 @@ const externalLinks = [
6062
))}
6163
</div>
6264
</Menu>
63-
<div class="container">
65+
<div class="container my">
6466
<slot />
6567
</div>
6668
</body>
@@ -124,7 +126,11 @@ const externalLinks = [
124126
}
125127
}
126128

127-
.container {
128-
margin-top: 20px;
129+
.my {
130+
@include spacing(auto-default);
131+
}
132+
133+
.mb {
134+
@include spacing(mb-default);
129135
}
130136
</style>

0 commit comments

Comments
 (0)