Enhance timeline and movement flow UI; add fetched painting images.

Timeline: era and historical-event click-to-zoom, event markers from historical-events.ts. Movement flow: shared zoom/pan, viewport-fit layout, curved lineage streams, hover-to-reveal artist lifespans on stacked lanes. Docs updated. Includes batch-fetched paintings and regenerated thumbs.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Danila Khodjaef
2026-06-20 00:21:31 +03:00
co-authored by Cursor
parent 35c337253d
commit 0ece1195fa
1301 changed files with 1412 additions and 140 deletions
+16 -1
View File
@@ -1,8 +1,18 @@
.home-page {
min-height: 100vh;
height: 100vh;
overflow: hidden;
display: flex;
flex-direction: column;
background: linear-gradient(180deg, #0f0f1a 0%, #1a1a2e 40%, #16213e 100%);
}
.home-movements-section {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
}
.gallery-session-suspended {
position: fixed;
inset: 0;
@@ -21,6 +31,7 @@
.site-header {
text-align: center;
padding: 24px 16px 8px;
flex-shrink: 0;
}
.site-header h1 {
@@ -47,6 +58,10 @@
font-size: 16px;
}
.home-page > .timeline-wrapper {
flex-shrink: 0;
}
.error-banner {
margin: 16px;
padding: 12px 16px;
+14 -9
View File
@@ -202,7 +202,7 @@ export default function HomePage() {
<div className="home-page">
<header className="site-header">
<h1>Virtual Art Gallery</h1>
<p className="site-subtitle">Explore the flowing connections of art history</p>
<p className="site-subtitle">Watch art movements branch forward through time each flowing from what came before</p>
</header>
<Timeline
@@ -217,15 +217,20 @@ export default function HomePage() {
{error && <div className="error-banner">{error}</div>}
{loading ? (
<div className="loading">Loading art history...</div>
<div className="loading home-movements-section">Loading art history...</div>
) : (
<MovementBands
movements={timelineData.movements}
artists={artists}
viewStart={viewStart}
viewEnd={viewEnd}
onArtistClick={handleArtistClick}
/>
<div className="home-movements-section">
<MovementBands
movements={timelineData.movements}
artists={artists}
viewStart={viewStart}
viewEnd={viewEnd}
absoluteMin={bounds.min}
absoluteMax={bounds.max}
onViewChange={handleViewChange}
onArtistClick={handleArtistClick}
/>
</div>
)}
</div>
)}