32 lines
990 B
Vue
32 lines
990 B
Vue
<script setup lang="ts">
|
|
const route = useRoute()
|
|
|
|
const routeParts = computed(() => {
|
|
return route.path.replace('/agent/', '').split('/')
|
|
});
|
|
|
|
if (routeParts.value.length < 1) navigateTo('/')
|
|
if (!routeParts.value[0]!.match(/^agents_[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$/)) navigateTo('/')
|
|
|
|
const pageInfo = computed(() => {
|
|
// `/agent/agent_[uuid]`
|
|
if (routeParts.value.length === 1) {
|
|
return 'new-conversation'
|
|
}
|
|
|
|
// `/agent/agent_[uuid]/profile`
|
|
if (routeParts.value.length === 2 && routeParts.value[1]! === 'profile') {
|
|
return 'agent-profile'
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<nav class="flex flex-col gap-1">
|
|
<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>
|
|
</nav>
|
|
</template> |