feat: build Campaigns list and Campaign Detail pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-16 15:01:00 +05:30
parent 7970a34434
commit 41eadad0b3
11 changed files with 933 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
import { BadgeWithDot } from '@/components/base/badges/badges';
import type { CampaignStatus, LeadStatus } from '@/types/entities';
import type { AdStatus, CampaignStatus, LeadStatus } from '@/types/entities';
const toTitleCase = (str: string): string =>
str
@@ -52,3 +52,25 @@ export const CampaignStatusBadge = ({ status }: CampaignStatusBadgeProps) => {
</BadgeWithDot>
);
};
type AdStatusColor = 'gray' | 'success' | 'warning' | 'blue';
const adStatusColorMap: Record<AdStatus, AdStatusColor> = {
DRAFT: 'gray',
ACTIVE: 'success',
PAUSED: 'warning',
ENDED: 'blue',
};
interface AdStatusBadgeProps {
status: AdStatus;
}
export const AdStatusBadge = ({ status }: AdStatusBadgeProps) => {
const color = adStatusColorMap[status];
return (
<BadgeWithDot size="sm" type="pill-color" color={color}>
{toTitleCase(status)}
</BadgeWithDot>
);
};