feat: Add My Tickets feature with ticket management

- Introduce MyTickets.vue page to display user tickets with filtering options for paid, pending, and registered tickets.
- Implement useUserTickets composable for fetching and managing user ticket data.
- Update Navbar.vue to include a link to the My Tickets page.
- Enhance events API to support fetching user tickets.
- Define Ticket type in event.ts for better type safety.
This commit is contained in:
padreug 2025-08-01 21:54:05 +02:00
parent f7450627bc
commit 63d636a8a0
6 changed files with 403 additions and 2 deletions

View file

@ -6,7 +6,7 @@ import { useTheme } from '@/components/theme-provider'
import { Button } from '@/components/ui/button'
import { Badge } from '@/components/ui/badge'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'
import { Sun, Moon, Menu, X, User, LogOut } from 'lucide-vue-next'
import { Sun, Moon, Menu, X, User, LogOut, Ticket } from 'lucide-vue-next'
import LanguageSwitcher from '@/components/LanguageSwitcher.vue'
import LoginDialog from '@/components/auth/LoginDialog.vue'
import ProfileDialog from '@/components/auth/ProfileDialog.vue'
@ -27,6 +27,7 @@ const showProfileDialog = ref(false)
const navigation = computed<NavigationItem[]>(() => [
{ name: t('nav.home'), href: '/' },
{ name: t('nav.events'), href: '/events' },
{ name: 'My Tickets', href: '/my-tickets' },
{ name: t('nav.support'), href: '/support' },
])
@ -98,6 +99,10 @@ const handleLogout = async () => {
<User class="h-4 w-4" />
Profile
</DropdownMenuItem>
<DropdownMenuItem @click="() => router.push('/my-tickets')" class="gap-2">
<Ticket class="h-4 w-4" />
My Tickets
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem @click="handleLogout" class="gap-2 text-destructive">
<LogOut class="h-4 w-4" />