mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
fase 5
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import { cn, PEC_STATE_LABELS, PEC_TYPE_LABELS } from '@/lib/utils'
|
||||
import type { PecMsgType, PecState } from '@/types/api.types'
|
||||
|
||||
interface PecBadgeProps {
|
||||
state?: PecState
|
||||
type?: PecMsgType
|
||||
className?: string
|
||||
}
|
||||
|
||||
const STATE_COLORS: Record<PecState, string> = {
|
||||
draft: 'bg-gray-100 text-gray-700 border-gray-300',
|
||||
queued: 'bg-yellow-100 text-yellow-800 border-yellow-300',
|
||||
sent: 'bg-blue-100 text-blue-800 border-blue-300',
|
||||
accepted: 'bg-cyan-100 text-cyan-800 border-cyan-300',
|
||||
delivered: 'bg-green-100 text-green-800 border-green-300',
|
||||
received: 'bg-green-100 text-green-800 border-green-300',
|
||||
anomaly: 'bg-orange-100 text-orange-800 border-orange-300',
|
||||
failed: 'bg-red-100 text-red-800 border-red-300',
|
||||
}
|
||||
|
||||
const STATE_ICONS: Record<PecState, string> = {
|
||||
draft: '📝',
|
||||
queued: '⏳',
|
||||
sent: '📤',
|
||||
accepted: '✅',
|
||||
delivered: '📬',
|
||||
received: '📥',
|
||||
anomaly: '⚠️',
|
||||
failed: '❌',
|
||||
}
|
||||
|
||||
const TYPE_COLORS: Record<string, string> = {
|
||||
posta_certificata: 'bg-blue-50 text-blue-700 border-blue-200',
|
||||
accettazione: 'bg-cyan-50 text-cyan-700 border-cyan-200',
|
||||
non_accettazione: 'bg-orange-50 text-orange-700 border-orange-200',
|
||||
avvenuta_consegna: 'bg-green-50 text-green-700 border-green-200',
|
||||
mancata_consegna: 'bg-red-50 text-red-700 border-red-200',
|
||||
errore_consegna: 'bg-red-50 text-red-700 border-red-200',
|
||||
presa_in_carico: 'bg-purple-50 text-purple-700 border-purple-200',
|
||||
preavviso_mancata_consegna: 'bg-amber-50 text-amber-700 border-amber-200',
|
||||
rilevazione_virus: 'bg-red-50 text-red-700 border-red-200',
|
||||
unknown: 'bg-gray-50 text-gray-700 border-gray-200',
|
||||
}
|
||||
|
||||
/**
|
||||
* Badge che mostra lo stato di una PEC con colore e icona.
|
||||
*/
|
||||
export function PecStateBadge({ state, className }: { state: PecState; className?: string }) {
|
||||
return (
|
||||
<span
|
||||
className={cn(
|
||||
'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium',
|
||||
STATE_COLORS[state] || 'bg-gray-100 text-gray-700 border-gray-300',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<span>{STATE_ICONS[state] || '?'}</span>
|
||||
{PEC_STATE_LABELS[state] || state}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Badge che mostra il tipo di messaggio PEC.
|
||||
*/
|
||||
export function PecTypeBadge({ type, className }: { type: PecMsgType; className?: string }) {
|
||||
return (
|
||||
<span
|
||||
className={cn(
|
||||
'inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium',
|
||||
TYPE_COLORS[type] || 'bg-gray-50 text-gray-700 border-gray-200',
|
||||
className,
|
||||
)}
|
||||
>
|
||||
{PEC_TYPE_LABELS[type] || type}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
export function PecBadge({ state, type, className }: PecBadgeProps) {
|
||||
if (state) return <PecStateBadge state={state} className={className} />
|
||||
if (type) return <PecTypeBadge type={type} className={className} />
|
||||
return null
|
||||
}
|
||||
Reference in New Issue
Block a user