feat: redesign day picker with expandable calendar, status markers & Playwright E2E testing
- Replace modal calendar with inline expandable calendar widget integrated into the day picker. - Add status indicator dots (attended/absent/pending) to month calendar grid matching day picker. - Disable and gray out weekend days in calendar when weekend schedule is turned off. - Redesign extend bar with integrated handle that aligns with the palette. - Remove start-to-end timing on Today screen's class time rail, showing only start time. - Implement Playwright E2E and visual testing suite with multi-screen capture scripts. - Add cascade DELETE endpoints for subjects and versioned recurring timetable entries.
This commit is contained in:
@@ -16,6 +16,15 @@ export function subjectToneFor(identity: string | number, savedColor?: string):
|
||||
return matched ?? subjectTones[hash(identity) % subjectTones.length];
|
||||
}
|
||||
|
||||
export function subjectShortLabel(name: string, code: string, shortName?: string): string {
|
||||
if (shortName && shortName.trim()) return shortName.trim().slice(0, 5);
|
||||
const parts = name.trim().split(/\s+/).filter(Boolean);
|
||||
if (parts.length >= 2) {
|
||||
return parts.map((w) => w[0]).join('').toUpperCase().slice(0, 4);
|
||||
}
|
||||
return code.trim().slice(0, 4);
|
||||
}
|
||||
|
||||
export function attendanceTone(percentage: number, total: number, threshold = 75): SemanticTone {
|
||||
if (!total) return 'neutral';
|
||||
if (percentage >= threshold) return 'success';
|
||||
|
||||
Reference in New Issue
Block a user