Implement three deletion modes for recurring events: - single: exclude specific occurrence via EXDATE mechanism - future: set RRULE UNTIL to stop future occurrences - all: delete entire event series Changes include: - Add exceptionDates field to CalendarEvent model - Add RecurringDeleteMode type and DeleteRecurringEventDTO - EventService.deleteRecurring() with mode-based logic using rrule library - EventController DELETE endpoint accepts mode/occurrenceDate query params - recurrenceExpander filters out exception dates during expansion - AI tools support deleteMode and occurrenceDate for proposed deletions - ChatService.confirmEvent() handles recurring delete modes - New DeleteEventModal component for unified delete confirmation UI - Calendar screen integrates modal for both recurring and non-recurring events
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
export type Theme = {
|
|
chatBot: string;
|
|
primeFg: string;
|
|
primeBg: string;
|
|
secondaryBg: string;
|
|
messageBorderBg: string;
|
|
placeholderBg: string;
|
|
calenderBg: string;
|
|
confirmButton: string;
|
|
rejectButton: string;
|
|
disabledButton: string;
|
|
buttonText: string;
|
|
textPrimary: string;
|
|
textSecondary: string;
|
|
textMuted: string;
|
|
eventIndicator: string;
|
|
borderPrimary: string;
|
|
shadowColor: string;
|
|
};
|
|
|
|
export const THEMES = {
|
|
defaultLight: {
|
|
chatBot: "#DE6C20",
|
|
primeFg: "#3B3329",
|
|
primeBg: "#FFEEDE",
|
|
secondaryBg: "#FFFFFF",
|
|
messageBorderBg: "#FFFFFF",
|
|
placeholderBg: "#D9D9D9",
|
|
calenderBg: "#FBD5B2",
|
|
confirmButton: "#22c55e",
|
|
rejectButton: "#ef4444",
|
|
disabledButton: "#ccc",
|
|
buttonText: "#000000",
|
|
textPrimary: "#000000",
|
|
textSecondary: "#666",
|
|
textMuted: "#888",
|
|
eventIndicator: "#DE6C20",
|
|
borderPrimary: "#000000",
|
|
shadowColor: "#000000",
|
|
},
|
|
defaultDark: {
|
|
chatBot: "#DE6C20",
|
|
primeFg: "#F5E6D3",
|
|
primeBg: "#1A1512",
|
|
secondaryBg: "#2A2420",
|
|
messageBorderBg: "#3A3430",
|
|
placeholderBg: "#4A4440",
|
|
calenderBg: "#3D2A1A",
|
|
confirmButton: "#22c55e",
|
|
rejectButton: "#ef4444",
|
|
disabledButton: "#555",
|
|
buttonText: "#FFFFFF",
|
|
textPrimary: "#FFFFFF",
|
|
textSecondary: "#AAA",
|
|
textMuted: "#777",
|
|
eventIndicator: "#DE6C20",
|
|
borderPrimary: "#FFFFFF",
|
|
shadowColor: "#FFFFFF",
|
|
},
|
|
} as const satisfies Record<string, Theme>;
|