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
+2 -1
View File
@@ -1,10 +1,11 @@
import { createRouter, createWebHistory } from 'vue-router'
import PlaceholderView from './views/PlaceholderView.vue'
import SettingsView from './views/SettingsView.vue'
import GalleryView from './views/GalleryView.vue'
const routes = [
// FC-2: image backbone
{ path: '/', name: 'gallery', component: PlaceholderView, meta: { title: 'Gallery' } },
{ path: '/', name: 'gallery', component: GalleryView, meta: { title: 'Gallery' } },
{ path: '/showcase', name: 'showcase', component: PlaceholderView, meta: { title: 'Showcase' } },
{ path: '/tags', name: 'tags', component: PlaceholderView, meta: { title: 'Tags' } },
{ path: '/settings', name: 'settings', component: SettingsView, meta: { title: 'Settings' } },