diff --git a/web/client/src/App.jsx b/web/client/src/App.jsx new file mode 100644 index 0000000..bbdce76 --- /dev/null +++ b/web/client/src/App.jsx @@ -0,0 +1,91 @@ +import React, { useEffect, useState } from 'react'; +import InventoryGrid from './components/InventoryGrid'; +import StorageOverview from './components/StorageOverview'; +import SmeltingPanel from './components/SmeltingPanel'; +import CraftingPanel from './components/CraftingPanel'; +import AlertsPanel from './components/AlertsPanel'; +import { useInventoryStore } from './store/inventoryStore'; +import './App.css'; + +function App() { + const connect = useInventoryStore((state) => state.connect); + const connected = useInventoryStore((state) => state.connected); + const commandResult = useInventoryStore((state) => state.commandResult); + const [panelTab, setPanelTab] = useState('inventory'); + + useEffect(() => { + connect(); + }, [connect]); + + const renderPanelContent = () => { + switch (panelTab) { + case 'inventory': + return ; + case 'smelting': + return ; + case 'crafting': + return ; + case 'alerts': + return ; + default: + return ; + } + }; + + return ( +
+
+

⛏️ Inventory Manager

+
+ + {connected ? 'Connected' : 'Disconnected'} +
+
+ + {commandResult && ( +
+ {commandResult.message || commandResult.error || (commandResult.success ? 'OK' : 'Failed')} +
+ )} + +
+
+ +
+
+
+ + + + +
+
+ {renderPanelContent()} +
+
+
+
+ ); +} + +export default App;