<template> <div class="bg-white"> <div class="flex bg-gray-50"> <div class="w-full md:w-4/5 lg:w-3/5 md:mx-auto md:max-w-4xl px-4"> <div class="pt-4 pb-0"> <div class="flex"> <h2 class="flex-grow text-gray-900"> My Account </h2> </div> <ul class="flex text-gray-500"> <li>{{ user.email }}</li> </ul> <div class="mt-4 border-b border-gray-200 dark:border-gray-700"> <ul class="flex flex-wrap -mb-px text-sm font-medium text-center"> <li v-for="(tab, i) in tabsList" :key="i+1" class="mr-6"> <NuxtLink :to="{ name: tab.route }" class="hover:no-underline inline-block py-4 rounded-t-lg border-b-2 text-gray-500 hover:text-gray-600" active-class="text-blue-600 hover:text-blue-900 dark:text-blue-500 dark:hover:text-blue-500 border-blue-600 dark:border-blue-500" > {{ tab.name }} </NuxtLink> </li> </ul> </div> </div> </div> </div> <div class="flex bg-white"> <div class="w-full md:w-4/5 lg:w-3/5 md:mx-auto md:max-w-4xl px-4"> <div class="mt-8 pb-0"> <router-view v-slot="{ Component }"> <transition name="page" mode="out-in"> <component :is="Component" /> </transition> </router-view> </div> </div> </div> </div> </template> <script> import { computed } from 'vue' import { useAuthStore } from '../../stores/auth' export default { middleware: 'auth', setup () { const authStore = useAuthStore() return { user: computed(() => authStore.user) } }, data () { return { } }, computed: { tabsList () { const tabs = [ { name: 'Profile', route: 'settings-profile' }, { name: 'Workspace Settings', route: 'settings-workspace' }, { name: 'Password', route: 'settings-password' }, { name: 'Delete Account', route: 'settings-account' } ] if (this.user.is_subscribed) { tabs.splice(1, 0, { name: 'Billing', route: 'settings-billing' }) } if (this.user.admin) { tabs.push({ name: 'Admin', route: 'settings-admin' }) } return tabs } }, methods: { } } </script>