d35c806d5b
- Added comprehensive comments and JSDoc-style documentation to NotificationProvider, ThemeProvider, UserProvider, and WebsiteThemeProvider for better clarity and maintainability. - Improved type definitions in index.ts for better code understanding and usage. - Introduced Docker support with Dockerfiles for various services including AI server, signaling server, and browser-use service. - Created a docker-compose.yml file to orchestrate multiple services including PostgreSQL, AI, scraper, and frontend. - Added a startup guide (startup.txt) for setting up the CRM environment on Ubuntu with Docker. - Included a .dockerignore file to exclude unnecessary files from Docker builds.
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
// ── Leads: Status Badge Component ──
|
|
// Color-coded badge component for lead status (Open, Contacted, Pending, Closed, Ignored).
|
|
|
|
"use client"
|
|
|
|
import { Badge } from "@/components/ui/badge"
|
|
import { LeadStatus } from "@/types"
|
|
import { cn } from "@/lib/utils"
|
|
|
|
/** Color and label configuration for each lead status */
|
|
const statusConfig: Record<LeadStatus, { label: string; class: string }> = {
|
|
open: {
|
|
label: "Open",
|
|
class: "bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/20",
|
|
},
|
|
contacted: {
|
|
label: "Contacted",
|
|
class: "bg-amber-500/10 text-amber-600 dark:text-amber-400 border-amber-500/20",
|
|
},
|
|
pending: {
|
|
label: "Pending",
|
|
class: "bg-purple-500/10 text-purple-600 dark:text-purple-400 border-purple-500/20",
|
|
},
|
|
closed: {
|
|
label: "Closed",
|
|
class: "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 border-emerald-500/20",
|
|
},
|
|
ignored: {
|
|
label: "Ignored",
|
|
class: "bg-zinc-500/10 text-zinc-600 dark:text-zinc-400 border-zinc-500/20",
|
|
},
|
|
}
|
|
|
|
interface LeadStatusBadgeProps {
|
|
status: LeadStatus
|
|
className?: string
|
|
}
|
|
|
|
/**
|
|
* LeadStatusBadge — renders a colored pill badge with a dot icon for the given lead status.
|
|
*/
|
|
export function LeadStatusBadge({ status, className }: LeadStatusBadgeProps) {
|
|
const config = statusConfig[status]
|
|
return (
|
|
<Badge variant="outline" className={cn(config.class, className)}>
|
|
<span className={cn("mr-1.5 h-1.5 w-1.5 rounded-full", {
|
|
"bg-blue-500": status === "open",
|
|
"bg-amber-500": status === "contacted",
|
|
"bg-purple-500": status === "pending",
|
|
"bg-emerald-500": status === "closed",
|
|
"bg-zinc-500": status === "ignored",
|
|
})} />
|
|
{config.label}
|
|
</Badge>
|
|
)
|
|
}
|