Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b2b92a4
chore: SVG 폴더 위치 public에서 src/assets로 이동
suminb99 Jan 11, 2026
f9582e1
Merge branch 'refactor/21-common-components-badge' into refactor/27-c…
suminb99 Jan 11, 2026
7daabe1
chore: import 경로 수정
suminb99 Jan 11, 2026
6c4604a
#27 refactor: course-overview 관련 폴더 및 파일 구조 정리
suminb99 Jan 14, 2026
4500ca8
#27 feat: API 공통 응답 타입(ApiResponse) 정의
suminb99 Jan 14, 2026
045a289
#27 refactor: 코스 도메인 타입을 페이지별 정의에서 엔티티 기반으로 재구조화 (course.ts로 통합)
suminb99 Jan 14, 2026
f4fe188
#27 refactor: CourseHeroProps 정의 방식 개선 및 import 경로 수정, 파일 정리
suminb99 Jan 14, 2026
889eaea
#27 refactor: 학기 포맷팅 로직 개선 및 타입 안정성 강화
suminb99 Jan 14, 2026
169deab
#27 style: bg-radial-gradient 유틸리티 추가
suminb99 Jan 14, 2026
0b82202
#27 refactor: CourseHero 컴포넌트 구조 및 스타일 개선
suminb99 Jan 14, 2026
3a90705
#27 refactor: CourseActionsBar 컴포넌트 개선
suminb99 Jan 14, 2026
8c699a2
#27 fix: import 경로 케이스 오류 수정
suminb99 Jan 14, 2026
4e4e771
#27 feat: CourseHero 주석 추가
suminb99 Jan 14, 2026
a781153
#27 feat: 날짜 formatter 함수 추가
suminb99 Jan 14, 2026
d5c6ad3
#27 refactor: UnitHeader 컴포넌트 시멘틱 및 스타일 개선
suminb99 Jan 14, 2026
167693d
#27 refactor: UnitItem 컴포넌트 개선
suminb99 Jan 14, 2026
01d56c4
#27 refactor: UnitHeader를 UnitItem의 내부 호출형 컴포넌트로 변경
suminb99 Jan 14, 2026
6cede47
#27 style: 제출현황 배지 폰트 크기 수정
suminb99 Jan 14, 2026
dd77384
#27 refactor: AssignmentList 컴포넌트 개선
suminb99 Jan 14, 2026
aa25ebe
#27 style: UnitItem 마진값 적용
suminb99 Jan 14, 2026
02d2b79
#27 style: 강의 관리 버튼 조건부 스타일 처리
suminb99 Jan 14, 2026
b78c738
#27 refactor: 관리 경로 확인 로직 이동
suminb99 Jan 14, 2026
df73793
#27 refactor: CourseContent 컴포넌트 개선
suminb99 Jan 14, 2026
fc8ecd4
#27 feat: 문제 수 카운트 유틸 추가
suminb99 Jan 14, 2026
fd85e7b
#27 refactor: 강의상세페이지 컴포넌트 개선
suminb99 Jan 14, 2026
89ccb4f
fix: 호출 함수 변경
suminb99 Jan 14, 2026
100be64
#27 chore: 불필요한 파일 정리
suminb99 Jan 14, 2026
016c286
#27 refactor: App에서 사용자 역할 Context 전역 제공
suminb99 Jan 15, 2026
9b03b14
#27 refactor: UserTypeContext 적용하여 props drilling 해결
suminb99 Jan 15, 2026
7a37e0b
#27 fix: 불필요한 props 정리
suminb99 Jan 15, 2026
492b466
#27 feat: course-overview props 타입 별도 파일로 분리
suminb99 Jan 17, 2026
c141ad0
#27 feat: 유틸 formatter 함수 추가 및 적용
suminb99 Jan 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion public/vite.svg

This file was deleted.

27 changes: 23 additions & 4 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
import {BrowserRouter, Routes, Route} from 'react-router-dom';
import {BrowserRouter, Routes, Route, useLocation} from 'react-router-dom';
import Layout from './layout/Layout';
import LandingPage from './pages/common/LandingPage';
import UserIdInputPage from './pages/common/UserIdInputPage';
import Dashboard from './pages/common/Dashboard';
import AssignmentsPage from './pages/admin/assignments/AssignmentsPage';
import AssignmentSelectPage from './pages/admin/assignments/AssignmentSelectPage';
import CourseOverviewPage from './pages/common/CourseOverviewPage';
import CourseOverviewPage from './pages/course-overview/CourseOverviewPage';
import AssignmentCreatePage from './pages/admin/assignments/AssignmentCreatePage';
import CourseCreatePage from './pages/admin/courses/CourseCreatePage';
import StudentManagementPage from './pages/admin/student/studentManagementPage';
import type {UserType} from './models/common';
import {createContext} from 'react';

export const UserTypeContext = createContext<UserType>('guest');

