SES SNS Bounce Handling

This commit is contained in:
James Pattinson
2025-10-13 15:05:42 +00:00
parent ac23638125
commit 72f3297a80
12 changed files with 1276 additions and 3 deletions

View File

@@ -624,6 +624,32 @@ body {
color: var(--gray-600);
}
/* Bounce badges */
.bounce-badge {
display: inline-flex;
align-items: center;
gap: var(--space-1);
padding: var(--space-1) var(--space-2);
border-radius: var(--radius-sm);
font-size: var(--font-size-xs);
font-weight: 500;
}
.bounce-badge.bounce-hard {
background: #fee2e2;
color: #991b1b;
}
.bounce-badge.bounce-soft {
background: #fef3c7;
color: #92400e;
}
.bounce-badge.bounce-warning {
background: #fef9c3;
color: #854d0e;
}
/* Role badges */
.role-badge {
display: inline-flex;
@@ -1478,4 +1504,148 @@ body {
.fade-in {
animation: fadeIn 0.3s ease-out;
}
}
/* Bounce History Modal Styles */
.bounce-summary {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: var(--space-4);
margin: var(--space-6) 0;
padding: var(--space-4);
background: var(--gray-50);
border-radius: var(--radius);
}
.bounce-stat {
display: flex;
align-items: center;
gap: var(--space-3);
}
.bounce-stat i {
font-size: 1.5rem;
color: var(--primary-color);
}
.bounce-stat-label {
font-size: var(--font-size-xs);
color: var(--gray-500);
text-transform: uppercase;
letter-spacing: 0.5px;
}
.bounce-stat-value {
font-size: var(--font-size-lg);
font-weight: 600;
color: var(--gray-800);
}
.bounce-stat-value.text-danger {
color: var(--danger-color);
}
.bounce-stat-value.text-warning {
color: var(--warning-color);
}
.bounce-stat-value.text-success {
color: var(--success-color);
}
.bounce-history-section {
margin-top: var(--space-6);
}
.bounce-history-section h5 {
margin-bottom: var(--space-4);
color: var(--gray-700);
}
.bounce-history-list {
max-height: 400px;
overflow-y: auto;
padding: var(--space-2);
}
.bounce-history-item {
background: var(--white);
border: 1px solid var(--gray-200);
border-radius: var(--radius);
padding: var(--space-4);
margin-bottom: var(--space-3);
}
.bounce-history-item:last-child {
margin-bottom: 0;
}
.bounce-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--space-2);
}
.bounce-type {
display: inline-flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-1) var(--space-3);
border-radius: var(--radius-sm);
font-size: var(--font-size-sm);
font-weight: 600;
}
.bounce-type.bounce-type-permanent {
background: #fee2e2;
color: #991b1b;
}
.bounce-type.bounce-type-transient {
background: #fef3c7;
color: #92400e;
}
.bounce-type.bounce-type-undetermined {
background: var(--gray-100);
color: var(--gray-600);
}
.bounce-date {
font-size: var(--font-size-sm);
color: var(--gray-500);
}
.bounce-subtype {
font-size: var(--font-size-sm);
color: var(--gray-600);
margin-top: var(--space-2);
font-weight: 500;
}
.bounce-diagnostic {
font-size: var(--font-size-sm);
color: var(--gray-500);
margin-top: var(--space-2);
padding: var(--space-2);
background: var(--gray-50);
border-radius: var(--radius-sm);
border-left: 3px solid var(--warning-color);
font-family: 'Courier New', monospace;
}
.empty-state {
text-align: center;
padding: var(--space-8);
color: var(--gray-400);
}
.empty-state i {
font-size: 3rem;
margin-bottom: var(--space-4);
color: var(--success-color);
}
.empty-state p {
font-size: var(--font-size-sm);
}