implement chat messaging with event proposals

- Add functional chat with server communication and test responses
- Add ProposedEventCard component for confirm/reject actions
- Move Constants (Day, Month) from client to shared package
- Add dateHelpers utility for weekday calculations
- Extend Themes.tsx with button and text colors
- Update CLAUDE.md with current implementation status
- Add *.tsbuildinfo to .gitignore
This commit is contained in:
2026-01-04 00:01:26 +01:00
parent e553103470
commit c33508a227
17 changed files with 456 additions and 295 deletions

View File

@@ -0,0 +1,31 @@
import { Day, DAY_INDEX } from '../models/Constants';
/**
* Get a date for a specific weekday relative to today.
* @param day - The target day (e.g., "Friday")
* @param offset - 1 = next occurrence, 2 = the one after, -1 = last occurrence, etc.
* @param hour - Hour of day (0-23)
* @param minute - Minute (0-59)
*/
export function getDay(day: Day, offset: number, hour: number, minute: number): Date {
const today = new Date();
const currentDay = today.getDay();
const targetDay = DAY_INDEX[day];
let daysUntil = targetDay - currentDay;
if (offset > 0) {
// Future: if target is today or past, move to next week
if (daysUntil <= 0) daysUntil += 7;
daysUntil += (offset - 1) * 7;
} else if (offset < 0) {
// Past: if target is today or future, move to last week
if (daysUntil >= 0) daysUntil -= 7;
daysUntil += (offset + 1) * 7;
}
const result = new Date(today);
result.setDate(today.getDate() + daysUntil);
result.setHours(hour, minute, 0, 0);
return result;
}

View File

@@ -0,0 +1 @@
export * from './dateHelpers';