Files
thrillwiki_django_no_react/static/css/approval-panel.css

332 lines
5.1 KiB
CSS

/* Approval Panel Styles */
.approval-panel {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 0.5rem;
overflow: hidden;
}
.approval-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
border-bottom: 1px solid #e5e7eb;
background: #f9fafb;
}
.approval-title {
font-size: 1.125rem;
font-weight: 600;
color: #111827;
margin: 0;
}
.approval-status {
display: inline-flex;
align-items: center;
padding: 0.25rem 0.75rem;
border-radius: 9999px;
font-size: 0.875rem;
font-weight: 500;
}
/* Status Colors */
.status-draft {
background-color: #f3f4f6;
color: #6b7280;
}
.status-pending {
background-color: #fef3c7;
color: #92400e;
}
.status-approved {
background-color: #dcfce7;
color: #166534;
}
.status-rejected {
background-color: #fee2e2;
color: #991b1b;
}
.status-applied {
background-color: #dbeafe;
color: #1e40af;
}
.status-failed {
background-color: #fee2e2;
color: #991b1b;
}
.status-reverted {
background-color: #f3f4f6;
color: #6b7280;
}
/* Stages */
.approval-stages {
padding: 1rem;
}
.approval-stage {
border: 1px solid #e5e7eb;
border-radius: 0.375rem;
margin-bottom: 1rem;
overflow: hidden;
}
.approval-stage:last-child {
margin-bottom: 0;
}
.stage-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 1rem;
background: #f9fafb;
border-bottom: 1px solid #e5e7eb;
}
.stage-name {
font-weight: 500;
color: #374151;
}
.stage-status {
font-size: 0.875rem;
font-weight: 500;
}
.stage-status.pending {
color: #92400e;
}
.stage-status.approved {
color: #166534;
}
.stage-status.rejected {
color: #991b1b;
}
.stage-details {
padding: 1rem;
}
.required-roles {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 1rem;
}
.role-badge {
background: #f3f4f6;
color: #4b5563;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 0.75rem;
font-weight: 500;
}
/* Approvers */
.approvers-list {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.approver {
padding: 0.75rem;
background: #f9fafb;
border-radius: 0.375rem;
}
.approver-info {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.5rem;
}
.approver-name {
font-weight: 500;
color: #374151;
}
.approval-date {
font-size: 0.75rem;
color: #6b7280;
}
.approver-decision {
font-size: 0.875rem;
font-weight: 500;
margin-bottom: 0.5rem;
}
.approver-decision.approved {
color: #166534;
}
.approver-decision.rejected {
color: #991b1b;
}
.approver-comment {
font-size: 0.875rem;
color: #4b5563;
padding: 0.5rem;
background: #fff;
border-radius: 0.25rem;
}
/* Approval Actions */
.approval-actions {
padding: 1rem;
border-top: 1px solid #e5e7eb;
background: #f9fafb;
}
.approval-comment {
width: 100%;
min-height: 5rem;
padding: 0.75rem;
margin-bottom: 1rem;
border: 1px solid #d1d5db;
border-radius: 0.375rem;
resize: vertical;
font-size: 0.875rem;
}
.approval-comment:focus {
outline: none;
border-color: #3b82f6;
ring: 2px solid rgba(59, 130, 246, 0.5);
}
.action-buttons {
display: flex;
justify-content: flex-end;
gap: 0.75rem;
}
.approve-button,
.reject-button {
padding: 0.5rem 1rem;
border-radius: 0.375rem;
font-size: 0.875rem;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
}
.approve-button {
background-color: #059669;
color: white;
}
.approve-button:hover {
background-color: #047857;
}
.reject-button {
background-color: #dc2626;
color: white;
}
.reject-button:hover {
background-color: #b91c1c;
}
/* History */
.approval-history {
padding: 1rem;
border-top: 1px solid #e5e7eb;
}
.approval-history-list {
display: flex;
flex-direction: column;
gap: 1rem;
}
.history-entry {
padding: 0.75rem;
background: #f9fafb;
border-radius: 0.375rem;
}
.entry-header {
display: flex;
justify-content: space-between;
margin-bottom: 0.5rem;
}
.entry-user {
font-weight: 500;
color: #374151;
}
.entry-date {
font-size: 0.75rem;
color: #6b7280;
}
.entry-action {
font-size: 0.875rem;
margin-bottom: 0.5rem;
}
.entry-action.submit {
color: #6b7280;
}
.entry-action.approve {
color: #166534;
}
.entry-action.reject {
color: #991b1b;
}
.entry-action.revert {
color: #4b5563;
}
.entry-comment {
font-size: 0.875rem;
color: #4b5563;
padding: 0.5rem;
background: #fff;
border-radius: 0.25rem;
}
/* Responsive Design */
@media (max-width: 640px) {
.approval-header {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
.action-buttons {
flex-direction: column;
}
.approve-button,
.reject-button {
width: 100%;
}
.approver-info {
flex-direction: column;
align-items: flex-start;
}
}