);
diff --git a/src/shared/ui/PageIndicator.tsx b/src/shared/ui/PageIndicator.tsx
index 8ced0ea..f2e4955 100644
--- a/src/shared/ui/PageIndicator.tsx
+++ b/src/shared/ui/PageIndicator.tsx
@@ -1,17 +1,28 @@
+import { cn } from "@/shared/lib/utils/cn";
+
interface PageIndicatorProps {
total: number;
current: number;
+ variant?: "home" | "my";
}
-const PageIndicator = ({ total, current }: PageIndicatorProps) => {
+const PageIndicator = ({ total, current, variant = "home" }: PageIndicatorProps) => {
return (
-
- {Array.from({ length: total }, (_, i) => (
-
- ))}
+
+ {Array.from({ length: total }, (_, i) => {
+ const active = i === current;
+
+ return (
+
+ );
+ })}
);
};
diff --git a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx
index b0beace..7417226 100644
--- a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx
+++ b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx
@@ -6,9 +6,9 @@ import {
DraftSubmissionStatusRow,
} from "@/features/instructor/home";
import { NextButton, PrevButton } from "@/shared/assets/icons";
+import usePagination from "@/shared/lib/hooks/usePagination";
import PageIndicator from "@/shared/ui/PageIndicator";
import { DRAFT_SUBMISSION_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home";
-import usePagination from "@/widgets/instructor/home/lib/usePagination";
const DraftSubmissionStatusSection = () => {
const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination(
diff --git a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx
index cb0778a..125a567 100644
--- a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx
+++ b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx
@@ -6,9 +6,9 @@ import {
matchingStatusData,
} from "@/features/instructor/home";
import { NextButton, PrevButton } from "@/shared/assets/icons";
+import usePagination from "@/shared/lib/hooks/usePagination";
import PageIndicator from "@/shared/ui/PageIndicator";
import { MATCHING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home";
-import usePagination from "@/widgets/instructor/home/lib/usePagination";
const MatchingCommissionsSection = () => {
const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination(
diff --git a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx
index 2cf2c98..2399a76 100644
--- a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx
+++ b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx
@@ -6,9 +6,9 @@ import {
modifyingStatusData,
} from "@/features/instructor/home";
import { NextButton, PrevButton } from "@/shared/assets/icons";
+import usePagination from "@/shared/lib/hooks/usePagination";
import PageIndicator from "@/shared/ui/PageIndicator";
import { MODIFYING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home";
-import usePagination from "@/widgets/instructor/home/lib/usePagination";
const ModifyingCommissionsSection = () => {
const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination(
diff --git a/src/widgets/instructor/my/config/my.ts b/src/widgets/instructor/my/config/my.ts
new file mode 100644
index 0000000..91089ff
--- /dev/null
+++ b/src/widgets/instructor/my/config/my.ts
@@ -0,0 +1 @@
+export const COMMISSION_HISTORY_ITEMS_PER_PAGE = 3;
diff --git a/src/widgets/instructor/my/index.ts b/src/widgets/instructor/my/index.ts
new file mode 100644
index 0000000..a67b28e
--- /dev/null
+++ b/src/widgets/instructor/my/index.ts
@@ -0,0 +1,2 @@
+export { default as CommissionsHistorySection } from "@/widgets/instructor/my/ui/CommissionsHistorySection";
+export { default as MyInfoSection } from "@/widgets/instructor/my/ui/MyInfoSection";
diff --git a/src/widgets/instructor/my/model/my.ts b/src/widgets/instructor/my/model/my.ts
new file mode 100644
index 0000000..f4c428a
--- /dev/null
+++ b/src/widgets/instructor/my/model/my.ts
@@ -0,0 +1,18 @@
+// [강사] 마이페이지 본인 정보 + 통계 조회
+export type MyInfo = {
+ name: string;
+ profileImageUrl: string;
+ stats: {
+ totalCommissionCount: number;
+ ongoingCommissionCount: number;
+ };
+};
+
+export const myInfoData: MyInfo = {
+ name: "고다현",
+ profileImageUrl: "",
+ stats: {
+ totalCommissionCount: 5,
+ ongoingCommissionCount: 5,
+ },
+};
diff --git a/src/widgets/instructor/my/ui/CommissionsHistorySection.tsx b/src/widgets/instructor/my/ui/CommissionsHistorySection.tsx
new file mode 100644
index 0000000..3ff6100
--- /dev/null
+++ b/src/widgets/instructor/my/ui/CommissionsHistorySection.tsx
@@ -0,0 +1,37 @@
+"use client";
+
+import {
+ commissionHistoryData,
+ CommissionsHeader,
+ CommissionsHistoryRow,
+} from "@/features/instructor/my";
+import { NextButton, PrevButton } from "@/shared/assets/icons";
+import usePagination from "@/shared/lib/hooks/usePagination";
+import PageIndicator from "@/shared/ui/PageIndicator";
+import { COMMISSION_HISTORY_ITEMS_PER_PAGE } from "@/widgets/instructor/my/config/my";
+
+const CommissionsHistorySection = () => {
+ const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination(
+ commissionHistoryData,
+ COMMISSION_HISTORY_ITEMS_PER_PAGE,
+ );
+
+ return (
+
+
외주 내역 확인
+
+
+ {pageItems.map(item => (
+
+ ))}
+
+
+
+ );
+};
+
+export default CommissionsHistorySection;
diff --git a/src/widgets/instructor/my/ui/MyInfoSection.tsx b/src/widgets/instructor/my/ui/MyInfoSection.tsx
new file mode 100644
index 0000000..b80fbae
--- /dev/null
+++ b/src/widgets/instructor/my/ui/MyInfoSection.tsx
@@ -0,0 +1,30 @@
+import { ProfileCircleIcon } from "@/shared/assets/icons";
+import { myInfoData } from "@/widgets/instructor/my/model/my";
+
+const MyInfoSection = () => {
+ const { name, stats } = myInfoData;
+
+ return (
+
+
+
+
+
+
외주 이용 횟수
+
{stats.totalCommissionCount}회
+
+
+
+
진행 중인 외주 건수
+
{stats.ongoingCommissionCount}건
+
+
+
+
+ );
+};
+
+export default MyInfoSection;