diff --git a/frontend-sba/pages/demo-decisions.vue b/frontend-sba/pages/demo-decisions.vue
index ae3d274..ba69d88 100644
--- a/frontend-sba/pages/demo-decisions.vue
+++ b/frontend-sba/pages/demo-decisions.vue
@@ -216,6 +216,10 @@
:is-active="demoControls.isActive"
:current-decision="demoState.offensiveDecision"
:has-runners-on-base="demoControls.hasRunners"
+ :runner-on-first="!!demoRunners.first"
+ :runner-on-second="!!demoRunners.second"
+ :runner-on-third="!!demoRunners.third"
+ :outs="0"
@submit="handleOffensiveSubmit"
/>
@@ -260,6 +264,47 @@
+
+
+
+
+
+ 📚 Other Demo Pages
+
+
+
+ 🎮
+ Game State Demo
+
+ Live game state visualization
+
+
+
+ 🎲
+ Gameplay Demo
+
+ Dice rolling & manual outcomes
+
+
+
+ 🔄
+ Substitutions Demo
+
+ Player substitution workflow
+
+
+
+
+
@@ -307,9 +352,7 @@ const demoState = ref({
hold_runners: [],
} as DefensiveDecision,
offensiveDecision: {
- approach: 'normal',
- hit_and_run: false,
- bunt_attempt: false,
+ action: 'swing_away',
} as Omit,
stealAttempts: [] as number[],
decisionHistory: [
@@ -320,7 +363,7 @@ const demoState = ref({
},
{
type: 'Offensive' as const,
- summary: 'power approach, Hit & Run',
+ summary: 'Swing Away',
timestamp: '10:45:18',
},
],
@@ -361,16 +404,21 @@ const handleDefensiveSubmit = (decision: DefensiveDecision) => {
const handleOffensiveSubmit = (decision: Omit) => {
demoState.value.offensiveDecision = decision
- const tactics = []
- if (decision.hit_and_run) tactics.push('Hit & Run')
- if (decision.bunt_attempt) tactics.push('Bunt')
- const summary = `${decision.approach} approach${tactics.length ? ', ' + tactics.join(', ') : ''}`
+ const actionLabels: Record = {
+ swing_away: 'Swing Away',
+ steal: 'Steal',
+ check_jump: 'Check Jump',
+ hit_and_run: 'Hit and Run',
+ sac_bunt: 'Sacrifice Bunt',
+ squeeze_bunt: 'Squeeze Bunt',
+ }
+ const summary = actionLabels[decision.action] || decision.action
demoState.value.decisionHistory.unshift({
type: 'Offensive',
summary,
timestamp: new Date().toLocaleTimeString(),
})
- showToast(`Offensive decision submitted: ${summary}`)
+ showToast(`Offensive action selected: ${summary}`)
}
const handleStealSubmit = (attempts: number[]) => {
diff --git a/frontend-sba/pages/demo-gameplay.vue b/frontend-sba/pages/demo-gameplay.vue
index 9f60e1f..d241645 100644
--- a/frontend-sba/pages/demo-gameplay.vue
+++ b/frontend-sba/pages/demo-gameplay.vue
@@ -181,6 +181,47 @@
+
+
+
+
+
+ 📚 Other Demo Pages
+
+
+
+ 🎮
+ Game State Demo
+
+ Live game state visualization
+
+
+
+ ⚔️
+ Decisions Demo
+
+ Decision input components
+
+
+
+ 🔄
+ Substitutions Demo
+
+ Player substitution workflow
+
+
+
+
+
diff --git a/frontend-sba/pages/demo-substitutions.vue b/frontend-sba/pages/demo-substitutions.vue
index b1c679b..c386699 100644
--- a/frontend-sba/pages/demo-substitutions.vue
+++ b/frontend-sba/pages/demo-substitutions.vue
@@ -126,6 +126,47 @@
+
+
+
+
+
+ 📚 Other Demo Pages
+
+
+
+ 🎮
+ Game State Demo
+
+ Live game state visualization
+
+
+
+ ⚔️
+ Decisions Demo
+
+ Decision input components
+
+
+
+ 🎲
+ Gameplay Demo
+
+ Dice rolling & manual outcomes
+
+
+
+
+
diff --git a/frontend-sba/pages/demo.vue b/frontend-sba/pages/demo.vue
index 21737d7..444d1d8 100644
--- a/frontend-sba/pages/demo.vue
+++ b/frontend-sba/pages/demo.vue
@@ -160,6 +160,47 @@
+
+
+
+
+
+ 📚 Other Demo Pages
+
+
+
+ ⚔️
+ Decisions Demo
+
+ Decision input components
+
+
+
+ 🎲
+ Gameplay Demo
+
+ Dice rolling & manual outcomes
+
+
+
+ 🔄
+ Substitutions Demo
+
+ Player substitution workflow
+
+
+
+
+