feat(fc2a): add TimelineSidebar and assemble GalleryView

GalleryView wires the grid + timeline + modal together. The URL is the
source of truth for which image (if any) is open — clicking an item pushes
?image=N; closing the modal pops it. This makes deep links shareable and
the back button work intuitively.

Below 900px viewport, the timeline drops below the grid as a horizontal
strip so it doesn't compete with thumbnail space on mobile.

Modal store + ImageViewer are placeholders here; real implementations land
in Batch 5 (Tasks 19–22).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 12:32:50 -04:00
parent 708c033627
commit 899b193085
5 changed files with 186 additions and 1 deletions
+10
View File
@@ -0,0 +1,10 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
// Placeholder modal store — real implementation lands in Task 19.
export const useModalStore = defineStore('modal', () => {
const currentImageId = ref(null)
function open(id) { currentImageId.value = id }
function close() { currentImageId.value = null }
return { currentImageId, open, close }
})