diff --git a/src/app/(after-login)/mydashboard/_components/AddDashboardButton.tsx b/src/app/(after-login)/mydashboard/_components/AddDashboardButton.tsx new file mode 100644 index 0000000..7c19299 --- /dev/null +++ b/src/app/(after-login)/mydashboard/_components/AddDashboardButton.tsx @@ -0,0 +1,25 @@ +import { useModalStore } from "@/lib/store/useModalStore"; +import Button from "@/components/common/button/Button"; +import Image from "next/image"; +import AddIcon from "../../../../../public/icon/add_icon.svg"; + +export default function AddDashboardButton() { + const { openModal } = useModalStore(); + + return ( + + ); +} diff --git a/src/app/(after-login)/mydashboard/_components/DashboardCard.tsx b/src/app/(after-login)/mydashboard/_components/DashboardCard.tsx new file mode 100644 index 0000000..7fa9025 --- /dev/null +++ b/src/app/(after-login)/mydashboard/_components/DashboardCard.tsx @@ -0,0 +1,51 @@ +import { useRouter } from "next/navigation"; +import Button from "@/components/common/button/Button"; +import Image from "next/image"; +import CrownIcon from "../../../../../public/icon/crown_icon.svg"; +import ArrowIcon from "../../../../../public/icon/arrow_right_icon.svg"; + +export default function DashboardCard({ + id, + title, + color, + createdByMe, +}: { + id: number; + title: string; + color: string; + createdByMe: boolean; +}) { + const router = useRouter(); + + return ( + + ); +} diff --git a/src/app/(after-login)/mydashboard/_components/DashboardListSection.tsx b/src/app/(after-login)/mydashboard/_components/DashboardListSection.tsx index 5026e2d..f3d55d1 100644 --- a/src/app/(after-login)/mydashboard/_components/DashboardListSection.tsx +++ b/src/app/(after-login)/mydashboard/_components/DashboardListSection.tsx @@ -4,13 +4,15 @@ import { useEffect, useState } from "react"; import { fetchDashboardList } from "@/lib/apis/dashboardsApi"; import { DashboardList } from "@/lib/types"; import Pagination from "@/components/common/pagination-button/PaginationButton"; +import AddDashboardButton from "./AddDashboardButton"; +import DashboardCard from "./DashboardCard"; -const PAGE_SIZE = 6; +const PAGE_SIZE = 5; export default function DashboardListSection({ token }: { token: string }) { const [myDashboards, setMyDashboards] = useState([]); const [page, setPage] = useState(1); - const [totalPages, setTotalPages] = useState(1); + const [totalPages, setTotalPages] = useState(0); const [loading, setLoading] = useState(false); useEffect(() => { @@ -19,8 +21,8 @@ export default function DashboardListSection({ token }: { token: string }) { try { const { dashboards, - total, - }: { dashboards: DashboardList[]; total: number } = + totalCount, + }: { dashboards: DashboardList[]; totalCount: number } = await fetchDashboardList({ token, page, @@ -28,7 +30,7 @@ export default function DashboardListSection({ token }: { token: string }) { }); setMyDashboards(dashboards.filter((d) => d.createdByMe)); - setTotalPages(Math.ceil(total / PAGE_SIZE)); + setTotalPages(Math.floor(totalCount / 6)); } catch (error) { console.error("대시보드를 불러오는 중 오류 발생:", error); } finally { @@ -39,36 +41,30 @@ export default function DashboardListSection({ token }: { token: string }) { }, [page, token]); return ( -
- - -
-

내 대시보드

- {myDashboards.length > 0 ? ( -
    - {myDashboards.map((dashboard) => ( -
  • - {dashboard.title} -
  • - ))} -
- ) : ( - !loading && ( -
-

아직 생성한 대시보드가 없어요.

-
- ) - )} +
+
+ + {myDashboards.map((dashboard) => ( + + ))} {loading && (
-
+
)} - -
+
+
+
+

+ {totalPages} 페이지 중 {page} +