'use client'; import { useState } from "react"; import AdminSidebar from "@/app/components/AdminSidebar"; import BannerRegistrationModal, { type Banner } from "./BannerRegistrationModal"; export default function AdminBannerPage() { // TODO: 나중에 실제 데이터로 교체 const [banners, setBanners] = useState([ { id: 1, order: 1, imageUrl: "http://localhost:3845/assets/43be88ae6f992fc221d0d9c29e82073e7b202f46.png", title: "XR 교육 플랫폼에 오신 것을 환영합니다", description: "다양한 강좌와 함께 성장하는 학습 경험을 시작하세요.", registeredDate: "2025-09-10", }, ]); const [isModalOpen, setIsModalOpen] = useState(false); const [editingBanner, setEditingBanner] = useState(null); const handleRegister = () => { setEditingBanner(null); setIsModalOpen(true); }; const handleModalClose = () => { setIsModalOpen(false); setEditingBanner(null); }; const handleSaveBanner = (title: string, description: string, imageKey?: string) => { // TODO: API가 추가되면 실제로 배너를 저장하고 리스트를 새로고침 console.log('배너 저장:', { title, description, imageKey }); setIsModalOpen(false); setEditingBanner(null); }; const handleDeleteBanner = () => { // TODO: API가 추가되면 실제로 배너를 삭제하고 리스트를 새로고침 console.log('배너 삭제'); setIsModalOpen(false); setEditingBanner(null); }; const handleRowClick = (banner: Banner) => { setEditingBanner(banner); setIsModalOpen(true); }; return (
{/* 메인 레이아웃 */}
{/* 사이드바 */}
{/* 메인 콘텐츠 */}
{/* 제목 영역 */}

배너 관리

{/* 콘텐츠 영역 */}
{/* 상단 정보 및 버튼 */}

총 {banners.length}건

{/* 테이블 */} {banners.length === 0 ? (

현재 관리할 수 있는 항목이 없습니다.

) : (
{/* 테이블 헤더 */}

순서

배너 이미지

배너 문구

등록일

{/* 테이블 바디 */} {banners.map((banner) => (
handleRowClick(banner)} >

{banner.order}

{banner.title}

{banner.title}

{banner.description}

{banner.registeredDate}

))}
)}
); }