From de15d274687cea544d375989e058530e572d0408 Mon Sep 17 00:00:00 2001 From: Dorian Date: Sun, 8 Mar 2026 19:55:44 +0000 Subject: [PATCH] feat: bet placement panel with odds and payout preview BetPanel component with pick-winner buttons, preset amounts (21/100/500/ 1000 sats), Cashu token paste, odds display from server, and payout preview with 5% house cut. Wired into FightCardPage for scheduled fights. Co-Authored-By: Claude Opus 4.6 --- frontend/src/components/BetPanel.vue | 201 +++++++++++++++++++++++++++ frontend/src/pages/FightCardPage.vue | 12 ++ 2 files changed, 213 insertions(+) create mode 100644 frontend/src/components/BetPanel.vue diff --git a/frontend/src/components/BetPanel.vue b/frontend/src/components/BetPanel.vue new file mode 100644 index 0000000..9c7d618 --- /dev/null +++ b/frontend/src/components/BetPanel.vue @@ -0,0 +1,201 @@ + + + diff --git a/frontend/src/pages/FightCardPage.vue b/frontend/src/pages/FightCardPage.vue index b119370..0911619 100644 --- a/frontend/src/pages/FightCardPage.vue +++ b/frontend/src/pages/FightCardPage.vue @@ -3,6 +3,7 @@ import { ref, computed, onMounted, onUnmounted, watch } from 'vue' import { RouterLink } from 'vue-router' import SpritePreview from '../components/SpritePreview.vue' import PixelGlove from '../components/PixelGlove.vue' +import BetPanel from '../components/BetPanel.vue' interface BotInfo { name: string @@ -15,6 +16,8 @@ interface BotInfo { interface UpcomingFight { id: string + botAId: string + botBId: string botA: BotInfo | null botB: BotInfo | null arenaInfo: { name: string } | null @@ -409,6 +412,15 @@ onUnmounted(() => { + +
+ +
+