| 1 | import { Badge } from '@/components/ui/badge' |
| 2 | import { cn } |
| 3 | import type { statusEnum |
| 4 | import type { Role |
| 5 | |
| 6 | export type Status |
| 7 | |
| 8 | const variants: Record |
| 9 | Status, |
| 10 | { label: |
| 11 | > = { |
| 12 | draft: { |
| 13 | label: 'Draft', |
| 14 | className: 'bg-muted text-muted-foreground border-muted', |
| 15 | }, |
| 16 | submitted_to_admin: { |
| 17 | label: 'Pending Review', |
| 18 | className: |
| 19 | 'bg-blue-100 text-blue-800 border-blue-200 dark:bg-blue-900/40 dark:text-blue-300 dark:border-blue-800', |
| 20 | }, |
| 21 | admin_accepted: { |
| 22 | label: 'Approved', |
| 23 | className: |
| 24 | 'bg-green-100 text-green-800 border-green-200 dark:bg-green-900/40 dark:text-green-300 dark:border-green-800', |
| 25 | }, |
| 26 | admin_rejected: { |
| 27 | label: 'Rejected', |
| 28 | className: |
| 29 | 'bg-red-100 text-red-800 border-red-200 dark:bg-red-900/40 dark:text-red-300 dark:border-red-800', |
| 30 | }, |
| 31 | submitted_to_client: { |
| 32 | label: 'Sent to Client', |
| 33 | clientLabel: 'Pending Your Signature', |
| 34 | className: |
| 35 | 'bg-purple-100 text-purple-800 border-purple-200 dark:bg-purple-900/40 dark:text-purple-300 dark:border-purple-800', |
| 36 | }, |
| 37 | client_accepted: { |
| 38 | label: 'Client Signed', |
| 39 | clientLabel: 'Signed', |
| 40 | className: |
| 41 | 'bg-emerald-100 text-emerald-800 border-emerald-200 dark:bg-emerald-900/40 dark:text-emerald-300 dark:border-emerald-800', |
| 42 | }, |
| 43 | client_rejected: { |
| 44 | label: 'Client Declined', |
| 45 | clientLabel: 'Declined', |
| 46 | className: |
| 47 | 'bg-red-100 text-red-800 border-red-200 dark:bg-red-900/40 dark:text-red-300 dark:border-red-800', |
| 48 | }, |
| 49 | changes_requested: { |
| 50 | label: 'Changes Requested', |
| 51 | className: |
| 52 | 'bg-amber-100 text-amber-800 border-amber-200 dark:bg-amber-900/40 dark:text-amber-300 dark:border-amber-800', |
| 53 | }, |
| 54 | } |
| 55 | |
| 56 | export default function StatusBadge |
| 57 | status, |
| 58 | role, |
| 59 | }: { |
| 60 | status: Status |
| 61 | role?: Role |
| 62 | }) { |
| 63 | const variant = |
| 64 | const label = |
| 65 | role === 'client' |
| 66 | ? variant.clientLabel |
| 67 | : variant.label |
| 68 | |
| 69 | return ( |
| 70 | <Badge className={ |
| 71 | {label} |
| 72 | </Badge> |
| 73 | ) |
| 74 | } |