|
|
@@ -19,16 +19,10 @@
|
|
|
<!-- Todos os itens à direita -->
|
|
|
<div class="flex items-center gap-6 lg:gap-8">
|
|
|
<nav class="hidden lg:flex items-center gap-8">
|
|
|
- <button class="nav-link" @click="scrollTo('quem-somos')">Quem Somos</button>
|
|
|
- <button class="nav-link" @click="scrollTo('beneficios')">Benefícios</button>
|
|
|
- <button class="nav-link" @click="scrollTo('sobre-nos')">Sobre Nós</button>
|
|
|
- <span class="nav-link opacity-50 cursor-default select-none">Parceiros</span>
|
|
|
- <button class="nav-link" @click="scrollTo('associe-se')">Associe-se</button>
|
|
|
- </nav>
|
|
|
-
|
|
|
- <nav class="flex lg:hidden items-center gap-3">
|
|
|
- <button class="nav-link-mobile" @click="scrollTo('beneficios')">Benefícios</button>
|
|
|
- <button class="nav-link-mobile" @click="scrollTo('associe-se')">Associe-se</button>
|
|
|
+ <template v-for="item in navItems" :key="item.id">
|
|
|
+ <span v-if="item.disabled" class="nav-link opacity-50 cursor-default select-none">{{ item.label }}</span>
|
|
|
+ <button v-else class="nav-link" @click="scrollTo(item.id)">{{ item.label }}</button>
|
|
|
+ </template>
|
|
|
</nav>
|
|
|
|
|
|
<button
|
|
|
@@ -37,17 +31,53 @@
|
|
|
>
|
|
|
ENTRAR
|
|
|
</button>
|
|
|
+
|
|
|
+ <button
|
|
|
+ class="flex lg:hidden items-center text-violet-normal cursor-pointer"
|
|
|
+ :aria-expanded="isMenuOpen"
|
|
|
+ aria-label="Abrir menu"
|
|
|
+ @click="isMenuOpen = !isMenuOpen"
|
|
|
+ >
|
|
|
+ <span class="material-icons text-2xl">{{ isMenuOpen ? 'close' : 'menu' }}</span>
|
|
|
+ </button>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
+
|
|
|
+ <Transition name="mobile-menu">
|
|
|
+ <nav v-if="isMenuOpen" class="lg:hidden bg-white shadow-md border-t border-neutral-normal">
|
|
|
+ <template v-for="item in navItems" :key="item.id">
|
|
|
+ <span v-if="item.disabled" class="nav-link-mobile opacity-50 cursor-default select-none">{{ item.label }}</span>
|
|
|
+ <button v-else class="nav-link-mobile" @click="onMobileNavClick(item.id)">{{ item.label }}</button>
|
|
|
+ </template>
|
|
|
+ </nav>
|
|
|
+ </Transition>
|
|
|
</header>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
+const { events } = useEvents()
|
|
|
+
|
|
|
+const navItems = computed(() => [
|
|
|
+ { id: 'quem-somos', label: 'Início' },
|
|
|
+ { id: 'beneficios', label: 'Benefícios' },
|
|
|
+ { id: 'sobre-nos', label: 'Quem somos' },
|
|
|
+ ...(events.value.length ? [{ id: 'eventos', label: 'Eventos' }] : []),
|
|
|
+ { id: 'parceiros', label: 'Parceiros', disabled: true },
|
|
|
+ { id: 'associe-se', label: 'Associe-se' },
|
|
|
+])
|
|
|
+
|
|
|
+const isMenuOpen = ref(false)
|
|
|
+
|
|
|
const scrollTo = (id: string) => {
|
|
|
document.getElementById(id)?.scrollIntoView({ behavior: 'smooth' })
|
|
|
}
|
|
|
|
|
|
+const onMobileNavClick = (id: string) => {
|
|
|
+ isMenuOpen.value = false
|
|
|
+ scrollTo(id)
|
|
|
+}
|
|
|
+
|
|
|
const handleEntrar = () => {
|
|
|
window.open('https://app.serprati.com.br/', '_blank')
|
|
|
}
|
|
|
@@ -65,13 +95,32 @@ const handleEntrar = () => {
|
|
|
color: #661d75;
|
|
|
}
|
|
|
.nav-link-mobile {
|
|
|
- font-size: 0.75rem;
|
|
|
+ display: block;
|
|
|
+ width: 100%;
|
|
|
+ text-align: left;
|
|
|
+ font-size: 0.9375rem;
|
|
|
font-weight: 500;
|
|
|
color: #505050;
|
|
|
- transition: color 0.2s;
|
|
|
+ padding: 0.875rem 1.5rem;
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+ transition: color 0.2s, background-color 0.2s;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+.nav-link-mobile:last-child {
|
|
|
+ border-bottom: none;
|
|
|
+}
|
|
|
.nav-link-mobile:hover {
|
|
|
color: #661d75;
|
|
|
+ background-color: #f0e8f1;
|
|
|
+}
|
|
|
+
|
|
|
+.mobile-menu-enter-active,
|
|
|
+.mobile-menu-leave-active {
|
|
|
+ transition: opacity 0.25s ease, transform 0.25s ease;
|
|
|
+}
|
|
|
+.mobile-menu-enter-from,
|
|
|
+.mobile-menu-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateY(-8px);
|
|
|
}
|
|
|
</style>
|