feat: add Calendar, Timesheet, and MiniTimer views

Calendar shows weekly time-block layout with hour rows, entry positioning,
current time indicator, and week navigation. Timesheet provides a weekly
grid with project/task rows, day columns, totals, and add-row functionality.
MiniTimer is a minimal always-on-top timer display for the floating window.
This commit is contained in:
Your Name
2026-02-18 10:39:08 +02:00
parent b650e981fc
commit 28d199bddc
5 changed files with 822 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ import {
Users,
FolderKanban,
List,
CalendarDays,
Grid3X3,
BarChart3,
FileText,
Settings
@@ -23,6 +25,8 @@ const navItems = [
{ name: 'Clients', path: '/clients', icon: Users },
{ name: 'Projects', path: '/projects', icon: FolderKanban },
{ name: 'Entries', path: '/entries', icon: List },
{ name: 'Calendar', path: '/calendar', icon: CalendarDays },
{ name: 'Timesheet', path: '/timesheet', icon: Grid3X3 },
{ name: 'Invoices', path: '/invoices', icon: FileText },
{ name: 'Reports', path: '/reports', icon: BarChart3 },
{ name: 'Settings', path: '/settings', icon: Settings }
@@ -65,12 +69,16 @@ function navigate(path: string) {
</button>
</div>
<!-- Timer running indicator (bottom) -->
<!-- Timer status indicator (bottom) -->
<div class="pb-4">
<div
v-if="timerStore.isRunning"
class="w-2 h-2 rounded-full bg-status-running animate-pulse-dot"
/>
<div
v-else-if="timerStore.isPaused"
class="w-2 h-2 rounded-full bg-status-warning animate-pulse-dot"
/>
</div>
</nav>
</template>