{`${course} (${section})`}
diff --git a/src/index.css b/src/index.css
index 26c7fe3..0749065 100644
--- a/src/index.css
+++ b/src/index.css
@@ -62,6 +62,10 @@
@apply flex items-center justify-center;
}
+@utility bg-radial-gradient {
+ @apply bg-radial-[80%_74%_at_34%_0%] from-[#AC9BFF] from-0% to-[#7D63FF] to-100%;
+}
+
.header-btn {
@apply bg-primary w-16 h-16 rounded-full flex-center;
}
diff --git a/src/layout/Layout.tsx b/src/layout/Layout.tsx
index 09eeeae..bcefaaf 100644
--- a/src/layout/Layout.tsx
+++ b/src/layout/Layout.tsx
@@ -1,14 +1,12 @@
// Layout.js
import {useLocation, Outlet} from 'react-router-dom';
import BaseHeader from '@/components/common/BaseHeader';
-import NotificationIcon from '/svg/notificationIcon.svg?react';
-import SignoutIcon from '/svg/signoutIcon.svg?react';
-import UserIcon from '/svg/userIcon.svg?react';
-import ChatIcon from '/svg/chatIcon.svg?react';
-import IconButton from '@/components/common/IconButton';
-import React from 'react';
-
-type UserType = 'admin' | 'student';
+import NotificationIcon from '@/assets/svg/notificationIcon.svg?react';
+import SignoutIcon from '@/assets/svg/signoutIcon.svg?react';
+import UserIcon from '@/assets/svg/userIcon.svg?react';
+import ChatIcon from '@/assets/svg/chatIcon.svg?react';
+import Button from '@/components/common/Button';
+import type {UserType} from '@/models/common';
interface NavButton {
icon: React.ReactElement;
@@ -59,7 +57,13 @@ const Layout = () => {
);
diff --git a/src/models/common.ts b/src/models/common.ts
new file mode 100644
index 0000000..b40de49
--- /dev/null
+++ b/src/models/common.ts
@@ -0,0 +1,10 @@
+/**
+ * API 공통 응답 타입
+ */
+
+export interface ApiResponse {
+ success: boolean;
+ response: T;
+}
+
+export type UserType = 'admin' | 'student' | 'guest';
diff --git a/src/models/course.ts b/src/models/course.ts
new file mode 100644
index 0000000..c9c502d
--- /dev/null
+++ b/src/models/course.ts
@@ -0,0 +1,44 @@
+import type {ApiResponse} from './common';
+
+// 학기 및 제출 상태 상수 타입 정의
+export type SemesterCode = 'FIRST' | 'SECOND' | 'SUMMER' | 'WINTER';
+export type SubmissionStatus = 'NOT_SUBMITTED' | 'CORRECT' | 'INCORRECT';
+
+// 과제(Assignment) 인터페이스 정의
+export interface Assignment {
+ id: number;
+ title: string;
+ submittedStatus: SubmissionStatus;
+}
+
+// 단원(Unit) 인터페이스 정의
+export interface Unit {
+ id: number;
+ title: string;
+ releaseDate: string;
+ dueDate: string;
+ isOpen?: boolean;
+ assignmentCount: number;
+ assignments: Assignment[];
+}
+
+// 베이스 강의(Course) 인터페이스 정의 (공통 필드)
+export interface BaseCourse {
+ id: number;
+ title: string;
+ year: number;
+ semester: SemesterCode;
+ section: string;
+ unitCount: number;
+}
+
+/**
+ * 강의 상세 페이지용 (course-overview) 인터페이스 정의
+ * 기본 정보 + 단원, 과제 상세 리스트
+ */
+export interface CourseOverview extends BaseCourse {
+ studentCount?: number;
+ units: Unit[];
+}
+
+export type CourseOverviewResponse = ApiResponse;
diff --git a/src/pages/admin/assignments/AssignmentCreatePage.tsx b/src/pages/admin/assignments/AssignmentCreatePage.tsx
index b8cb713..24babde 100644
--- a/src/pages/admin/assignments/AssignmentCreatePage.tsx
+++ b/src/pages/admin/assignments/AssignmentCreatePage.tsx
@@ -3,6 +3,8 @@ import LabeledInput from '@/components/admin/form/LabeledInput';
import FileUpload from '@/components/admin/form/FileUpload';
import {useState} from 'react';
import LabeledDropdown from '@/components/admin/form/LabeledDropdown';
+import Button from '@/components/common/Button';
+import AddIcon from '@/assets/svg/addIcon.svg?react';
const AssignmentCreatePage = () => {
const [examples, setExamples] = useState([{input: '', output: '', 공개: ''}]);
@@ -58,11 +60,14 @@ const AssignmentCreatePage = () => {
))}