'use client'; import { useState, useMemo } from "react"; import AdminSidebar from "@/app/components/AdminSidebar"; import ChevronDownSvg from "@/app/svgs/chevrondownsvg"; export default function AdminLessonsPage() { // TODO: 나중에 실제 데이터로 교체 const items: any[] = []; const [currentPage, setCurrentPage] = useState(1); const totalCount = useMemo(() => items.length, [items]); const ITEMS_PER_PAGE = 10; const totalPages = Math.ceil(items.length / ITEMS_PER_PAGE); const paginatedItems = useMemo(() => { const startIndex = (currentPage - 1) * ITEMS_PER_PAGE; const endIndex = startIndex + ITEMS_PER_PAGE; return items.slice(startIndex, endIndex); }, [items, currentPage]); return (
{/* 메인 레이아웃 */}
{/* 사이드바 */}
{/* 메인 콘텐츠 */}
{/* 제목 영역 */}

강좌 관리

{/* 헤더 영역 (제목과 콘텐츠 사이) */}

총 {totalCount}건

{/* 콘텐츠 영역 */}
{items.length === 0 ? (

등록된 강좌가 없습니다.
강좌를 등록해주세요.

) : ( <> {/* TODO: 테이블 또는 리스트를 여기에 추가 */} {/* 페이지네이션 - 10개 초과일 때만 표시 */} {items.length > ITEMS_PER_PAGE && (() => { // 페이지 번호를 10단위로 표시 const pageGroup = Math.floor((currentPage - 1) / 10); const startPage = pageGroup * 10 + 1; const endPage = Math.min(startPage + 9, totalPages); const visiblePages = Array.from({ length: endPage - startPage + 1 }, (_, i) => startPage + i); return (
{/* First (맨 앞으로) */} {/* Prev */} {/* Numbers */} {visiblePages.map((n) => { const active = n === currentPage; return ( ); })} {/* Next */} {/* Last (맨 뒤로) */}
); })()} )}
); }