feat(timeline): add virtualised month-grouped timeline view

- New Timeline view groups all media by YYYY-MM using taken_at ?? created_at
- @tanstack/react-virtual (group-level virtualiser) keeps scroll smooth on
  large libraries; estimateSize is exact so no measureElement needed
- ResizeObserver tracks container width; virtualizer.measure() is called on
  cols change to prevent stale position cache after window resize
- setView("timeline") in store auto-sets sort:"taken_asc", resets images,
  and triggers a fresh load
- Calendar nav item added to Sidebar between Explore and Duplicates
- ContextMenu and ImageTile exported from Gallery for reuse in Timeline
This commit is contained in:
2026-06-08 18:19:01 +01:00
parent ae9e806e61
commit ec6be96c6a
6 changed files with 426 additions and 4 deletions
+2 -2
View File
@@ -16,7 +16,7 @@ function formatDuration(durationMs: number | null): string | null {
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
}
function ContextMenu({
export function ContextMenu({
x,
y,
image,
@@ -104,7 +104,7 @@ function ContextMenu({
);
}
function ImageTile({
export function ImageTile({
image,
onClick,
onContextMenu,