epoch-tui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +3 -0
- package/dist/App.js +38 -0
- package/dist/components/calendar/CalendarPane.d.ts +2 -0
- package/dist/components/calendar/CalendarPane.js +91 -0
- package/dist/components/calendar/DayCell.d.ts +7 -0
- package/dist/components/calendar/DayCell.js +26 -0
- package/dist/components/calendar/MonthView.d.ts +7 -0
- package/dist/components/calendar/MonthView.js +10 -0
- package/dist/components/common/BorderedBox.d.ts +18 -0
- package/dist/components/common/BorderedBox.js +29 -0
- package/dist/components/common/ClearTimelineDialog.d.ts +2 -0
- package/dist/components/common/ClearTimelineDialog.js +33 -0
- package/dist/components/common/FullscreenBackground.d.ts +11 -0
- package/dist/components/common/FullscreenBackground.js +12 -0
- package/dist/components/common/HelpDialog.d.ts +2 -0
- package/dist/components/common/HelpDialog.js +40 -0
- package/dist/components/common/Modal.d.ts +10 -0
- package/dist/components/common/Modal.js +15 -0
- package/dist/components/common/Separator.d.ts +8 -0
- package/dist/components/common/Separator.js +10 -0
- package/dist/components/common/ThemeDialog.d.ts +2 -0
- package/dist/components/common/ThemeDialog.js +117 -0
- package/dist/components/common/ThemedScreen.d.ts +22 -0
- package/dist/components/common/ThemedScreen.js +36 -0
- package/dist/components/common/ThemedText.d.ts +11 -0
- package/dist/components/common/ThemedText.js +20 -0
- package/dist/components/layout/Pane.d.ts +12 -0
- package/dist/components/layout/Pane.js +10 -0
- package/dist/components/layout/ThreeColumnLayout.d.ts +13 -0
- package/dist/components/layout/ThreeColumnLayout.js +22 -0
- package/dist/components/overview/OverviewScreen.d.ts +2 -0
- package/dist/components/overview/OverviewScreen.js +138 -0
- package/dist/components/tasks/TaskHeader.d.ts +7 -0
- package/dist/components/tasks/TaskHeader.js +8 -0
- package/dist/components/tasks/TaskItem.d.ts +10 -0
- package/dist/components/tasks/TaskItem.js +25 -0
- package/dist/components/tasks/TaskList.d.ts +11 -0
- package/dist/components/tasks/TaskList.js +11 -0
- package/dist/components/tasks/TasksPane.d.ts +2 -0
- package/dist/components/tasks/TasksPane.js +410 -0
- package/dist/components/timeline/TimelineEntry.d.ts +9 -0
- package/dist/components/timeline/TimelineEntry.js +26 -0
- package/dist/components/timeline/TimelinePane.d.ts +2 -0
- package/dist/components/timeline/TimelinePane.js +78 -0
- package/dist/contexts/AppContext.d.ts +47 -0
- package/dist/contexts/AppContext.js +104 -0
- package/dist/contexts/StorageContext.d.ts +15 -0
- package/dist/contexts/StorageContext.js +83 -0
- package/dist/contexts/ThemeContext.d.ts +15 -0
- package/dist/contexts/ThemeContext.js +44 -0
- package/dist/hooks/useKeyboardNav.d.ts +1 -0
- package/dist/hooks/useKeyboardNav.js +89 -0
- package/dist/hooks/useTerminalSize.d.ts +9 -0
- package/dist/hooks/useTerminalSize.js +34 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/services/calendarService.d.ts +18 -0
- package/dist/services/calendarService.js +57 -0
- package/dist/services/storage.d.ts +14 -0
- package/dist/services/storage.js +130 -0
- package/dist/services/taskService.d.ts +17 -0
- package/dist/services/taskService.js +106 -0
- package/dist/services/timelineService.d.ts +25 -0
- package/dist/services/timelineService.js +78 -0
- package/dist/themes/amazon.d.ts +2 -0
- package/dist/themes/amazon.js +37 -0
- package/dist/themes/amazonLight.d.ts +2 -0
- package/dist/themes/amazonLight.js +38 -0
- package/dist/themes/apple.d.ts +2 -0
- package/dist/themes/apple.js +38 -0
- package/dist/themes/appleLight.d.ts +2 -0
- package/dist/themes/appleLight.js +38 -0
- package/dist/themes/atomOneDark.d.ts +2 -0
- package/dist/themes/atomOneDark.js +37 -0
- package/dist/themes/atomOneLight.d.ts +2 -0
- package/dist/themes/atomOneLight.js +38 -0
- package/dist/themes/batman.d.ts +2 -0
- package/dist/themes/batman.js +37 -0
- package/dist/themes/catppuccin.d.ts +2 -0
- package/dist/themes/catppuccin.js +37 -0
- package/dist/themes/catppuccinLatte.d.ts +2 -0
- package/dist/themes/catppuccinLatte.js +38 -0
- package/dist/themes/claude.d.ts +2 -0
- package/dist/themes/claude.js +48 -0
- package/dist/themes/claudeCode.d.ts +2 -0
- package/dist/themes/claudeCode.js +47 -0
- package/dist/themes/cursor.d.ts +2 -0
- package/dist/themes/cursor.js +38 -0
- package/dist/themes/cursorLight.d.ts +2 -0
- package/dist/themes/cursorLight.js +38 -0
- package/dist/themes/dark.d.ts +2 -0
- package/dist/themes/dark.js +38 -0
- package/dist/themes/githubDark.d.ts +2 -0
- package/dist/themes/githubDark.js +37 -0
- package/dist/themes/githubLight.d.ts +2 -0
- package/dist/themes/githubLight.js +38 -0
- package/dist/themes/index.d.ts +9 -0
- package/dist/themes/index.js +83 -0
- package/dist/themes/instagram.d.ts +2 -0
- package/dist/themes/instagram.js +37 -0
- package/dist/themes/instagramLight.d.ts +2 -0
- package/dist/themes/instagramLight.js +38 -0
- package/dist/themes/intellij.d.ts +2 -0
- package/dist/themes/intellij.js +37 -0
- package/dist/themes/intellijLight.d.ts +2 -0
- package/dist/themes/intellijLight.js +38 -0
- package/dist/themes/light.d.ts +2 -0
- package/dist/themes/light.js +38 -0
- package/dist/themes/nord.d.ts +2 -0
- package/dist/themes/nord.js +37 -0
- package/dist/themes/nordLight.d.ts +2 -0
- package/dist/themes/nordLight.js +38 -0
- package/dist/themes/postman.d.ts +2 -0
- package/dist/themes/postman.js +37 -0
- package/dist/themes/postmanLight.d.ts +2 -0
- package/dist/themes/postmanLight.js +38 -0
- package/dist/themes/spiderman.d.ts +2 -0
- package/dist/themes/spiderman.js +37 -0
- package/dist/themes/terminal.d.ts +2 -0
- package/dist/themes/terminal.js +37 -0
- package/dist/themes/ubuntu.d.ts +2 -0
- package/dist/themes/ubuntu.js +37 -0
- package/dist/themes/ubuntuLight.d.ts +2 -0
- package/dist/themes/ubuntuLight.js +38 -0
- package/dist/themes/x.d.ts +2 -0
- package/dist/themes/x.js +38 -0
- package/dist/themes/xLight.d.ts +2 -0
- package/dist/themes/xLight.js +38 -0
- package/dist/types/calendar.d.ts +19 -0
- package/dist/types/calendar.js +1 -0
- package/dist/types/storage.d.ts +21 -0
- package/dist/types/storage.js +1 -0
- package/dist/types/task.d.ts +21 -0
- package/dist/types/task.js +1 -0
- package/dist/types/theme.d.ts +38 -0
- package/dist/types/theme.js +1 -0
- package/dist/types/timeline.d.ts +23 -0
- package/dist/types/timeline.js +9 -0
- package/dist/utils/date.d.ts +7 -0
- package/dist/utils/date.js +37 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.js +39 -0
- package/dist/utils/tree.d.ts +11 -0
- package/dist/utils/tree.js +64 -0
- package/dist/utils/validation.d.ts +7 -0
- package/dist/utils/validation.js +35 -0
- package/package.json +44 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Task } from '../types/task';
|
|
2
|
+
export interface ValidationResult {
|
|
3
|
+
valid: boolean;
|
|
4
|
+
error?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const validateTaskTimes: (task: Task) => ValidationResult;
|
|
7
|
+
export declare const validateTaskTitle: (title: string) => ValidationResult;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const validateTaskTimes = (task) => {
|
|
2
|
+
if (task.startTime && task.endTime) {
|
|
3
|
+
if (task.startTime >= task.endTime) {
|
|
4
|
+
return {
|
|
5
|
+
valid: false,
|
|
6
|
+
error: 'Start time must be before end time',
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
if (task.startTime && !task.endTime) {
|
|
11
|
+
// Task has been started but not completed
|
|
12
|
+
if (task.startTime > new Date()) {
|
|
13
|
+
return {
|
|
14
|
+
valid: false,
|
|
15
|
+
error: 'Start time cannot be in the future',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return { valid: true };
|
|
20
|
+
};
|
|
21
|
+
export const validateTaskTitle = (title) => {
|
|
22
|
+
if (!title || title.trim().length === 0) {
|
|
23
|
+
return {
|
|
24
|
+
valid: false,
|
|
25
|
+
error: 'Task title cannot be empty',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (title.length > 255) {
|
|
29
|
+
return {
|
|
30
|
+
valid: false,
|
|
31
|
+
error: 'Task title is too long (max 255 characters)',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return { valid: true };
|
|
35
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "epoch-tui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A TUI app for daily task logging and time tracking",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"epoch": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"dev": "tsx src/index.tsx",
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"start": "node dist/index.js",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"tui",
|
|
21
|
+
"task-logging",
|
|
22
|
+
"time-tracking",
|
|
23
|
+
"cli"
|
|
24
|
+
],
|
|
25
|
+
"author": "",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@inkjs/ui": "^2.0.0",
|
|
29
|
+
"chalk": "^5.6.2",
|
|
30
|
+
"date-fns": "^4.1.0",
|
|
31
|
+
"ink": "^6.6.0",
|
|
32
|
+
"ink-select-input": "^6.2.0",
|
|
33
|
+
"ink-text-input": "^6.0.0",
|
|
34
|
+
"react": "^19.2.3",
|
|
35
|
+
"uuid": "^13.0.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^20.10.6",
|
|
39
|
+
"@types/react": "^19.2.7",
|
|
40
|
+
"@types/uuid": "^11.0.0",
|
|
41
|
+
"tsx": "^4.7.0",
|
|
42
|
+
"typescript": "^5.3.3"
|
|
43
|
+
}
|
|
44
|
+
}
|