import CampaignCustomersTable from '@/components/campaigns/CampaignCustomersTable'; import CampaignHeader from '@/components/campaigns/CampaignHeader'; import CampaignMetrics from '@/components/campaigns/CampaignMetrics'; import CampaignNotFound from '@/components/campaigns/CampaignNotFound'; import CampaignProductsTable from '@/components/campaigns/CampaignProductsTable'; import { useGetCampaignQuery } from '@/features/campaigns/campaignsApi'; import { selectDateRangeParams } from '@/features/dateRange/dateRangeSlice'; import { cn, fmt, formatDate } from '@/lib/utils'; import { __ } from '@wordpress/i18n'; import { useState } from 'react'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router'; const CAMPAIGN_COLORS = ['#ef4444', '#3b82f6', '#8b5cf6', '#f59e0b', '#10b981']; const TABS = [ { id: 'products', label: __('Products', 'disco') }, { id: 'customers', label: __('Customers', 'disco') }, ]; const CampaignDetails = () => { const { campaignId } = useParams(); const dateParams = useSelector(selectDateRangeParams); const { data, isLoading, isError } = useGetCampaignQuery({ id: campaignId, ...dateParams, }); const [activeTab, setActiveTab] = useState('products'); if (isError) { return ; } const campaign = data ? { dotColor: CAMPAIGN_COLORS[data.campaign_id % CAMPAIGN_COLORS.length], name: data.campaign_name, intent: data.intent, dateRange: `${formatDate(data.valid_date?.from)} - ${formatDate(data.valid_date?.to)}`, status: data.status, totalOrders: data.total_orders, customers: data.total_customers, revenue: fmt(data.revenue), } : null; return (
{isLoading ? (
{Array.from({ length: 2 }).map((_, i) => (
))}
) : campaign ? ( <> {/* Campaign header */} {/* Metric cards */} ) : null} {/* Tabs */}
{TABS.map((tab) => ( ))}
{activeTab === 'products' ? ( ) : ( )}
); }; export default CampaignDetails;