mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
- Remove nested git repository from bugulma/frontend/.git - Add all frontend files to main repository tracking - Convert from separate frontend/backend repos to unified monorepo - Preserve all frontend code and development history as tracked files - Eliminate nested repository complexity for simpler development workflow This creates a proper monorepo structure with frontend and backend coexisting in the same repository for easier development and deployment.
110 lines
4.0 KiB
TypeScript
110 lines
4.0 KiB
TypeScript
import React from 'react';
|
|
import { useAuth } from '@/contexts/AuthContext.tsx';
|
|
import { useTranslation } from '@/hooks/useI18n.tsx';
|
|
import { Organization, SymbiosisMatch, WebIntelligenceResult } from '@/types.ts';
|
|
import Button from '@/components/ui/Button.tsx';
|
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card.tsx';
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/Tabs.tsx';
|
|
import AIAnalysisTab from '@/components/organization/AIAnalysisTab.tsx';
|
|
import DirectMatchesTab from '@/components/organization/DirectMatchesTab.tsx';
|
|
import ProposalList from '@/components/organization/ProposalList.tsx';
|
|
import WebIntelTab from '@/components/organization/WebIntelTab.tsx';
|
|
|
|
interface PartnershipHubProps {
|
|
organization: Organization;
|
|
onSelectOrg: (org: Organization) => void;
|
|
ai: {
|
|
symbiosisResult: SymbiosisMatch[] | null;
|
|
isAnalyzing: boolean;
|
|
analysisError: string | null;
|
|
handleAnalyzeSymbiosis: () => void;
|
|
webIntelResult: WebIntelligenceResult | null;
|
|
isFetchingWebIntel: boolean;
|
|
webIntelError: string | null;
|
|
handleFetchWebIntelligence: () => void;
|
|
};
|
|
}
|
|
|
|
const PartnershipHub = ({ organization, onSelectOrg, ai }: PartnershipHubProps) => {
|
|
const { t } = useTranslation();
|
|
const { isAuthenticated } = useAuth();
|
|
const [activeTab, setActiveTab] = React.useState('proposals');
|
|
|
|
return (
|
|
<Card>
|
|
<CardHeader>
|
|
<CardTitle>{t('organizationPage.partnershipHub.title')}</CardTitle>
|
|
</CardHeader>
|
|
<CardContent>
|
|
<Tabs value={activeTab} onValueChange={setActiveTab}>
|
|
<TabsList>
|
|
<TabsTrigger value="proposals">
|
|
{t('organizationPage.partnershipHub.proposals')}
|
|
</TabsTrigger>
|
|
<TabsTrigger value="ai_analysis">
|
|
{t('organizationPage.partnershipHub.aiAnalysis')}
|
|
</TabsTrigger>
|
|
<TabsTrigger value="direct_matches">
|
|
{t('organizationPage.partnershipHub.directMatches')}
|
|
</TabsTrigger>
|
|
<TabsTrigger value="web_intel">
|
|
{t('organizationPage.partnershipHub.webIntel')}
|
|
</TabsTrigger>
|
|
</TabsList>
|
|
|
|
<TabsContent value="proposals">
|
|
<ProposalList organization={organization} />
|
|
</TabsContent>
|
|
|
|
<TabsContent value="ai_analysis">
|
|
{isAuthenticated ? (
|
|
<AIAnalysisTab
|
|
symbiosisResult={ai.symbiosisResult}
|
|
isAnalyzing={ai.isAnalyzing}
|
|
analysisError={ai.analysisError}
|
|
handleAnalyzeSymbiosis={ai.handleAnalyzeSymbiosis}
|
|
onSelectOrg={onSelectOrg}
|
|
/>
|
|
) : (
|
|
<div className="text-center py-8">
|
|
<p className="text-muted-foreground mb-4">
|
|
{t('organizationPage.partnershipHub.authRequired')}
|
|
</p>
|
|
<Button onClick={() => (window.location.href = '/login')}>
|
|
{t('common.login')}
|
|
</Button>
|
|
</div>
|
|
)}
|
|
</TabsContent>
|
|
|
|
<TabsContent value="direct_matches">
|
|
<DirectMatchesTab organization={organization} onSelectOrg={onSelectOrg} />
|
|
</TabsContent>
|
|
|
|
<TabsContent value="web_intel">
|
|
{isAuthenticated ? (
|
|
<WebIntelTab
|
|
webIntelResult={ai.webIntelResult}
|
|
isFetchingWebIntel={ai.isFetchingWebIntel}
|
|
webIntelError={ai.webIntelError}
|
|
handleFetchWebIntelligence={ai.handleFetchWebIntelligence}
|
|
/>
|
|
) : (
|
|
<div className="text-center py-8">
|
|
<p className="text-muted-foreground mb-4">
|
|
{t('organizationPage.partnershipHub.authRequired')}
|
|
</p>
|
|
<Button onClick={() => (window.location.href = '/login')}>
|
|
{t('common.login')}
|
|
</Button>
|
|
</div>
|
|
)}
|
|
</TabsContent>
|
|
</Tabs>
|
|
</CardContent>
|
|
</Card>
|
|
);
|
|
};
|
|
|
|
export default React.memo(PartnershipHub);
|