Files
speckle-server/packages/frontend-2/components/header/WorkspaceSwitcher/List.vue
T
2025-05-19 15:35:16 +02:00

45 lines
1.3 KiB
Vue

<template>
<div class="p-2 pt-1 max-h-[60vh] lg:max-h-96 overflow-y-auto simple-scrollbar">
<LayoutSidebarMenuGroup
title="Workspaces"
:icon-click="isGuest ? undefined : handlePlusClick"
icon-text="Create workspace"
always-show-icon
>
<HeaderWorkspaceSwitcherListItem
v-for="item in workspaces"
:key="`menu-item-${item.id}`"
:workspace="item"
/>
<HeaderWorkspaceSwitcherListItem
v-if="hasPersonalProjects"
:is-active="route.path === projectsRoute"
name="Personal projects"
tag="LEGACY"
/>
</LayoutSidebarMenuGroup>
</div>
</template>
<script setup lang="ts">
import type { HeaderWorkspaceSwitcherWorkspaceListItem_WorkspaceFragment } from '~/lib/common/generated/gql/graphql'
import { projectsRoute, workspaceCreateRoute } from '~/lib/common/helpers/route'
import { useMixpanel } from '~~/lib/core/composables/mp'
defineProps<{
workspaces: HeaderWorkspaceSwitcherWorkspaceListItem_WorkspaceFragment[]
hasPersonalProjects: boolean
}>()
const route = useRoute()
const mixpanel = useMixpanel()
const { isGuest } = useActiveUser()
const handlePlusClick = () => {
navigateTo(workspaceCreateRoute)
mixpanel.track('Create Workspace Button Clicked', {
source: 'navigation'
})
}
</script>