diff --git a/src/components/Header.astro b/src/components/Header.astro
index 370a960..5b62143 100644
--- a/src/components/Header.astro
+++ b/src/components/Header.astro
@@ -1,6 +1,7 @@
---
import { getRelativeLocaleUrl } from 'astro:i18n';
import Logo from '@/components/Logo.astro';
+import MobileMenu from '@/components/MobileMenu.astro';
import { getLangFromUrl, useTranslations } from '@/i18n/utils';
const lang = getLangFromUrl(Astro.url);
@@ -26,33 +27,53 @@ const ctaLinks = {
class="mx-auto flex w-full max-w-5xl flex-wrap items-center justify-between gap-3 rounded-lg bg-base-100/80 px-4 py-2 shadow-md backdrop-blur-sm"
aria-label="Primary"
>
-
-
-
+
+
-
-
- {ctaLinks.secondary.label}
-
-
- {ctaLinks.primary.label}
-
+
+
+
diff --git a/src/components/MobileMenu.astro b/src/components/MobileMenu.astro
new file mode 100644
index 0000000..67da78f
--- /dev/null
+++ b/src/components/MobileMenu.astro
@@ -0,0 +1,86 @@
+---
+import { Icon } from 'astro-icon/components';
+import Logo from '@/components/Logo.astro';
+import { getLangFromUrl, useTranslations } from '@/i18n/utils';
+
+interface Props {
+ navigationLinks: Array<{ href: string; label: string }>;
+ ctaLinks: {
+ secondary: { href: string; label: string };
+ primary: { href: string; label: string };
+ };
+ pathname: string;
+}
+
+const { navigationLinks, ctaLinks, pathname } = Astro.props;
+const lang = getLangFromUrl(Astro.url);
+const t = useTranslations(lang);
+---
+
+
diff --git a/src/components/marketing/ActivityGrid.astro b/src/components/marketing/ActivityGrid.astro
index 3eafcbd..f79b55c 100644
--- a/src/components/marketing/ActivityGrid.astro
+++ b/src/components/marketing/ActivityGrid.astro
@@ -1,4 +1,5 @@
---
+import { Icon } from 'astro-icon/components';
import type { Activity } from '@/data/marketing';
interface Props {
@@ -7,17 +8,13 @@ interface Props {
const { items } = Astro.props;
-/** Heroicons 24 outline: interview, career, group, terminal, calendar */
-const icons: Record
= {
- interview:
- 'M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 01-.825-.242m9.345-8.334a2.126 2.126 0 00-.476-.095 48.64 48.64 0 00-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0011.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155',
- career:
- 'M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 00.75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 00-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0112 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 01-.673-.38m0 0A2.18 2.18 0 013 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 013.413-.387m7.5 0V5.25A2.25 2.25 0 0013.5 3h-3a2.25 2.25 0 00-2.25 2.25v.894m7.5 0a48.667 48.667 0 00-7.5 0M12 12.75h.008v.008H12v-.008Z',
- groups:
- 'M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0Zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0Zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0Z',
- project:
- 'm6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z',
- cafe: 'M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5',
+/** Iconify icon names for activity items */
+const iconMap: Record = {
+ interview: 'lucide:mic',
+ career: 'lucide:briefcase',
+ groups: 'lucide:users',
+ project: 'lucide:terminal',
+ cafe: 'lucide:coffee',
};
---
@@ -30,9 +27,7 @@ const icons: Record = {
class="bg-primary/15 text-primary inline-flex h-12 w-12 items-center justify-center rounded-xl"
aria-hidden="true"
>
-
+
{item.title}
{item.description}
diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts
index b04362c..94e91e1 100644
--- a/src/i18n/ui.ts
+++ b/src/i18n/ui.ts
@@ -9,6 +9,8 @@ export const ui = {
'nav.contributing': 'Como posso ajudar?',
'nav.join_us': 'Faça parte!',
'nav.transparency': 'Transparência',
+ 'nav.menu': 'Menu',
+ 'nav.close_menu': 'Fechar menu',
'footer.copyright': 'Todos os direitos reservados.',
// Transparency page
'transparency.title': 'Transparência',