Scaffold multi-screen navigation — rename Game to Ledger

This commit is contained in:
otivm
2026-04-25 17:26:09 +00:00
parent c71ab560ce
commit 54b97f28ff
2 changed files with 34 additions and 2 deletions

View File

@@ -1,15 +1,17 @@
import { useState, useEffect } from 'react' import { useState, useEffect } from 'react'
import { generateToken, loadState, saveState } from './api.js' import { generateToken, loadState, saveState } from './api.js'
import { createState } from './gameState.js' import { createState } from './gameState.js'
import Game from './Game.jsx' import Ledger from './screens/Ledger.jsx'
import './App.css' import './App.css'
const TOKEN_KEY = 'otivm_token' const TOKEN_KEY = 'otivm_token'
const SCREENS = ['ledger', 'map']
export default function App() { export default function App() {
const [state, setState] = useState(null) const [state, setState] = useState(null)
const [token, setToken] = useState(null) const [token, setToken] = useState(null)
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
const [screen, setScreen] = useState('ledger')
useEffect(() => { useEffect(() => {
async function bootstrap() { async function bootstrap() {
@@ -45,5 +47,35 @@ export default function App() {
) )
} }
return <Game state={state} onStateChange={onStateChange} /> return (
<div>
<nav className="main-nav">
<span className="nav-title">OTIVM</span>
<div className="nav-links">
<button
className={`nav-btn${screen === 'ledger' ? ' active' : ''}`}
onClick={() => setScreen('ledger')}
>
Ledger
</button>
<button
className={`nav-btn${screen === 'map' ? ' active' : ''}`}
onClick={() => setScreen('map')}
>
Map
</button>
</div>
</nav>
<div className="screen-wrap">
<div style={{ display: screen === 'ledger' ? 'block' : 'none' }}>
<Ledger state={state} onStateChange={onStateChange} />
</div>
<div style={{ display: screen === 'map' ? 'block' : 'none' }}>
<div className="placeholder">
<p>Map coming in OTIVM-II</p>
</div>
</div>
</div>
</div>
)
} }