From cab5e5810a59882ded2f8ad76629f444787cf521 Mon Sep 17 00:00:00 2001 From: Avery Felts Date: Fri, 23 Jan 2026 21:45:04 -0700 Subject: [PATCH] Add clear day option to calendar - Add clearDayData function to remove specific day's usage - Add "Clear This Day" button in calendar edit dialog - Allows users to reset individual days without clearing all data Co-Authored-By: Claude Opus 4.5 --- src/components/UsageCalendar.tsx | 22 +++++++++++++++++++++- src/lib/storage.ts | 7 +++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/UsageCalendar.tsx b/src/components/UsageCalendar.tsx index 1a63610..c6f862f 100644 --- a/src/components/UsageCalendar.tsx +++ b/src/components/UsageCalendar.tsx @@ -12,7 +12,7 @@ import { import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; -import { UsageEntry, getUsageForDate, setUsageForDate } from '@/lib/storage'; +import { UsageEntry, getUsageForDate, setUsageForDate, clearDayData } from '@/lib/storage'; import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-react'; interface UsageCalendarProps { @@ -59,6 +59,17 @@ export function UsageCalendar({ usageData, substance, onDataUpdate }: UsageCalen setEditCount(''); }; + const handleClearDay = () => { + if (selectedDate) { + const dateStr = selectedDate.toISOString().split('T')[0]; + clearDayData(dateStr, substance); + onDataUpdate(); + } + setIsEditing(false); + setSelectedDate(undefined); + setEditCount(''); + }; + const getUsageCount = useCallback((date: Date): number => { const dateStr = date.toISOString().split('T')[0]; const entry = usageData.find((e) => e.date === dateStr && e.substance === substance); @@ -179,6 +190,15 @@ export function UsageCalendar({ usageData, substance, onDataUpdate }: UsageCalen Save +
+ +
diff --git a/src/lib/storage.ts b/src/lib/storage.ts index ba8cefa..6c57b0a 100644 --- a/src/lib/storage.ts +++ b/src/lib/storage.ts @@ -191,6 +191,13 @@ export function getCurrentWeekTarget(): number | null { return prefs.quitPlan.weeklyTargets[weekNumber]; } +export function clearDayData(date: string, substance: 'nicotine' | 'weed'): void { + if (typeof window === 'undefined') return; + const data = getUsageData(); + const filtered = data.filter((e) => !(e.date === date && e.substance === substance)); + localStorage.setItem(USAGE_KEY, JSON.stringify(filtered)); +} + export function clearAllData(): void { if (typeof window === 'undefined') return; localStorage.removeItem(USAGE_KEY);