import React, { useState, useEffect } from 'react'; import { dbService } from '../services/DatabaseService'; import { Icons } from '../components/IconSet'; import { Player, Project, Organization } from '../types'; const StatCard = ({ label, value, trend, icon: Icon }: any) => (
{trend && ( 0 ? 'bg-accentSuccess/10 text-accentSuccess' : 'bg-accentWarn/10 text-accentWarn' }`}> {trend > 0 ? '+' : ''}{trend}% )}
{value}
{label}
); const ProjectCard = ({ project }: { project: any }) => (
{project.title}
Inhaber: {project.owner}
{project.progress}%
); const Dashboard: React.FC = () => { const [players, setPlayers] = useState([]); const [projects, setProjects] = useState([]); const [orgs, setOrgs] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { // Subscribe to database updates const unsubscribe = dbService.subscribe(() => { setPlayers(dbService.getPlayers()); setProjects(dbService.getProjects()); setOrgs(dbService.getOrgs()); setLoading(false); }); // Initial data load setPlayers(dbService.getPlayers()); setProjects(dbService.getProjects()); setOrgs(dbService.getOrgs()); setLoading(false); return unsubscribe; }, []); const activeProjectsCount = projects.filter(p => p.status === 'active' || p.status === 'recruiting').length; return (
{/* Intro Section */}

Live-Telemetrie

Tal-Übersicht

Echtzeit-Datenaggregation aus dem Zentralarchiv.

{/* KPI Grid */}
{/* Content Grid */}
{/* Projects List - Wider */}

Top Unternehmen

{loading ? (
) : ( projects.slice(0, 5).map(p => (
)) )}
{/* Decree / News - Narrower */}

Offizieller Erlass

{/* Decorative background element */}
NEU VOR 12 MIN

"Im Auftrag des Bürgermeisters ist jeglicher Handel innerhalb der inneren Mauern für das kommende Fest steuerbefreit."

Bürger werden ermutigt, ihre Stände im Marktviertel aufzubauen, bevor der Mond am 14. Tag aufgeht.

#Wirtschaft #Events
); }; export default Dashboard;