From 5297ab76bab88e40db769db045f86e69f303c7f4 Mon Sep 17 00:00:00 2001 From: Mannu Date: Sun, 24 May 2026 00:26:43 +0530 Subject: [PATCH] Activity: each feed/sleep/diaper row independently tappable in 4-day strip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each row in a day chip is now its own button. Tapping πŸΌΓ—2 on Thursday opens a sheet scoped to feeds on Thursday only β€” not all logs for that day. Sheet shows entries for that specific type, with edit/delete per entry and a single focused "+ Add [type]" CTA at the bottom. Rows showing Γ—0 render dimmed so missing entries stand out at a glance. Co-Authored-By: Claude Sonnet 4.6 --- src/app/activity/page.tsx | 109 +++++++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 36 deletions(-) diff --git a/src/app/activity/page.tsx b/src/app/activity/page.tsx index 6523919..8aeb685 100644 --- a/src/app/activity/page.tsx +++ b/src/app/activity/page.tsx @@ -49,7 +49,7 @@ export default function ActivityPage() { const [deleteConfirm, setDeleteConfirm] = useState(false); const [smartDefault, setSmartDefault] = useState(null); const [pendingDeleteId, setPendingDeleteId] = useState<{ id: string; type: string } | null>(null); - const [daySheetDate, setDaySheetDate] = useState(null); + const [daySheetDate, setDaySheetDate] = useState<{ date: string; type: LogType } | null>(null); const childId = providerChildId ?? ""; useEffect(() => { @@ -258,25 +258,50 @@ export default function ActivityPage() { )} - {/* 4-day overview strip β€” oldest β†’ newest, each chip tappable */} + {/* 4-day overview strip β€” oldest β†’ newest, each row independently tappable */}
{[...last4Days].reverse().map(d => { const isToday = d.label === "Today"; + const rows: { type: LogType; icon: string; count: number }[] = [ + { type: "feed", icon: "🍼", count: d.feed }, + { type: "sleep", icon: "😴", count: d.sleep }, + { type: "diaper", icon: "🚼", count: d.diaper }, + ]; return ( - +
+ + {/* Each row is its own tap target */} + {rows.map((row, idx) => ( + + ))} + ); })} @@ -442,12 +467,18 @@ export default function ActivityPage() { )} - {/* Day detail sheet β€” tap a day chip to view & edit that day's logs */} + {/* Day-type detail sheet β€” tap a specific row (feed/sleep/diaper) on a day chip */} {daySheetDate && (() => { + const { date: sheetDateStr, type: sheetType } = daySheetDate; const sheetLogs = logs - .filter(l => new Date(l.loggedAt).toDateString() === daySheetDate) + .filter(l => + new Date(l.loggedAt).toDateString() === sheetDateStr && + l.type === sheetType + ) .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime()); - const sheetLabel = formatDayLabel(daySheetDate); + const sheetDayLabel = formatDayLabel(sheetDateStr); + const sheetTypeIcon = getIcon(sheetType); + const sheetTypeLabel = sheetType.charAt(0).toUpperCase() + sheetType.slice(1); return ( <>
{/* Sheet header */}
-
-

{sheetLabel}

-

- {sheetLogs.length} log{sheetLogs.length !== 1 ? "s" : ""} Β· tap any entry to edit or delete -

+
+ {sheetTypeIcon} +
+

+ {sheetTypeLabel} Β· {sheetDayLabel} +

+

+ {sheetLogs.length === 0 + ? "Nothing logged β€” tap + to add" + : `${sheetLogs.length} entr${sheetLogs.length === 1 ? "y" : "ies"} Β· tap to edit or delete`} +

+
- ))} + {/* Single add button for this specific type */} +
+