From b182ec55b874525f085d3dae8eb8119063cc04a3 Mon Sep 17 00:00:00 2001 From: krusty-agent Date: Tue, 10 Feb 2026 09:31:54 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=8B=20Redesign=20list=20view:=20rounde?= =?UTF-8?q?d=20cards,=20collapsed=20Done=20section,=20bottom=20add=20input?= =?UTF-8?q?,=20amber=20progress=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ListView.tsx | 156 +++++++++++++++++++++++++++++------------ 1 file changed, 110 insertions(+), 46 deletions(-) diff --git a/src/pages/ListView.tsx b/src/pages/ListView.tsx index 8563239..96e9d0c 100644 --- a/src/pages/ListView.tsx +++ b/src/pages/ListView.tsx @@ -62,6 +62,7 @@ export function ListView() { const [draggedItemId, setDraggedItemId] = useState | null>(null); const [dragOverItemId, setDragOverItemId] = useState | null>(null); const [viewMode, setViewMode] = useState("list"); + const [doneCollapsed, setDoneCollapsed] = useState(true); // Store only IDs to avoid stale snapshots - we'll look up live items from the reactive items array const [selectedCalendarItemId, setSelectedCalendarItemId] = useState | null>(null); const itemsContainerRef = useRef(null); @@ -776,11 +777,11 @@ export function ListView() { )} - {/* Progress bar */} + {/* Amber progress bar */} {totalCount > 0 && ( -
+
@@ -827,13 +828,6 @@ export function ListView() {
)} - {/* Add Item Input - at top of list, only show if user can edit */} - {canUserEdit && ( -
- -
- )} - {/* Items - List View */} {viewMode === "list" && (
@@ -1008,48 +1002,118 @@ export function ListView() { )}
) : ( - /* Standard flat list view */ -
-
- {sortedItems.map((item: OptimisticItem, index) => ( -
- handleDragStart(item._id)} - onDragOver={(e) => handleDragOver(e, item._id)} - onDragEnd={handleDragEnd} - onTouchStart={touchDrag.handleTouchStart} - onCheck={checkItem} - onUncheck={uncheckItem} - isSelectMode={isSelectMode} - isSelected={selectedIds.has(item._id)} - onToggleSelect={() => toggleSelection(item._id)} - onLongPress={() => enterSelectMode(item._id)} - /> -
- ))} + /* Standard flat list view — rounded cards with collapsed Done section */ +
+ {/* Active (unchecked) items as rounded cards */} +
+ {sortedItems.filter(item => !item.checked).map((item: OptimisticItem) => { + const globalIndex = sortedItems.findIndex(si => si._id === item._id); + return ( +
+ handleDragStart(item._id)} + onDragOver={(e) => handleDragOver(e, item._id)} + onDragEnd={handleDragEnd} + onTouchStart={touchDrag.handleTouchStart} + onCheck={checkItem} + onUncheck={uncheckItem} + isSelectMode={isSelectMode} + isSelected={selectedIds.has(item._id)} + onToggleSelect={() => toggleSelection(item._id)} + onLongPress={() => enterSelectMode(item._id)} + /> +
+ ); + })}
+ + {/* Collapsed Done section */} + {checkedCount > 0 && ( +
+ + + {!doneCollapsed && ( +
+ {sortedItems.filter(item => item.checked).map((item: OptimisticItem) => { + const globalIndex = sortedItems.findIndex(si => si._id === item._id); + return ( +
+ handleDragStart(item._id)} + onDragOver={(e) => handleDragOver(e, item._id)} + onDragEnd={handleDragEnd} + onTouchStart={touchDrag.handleTouchStart} + onCheck={checkItem} + onUncheck={uncheckItem} + isSelectMode={isSelectMode} + isSelected={selectedIds.has(item._id)} + onToggleSelect={() => toggleSelection(item._id)} + onLongPress={() => enterSelectMode(item._id)} + /> +
+ ); + })} +
+ )} +
+ )}
)}
)} + {/* Add Item Input - at bottom of list */} + {canUserEdit && viewMode === "list" && ( +
+ +
+ )} + {/* Items - Calendar View */} {viewMode === "calendar" && (