Round 23: Report Card Generator, Seating Chart, School Library, Parent Portal Enhancement
- Report Card Generator: Professional report cards with PDF export - Subject grades table with competency levels - Competency radar chart, teacher comments - Template management, batch generation - Status workflow: draft → review → published → archived - Seating Chart View: Visual classroom layout - Grid-based classroom with desk positions - Multiple layout templates (rows, groups, U-shape, circle) - Click-to-assign student placement - Randomize and smart arrange features - Student info popover - School Library View: Book lending system - Book catalog with search and filter - Checkout system with due dates and renewals - Overdue tracking with notifications - Reservation queue system - Statistics dashboard with charts - Enhanced Parent Portal: Comprehensive dashboard - Child overview with multiple children selector - Academic progress with competency radar chart - Attendance & illness with approval - Communication, schedule, and reports tabs - Bug fixes: i18n breadcrumb keys for new views - Styling: Gradient headers, animations, hover effects across all new views - 200+ i18n keys added, 15+ API routes, 3+ Prisma models
This commit is contained in:
1 parent
490bd0650f
commit
6e5af13778
28 files changed
+10252
-494
No files matched your search
@@ -3212,4 +3212,99 @@
|
||||
.class-card-active:hover::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Report Card View - Badge shimmer animation */
|
||||
@keyframes shimmer {
|
||||
0% { transform: translateX(-100%); }
|
||||
100% { transform: translateX(100%); }
|
||||
}
|
||||
|
||||
/* Report Card View - Print styles */
|
||||
@media print {
|
||||
.report-card-print {
|
||||
box-shadow: none !important;
|
||||
border: 1px solid #e5e7eb !important;
|
||||
}
|
||||
.report-card-print * {
|
||||
color-adjust: exact;
|
||||
-webkit-print-color-adjust: exact;
|
||||
print-color-adjust: exact;
|
||||
}
|
||||
.no-print {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Seating Chart - Desk hover glow */
|
||||
@keyframes desk-glow {
|
||||
0%, 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
|
||||
50% { box-shadow: 0 0 8px 2px rgba(16, 185, 129, 0.3); }
|
||||
}
|
||||
|
||||
/* Seating Chart - Empty desk dashed border animation */
|
||||
@keyframes dash-march {
|
||||
to { stroke-dashoffset: -12; }
|
||||
}
|
||||
|
||||
/* Library - Book card hover lift */
|
||||
.book-card-hover {
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.book-card-hover:hover {
|
||||
transform: translateY(-4px) scale(1.01);
|
||||
box-shadow: 0 12px 24px -8px rgba(16, 185, 129, 0.15), 0 4px 8px -2px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
/* Library - Availability pulse */
|
||||
@keyframes availability-pulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.6; }
|
||||
}
|
||||
.availability-pulse {
|
||||
animation: availability-pulse 2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
/* Library - Overdue gradient border */
|
||||
.overdue-gradient-border {
|
||||
position: relative;
|
||||
}
|
||||
.overdue-gradient-border::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: 0.5rem;
|
||||
padding: 2px;
|
||||
background: linear-gradient(135deg, #ef4444, #f97316, #ef4444);
|
||||
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||
mask-composite: exclude;
|
||||
-webkit-mask-composite: xor;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Parent Portal - Circular progress gradient */
|
||||
@keyframes progress-fill-animate {
|
||||
from { stroke-dashoffset: var(--circumference); }
|
||||
to { stroke-dashoffset: var(--offset); }
|
||||
}
|
||||
|
||||
/* Parent Portal - Tab transition */
|
||||
.tab-content-enter {
|
||||
animation: tab-enter 0.3s ease-out;
|
||||
}
|
||||
@keyframes tab-enter {
|
||||
from { opacity: 0; transform: translateY(8px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* Glassmorphism card style */
|
||||
.glass-card {
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.dark .glass-card {
|
||||
background: rgba(24, 24, 27, 0.7);
|
||||
border: 1px solid rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user