const AppContent = () => {
const pathname = useLocation().pathname;
const userType = pathname.startsWith('/admin')
? 'admin'
: pathname.startsWith('/student')
? 'student'
: 'guest';

function App() {
return (
<BrowserRouter>
<UserTypeContext.Provider value={userType}>
<Routes>
{/* 공통 영역 */}
<Route path='/' element={<Layout />}>
Expand All @@ -39,6 +50,14 @@ function App() {
<Route path='student' element={<StudentManagementPage />} />
</Route>
</Routes>
</UserTypeContext.Provider>
);
};

function App() {
return (
<BrowserRouter>
<AppContent />
</BrowserRouter>
);
}
Expand Down
12 changes: 0 additions & 12 deletions src/assets/svg/Correct.tsx

This file was deleted.

17 changes: 0 additions & 17 deletions src/assets/svg/Incorrect.tsx

This file was deleted.

19 changes: 0 additions & 19 deletions src/assets/svg/Unsubmitted.tsx

This file was deleted.

File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
18 changes: 0 additions & 18 deletions src/assets/svg/index.ts

This file was deleted.

File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
8 changes: 4 additions & 4 deletions src/components/admin/assignments/AssignmentCard.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {useState} from 'react';
import SingleEllipsisIcon from '/svg/singleEllipsisIcon.svg?react';
import DragAndDropIcon from '/svg/dragAndDropIcon.svg?react';
import DeleteIcon from '/svg/deleteIcon.svg?react';
import EditIcon from '/svg/editIcon.svg?react';
import SingleEllipsisIcon from '@/assets/svg/singleEllipsisIcon.svg?react';
import DragAndDropIcon from '@/assets/svg/dragAndDropIcon.svg?react';
import DeleteIcon from '@/assets/svg/deleteIcon.svg?react';
import EditIcon from '@/assets/svg/editIcon.svg?react';
import type {Assignment} from './dummy/types';

interface AssignmentCardProps extends Assignment {
Expand Down
2 changes: 1 addition & 1 deletion src/components/admin/assignments/AssignmentPageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import CourseSelector from './CourseSelector';
import AssignmentList from './AssignmentList';
import Button from '@/components/common/Button';
import type {Course} from './dummy/types';
import AddIcon from '/svg/addIcon.svg?react';
import AddIcon from '@/assets/svg/addIcon.svg?react';
import {useState} from 'react';

interface AssignmentPageLayoutProps {
Expand Down
2 changes: 1 addition & 1 deletion src/components/admin/assignments/CourseSelector.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {useState} from 'react';
import ArrowdownIcon from '/svg/arrowdownIcon.svg?react';
import ArrowdownIcon from '@/assets/svg/arrowdownIcon.svg?react';
import type {Course} from './dummy/types';

interface CourseSelectorProps {
Expand Down
2 changes: 1 addition & 1 deletion src/components/admin/form/FileUpload.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {useRef, useState} from 'react';
import type {ChangeEvent} from 'react';
import FileIcon from '/svg/file.svg?react';
import FileIcon from '@/assets/svg/file.svg?react';

type FileUploadProps = {
label: string;
Expand Down
2 changes: 1 addition & 1 deletion src/components/admin/form/LabeledDropdown.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {useState, useRef} from 'react';
import Chevrondown from '/svg/chevrondown.svg?react';
import Chevrondown from '@/assets/svg/chevrondown.svg?react';
import useClickOutside from '@/hooks/useClickOutside';

interface LabeledDropdownProps
Expand Down
6 changes: 4 additions & 2 deletions src/components/common/Badge.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import {tv, type VariantProps} from 'tailwind-variants/lite';
import {Correct, Incorrect, Unsubmitted} from '@/assets/svg';
import Correct from '@/assets/svg/correct.svg?react';
import Incorrect from '@/assets/svg/incorrect.svg?react';
import Unsubmitted from '@/assets/svg/unsubmitted.svg?react';

const badgeStyles = tv({
base: 'rounded-full px-3.5 py-1.5 leading-[19px] text-center text-base font-medium border whitespace-nowrap',
Expand All @@ -18,7 +20,7 @@ const scheduleBadgeStyles = tv({

const submissionBadgeStyles = tv({
extend: badgeStyles,
base: 'bg-transparent flex-center gap-2',
base: 'bg-transparent flex-center gap-2 text-sm',
variants: {
status: {
CORRECT: 'border-primary text-primary',
Expand Down
47 changes: 0 additions & 47 deletions src/components/common/CourseOverview/AssignmentItem.tsx

This file was deleted.

26 changes: 0 additions & 26 deletions src/components/common/CourseOverview/AssignmentList.tsx

This file was deleted.

25 changes: 0 additions & 25 deletions src/components/common/CourseOverview/CourseActionsBar.tsx

This file was deleted.

18 changes: 0 additions & 18 deletions src/components/common/CourseOverview/CourseContent.tsx

This file was deleted.

61 changes: 0 additions & 61 deletions src/components/common/CourseOverview/CourseHero.tsx

This file was deleted.

21 changes: 0 additions & 21 deletions src/components/common/CourseOverview/CourseStat.tsx

This file was deleted.

Loading