import React, { useState } from 'react'; import { Project, ShopItem } from '../types'; import { MOCK_ORGS, MOCK_PLAYERS } from '../constants'; import { Icons, ItemIcon } from '../components/IconSet'; interface ProjectProfileProps { project: Project; onBack: () => void; onSelectPlayer: (id: string) => void; onSelectOrg: (id: string) => void; } const ProjectProfile: React.FC = ({ project, onBack, onSelectPlayer, onSelectOrg }) => { const [activeTab, setActiveTab] = useState<'overview' | 'shop'>('overview'); const org = project.associatedOrgId ? MOCK_ORGS.find(o => o.id === project.associatedOrgId) : null; const ownerPlayer = MOCK_PLAYERS.find(p => p.username === project.owner); const hasShop = project.shopCatalog && project.shopCatalog.length > 0; // Group shop items const services = project.shopCatalog?.filter(i => i.type === 'service') || []; const products = project.shopCatalog?.filter(i => i.type !== 'service') || []; return (
{/* Banner Header */}
{project.title} {/* Decorative elements for Black Market */} {project.category === 'Black Market' && (
)}
{project.category} {project.status === 'active' && ( AKTIV )} {project.hiring && ( STELLEN )}

{project.title}

ownerPlayer && onSelectPlayer(ownerPlayer.uuid)} >
{project.owner.charAt(0)}
Inhaber: {project.owner}
{project.foundedDate && ( Gegr. {project.foundedDate} )}
{hasShop && ( )}
{/* Navigation */}
{hasShop && ( )}
{/* Content */}
{activeTab === 'overview' && (

Manifest

{project.description}

{/* Project Portfolio / Gallery */} {project.gallery && project.gallery.length > 0 && (

Portfolio

{project.gallery.map((url, idx) => (
{`Portfolio
))}
)}

Personal

{project.employees.map((emp, idx) => { const empPlayer = MOCK_PLAYERS.find(p => p.username === emp); return (
empPlayer && onSelectPlayer(empPlayer.uuid)} className={`flex items-center gap-3 bg-surface border border-border p-3 rounded-lg ${empPlayer ? 'cursor-pointer hover:border-accentInfo/50 hover:bg-surfaceHighlight/30 transition-all group' : ''}`} >
{emp.charAt(0)}
{emp}
); })} {project.employees.length === 0 && (
Kein weiteres Personal registriert.
)}
{/* Right Column: Statistics */}

Unternehmensdaten

{/* Industry */}
Branche {project.category}
{/* Founded */}
Gegründet {project.foundedDate || 'N/A'}
{/* Reputation */}
Ruf {project.progress}/100
{/* Workforce */}
Belegschaft
{project.employees.length + 1}
{/* Headquarters Link */} {org && (
Hauptsitz
onSelectOrg(org.id)} className="flex items-center gap-3 bg-surfaceHighlight/50 p-2 rounded-lg border border-white/5 cursor-pointer hover:border-accentInfo/50 hover:bg-surfaceHighlight transition-all group" >
{org.name.charAt(0)}
{org.name}
)}
)} {activeTab === 'shop' && project.shopCatalog && (
{/* Services Section */} {services.length > 0 && (

Dienstleistungen & Verträge

Fachkräfte für Spezialaufträge anheuern.

{services.map(item => (

{item.name}

{item.price} {item.currency}

{item.description}

{item.materialsRequired && (
Materialanforderungen: {item.materialsRequired}
)}
))}
)} {/* Products Section */} {products.length > 0 && (

Produktkatalog

Items, Bücher und Baupläne zur sofortigen Abholung.

{products.map(item => (
{item.type === 'blueprint' ? : }
0 ? 'bg-green-500/10 text-green-400 border-green-500/20' : 'bg-red-500/10 text-red-400 border-red-500/20' }`}> {item.stock > 0 ? `${item.stock} auf Lager` : 'Ausverkauft'}

{item.name}

{item.description}

Preis {item.price} {item.currency}
))}
)}
)}
); }; export default ProjectProfile;