paul.roost 5ecda7eef7 feat: Add DetailPage and HomePage components with KPI visualization
- Implemented DetailPage for detailed KPI analysis including charts and status badges.
- Created HomePage to display an overview of KPIs categorized by security, quality, delays, costs, and maintenance.
- Introduced KPI types and data structures for better type safety.
- Added styles for DetailPage, HomePage, KPICard, and charts for improved UI.
- Integrated web vitals reporting and setup tests for better performance tracking and testing.
- Included a CSV file with mathematical formulas for KPI calculations.
2025-10-21 12:23:45 +02:00

98 lines
1.5 KiB
CSS

.kpi-card {
background: white;
border-radius: 6px;
padding: 1.2rem;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
border-left: 4px solid #667eea;
transition: all 0.3s ease;
}
.kpi-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}
.kpi-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 0.8rem;
padding-bottom: 0.8rem;
border-bottom: 1px solid #f0f0f0;
}
.kpi-title {
font-size: 0.95rem;
font-weight: 600;
margin: 0;
color: inherit;
}
.kpi-trend {
font-size: 1.2rem;
}
.kpi-value-section {
margin-bottom: 0.8rem;
}
.kpi-value {
font-size: 1.8rem;
font-weight: bold;
color: #333;
line-height: 1;
margin-bottom: 0.2rem;
}
.kpi-unit {
font-size: 0.75rem;
color: #999;
}
.kpi-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.8rem;
gap: 0.5rem;
}
.kpi-status {
display: inline-block;
padding: 0.3rem 0.6rem;
border-radius: 16px;
font-size: 0.7rem;
font-weight: 600;
white-space: nowrap;
}
.kpi-status.status-good {
background: #d4edda;
color: #155724;
}
.kpi-status.status-warning {
background: #fff3cd;
color: #856404;
}
.kpi-status.status-critical {
background: #f8d7da;
color: #721c24;
}
.kpi-target {
font-size: 0.7rem;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.kpi-description {
font-size: 0.75rem;
color: #666;
line-height: 1.3;
margin: 0;
}