feat: add daily/weekly goals, streaks, and time rounding

Settings Timer tab now has daily/weekly goal hour inputs. Dashboard
shows goal progress bars and streak counter. Settings Billing tab
has rounding toggle with increment and method selectors. New
rounding.ts utility for nearest/up/down time rounding.
This commit is contained in:
Your Name
2026-02-18 10:51:56 +02:00
parent 8c56867764
commit 55505b2b6b
2 changed files with 154 additions and 0 deletions

10
src/utils/rounding.ts Normal file
View File

@@ -0,0 +1,10 @@
export function roundDuration(seconds: number, incrementMinutes: number, method: 'nearest' | 'up' | 'down'): number {
if (incrementMinutes <= 0) return seconds
const incSeconds = incrementMinutes * 60
switch (method) {
case 'up': return Math.ceil(seconds / incSeconds) * incSeconds
case 'down': return Math.floor(seconds / incSeconds) * incSeconds
case 'nearest': return Math.round(seconds / incSeconds) * incSeconds
default: return seconds
}
}