104 lines
2.6 KiB
TypeScript
104 lines
2.6 KiB
TypeScript
// ============ Types & Interfaces ============
|
|
|
|
export interface FocusTask {
|
|
id: string;
|
|
text: string;
|
|
completed: boolean;
|
|
estimatedMinutes: number;
|
|
actualMinutes: number;
|
|
createdAt: number;
|
|
completedAt?: number;
|
|
list: string;
|
|
notes: string;
|
|
scheduledDate?: string;
|
|
isActive: boolean;
|
|
}
|
|
|
|
export interface TaskList {
|
|
id: string;
|
|
name: string;
|
|
color: string;
|
|
icon: string;
|
|
}
|
|
|
|
export interface FocusTaskSettings {
|
|
pomodoroWorkMinutes: number;
|
|
pomodoroBreakMinutes: number;
|
|
longBreakMinutes: number;
|
|
longBreakInterval: number;
|
|
enableSounds: boolean;
|
|
enableCelebrations: boolean;
|
|
defaultEstimateMinutes: number;
|
|
lists: TaskList[];
|
|
autoStartBreak: boolean;
|
|
tickSoundEnabled: boolean;
|
|
// Daily note logging
|
|
logToDaily: boolean;
|
|
}
|
|
|
|
export interface FocusTaskData {
|
|
tasks: FocusTask[];
|
|
completedToday: number;
|
|
totalFocusMinutesToday: number;
|
|
streak: number;
|
|
lastActiveDate: string;
|
|
pomodorosCompleted: number;
|
|
}
|
|
|
|
export const DEFAULT_SETTINGS: FocusTaskSettings = {
|
|
pomodoroWorkMinutes: 25,
|
|
pomodoroBreakMinutes: 5,
|
|
longBreakMinutes: 15,
|
|
longBreakInterval: 4,
|
|
enableSounds: true,
|
|
enableCelebrations: true,
|
|
defaultEstimateMinutes: 30,
|
|
lists: [
|
|
{ id: 'work', name: 'Work', color: '#6366f1', icon: '💼' },
|
|
{ id: 'personal', name: 'Personal', color: '#22c55e', icon: '🏠' },
|
|
{ id: 'learning', name: 'Learning', color: '#f59e0b', icon: '📚' },
|
|
],
|
|
autoStartBreak: false,
|
|
tickSoundEnabled: false,
|
|
// Daily note logging
|
|
logToDaily: false,
|
|
};
|
|
|
|
export const DEFAULT_DATA: FocusTaskData = {
|
|
tasks: [],
|
|
completedToday: 0,
|
|
totalFocusMinutesToday: 0,
|
|
streak: 0,
|
|
lastActiveDate: '',
|
|
pomodorosCompleted: 0,
|
|
};
|
|
|
|
export const VIEW_TYPE_FOCUS_TASK = 'focus-task-view';
|
|
|
|
// ============ Celebration Messages ============
|
|
|
|
export const CELEBRATION_MESSAGES = [
|
|
{ emoji: '💥', message: 'Crushed it!' },
|
|
{ emoji: '🔥', message: 'On fire!' },
|
|
{ emoji: '⚡', message: 'Lightning fast!' },
|
|
{ emoji: '🎯', message: 'Bullseye!' },
|
|
{ emoji: '🚀', message: 'Blasting through!' },
|
|
{ emoji: '💪', message: 'Strong work!' },
|
|
{ emoji: '🌟', message: 'Stellar!' },
|
|
{ emoji: '✨', message: 'Brilliant!' },
|
|
{ emoji: '🏆', message: 'Champion!' },
|
|
{ emoji: '🎉', message: 'Well done!' },
|
|
];
|
|
|
|
export const EARLY_FINISH_MESSAGES = [
|
|
{ emoji: '⚡', message: 'Speed demon! Finished early!' },
|
|
{ emoji: '🏎️', message: 'Faster than expected!' },
|
|
{ emoji: '🎯', message: 'Under budget! Nice work!' },
|
|
];
|
|
|
|
export const OVERTIME_MESSAGES = [
|
|
{ emoji: '💪', message: 'Persistence pays off!' },
|
|
{ emoji: '🏃', message: 'Marathon runner!' },
|
|
{ emoji: '🔥', message: 'The grind is real!' },
|
|
];
|