fix: credit tracking, voice clone TTL, avatar upload ui, asset serving fallback, OAuth encryption, free plan video renders, backlink outreach sprint

This commit is contained in:
ajaysi
2026-05-25 17:07:35 +05:30
parent 090d69761f
commit 9b3bec698b
99 changed files with 15892 additions and 1278 deletions

View File

@@ -32,8 +32,10 @@ import {
Schedule as ScheduleIcon,
Info as InfoIcon,
ExpandMore as ExpandMoreIcon,
AutoAwesome as AIIcon
AutoAwesome as AIIcon,
Tab as TabIcon,
} from '@mui/icons-material';
import { Tabs, Tab as MuiTab } from '@mui/material';
// Shared components
import { DashboardContainer, GlassCard } from '../shared/styled';
@@ -67,6 +69,9 @@ import { AdvertoolsInsights } from './components/AdvertoolsInsights';
import SemanticHealthCard from './components/SemanticHealthCard';
import SemanticInsights from './components/SemanticInsights';
// Phase 2A: Enterprise SEO Analysis
import SEOAnalysisController from './SEOAnalysisController';
const SEODashboard: React.FC = () => {
// Clerk authentication hooks
const { isSignedIn, isLoaded } = useAuth();
@@ -110,6 +115,9 @@ const SEODashboard: React.FC = () => {
const [userMenuAnchor, setUserMenuAnchor] = useState<null | HTMLElement>(null);
const [statusMenuAnchor, setStatusMenuAnchor] = useState<null | HTMLElement>(null);
// Dashboard Tab State for Enterprise Analysis
const [dashboardTab, setDashboardTab] = useState<number>(0);
// Competitor analysis data from onboarding step 3
const [competitorAnalysisData, setCompetitorAnalysisData] = useState<any>(null);
const [deepCompetitorAnalysisData, setDeepCompetitorAnalysisData] = useState<any>(null);
@@ -779,6 +787,40 @@ const SEODashboard: React.FC = () => {
{/* CopilotKit Test Panel removed */}
{/* Dashboard Tabs */}
<Box sx={{ mb: 4, display: 'flex', gap: 1, borderBottom: '1px solid rgba(255, 255, 255, 0.1)', pb: 1 }}>
<Button
variant={dashboardTab === 0 ? 'contained' : 'text'}
onClick={() => setDashboardTab(0)}
sx={{
color: dashboardTab === 0 ? 'white' : 'rgba(255, 255, 255, 0.7)',
bgcolor: dashboardTab === 0 ? 'rgba(33, 150, 243, 0.3)' : 'transparent',
borderBottom: dashboardTab === 0 ? '2px solid #2196F3' : 'none',
borderRadius: 0,
'&:hover': { bgcolor: 'rgba(255, 255, 255, 0.05)' }
}}
>
📊 Overview
</Button>
<Button
variant={dashboardTab === 1 ? 'contained' : 'text'}
onClick={() => setDashboardTab(1)}
sx={{
color: dashboardTab === 1 ? 'white' : 'rgba(255, 255, 255, 0.7)',
bgcolor: dashboardTab === 1 ? 'rgba(33, 150, 243, 0.3)' : 'transparent',
borderBottom: dashboardTab === 1 ? '2px solid #2196F3' : 'none',
borderRadius: 0,
'&:hover': { bgcolor: 'rgba(255, 255, 255, 0.05)' }
}}
>
🔍 Enterprise Analysis
</Button>
</Box>
{/* Tab Content: Overview */}
{dashboardTab === 0 && (
<>
{/* Search Performance Overview */}
<Box sx={{ mb: 4 }}>
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 3 }}>
@@ -1535,6 +1577,13 @@ const SEODashboard: React.FC = () => {
{/* SEO Copilot Component for data loading and error handling */}
<SEOCopilot />
</>
)}
{/* Tab Content: Enterprise Analysis */}
{dashboardTab === 1 && (
<SEOAnalysisController />
)}
</motion.div>
</AnimatePresence>
</Container>