diff --git a/src/lib/components/Navigation.svelte b/src/lib/components/Navigation.svelte
index 63caebdf..06fb6965 100644
--- a/src/lib/components/Navigation.svelte
+++ b/src/lib/components/Navigation.svelte
@@ -5,13 +5,17 @@
import { m } from '$lib/paraglide/messages'
import { page } from '$app/stores'
import { goto } from '$app/navigation'
+ import { createQuery } from '@tanstack/svelte-query'
+ import { crewQueries } from '$lib/api/queries/crew.queries'
import Button from './ui/Button.svelte'
import Icon from './Icon.svelte'
import DropdownItem from './ui/dropdown/DropdownItem.svelte'
+ import NotificationBadge from './ui/NotificationBadge.svelte'
import { DropdownMenu } from 'bits-ui'
import type { UserCookie } from '$lib/types/UserCookie'
import { getAvatarSrc, getAvatarSrcSet } from '$lib/utils/avatar'
import UserSettingsModal from './UserSettingsModal.svelte'
+ import InvitationsModal from './crew/InvitationsModal.svelte'
import { authStore } from '$lib/stores/auth.store'
// Props from layout data
@@ -128,6 +132,18 @@
// Settings modal state
let settingsModalOpen = $state(false)
+ // Invitations modal state
+ let invitationsModalOpen = $state(false)
+
+ // Query for pending invitations (only when authenticated)
+ const pendingInvitationsQuery = createQuery(() => ({
+ ...crewQueries.pendingInvitations(),
+ enabled: isAuth
+ }))
+
+ // Derived count of pending invitations
+ const pendingInvitationCount = $derived(pendingInvitationsQuery.data?.length ?? 0)
+
// Handle logout
async function handleLogout() {
try {
@@ -223,16 +239,23 @@
aria-label="Your account"
class="profile-link"
>
- {#if avatarSrc}
-
- {/if}
+
+ {#if avatarSrc}
+
+ {/if}
+ {#if pendingInvitationCount > 0}
+
+
+
+ {/if}
+
{username}
@@ -270,6 +293,14 @@
Crew
+
+
+
{/if}