2024-01-05 12:14:38 +00:00
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import { useData } from '../composables/data'
|
|
|
|
|
import VPNavScreenMenuLink from './VPNavScreenMenuLink.vue'
|
|
|
|
|
import VPNavScreenMenuGroup from './VPNavScreenMenuGroup.vue'
|
|
|
|
|
|
|
|
|
|
const { theme } = useData()
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<nav v-if="theme.nav" class="VPNavScreenMenu">
|
2026-02-11 16:20:26 +00:00
|
|
|
<template v-for="item in theme.nav" :key="JSON.stringify(item)">
|
2026-02-16 13:45:45 +00:00
|
|
|
<VPNavScreenMenuLink v-if="'link' in item" :item />
|
2026-02-11 16:20:26 +00:00
|
|
|
<component
|
|
|
|
|
v-else-if="'component' in item"
|
|
|
|
|
:is="item.component"
|
|
|
|
|
v-bind="item.props"
|
|
|
|
|
screen-menu
|
2024-01-05 12:14:38 +00:00
|
|
|
/>
|
|
|
|
|
<VPNavScreenMenuGroup
|
|
|
|
|
v-else
|
|
|
|
|
:text="item.text || ''"
|
|
|
|
|
:items="item.items"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</nav>
|
|
|
|
|
</template>
|