From 3db6fb271098f4f2add7750ed7d8556f8f353f8f Mon Sep 17 00:00:00 2001 From: Mannu Date: Sat, 23 May 2026 23:47:20 +0530 Subject: [PATCH] Activity: guidelines above strip, interactive day chips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Moved guidelines row ABOVE the 4-day strip (correct order) - 4-day strip: each chip is now tappable → opens a day-detail bottom sheet showing all logs for that day → each log row has ‹ › arrow; tap opens edit/delete action sheet → empty state tells mama to use Generate sample history to pre-fill → quick-add row at bottom (+ Feed / + Sleep / + Diaper) for fast logging Co-Authored-By: Claude Sonnet 4.6 --- src/app/activity/page.tsx | 133 +++++++++++++++++++++++++++++++------- 1 file changed, 108 insertions(+), 25 deletions(-) diff --git a/src/app/activity/page.tsx b/src/app/activity/page.tsx index 842e160..6523919 100644 --- a/src/app/activity/page.tsx +++ b/src/app/activity/page.tsx @@ -49,6 +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 childId = providerChildId ?? ""; useEffect(() => { @@ -113,6 +114,7 @@ export default function ActivityPage() { const dateStr = d.toDateString(); const dayLogs = logs.filter(l => new Date(l.loggedAt).toDateString() === dateStr); return { + date: dateStr, label: i === 0 ? "Today" : i === 1 ? "Yest." : d.toLocaleDateString("en-IN", { weekday: "short" }), feed: dayLogs.filter(l => l.type === "feed").length, sleep: dayLogs.filter(l => l.type === "sleep").length, @@ -213,31 +215,7 @@ export default function ActivityPage() { {!loading && ( <> - {/* 4-day overview strip — oldest → newest (left → right) */} -
- {[...last4Days].reverse().map(d => { - const isToday = d.label === "Today"; - return ( -
-

- {d.label} -

-

🍼×{d.feed}

-

😴×{d.sleep}

-

🚼×{d.diaper}

-
- ); - })} -
- - {/* Collapsible guidelines card */} + {/* Collapsible guidelines card — above strip */} {child && guide && showSuggested && (
+ ); + })} +
)} @@ -441,6 +442,88 @@ export default function ActivityPage() { )} + {/* Day detail sheet — tap a day chip to view & edit that day's logs */} + {daySheetDate && (() => { + const sheetLogs = logs + .filter(l => new Date(l.loggedAt).toDateString() === daySheetDate) + .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime()); + const sheetLabel = formatDayLabel(daySheetDate); + return ( + <> +
setDaySheetDate(null)} + /> +
+ {/* Sheet header */} +
+
+

{sheetLabel}

+

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

+
+ +
+ + {/* Log list */} +
+ {sheetLogs.length === 0 ? ( +
+

📋

+

No logs for {sheetLabel}

+

Use ⋯ → Generate sample history to pre-fill your schedule

+
+ ) : ( + sheetLogs.map(log => ( + + )) + )} +
+ + {/* Quick-add row */} +
+ {(["feed", "sleep", "diaper"] as ModalLogType[]).map(t => ( + + ))} +
+
+ + ); + })()} +