albion/web/src/App.tsx
Заид Омар Медхат 5706248a6b Phase 5: travel planner
World map imported from the local game files (public DES key + gzip,
read-only), 485 zones / 723 portal connections, BFS router with
safe-only vs all-zones modes and danger counts, haul advisor ranking
items by trip profit per carry weight, Travel page + game-path setting.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 03:24:24 +05:00

41 lines
1.4 KiB
TypeScript

import { useState } from 'react';
import ItemsPage from './pages/ItemsPage';
import GameDataPage from './pages/GameDataPage';
import MarketPage from './pages/MarketPage';
import SettingsPage from './pages/SettingsPage';
import OpportunitiesPage from './pages/OpportunitiesPage';
import CharacterPage from './pages/CharacterPage';
import TravelPage from './pages/TravelPage';
const PAGES = [
{ id: 'opportunities', label: 'Opportunities', component: OpportunitiesPage },
{ id: 'travel', label: 'Travel Planner', component: TravelPage },
{ id: 'character', label: 'Character', component: CharacterPage },
{ id: 'market', label: 'Market Data', component: MarketPage },
{ id: 'items', label: 'Item Browser', component: ItemsPage },
{ id: 'gamedata', label: 'Game Data', component: GameDataPage },
{ id: 'settings', label: 'Settings', component: SettingsPage },
] as const;
export default function App() {
const [page, setPage] = useState<string>('items');
const Active = PAGES.find((p) => p.id === page)?.component ?? ItemsPage;
return (
<div className="app">
<aside className="sidebar">
<h1>Albion Economy</h1>
<nav>
{PAGES.map((p) => (
<button key={p.id} className={page === p.id ? 'active' : ''} onClick={() => setPage(p.id)}>
{p.label}
</button>
))}
</nav>
</aside>
<main className="main">
<Active />
</main>
</div>
);
}