feat(travel): 사진 그리드 안정화 + 앨범 커버 지정 버튼 + 동기화 결과 개선

- MasonryGrid: CSS columns → CSS Grid로 전환 (스크롤 시 정렬 위치 변동 방지)
- HeroLightbox: "커버로 지정" 버튼 추가 (PUT /api/travel/albums/{album}/cover 호출)
- Travel: 동기화 토스트에 신규 폴더 발견 수 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-25 12:13:14 +09:00
parent 047e15cad3
commit 093ca6635a
4 changed files with 83 additions and 12 deletions

View File

@@ -1,18 +1,18 @@
/* ── MasonryGrid ── */
/* ── MasonryGrid — stable CSS Grid layout ── */
.masonry-grid {
column-count: 4;
column-gap: 8px;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
}
/* item */
.masonry-item {
break-inside: avoid;
margin-bottom: 8px;
position: relative;
border-radius: 4px;
overflow: hidden;
cursor: zoom-in;
aspect-ratio: 4 / 3;
/* scroll-reveal initial state */
opacity: 0;
@@ -28,7 +28,8 @@
.masonry-item__img {
display: block;
width: 100%;
height: auto;
height: 100%;
object-fit: cover;
transition: filter 0.25s ease;
}
@@ -62,12 +63,12 @@
/* sentinel */
.masonry-sentinel {
height: 1px;
column-span: all;
grid-column: 1 / -1;
}
/* loading dots */
.masonry-loading {
column-span: all;
grid-column: 1 / -1;
display: flex;
justify-content: center;
gap: 6px;
@@ -97,7 +98,7 @@
/* end message */
.masonry-end {
column-span: all;
grid-column: 1 / -1;
text-align: center;
font: 11px var(--tv-mono);
letter-spacing: 0.12em;
@@ -109,13 +110,13 @@
/* responsive */
@media (max-width: 1024px) {
.masonry-grid {
column-count: 3;
grid-template-columns: repeat(3, 1fr);
}
}
@media (max-width: 768px) {
.masonry-grid {
column-count: 2;
grid-template-columns: repeat(2, 1fr);
}
}