Phase 1: Progress modal text, SiteSerializer fields, Notification store, SiteCard checklist

- Improved progress modal messages in ai/engine.py (Section 4)
- Added keywords_count and has_integration to SiteSerializer (Section 6)
- Added notificationStore.ts for frontend notifications (Section 8)
- Added NotificationDropdownNew component (Section 8)
- Added SiteSetupChecklist to SiteCard in compact mode (Section 6)
- Updated api.ts Site interface with new fields
This commit is contained in:
IGNY8 VPS (Salman)
2025-12-27 17:40:28 +00:00
parent c44bee7fa7
commit a1ec3100fd
6 changed files with 606 additions and 33 deletions

View File

@@ -2,6 +2,7 @@ import { ReactNode } from 'react';
import Switch from '../form/switch/Switch';
import Button from '../ui/button/Button';
import Badge from '../ui/badge/Badge';
import SiteSetupChecklist from '../sites/SiteSetupChecklist';
import { Site } from '../../services/api';
interface SiteCardProps {
@@ -41,6 +42,12 @@ export default function SiteCard({
const statusText = getStatusText();
// Setup checklist state derived from site data
const hasIndustry = !!site.industry || !!site.industry_name;
const hasSectors = site.active_sectors_count > 0;
const hasWordPressIntegration = site.has_integration ?? false;
const hasKeywords = (site.keywords_count ?? 0) > 0;
return (
<article className="rounded-2xl border border-gray-200 bg-white dark:border-gray-800 dark:bg-white/3">
<div className="relative p-5 pb-9">
@@ -75,6 +82,18 @@ export default function SiteCard({
</Badge>
)}
</div>
{/* Setup Checklist - Compact View */}
<div className="mt-3">
<SiteSetupChecklist
siteId={site.id}
siteName={site.name}
hasIndustry={hasIndustry}
hasSectors={hasSectors}
hasWordPressIntegration={hasWordPressIntegration}
hasKeywords={hasKeywords}
compact={true}
/>
</div>
{/* Status Text and Circle - Same row */}
<div className="absolute top-5 right-5 flex items-center gap-2">
<span className={`text-sm ${statusText.color} ${statusText.bold ? 'font-bold' : ''} transition-colors duration-200`}>