diff --git a/backend/routes/albums.js b/backend/routes/albums.js
index b5ea92c..20235fe 100644
--- a/backend/routes/albums.js
+++ b/backend/routes/albums.js
@@ -47,6 +47,13 @@ router.get("/:id", async (req, res) => {
);
album.tracks = tracks;
+ // 티저 이미지 조회
+ const [teasers] = await pool.query(
+ "SELECT image_url FROM album_teasers WHERE album_id = ? ORDER BY sort_order",
+ [album.id]
+ );
+ album.teasers = teasers.map((t) => t.image_url);
+
res.json(album);
} catch (error) {
console.error("앨범 조회 오류:", error);
diff --git a/frontend/src/pages/pc/AlbumDetail.jsx b/frontend/src/pages/pc/AlbumDetail.jsx
index 2ed31e3..54e5d57 100644
--- a/frontend/src/pages/pc/AlbumDetail.jsx
+++ b/frontend/src/pages/pc/AlbumDetail.jsx
@@ -1,13 +1,15 @@
import { useState, useEffect } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import { motion } from 'framer-motion';
-import { ArrowLeft, Calendar, Music2, Play, Clock } from 'lucide-react';
+import { ArrowLeft, Calendar, Music2, Play, Clock, X, ChevronLeft, ChevronRight } from 'lucide-react';
function AlbumDetail() {
const { id } = useParams();
const navigate = useNavigate();
const [album, setAlbum] = useState(null);
const [loading, setLoading] = useState(true);
+ const [lightbox, setLightbox] = useState({ open: false, images: [], index: 0 });
+ const [slideDirection, setSlideDirection] = useState(0);
useEffect(() => {
fetch(`/api/albums/${id}`)
@@ -70,6 +72,7 @@ function AlbumDetail() {
}
return (
+ <>
+ 타이틀곡: {album.tracks?.find(t => t.is_title_track === 1)?.title || album.tracks?.[0]?.title}
+
- 타이틀곡: {album.tracks?.find(t => t.is_title_track === 1)?.title || album.tracks?.[0]?.title}
- Official Teaser
-
- {album.album_type}
-
-
{album.title}
-
- {album.title}
+
+
+
컨셉 포토
+
+ */}
+
+ {/* 더미 플레이스홀더 */}
+