mirror of
https://dev.azure.com/globalhealthx/EMR/_git/helix-engage
synced 2026-04-11 18:28:15 +00:00
feat: add shared StatusBadge, SourceTag, AgeIndicator components and format utilities
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
54
src/components/shared/status-badge.tsx
Normal file
54
src/components/shared/status-badge.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
import { BadgeWithDot } from '@/components/base/badges/badges';
|
||||
import type { CampaignStatus, LeadStatus } from '@/types/entities';
|
||||
|
||||
const toTitleCase = (str: string): string =>
|
||||
str
|
||||
.toLowerCase()
|
||||
.replace(/_/g, ' ')
|
||||
.replace(/\b\w/g, (c) => c.toUpperCase());
|
||||
|
||||
type LeadStatusColor = 'blue' | 'brand' | 'success' | 'warning' | 'purple' | 'error' | 'gray';
|
||||
type CampaignStatusColor = 'gray' | 'success' | 'warning' | 'blue';
|
||||
|
||||
const leadStatusColorMap: Record<LeadStatus, LeadStatusColor> = {
|
||||
NEW: 'blue',
|
||||
CONTACTED: 'brand',
|
||||
QUALIFIED: 'success',
|
||||
NURTURING: 'warning',
|
||||
APPOINTMENT_SET: 'purple',
|
||||
CONVERTED: 'success',
|
||||
LOST: 'error',
|
||||
};
|
||||
|
||||
const campaignStatusColorMap: Record<CampaignStatus, CampaignStatusColor> = {
|
||||
DRAFT: 'gray',
|
||||
ACTIVE: 'success',
|
||||
PAUSED: 'warning',
|
||||
COMPLETED: 'blue',
|
||||
};
|
||||
|
||||
interface LeadStatusBadgeProps {
|
||||
status: LeadStatus;
|
||||
}
|
||||
|
||||
export const LeadStatusBadge = ({ status }: LeadStatusBadgeProps) => {
|
||||
const color = leadStatusColorMap[status];
|
||||
return (
|
||||
<BadgeWithDot size="sm" type="pill-color" color={color}>
|
||||
{toTitleCase(status)}
|
||||
</BadgeWithDot>
|
||||
);
|
||||
};
|
||||
|
||||
interface CampaignStatusBadgeProps {
|
||||
status: CampaignStatus;
|
||||
}
|
||||
|
||||
export const CampaignStatusBadge = ({ status }: CampaignStatusBadgeProps) => {
|
||||
const color = campaignStatusColorMap[status];
|
||||
return (
|
||||
<BadgeWithDot size="sm" type="pill-color" color={color}>
|
||||
{toTitleCase(status)}
|
||||
</BadgeWithDot>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user