37 lines
1018 B
Vue
37 lines
1018 B
Vue
<script setup lang="ts">
|
|
const route = useRoute();
|
|
|
|
const routeParts = computed(() => {
|
|
return route.path.replace('/agent/', '').split('/');
|
|
});
|
|
|
|
if (routeParts.value.length < 1) navigateTo('/');
|
|
|
|
const pageInfo = computed(() => {
|
|
// `/agent/agent_[uuid]` or `/agent/agent_[uuid]/topic/...`
|
|
if (route.path.startsWith('/agent/') && !route.path.includes('/profile')) {
|
|
return 'conversation';
|
|
}
|
|
|
|
// `/agent/agent_[uuid]/profile`
|
|
if (route.path.endsWith('/profile')) {
|
|
return 'agent-profile';
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<nav class="flex flex-col gap-1">
|
|
|
|
<!-- Agent Info Link -->
|
|
<div class="mt-2">
|
|
<NuxtLink :to="`/agent/${routeParts[0]}/profile`" class="decoration-none text-[var(--color-subtle)]">
|
|
<SidenavItem name="Agent Info" icon="mynaui:info-square" :active="pageInfo === 'agent-profile'" />
|
|
</NuxtLink>
|
|
</div>
|
|
|
|
<!-- Topics Section -->
|
|
<SidenavNavAgentTopics />
|
|
</nav>
|
|
</template>
|