ptitlutins/app/components/molecules/VoyageTabs.vue
2026-06-10 23:37:21 +02:00

68 lines
1.4 KiB
Vue

<script setup lang="ts">
import type { VoyageTab } from "~/composables/useActiveTab"
defineProps<{
active: string
}>()
const emit = defineEmits<{
select: [id: VoyageTab]
}>()
const tabs: { id: VoyageTab; icon: string }[] = [
{ id: "carte", icon: "carbon:map" },
{ id: "calendrier", icon: "carbon:calendar" },
{ id: "photos", icon: "carbon:image" },
]
</script>
<template>
<nav class="tabs">
<button
v-for="tab in tabs"
:key="tab.id"
class="tab"
:class="{ 'tab--active': tab.id === active }"
@click="emit('select', tab.id)"
>
<Icon :name="tab.icon" size="1.15rem" />
{{ $t("voyage.tabs." + tab.id) }}
</button>
</nav>
</template>
<style scoped>
.tabs {
display: flex;
gap: 4px;
background: var(--surface-sunken);
padding: 4px;
border-radius: var(--radius-lg);
border: 1px solid var(--border-subtle);
}
.tab {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 0.5rem 0.95rem;
border: none;
cursor: pointer;
border-radius: var(--radius-md);
background: transparent;
color: var(--text-muted);
font-family: var(--font-body);
font-size: 0.92rem;
font-weight: var(--weight-semibold);
box-shadow: none;
transition:
background 120ms ease,
color 120ms ease;
}
.tab--active {
background: var(--color-5);
color: var(--primary-contrast);
box-shadow: var(--shadow-1);
}
</style>