From b0926db9ed1c7dd31d35bdddbb4367c435b9f7a4 Mon Sep 17 00:00:00 2001 From: Dorian Date: Sun, 8 Mar 2026 21:00:48 +0000 Subject: [PATCH] feat: tournament bracket UI TournamentListPage with status filters, TournamentPage with CSS grid bracket display, lobby view for open tournaments, champion banner, live polling for active tournaments. Routes at /tournaments and /tournament/:id. NavBar link added. Co-Authored-By: Claude Opus 4.6 --- frontend/src/components/NavBar.vue | 1 + frontend/src/pages/TournamentListPage.vue | 104 +++++++++ frontend/src/pages/TournamentPage.vue | 244 ++++++++++++++++++++++ frontend/src/router.ts | 10 + 4 files changed, 359 insertions(+) create mode 100644 frontend/src/pages/TournamentListPage.vue create mode 100644 frontend/src/pages/TournamentPage.vue diff --git a/frontend/src/components/NavBar.vue b/frontend/src/components/NavBar.vue index 8a061f9..6d3cd6b 100644 --- a/frontend/src/components/NavBar.vue +++ b/frontend/src/components/NavBar.vue @@ -12,6 +12,7 @@ const links = [ { to: '/fight-card', label: 'FIGHT CARD' }, { to: '/arena', label: 'WATCH' }, { to: '/feed', label: 'FEED' }, + { to: '/tournaments', label: 'TOURNEYS' }, { to: '/leaderboard', label: 'RANKINGS' }, { to: '/docs', label: 'DOCS' }, ] diff --git a/frontend/src/pages/TournamentListPage.vue b/frontend/src/pages/TournamentListPage.vue new file mode 100644 index 0000000..102f784 --- /dev/null +++ b/frontend/src/pages/TournamentListPage.vue @@ -0,0 +1,104 @@ + + + diff --git a/frontend/src/pages/TournamentPage.vue b/frontend/src/pages/TournamentPage.vue new file mode 100644 index 0000000..03c58cd --- /dev/null +++ b/frontend/src/pages/TournamentPage.vue @@ -0,0 +1,244 @@ + + + diff --git a/frontend/src/router.ts b/frontend/src/router.ts index a52bafc..5dfa71b 100644 --- a/frontend/src/router.ts +++ b/frontend/src/router.ts @@ -71,6 +71,16 @@ const routes = [ name: 'feed', component: () => import('./pages/FeedPage.vue'), }, + { + path: '/tournaments', + name: 'tournaments', + component: () => import('./pages/TournamentListPage.vue'), + }, + { + path: '/tournament/:id', + name: 'tournament', + component: () => import('./pages/TournamentPage.vue'), + }, ] export const router = createRouter({