From e8a5abf1586eb4eb5df3379828c59635ee363dbc Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 21:08:56 +0900 Subject: [PATCH 1/6] =?UTF-8?q?#25=20[REFACTOR]=20shared=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EB=A5=BC=20FSD=20=EA=B5=AC=EC=A1=B0=EB=A1=9C?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/designer/layout.tsx | 6 +-- src/app/instructor/layout.tsx | 6 +-- src/app/instructor/write/page.tsx | 2 +- src/app/login/layout.tsx | 2 +- src/app/login/page.tsx | 6 +-- src/app/signup/designer/step1/page.tsx | 11 +++-- src/app/signup/designer/step2/page.tsx | 6 +-- src/app/signup/designer/step3/page.tsx | 14 +++---- src/app/signup/instructor/step1/page.tsx | 16 +++---- src/app/signup/instructor/step2/page.tsx | 6 +-- src/app/signup/layout.tsx | 2 +- src/app/signup/page.tsx | 4 +- src/assets/icons/index.ts | 42 ------------------- src/assets/logos/index.ts | 2 - .../home/DraftSubmissionStatusRow.tsx | 6 +-- .../home/MatchingCommissionsRow.tsx | 6 +-- .../home/ModifyingCommissionsRow.tsx | 8 ++-- .../instructor/write/ColorChooseCard.tsx | 8 ++-- .../instructor/write/ColorPicker.tsx | 4 +- .../instructor/write/ConceptKeywordCard.tsx | 2 +- .../instructor/write/PaperSizeCard.tsx | 2 +- .../write/PaymentModal/PaymentModal.tsx | 2 +- .../instructor/write/PaymentModal/Step1.tsx | 8 ++-- .../instructor/write/PaymentModal/Step2.tsx | 4 +- .../instructor/write/PlanChooseCard.tsx | 2 +- src/components/signup/UserTypeBtn.tsx | 2 +- src/constants/sidebarMenu.ts | 2 +- src/constants/write.ts | 4 +- .../home/DraftSubmissionStatusSection.tsx | 6 +-- .../home/MatchingCommissionsSection.tsx | 6 +-- .../home/ModifyingCommissionsSection.tsx | 6 +-- .../instructor/write/AttachFileSection.tsx | 8 ++-- .../write/BasicInfoTypingSection.tsx | 2 +- .../instructor/write/CategorySection.tsx | 4 +- .../instructor/write/ColorChooseSection.tsx | 6 +-- .../write/DeadlineChooseSection.tsx | 6 +-- .../instructor/write/DesignConceptSection.tsx | 4 +- .../write/NecessaryPageChooseSection.tsx | 4 +- .../instructor/write/ReferenceSection.tsx | 8 ++-- .../instructor/write/Steps/Step1Content.tsx | 2 +- .../instructor/write/Steps/Step2Content.tsx | 2 +- .../instructor/write/Steps/Step3Content.tsx | 2 +- .../assets/icons/icon_arrow_down.svg | 0 .../assets/icons/icon_arrow_left.svg | 0 .../icons/icon_arrow_left_circle_fill.svg | 0 .../assets/icons/icon_arrow_right.svg | 0 .../icons/icon_arrow_right_circle_fill.svg | 0 .../assets/icons/icon_arrow_up.svg | 0 .../assets/icons/icon_check_circle_fill.svg | 0 .../icons/icon_checkbox_border_gray.svg | 0 .../icons/icon_checkbox_border_white.svg | 0 .../assets/icons/icon_checkbox_fill.svg | 0 src/{ => shared}/assets/icons/icon_close.svg | 0 .../assets/icons/icon_close_circle.svg | 0 .../assets/icons/icon_close_circle_fill.svg | 0 src/{ => shared}/assets/icons/icon_enter.svg | 0 .../icons/icon_exclamation_mark_circle.svg | 0 src/{ => shared}/assets/icons/icon_exit.svg | 0 .../assets/icons/icon_exit_bold.svg | 0 .../assets/icons/icon_eye_closed.svg | 0 .../assets/icons/icon_eye_open.svg | 0 src/{ => shared}/assets/icons/icon_file.svg | 0 .../assets/icons/icon_file_bold.svg | 0 .../assets/icons/icon_file_image.svg | 0 .../assets/icons/icon_file_image_bold.svg | 0 .../assets/icons/icon_folder_add.svg | 0 .../assets/icons/icon_loading.svg | 0 .../assets/icons/icon_matching_off.svg | 0 .../assets/icons/icon_matching_on.svg | 0 .../icons/icon_number_one_circle_fill.svg | 0 .../icons/icon_number_three_circle_fill.svg | 0 .../icons/icon_number_two_circle_fill.svg | 0 .../assets/icons/icon_profile_circle.svg | 0 .../assets/icons/icon_profile_circle_bold.svg | 0 src/{ => shared}/assets/icons/icon_search.svg | 0 .../assets/icons/icon_search_bold.svg | 0 src/{ => shared}/assets/icons/icon_share.svg | 0 .../assets/icons/icon_step_one_designer.svg | 0 .../assets/icons/icon_step_one_instructor.svg | 0 .../assets/icons/icon_step_three_designer.svg | 0 .../assets/icons/icon_step_two_designer.svg | 0 .../assets/icons/icon_step_two_instructor.svg | 0 .../assets/icons/icon_user_type_designer.svg | 0 .../icons/icon_user_type_instructor.svg | 0 src/shared/assets/icons/index.ts | 42 +++++++++++++++++++ .../assets/logos/ditda_logo_black.svg | 0 .../assets/logos/ditda_logo_purple.svg | 0 src/shared/assets/logos/index.ts | 2 + src/{ => shared}/lib/hooks/usePagination.ts | 0 .../lib/hooks/useUploadedFiles.ts | 4 +- src/{ => shared}/lib/hooks/useWheelColumn.ts | 2 +- src/{ => shared}/lib/utils/cn.ts | 0 src/{ => shared}/lib/utils/color.ts | 0 src/{ => shared}/lib/utils/date.ts | 0 src/{ => shared}/lib/utils/dropdown.ts | 0 src/{ => shared}/lib/utils/file.ts | 0 src/{ => shared}/types/file.ts | 0 .../common => shared/ui}/AccordionMenu.tsx | 2 +- .../common => shared/ui}/Badge.tsx | 0 .../common => shared/ui}/Button.tsx | 2 +- src/{components/common => shared/ui}/Chip.tsx | 4 +- .../common => shared/ui}/FileDragAndDrop.tsx | 6 +-- .../common => shared/ui}/FileUpload.tsx | 2 +- .../common => shared/ui}/Header.tsx | 4 +- .../common => shared/ui}/Modal.tsx | 2 +- .../common => shared/ui}/PageIndicator.tsx | 0 .../common => shared/ui}/Radio.tsx | 0 .../common => shared/ui}/Sidebar.tsx | 0 .../common => shared/ui}/SidebarMenu.tsx | 0 src/{components/common => shared/ui}/Tag.tsx | 0 .../common => shared/ui}/Toggle.tsx | 2 +- .../ui}/dropdown/BankDropdown.tsx | 4 +- .../ui}/dropdown/DateDropdownBox.tsx | 2 +- .../ui}/dropdown/DateDropdownMenu.tsx | 4 +- .../ui}/dropdown/WheelColumn.tsx | 4 +- .../common => shared/ui}/input/InputField.tsx | 4 +- .../common => shared/ui}/input/SmallInput.tsx | 2 +- .../common => shared/ui}/input/TextField.tsx | 2 +- src/store/writeFormStore.ts | 6 +-- 119 files changed, 179 insertions(+), 174 deletions(-) delete mode 100644 src/assets/icons/index.ts delete mode 100644 src/assets/logos/index.ts rename src/{ => shared}/assets/icons/icon_arrow_down.svg (100%) rename src/{ => shared}/assets/icons/icon_arrow_left.svg (100%) rename src/{ => shared}/assets/icons/icon_arrow_left_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_arrow_right.svg (100%) rename src/{ => shared}/assets/icons/icon_arrow_right_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_arrow_up.svg (100%) rename src/{ => shared}/assets/icons/icon_check_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_checkbox_border_gray.svg (100%) rename src/{ => shared}/assets/icons/icon_checkbox_border_white.svg (100%) rename src/{ => shared}/assets/icons/icon_checkbox_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_close.svg (100%) rename src/{ => shared}/assets/icons/icon_close_circle.svg (100%) rename src/{ => shared}/assets/icons/icon_close_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_enter.svg (100%) rename src/{ => shared}/assets/icons/icon_exclamation_mark_circle.svg (100%) rename src/{ => shared}/assets/icons/icon_exit.svg (100%) rename src/{ => shared}/assets/icons/icon_exit_bold.svg (100%) rename src/{ => shared}/assets/icons/icon_eye_closed.svg (100%) rename src/{ => shared}/assets/icons/icon_eye_open.svg (100%) rename src/{ => shared}/assets/icons/icon_file.svg (100%) rename src/{ => shared}/assets/icons/icon_file_bold.svg (100%) rename src/{ => shared}/assets/icons/icon_file_image.svg (100%) rename src/{ => shared}/assets/icons/icon_file_image_bold.svg (100%) rename src/{ => shared}/assets/icons/icon_folder_add.svg (100%) rename src/{ => shared}/assets/icons/icon_loading.svg (100%) rename src/{ => shared}/assets/icons/icon_matching_off.svg (100%) rename src/{ => shared}/assets/icons/icon_matching_on.svg (100%) rename src/{ => shared}/assets/icons/icon_number_one_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_number_three_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_number_two_circle_fill.svg (100%) rename src/{ => shared}/assets/icons/icon_profile_circle.svg (100%) rename src/{ => shared}/assets/icons/icon_profile_circle_bold.svg (100%) rename src/{ => shared}/assets/icons/icon_search.svg (100%) rename src/{ => shared}/assets/icons/icon_search_bold.svg (100%) rename src/{ => shared}/assets/icons/icon_share.svg (100%) rename src/{ => shared}/assets/icons/icon_step_one_designer.svg (100%) rename src/{ => shared}/assets/icons/icon_step_one_instructor.svg (100%) rename src/{ => shared}/assets/icons/icon_step_three_designer.svg (100%) rename src/{ => shared}/assets/icons/icon_step_two_designer.svg (100%) rename src/{ => shared}/assets/icons/icon_step_two_instructor.svg (100%) rename src/{ => shared}/assets/icons/icon_user_type_designer.svg (100%) rename src/{ => shared}/assets/icons/icon_user_type_instructor.svg (100%) create mode 100644 src/shared/assets/icons/index.ts rename src/{ => shared}/assets/logos/ditda_logo_black.svg (100%) rename src/{ => shared}/assets/logos/ditda_logo_purple.svg (100%) create mode 100644 src/shared/assets/logos/index.ts rename src/{ => shared}/lib/hooks/usePagination.ts (100%) rename src/{ => shared}/lib/hooks/useUploadedFiles.ts (92%) rename src/{ => shared}/lib/hooks/useWheelColumn.ts (99%) rename src/{ => shared}/lib/utils/cn.ts (100%) rename src/{ => shared}/lib/utils/color.ts (100%) rename src/{ => shared}/lib/utils/date.ts (100%) rename src/{ => shared}/lib/utils/dropdown.ts (100%) rename src/{ => shared}/lib/utils/file.ts (100%) rename src/{ => shared}/types/file.ts (100%) rename src/{components/common => shared/ui}/AccordionMenu.tsx (91%) rename src/{components/common => shared/ui}/Badge.tsx (100%) rename src/{components/common => shared/ui}/Button.tsx (98%) rename src/{components/common => shared/ui}/Chip.tsx (95%) rename src/{components/common => shared/ui}/FileDragAndDrop.tsx (94%) rename src/{components/common => shared/ui}/FileUpload.tsx (97%) rename src/{components/common => shared/ui}/Header.tsx (92%) rename src/{components/common => shared/ui}/Modal.tsx (97%) rename src/{components/common => shared/ui}/PageIndicator.tsx (100%) rename src/{components/common => shared/ui}/Radio.tsx (100%) rename src/{components/common => shared/ui}/Sidebar.tsx (100%) rename src/{components/common => shared/ui}/SidebarMenu.tsx (100%) rename src/{components/common => shared/ui}/Tag.tsx (100%) rename src/{components/common => shared/ui}/Toggle.tsx (96%) rename src/{components/common => shared/ui}/dropdown/BankDropdown.tsx (97%) rename src/{components/common => shared/ui}/dropdown/DateDropdownBox.tsx (95%) rename src/{components/common => shared/ui}/dropdown/DateDropdownMenu.tsx (97%) rename src/{components/common => shared/ui}/dropdown/WheelColumn.tsx (93%) rename src/{components/common => shared/ui}/input/InputField.tsx (98%) rename src/{components/common => shared/ui}/input/SmallInput.tsx (94%) rename src/{components/common => shared/ui}/input/TextField.tsx (97%) diff --git a/src/app/designer/layout.tsx b/src/app/designer/layout.tsx index 371dd54..5bfc1df 100644 --- a/src/app/designer/layout.tsx +++ b/src/app/designer/layout.tsx @@ -1,8 +1,8 @@ import { ReactNode } from "react"; -import Header from "@/components/common/Header"; -import Sidebar from "@/components/common/Sidebar"; -import SidebarMenu from "@/components/common/SidebarMenu"; +import Header from "@/shared/ui/Header"; +import Sidebar from "@/shared/ui/Sidebar"; +import SidebarMenu from "@/shared/ui/SidebarMenu"; const DesignerLayout = ({ children }: { children: ReactNode }) => { return ( diff --git a/src/app/instructor/layout.tsx b/src/app/instructor/layout.tsx index df786ef..9b6cafe 100644 --- a/src/app/instructor/layout.tsx +++ b/src/app/instructor/layout.tsx @@ -1,8 +1,8 @@ import { ReactNode } from "react"; -import Header from "@/components/common/Header"; -import Sidebar from "@/components/common/Sidebar"; -import SidebarMenu from "@/components/common/SidebarMenu"; +import Header from "@/shared/ui/Header"; +import Sidebar from "@/shared/ui/Sidebar"; +import SidebarMenu from "@/shared/ui/SidebarMenu"; const InstructorLayout = ({ children }: { children: ReactNode }) => { return ( diff --git a/src/app/instructor/write/page.tsx b/src/app/instructor/write/page.tsx index 1e490bf..10c4f1e 100644 --- a/src/app/instructor/write/page.tsx +++ b/src/app/instructor/write/page.tsx @@ -3,10 +3,10 @@ import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; -import Modal from "@/components/common/Modal"; import Step1Content from "@/containers/instructor/write/Steps/Step1Content"; import Step2Content from "@/containers/instructor/write/Steps/Step2Content"; import Step3Content from "@/containers/instructor/write/Steps/Step3Content"; +import Modal from "@/shared/ui/Modal"; import { useWriteFormStore } from "@/store/writeFormStore"; const WritePageContent = () => { diff --git a/src/app/login/layout.tsx b/src/app/login/layout.tsx index c3e06b5..8a962d8 100644 --- a/src/app/login/layout.tsx +++ b/src/app/login/layout.tsx @@ -1,6 +1,6 @@ import { ReactNode } from "react"; -import Header from "@/components/common/Header"; +import Header from "@/shared/ui/Header"; const LoginLayout = ({ children }: { children: ReactNode }) => { return ( diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 86fba24..5214ff4 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -3,9 +3,9 @@ import Link from "next/link"; import { useState } from "react"; -import { BlackLogo } from "@/assets/logos"; -import Button from "@/components/common/Button"; -import InputField from "@/components/common/input/InputField"; +import { BlackLogo } from "@/shared/assets/logos"; +import Button from "@/shared/ui/Button"; +import InputField from "@/shared/ui/input/InputField"; const Page = () => { const [loginId, setLoginId] = useState(""); diff --git a/src/app/signup/designer/step1/page.tsx b/src/app/signup/designer/step1/page.tsx index 31d12f8..495ddd6 100644 --- a/src/app/signup/designer/step1/page.tsx +++ b/src/app/signup/designer/step1/page.tsx @@ -3,14 +3,19 @@ import { useRouter } from "next/navigation"; import { type ChangeEvent, useState } from "react"; -import { CheckboxFillIcon, CheckboxGrayIcon, CloseIcon, StepOneDesignerIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import InputField from "@/components/common/input/InputField"; import { DESIGNER_TERMS, SIGNUP_MAX_NAME_LENGTH, SIGNUP_MAX_PHONE_NUMBER_LENGTH, } from "@/constants/signup"; +import { + CheckboxFillIcon, + CheckboxGrayIcon, + CloseIcon, + StepOneDesignerIcon, +} from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; +import InputField from "@/shared/ui/input/InputField"; type DesignerTermsId = (typeof DESIGNER_TERMS)[number]["id"]; diff --git a/src/app/signup/designer/step2/page.tsx b/src/app/signup/designer/step2/page.tsx index a55398e..5d0880f 100644 --- a/src/app/signup/designer/step2/page.tsx +++ b/src/app/signup/designer/step2/page.tsx @@ -2,11 +2,11 @@ import { useRouter } from "next/navigation"; -import { StepTwoDesignerIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import InputField from "@/components/common/input/InputField"; import { SIGNUP_MAX_ID_LENGTH, SIGNUP_MAX_PASSWORD_LENGTH } from "@/constants/signup"; import { useSignupStep2Form } from "@/lib/hooks/useSignupStep2Form"; +import { StepTwoDesignerIcon } from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; +import InputField from "@/shared/ui/input/InputField"; const Page = () => { const router = useRouter(); diff --git a/src/app/signup/designer/step3/page.tsx b/src/app/signup/designer/step3/page.tsx index 4fa7ed3..1957057 100644 --- a/src/app/signup/designer/step3/page.tsx +++ b/src/app/signup/designer/step3/page.tsx @@ -3,14 +3,14 @@ import { useRouter } from "next/navigation"; import { type ChangeEvent, useState } from "react"; -import { StepThreeDesignerIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import BankDropdown from "@/components/common/dropdown/BankDropdown"; -import FileDragAndDrop from "@/components/common/FileDragAndDrop"; -import FileUpload from "@/components/common/FileUpload"; -import InputField from "@/components/common/input/InputField"; import { type BankCode, type BankOption } from "@/constants/signup"; -import { useUploadedFiles } from "@/lib/hooks/useUploadedFiles"; +import { StepThreeDesignerIcon } from "@/shared/assets/icons"; +import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; +import Button from "@/shared/ui/Button"; +import BankDropdown from "@/shared/ui/dropdown/BankDropdown"; +import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; +import FileUpload from "@/shared/ui/FileUpload"; +import InputField from "@/shared/ui/input/InputField"; const PORTFOLIO_MAX_FILE_COUNT = 3; const PORTFOLIO_ALLOWED_EXTENSIONS = [".pdf", ".png"]; diff --git a/src/app/signup/instructor/step1/page.tsx b/src/app/signup/instructor/step1/page.tsx index 453ed10..693a17b 100644 --- a/src/app/signup/instructor/step1/page.tsx +++ b/src/app/signup/instructor/step1/page.tsx @@ -3,19 +3,19 @@ import { useRouter } from "next/navigation"; import { type ChangeEvent, useState } from "react"; -import { - CheckboxFillIcon, - CheckboxGrayIcon, - CloseIcon, - StepOneInstructorIcon, -} from "@/assets/icons"; -import Button from "@/components/common/Button"; -import InputField from "@/components/common/input/InputField"; import { INSTRUCTOR_TERMS, SIGNUP_MAX_NAME_LENGTH, SIGNUP_MAX_PHONE_NUMBER_LENGTH, } from "@/constants/signup"; +import { + CheckboxFillIcon, + CheckboxGrayIcon, + CloseIcon, + StepOneInstructorIcon, +} from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; +import InputField from "@/shared/ui/input/InputField"; type InstructorTermsId = (typeof INSTRUCTOR_TERMS)[number]["id"]; diff --git a/src/app/signup/instructor/step2/page.tsx b/src/app/signup/instructor/step2/page.tsx index f6cde4b..ab275e8 100644 --- a/src/app/signup/instructor/step2/page.tsx +++ b/src/app/signup/instructor/step2/page.tsx @@ -2,11 +2,11 @@ import { useRouter } from "next/navigation"; -import { StepTwoInstructorIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import InputField from "@/components/common/input/InputField"; import { SIGNUP_MAX_ID_LENGTH, SIGNUP_MAX_PASSWORD_LENGTH } from "@/constants/signup"; import { useSignupStep2Form } from "@/lib/hooks/useSignupStep2Form"; +import { StepTwoInstructorIcon } from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; +import InputField from "@/shared/ui/input/InputField"; const Page = () => { const router = useRouter(); diff --git a/src/app/signup/layout.tsx b/src/app/signup/layout.tsx index d191b32..81691a9 100644 --- a/src/app/signup/layout.tsx +++ b/src/app/signup/layout.tsx @@ -1,6 +1,6 @@ import { ReactNode } from "react"; -import Header from "@/components/common/Header"; +import Header from "@/shared/ui/Header"; const SignupLayout = ({ children }: { children: ReactNode }) => { return ( diff --git a/src/app/signup/page.tsx b/src/app/signup/page.tsx index 7498ddf..c630976 100644 --- a/src/app/signup/page.tsx +++ b/src/app/signup/page.tsx @@ -3,9 +3,9 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; -import { UserTypeDesignerIcon, UserTypeInstructorIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; import UserTypeBtn from "@/components/signup/UserTypeBtn"; +import { UserTypeDesignerIcon, UserTypeInstructorIcon } from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; type UserType = "designer" | "instructor"; diff --git a/src/assets/icons/index.ts b/src/assets/icons/index.ts deleted file mode 100644 index 157f73d..0000000 --- a/src/assets/icons/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -export { default as ArrowDownIcon } from "@/assets/icons/icon_arrow_down.svg"; -export { default as ArrowLeftIcon } from "@/assets/icons/icon_arrow_left.svg"; -export { default as PrevButton } from "@/assets/icons/icon_arrow_left_circle_fill.svg"; -export { default as ArrowRightIcon } from "@/assets/icons/icon_arrow_right.svg"; -export { default as NextButton } from "@/assets/icons/icon_arrow_right_circle_fill.svg"; -export { default as ArrowUpIcon } from "@/assets/icons/icon_arrow_up.svg"; -export { default as CheckCircleFillIcon } from "@/assets/icons/icon_check_circle_fill.svg"; -export { default as CheckboxGrayIcon } from "@/assets/icons/icon_checkbox_border_gray.svg"; -export { default as CheckboxWhiteIcon } from "@/assets/icons/icon_checkbox_border_white.svg"; -export { default as CheckboxFillIcon } from "@/assets/icons/icon_checkbox_fill.svg"; -export { default as CloseIcon } from "@/assets/icons/icon_close.svg"; -export { default as CloseCircleIcon } from "@/assets/icons/icon_close_circle.svg"; -export { default as CloseCircleFillIcon } from "@/assets/icons/icon_close_circle_fill.svg"; -export { default as EnterIcon } from "@/assets/icons/icon_enter.svg"; -export { default as ExclamationMarkCircleIcon } from "@/assets/icons/icon_exclamation_mark_circle.svg"; -export { default as ExitIcon } from "@/assets/icons/icon_exit.svg"; -export { default as ExitBoldIcon } from "@/assets/icons/icon_exit_bold.svg"; -export { default as ClosedEyeIcon } from "@/assets/icons/icon_eye_closed.svg"; -export { default as OpenEyeIcon } from "@/assets/icons/icon_eye_open.svg"; -export { default as FileIcon } from "@/assets/icons/icon_file.svg"; -export { default as FileBoldIcon } from "@/assets/icons/icon_file_bold.svg"; -export { default as FileImageIcon } from "@/assets/icons/icon_file_image.svg"; -export { default as FileImageBoldIcon } from "@/assets/icons/icon_file_image_bold.svg"; -export { default as FolderAddIcon } from "@/assets/icons/icon_folder_add.svg"; -export { default as LoadingIcon } from "@/assets/icons/icon_loading.svg"; -export { default as MatchingOffIcon } from "@/assets/icons/icon_matching_off.svg"; -export { default as MatchingOnIcon } from "@/assets/icons/icon_matching_on.svg"; -export { default as OneCircleIcon } from "@/assets/icons/icon_number_one_circle_fill.svg"; -export { default as ThreeCircleIcon } from "@/assets/icons/icon_number_three_circle_fill.svg"; -export { default as TwoCircleIcon } from "@/assets/icons/icon_number_two_circle_fill.svg"; -export { default as ProfileCircleIcon } from "@/assets/icons/icon_profile_circle.svg"; -export { default as ProfileCircleBoldIcon } from "@/assets/icons/icon_profile_circle_bold.svg"; -export { default as SearchIcon } from "@/assets/icons/icon_search.svg"; -export { default as SearchBoldIcon } from "@/assets/icons/icon_search_bold.svg"; -export { default as ShareIcon } from "@/assets/icons/icon_share.svg"; -export { default as StepOneDesignerIcon } from "@/assets/icons/icon_step_one_designer.svg"; -export { default as StepOneInstructorIcon } from "@/assets/icons/icon_step_one_instructor.svg"; -export { default as StepThreeDesignerIcon } from "@/assets/icons/icon_step_three_designer.svg"; -export { default as StepTwoDesignerIcon } from "@/assets/icons/icon_step_two_designer.svg"; -export { default as StepTwoInstructorIcon } from "@/assets/icons/icon_step_two_instructor.svg"; -export { default as UserTypeDesignerIcon } from "@/assets/icons/icon_user_type_designer.svg"; -export { default as UserTypeInstructorIcon } from "@/assets/icons/icon_user_type_instructor.svg"; diff --git a/src/assets/logos/index.ts b/src/assets/logos/index.ts deleted file mode 100644 index bb9a8b1..0000000 --- a/src/assets/logos/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as BlackLogo } from "@/assets/logos/ditda_logo_black.svg"; -export { default as PurpleLogo } from "@/assets/logos/ditda_logo_purple.svg"; diff --git a/src/components/instructor/home/DraftSubmissionStatusRow.tsx b/src/components/instructor/home/DraftSubmissionStatusRow.tsx index 8b54633..2375399 100644 --- a/src/components/instructor/home/DraftSubmissionStatusRow.tsx +++ b/src/components/instructor/home/DraftSubmissionStatusRow.tsx @@ -1,7 +1,7 @@ -import { ArrowRightIcon, MatchingOffIcon, MatchingOnIcon } from "@/assets/icons"; -import Tag from "@/components/common/Tag"; import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/data/instructor/home"; -import { getDDay } from "@/lib/utils/date"; +import { ArrowRightIcon, MatchingOffIcon, MatchingOnIcon } from "@/shared/assets/icons"; +import { getDDay } from "@/shared/lib/utils/date"; +import Tag from "@/shared/ui/Tag"; const DraftSubmissionStatusRow = ({ item }: { item: DraftSubmissionItem }) => { const { title, category, draftSubmission, firstDraftDeadline } = item; diff --git a/src/components/instructor/home/MatchingCommissionsRow.tsx b/src/components/instructor/home/MatchingCommissionsRow.tsx index 18404d0..d205d5d 100644 --- a/src/components/instructor/home/MatchingCommissionsRow.tsx +++ b/src/components/instructor/home/MatchingCommissionsRow.tsx @@ -1,7 +1,7 @@ -import { ArrowRightIcon } from "@/assets/icons"; -import Tag from "@/components/common/Tag"; import { MatchingItem } from "@/data/instructor/home"; -import { getDDay } from "@/lib/utils/date"; +import { ArrowRightIcon } from "@/shared/assets/icons"; +import { getDDay } from "@/shared/lib/utils/date"; +import Tag from "@/shared/ui/Tag"; const MatchingCommissionsRow = ({ item }: { item: MatchingItem }) => { const { title, finalDeadline, matching } = item; diff --git a/src/components/instructor/home/ModifyingCommissionsRow.tsx b/src/components/instructor/home/ModifyingCommissionsRow.tsx index cec061e..66011e0 100644 --- a/src/components/instructor/home/ModifyingCommissionsRow.tsx +++ b/src/components/instructor/home/ModifyingCommissionsRow.tsx @@ -1,8 +1,8 @@ -import Button from "@/components/common/Button"; -import Tag from "@/components/common/Tag"; import { ModifyingItem } from "@/data/instructor/home"; -import { cn } from "@/lib/utils/cn"; -import { getDDay } from "@/lib/utils/date"; +import { cn } from "@/shared/lib/utils/cn"; +import { getDDay } from "@/shared/lib/utils/date"; +import Button from "@/shared/ui/Button"; +import Tag from "@/shared/ui/Tag"; const ModifyingCommissionsRow = ({ item }: { item: ModifyingItem }) => { const { title, finalDeadline, isSubmitted, hasUpdate } = item; diff --git a/src/components/instructor/write/ColorChooseCard.tsx b/src/components/instructor/write/ColorChooseCard.tsx index c78f075..6af2a00 100644 --- a/src/components/instructor/write/ColorChooseCard.tsx +++ b/src/components/instructor/write/ColorChooseCard.tsx @@ -2,10 +2,10 @@ import { useState } from "react"; -import Radio from "@/components/common/Radio"; -import { cn } from "@/lib/utils/cn"; -import type { RgbaColor } from "@/lib/utils/color"; -import { clamp, hexToRgb, toHex } from "@/lib/utils/color"; +import { cn } from "@/shared/lib/utils/cn"; +import type { RgbaColor } from "@/shared/lib/utils/color"; +import { clamp, hexToRgb, toHex } from "@/shared/lib/utils/color"; +import Radio from "@/shared/ui/Radio"; type ColorChooseCardProps = { index: number; diff --git a/src/components/instructor/write/ColorPicker.tsx b/src/components/instructor/write/ColorPicker.tsx index 9d61019..fef2b63 100644 --- a/src/components/instructor/write/ColorPicker.tsx +++ b/src/components/instructor/write/ColorPicker.tsx @@ -3,8 +3,8 @@ import { useState } from "react"; import { RgbaColorPicker } from "react-colorful"; -import type { RgbaColor } from "@/lib/utils/color"; -import { clamp, hexToRgb, toHex } from "@/lib/utils/color"; +import type { RgbaColor } from "@/shared/lib/utils/color"; +import { clamp, hexToRgb, toHex } from "@/shared/lib/utils/color"; interface ColorPickerProps { value?: RgbaColor; diff --git a/src/components/instructor/write/ConceptKeywordCard.tsx b/src/components/instructor/write/ConceptKeywordCard.tsx index a7c91a6..8ccd202 100644 --- a/src/components/instructor/write/ConceptKeywordCard.tsx +++ b/src/components/instructor/write/ConceptKeywordCard.tsx @@ -1,4 +1,4 @@ -import Chip from "@/components/common/Chip"; +import Chip from "@/shared/ui/Chip"; interface ConceptKeywordCardProps { title: string; diff --git a/src/components/instructor/write/PaperSizeCard.tsx b/src/components/instructor/write/PaperSizeCard.tsx index e3ec26f..6a189ff 100644 --- a/src/components/instructor/write/PaperSizeCard.tsx +++ b/src/components/instructor/write/PaperSizeCard.tsx @@ -1,4 +1,4 @@ -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; const PAPER_SIZES = [ { label: "A4", sizeClassName: "w-24 h-34.5" }, diff --git a/src/components/instructor/write/PaymentModal/PaymentModal.tsx b/src/components/instructor/write/PaymentModal/PaymentModal.tsx index 759824f..bbc75e3 100644 --- a/src/components/instructor/write/PaymentModal/PaymentModal.tsx +++ b/src/components/instructor/write/PaymentModal/PaymentModal.tsx @@ -2,9 +2,9 @@ import { useEffect, useState } from "react"; -import { CloseIcon } from "@/assets/icons"; import Step1 from "@/components/instructor/write/PaymentModal/Step1"; import Step2 from "@/components/instructor/write/PaymentModal/Step2"; +import { CloseIcon } from "@/shared/assets/icons"; import { useWriteFormStore } from "@/store/writeFormStore"; const PaymentModalContent = ({ onClose }: { onClose?: () => void }) => { diff --git a/src/components/instructor/write/PaymentModal/Step1.tsx b/src/components/instructor/write/PaymentModal/Step1.tsx index fb688f8..da2d018 100644 --- a/src/components/instructor/write/PaymentModal/Step1.tsx +++ b/src/components/instructor/write/PaymentModal/Step1.tsx @@ -1,10 +1,10 @@ import { useState } from "react"; -import { ArrowDownIcon, CheckboxFillIcon, CheckboxGrayIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import Chip from "@/components/common/Chip"; import { PLAN_MAP, SIZE_DISPLAY_MAP, TERMS_CONTENT } from "@/constants/write"; -import { formatDate } from "@/lib/utils/date"; +import { ArrowDownIcon, CheckboxFillIcon, CheckboxGrayIcon } from "@/shared/assets/icons"; +import { formatDate } from "@/shared/lib/utils/date"; +import Button from "@/shared/ui/Button"; +import Chip from "@/shared/ui/Chip"; import { useWriteFormStore } from "@/store/writeFormStore"; /* ───────────────────────────────────────────── diff --git a/src/components/instructor/write/PaymentModal/Step2.tsx b/src/components/instructor/write/PaymentModal/Step2.tsx index 892a391..2d4ea33 100644 --- a/src/components/instructor/write/PaymentModal/Step2.tsx +++ b/src/components/instructor/write/PaymentModal/Step2.tsx @@ -2,9 +2,9 @@ import { useRouter } from "next/navigation"; -import { ArrowLeftIcon, ExclamationMarkCircleIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; import { PLAN_MAP } from "@/constants/write"; +import { ArrowLeftIcon, ExclamationMarkCircleIcon } from "@/shared/assets/icons"; +import Button from "@/shared/ui/Button"; import { useWriteFormStore } from "@/store/writeFormStore"; const Step2 = ({ onBack }: { onBack: () => void }) => { diff --git a/src/components/instructor/write/PlanChooseCard.tsx b/src/components/instructor/write/PlanChooseCard.tsx index 9c4459b..272427c 100644 --- a/src/components/instructor/write/PlanChooseCard.tsx +++ b/src/components/instructor/write/PlanChooseCard.tsx @@ -1,5 +1,5 @@ -import Badge from "@/components/common/Badge"; import { PLAN_MAP, PlanType } from "@/constants/write"; +import Badge from "@/shared/ui/Badge"; interface PlanChooseCardProps { plan: PlanType; diff --git a/src/components/signup/UserTypeBtn.tsx b/src/components/signup/UserTypeBtn.tsx index 528ecd9..82577af 100644 --- a/src/components/signup/UserTypeBtn.tsx +++ b/src/components/signup/UserTypeBtn.tsx @@ -1,6 +1,6 @@ import type { ComponentPropsWithoutRef, ReactNode } from "react"; -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; type UserTypeBtnProps = Omit< ComponentPropsWithoutRef<"button">, diff --git a/src/constants/sidebarMenu.ts b/src/constants/sidebarMenu.ts index 100dd00..80278c0 100644 --- a/src/constants/sidebarMenu.ts +++ b/src/constants/sidebarMenu.ts @@ -9,7 +9,7 @@ import { ProfileCircleIcon, SearchBoldIcon, SearchIcon, -} from "@/assets/icons"; +} from "@/shared/assets/icons"; type IconComponent = React.FC>; diff --git a/src/constants/write.ts b/src/constants/write.ts index 38028c8..eef415b 100644 --- a/src/constants/write.ts +++ b/src/constants/write.ts @@ -1,7 +1,7 @@ import React from "react"; -import { OneCircleIcon, ThreeCircleIcon, TwoCircleIcon } from "@/assets/icons"; -import { BadgeVariant } from "@/components/common/Badge"; +import { OneCircleIcon, ThreeCircleIcon, TwoCircleIcon } from "@/shared/assets/icons"; +import { BadgeVariant } from "@/shared/ui/Badge"; export type WriteStep = 1 | 2 | 3; diff --git a/src/containers/instructor/home/DraftSubmissionStatusSection.tsx b/src/containers/instructor/home/DraftSubmissionStatusSection.tsx index c6d7738..c4d9950 100644 --- a/src/containers/instructor/home/DraftSubmissionStatusSection.tsx +++ b/src/containers/instructor/home/DraftSubmissionStatusSection.tsx @@ -1,12 +1,12 @@ "use client"; -import { NextButton, PrevButton } from "@/assets/icons"; -import PageIndicator from "@/components/common/PageIndicator"; import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; import DraftSubmissionStatusRow from "@/components/instructor/home/DraftSubmissionStatusRow"; import { DRAFT_SUBMISSION_ITEMS_PER_PAGE } from "@/constants/home"; import { draftSubmissionStatusData } from "@/data/instructor/home"; -import usePagination from "@/lib/hooks/usePagination"; +import { NextButton, PrevButton } from "@/shared/assets/icons"; +import usePagination from "@/shared/lib/hooks/usePagination"; +import PageIndicator from "@/shared/ui/PageIndicator"; const DraftSubmissionStatusSection = () => { const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination( diff --git a/src/containers/instructor/home/MatchingCommissionsSection.tsx b/src/containers/instructor/home/MatchingCommissionsSection.tsx index 70e4eef..c85f35e 100644 --- a/src/containers/instructor/home/MatchingCommissionsSection.tsx +++ b/src/containers/instructor/home/MatchingCommissionsSection.tsx @@ -1,12 +1,12 @@ "use client"; -import { NextButton, PrevButton } from "@/assets/icons"; -import PageIndicator from "@/components/common/PageIndicator"; import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; import MatchingStatusCommissionsRow from "@/components/instructor/home/MatchingCommissionsRow"; import { MATCHING_ITEMS_PER_PAGE } from "@/constants/home"; import { matchingStatusData } from "@/data/instructor/home"; -import usePagination from "@/lib/hooks/usePagination"; +import { NextButton, PrevButton } from "@/shared/assets/icons"; +import usePagination from "@/shared/lib/hooks/usePagination"; +import PageIndicator from "@/shared/ui/PageIndicator"; const MatchingCommissionsSection = () => { const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination( diff --git a/src/containers/instructor/home/ModifyingCommissionsSection.tsx b/src/containers/instructor/home/ModifyingCommissionsSection.tsx index 11cbac4..87284f6 100644 --- a/src/containers/instructor/home/ModifyingCommissionsSection.tsx +++ b/src/containers/instructor/home/ModifyingCommissionsSection.tsx @@ -1,12 +1,12 @@ "use client"; -import { NextButton, PrevButton } from "@/assets/icons"; -import PageIndicator from "@/components/common/PageIndicator"; import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; import ModifyingCommissionsRow from "@/components/instructor/home/ModifyingCommissionsRow"; import { MODIFYING_ITEMS_PER_PAGE } from "@/constants/home"; import { modifyingStatusData } from "@/data/instructor/home"; -import usePagination from "@/lib/hooks/usePagination"; +import { NextButton, PrevButton } from "@/shared/assets/icons"; +import usePagination from "@/shared/lib/hooks/usePagination"; +import PageIndicator from "@/shared/ui/PageIndicator"; const ModifyingCommissionsSection = () => { const { current, totalPages, pageItems, handlePrev, handleNext } = usePagination( diff --git a/src/containers/instructor/write/AttachFileSection.tsx b/src/containers/instructor/write/AttachFileSection.tsx index 7c912ae..50ef816 100644 --- a/src/containers/instructor/write/AttachFileSection.tsx +++ b/src/containers/instructor/write/AttachFileSection.tsx @@ -1,9 +1,9 @@ "use client"; -import FileDragAndDrop from "@/components/common/FileDragAndDrop"; -import FileUpload from "@/components/common/FileUpload"; -import TextField from "@/components/common/input/TextField"; -import { useUploadedFiles } from "@/lib/hooks/useUploadedFiles"; +import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; +import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; +import FileUpload from "@/shared/ui/FileUpload"; +import TextField from "@/shared/ui/input/TextField"; import { useWriteFormStore } from "@/store/writeFormStore"; const AttachFileSection = () => { diff --git a/src/containers/instructor/write/BasicInfoTypingSection.tsx b/src/containers/instructor/write/BasicInfoTypingSection.tsx index b928c41..6b14d03 100644 --- a/src/containers/instructor/write/BasicInfoTypingSection.tsx +++ b/src/containers/instructor/write/BasicInfoTypingSection.tsx @@ -1,7 +1,7 @@ "use client"; -import SmallInput from "@/components/common/input/SmallInput"; import { BASIC_INFO_FIELDS } from "@/constants/write"; +import SmallInput from "@/shared/ui/input/SmallInput"; import { type BasicInfo, useWriteFormStore } from "@/store/writeFormStore"; const BasicInfoTypingSection = () => { diff --git a/src/containers/instructor/write/CategorySection.tsx b/src/containers/instructor/write/CategorySection.tsx index b87b405..c1193b8 100644 --- a/src/containers/instructor/write/CategorySection.tsx +++ b/src/containers/instructor/write/CategorySection.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; -import AccordionMenu from "@/components/common/AccordionMenu"; -import Radio from "@/components/common/Radio"; import { CATEGORIES } from "@/constants/write"; +import AccordionMenu from "@/shared/ui/AccordionMenu"; +import Radio from "@/shared/ui/Radio"; import { useWriteFormStore } from "@/store/writeFormStore"; const CategorySection = () => { diff --git a/src/containers/instructor/write/ColorChooseSection.tsx b/src/containers/instructor/write/ColorChooseSection.tsx index 8f94c22..ec76fac 100644 --- a/src/containers/instructor/write/ColorChooseSection.tsx +++ b/src/containers/instructor/write/ColorChooseSection.tsx @@ -2,11 +2,11 @@ import { useEffect, useRef, useState } from "react"; -import Toggle from "@/components/common/Toggle"; import ColorChooseCard from "@/components/instructor/write/ColorChooseCard"; import ColorPicker from "@/components/instructor/write/ColorPicker"; -import { cn } from "@/lib/utils/cn"; -import type { RgbaColor } from "@/lib/utils/color"; +import { cn } from "@/shared/lib/utils/cn"; +import type { RgbaColor } from "@/shared/lib/utils/color"; +import Toggle from "@/shared/ui/Toggle"; import { useWriteFormStore } from "@/store/writeFormStore"; const ColorChooseSection = () => { diff --git a/src/containers/instructor/write/DeadlineChooseSection.tsx b/src/containers/instructor/write/DeadlineChooseSection.tsx index 4651da3..8435138 100644 --- a/src/containers/instructor/write/DeadlineChooseSection.tsx +++ b/src/containers/instructor/write/DeadlineChooseSection.tsx @@ -2,9 +2,9 @@ import { useEffect, useRef, useState } from "react"; -import DateDropdownBox from "@/components/common/dropdown/DateDropdownBox"; -import DateDropdownMenu from "@/components/common/dropdown/DateDropdownMenu"; -import { formatDate, getMinFinalDate, getYesterday } from "@/lib/utils/date"; +import { formatDate, getMinFinalDate, getYesterday } from "@/shared/lib/utils/date"; +import DateDropdownBox from "@/shared/ui/dropdown/DateDropdownBox"; +import DateDropdownMenu from "@/shared/ui/dropdown/DateDropdownMenu"; import { useWriteFormStore } from "@/store/writeFormStore"; const DeadlineChooseSection = () => { diff --git a/src/containers/instructor/write/DesignConceptSection.tsx b/src/containers/instructor/write/DesignConceptSection.tsx index 56b4403..0fdb793 100644 --- a/src/containers/instructor/write/DesignConceptSection.tsx +++ b/src/containers/instructor/write/DesignConceptSection.tsx @@ -1,9 +1,9 @@ "use client"; -import Chip from "@/components/common/Chip"; -import TextField from "@/components/common/input/TextField"; import ConceptKeywordCard from "@/components/instructor/write/ConceptKeywordCard"; import { CONCEPT_CATEGORIES, MAX_CONCEPT_SELECT } from "@/constants/write"; +import Chip from "@/shared/ui/Chip"; +import TextField from "@/shared/ui/input/TextField"; import { useWriteFormStore } from "@/store/writeFormStore"; const DesignConceptSection = () => { diff --git a/src/containers/instructor/write/NecessaryPageChooseSection.tsx b/src/containers/instructor/write/NecessaryPageChooseSection.tsx index 6a13413..58acdb8 100644 --- a/src/containers/instructor/write/NecessaryPageChooseSection.tsx +++ b/src/containers/instructor/write/NecessaryPageChooseSection.tsx @@ -1,8 +1,8 @@ "use client"; -import Chip from "@/components/common/Chip"; -import TextField from "@/components/common/input/TextField"; import { PAGE_OPTIONS } from "@/constants/write"; +import Chip from "@/shared/ui/Chip"; +import TextField from "@/shared/ui/input/TextField"; import { useWriteFormStore } from "@/store/writeFormStore"; const NecessaryPageChooseSection = () => { diff --git a/src/containers/instructor/write/ReferenceSection.tsx b/src/containers/instructor/write/ReferenceSection.tsx index 56784ba..fe2e694 100644 --- a/src/containers/instructor/write/ReferenceSection.tsx +++ b/src/containers/instructor/write/ReferenceSection.tsx @@ -1,9 +1,9 @@ "use client"; -import FileDragAndDrop from "@/components/common/FileDragAndDrop"; -import FileUpload from "@/components/common/FileUpload"; -import TextField from "@/components/common/input/TextField"; -import { useUploadedFiles } from "@/lib/hooks/useUploadedFiles"; +import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; +import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; +import FileUpload from "@/shared/ui/FileUpload"; +import TextField from "@/shared/ui/input/TextField"; import { useWriteFormStore } from "@/store/writeFormStore"; const ReferenceSection = () => { diff --git a/src/containers/instructor/write/Steps/Step1Content.tsx b/src/containers/instructor/write/Steps/Step1Content.tsx index 283e668..b820d07 100644 --- a/src/containers/instructor/write/Steps/Step1Content.tsx +++ b/src/containers/instructor/write/Steps/Step1Content.tsx @@ -1,10 +1,10 @@ "use client"; -import Button from "@/components/common/Button"; import CategorySection from "@/containers/instructor/write/CategorySection"; import ColorChooseSection from "@/containers/instructor/write/ColorChooseSection"; import DesignConceptSection from "@/containers/instructor/write/DesignConceptSection"; import SizeSection from "@/containers/instructor/write/SizeSection"; +import Button from "@/shared/ui/Button"; import { useWriteFormStore } from "@/store/writeFormStore"; const Step1Content = () => { diff --git a/src/containers/instructor/write/Steps/Step2Content.tsx b/src/containers/instructor/write/Steps/Step2Content.tsx index df49f82..613c9c1 100644 --- a/src/containers/instructor/write/Steps/Step2Content.tsx +++ b/src/containers/instructor/write/Steps/Step2Content.tsx @@ -1,10 +1,10 @@ "use client"; -import Button from "@/components/common/Button"; import AttachFileSection from "@/containers/instructor/write/AttachFileSection"; import BasicInfoTypingSection from "@/containers/instructor/write/BasicInfoTypingSection"; import NecessaryPageChooseSection from "@/containers/instructor/write/NecessaryPageChooseSection"; import ReferenceSection from "@/containers/instructor/write/ReferenceSection"; +import Button from "@/shared/ui/Button"; import { useWriteFormStore } from "@/store/writeFormStore"; const Step2Content = () => { diff --git a/src/containers/instructor/write/Steps/Step3Content.tsx b/src/containers/instructor/write/Steps/Step3Content.tsx index 4dd21f1..82396c2 100644 --- a/src/containers/instructor/write/Steps/Step3Content.tsx +++ b/src/containers/instructor/write/Steps/Step3Content.tsx @@ -2,10 +2,10 @@ import { useState } from "react"; -import Button from "@/components/common/Button"; import PaymentModal from "@/components/instructor/write/PaymentModal/PaymentModal"; import DeadlineChooseSection from "@/containers/instructor/write/DeadlineChooseSection"; import PlanChooseSection from "@/containers/instructor/write/PlanChooseSection"; +import Button from "@/shared/ui/Button"; import { useWriteFormStore } from "@/store/writeFormStore"; const Step3Content = () => { diff --git a/src/assets/icons/icon_arrow_down.svg b/src/shared/assets/icons/icon_arrow_down.svg similarity index 100% rename from src/assets/icons/icon_arrow_down.svg rename to src/shared/assets/icons/icon_arrow_down.svg diff --git a/src/assets/icons/icon_arrow_left.svg b/src/shared/assets/icons/icon_arrow_left.svg similarity index 100% rename from src/assets/icons/icon_arrow_left.svg rename to src/shared/assets/icons/icon_arrow_left.svg diff --git a/src/assets/icons/icon_arrow_left_circle_fill.svg b/src/shared/assets/icons/icon_arrow_left_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_arrow_left_circle_fill.svg rename to src/shared/assets/icons/icon_arrow_left_circle_fill.svg diff --git a/src/assets/icons/icon_arrow_right.svg b/src/shared/assets/icons/icon_arrow_right.svg similarity index 100% rename from src/assets/icons/icon_arrow_right.svg rename to src/shared/assets/icons/icon_arrow_right.svg diff --git a/src/assets/icons/icon_arrow_right_circle_fill.svg b/src/shared/assets/icons/icon_arrow_right_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_arrow_right_circle_fill.svg rename to src/shared/assets/icons/icon_arrow_right_circle_fill.svg diff --git a/src/assets/icons/icon_arrow_up.svg b/src/shared/assets/icons/icon_arrow_up.svg similarity index 100% rename from src/assets/icons/icon_arrow_up.svg rename to src/shared/assets/icons/icon_arrow_up.svg diff --git a/src/assets/icons/icon_check_circle_fill.svg b/src/shared/assets/icons/icon_check_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_check_circle_fill.svg rename to src/shared/assets/icons/icon_check_circle_fill.svg diff --git a/src/assets/icons/icon_checkbox_border_gray.svg b/src/shared/assets/icons/icon_checkbox_border_gray.svg similarity index 100% rename from src/assets/icons/icon_checkbox_border_gray.svg rename to src/shared/assets/icons/icon_checkbox_border_gray.svg diff --git a/src/assets/icons/icon_checkbox_border_white.svg b/src/shared/assets/icons/icon_checkbox_border_white.svg similarity index 100% rename from src/assets/icons/icon_checkbox_border_white.svg rename to src/shared/assets/icons/icon_checkbox_border_white.svg diff --git a/src/assets/icons/icon_checkbox_fill.svg b/src/shared/assets/icons/icon_checkbox_fill.svg similarity index 100% rename from src/assets/icons/icon_checkbox_fill.svg rename to src/shared/assets/icons/icon_checkbox_fill.svg diff --git a/src/assets/icons/icon_close.svg b/src/shared/assets/icons/icon_close.svg similarity index 100% rename from src/assets/icons/icon_close.svg rename to src/shared/assets/icons/icon_close.svg diff --git a/src/assets/icons/icon_close_circle.svg b/src/shared/assets/icons/icon_close_circle.svg similarity index 100% rename from src/assets/icons/icon_close_circle.svg rename to src/shared/assets/icons/icon_close_circle.svg diff --git a/src/assets/icons/icon_close_circle_fill.svg b/src/shared/assets/icons/icon_close_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_close_circle_fill.svg rename to src/shared/assets/icons/icon_close_circle_fill.svg diff --git a/src/assets/icons/icon_enter.svg b/src/shared/assets/icons/icon_enter.svg similarity index 100% rename from src/assets/icons/icon_enter.svg rename to src/shared/assets/icons/icon_enter.svg diff --git a/src/assets/icons/icon_exclamation_mark_circle.svg b/src/shared/assets/icons/icon_exclamation_mark_circle.svg similarity index 100% rename from src/assets/icons/icon_exclamation_mark_circle.svg rename to src/shared/assets/icons/icon_exclamation_mark_circle.svg diff --git a/src/assets/icons/icon_exit.svg b/src/shared/assets/icons/icon_exit.svg similarity index 100% rename from src/assets/icons/icon_exit.svg rename to src/shared/assets/icons/icon_exit.svg diff --git a/src/assets/icons/icon_exit_bold.svg b/src/shared/assets/icons/icon_exit_bold.svg similarity index 100% rename from src/assets/icons/icon_exit_bold.svg rename to src/shared/assets/icons/icon_exit_bold.svg diff --git a/src/assets/icons/icon_eye_closed.svg b/src/shared/assets/icons/icon_eye_closed.svg similarity index 100% rename from src/assets/icons/icon_eye_closed.svg rename to src/shared/assets/icons/icon_eye_closed.svg diff --git a/src/assets/icons/icon_eye_open.svg b/src/shared/assets/icons/icon_eye_open.svg similarity index 100% rename from src/assets/icons/icon_eye_open.svg rename to src/shared/assets/icons/icon_eye_open.svg diff --git a/src/assets/icons/icon_file.svg b/src/shared/assets/icons/icon_file.svg similarity index 100% rename from src/assets/icons/icon_file.svg rename to src/shared/assets/icons/icon_file.svg diff --git a/src/assets/icons/icon_file_bold.svg b/src/shared/assets/icons/icon_file_bold.svg similarity index 100% rename from src/assets/icons/icon_file_bold.svg rename to src/shared/assets/icons/icon_file_bold.svg diff --git a/src/assets/icons/icon_file_image.svg b/src/shared/assets/icons/icon_file_image.svg similarity index 100% rename from src/assets/icons/icon_file_image.svg rename to src/shared/assets/icons/icon_file_image.svg diff --git a/src/assets/icons/icon_file_image_bold.svg b/src/shared/assets/icons/icon_file_image_bold.svg similarity index 100% rename from src/assets/icons/icon_file_image_bold.svg rename to src/shared/assets/icons/icon_file_image_bold.svg diff --git a/src/assets/icons/icon_folder_add.svg b/src/shared/assets/icons/icon_folder_add.svg similarity index 100% rename from src/assets/icons/icon_folder_add.svg rename to src/shared/assets/icons/icon_folder_add.svg diff --git a/src/assets/icons/icon_loading.svg b/src/shared/assets/icons/icon_loading.svg similarity index 100% rename from src/assets/icons/icon_loading.svg rename to src/shared/assets/icons/icon_loading.svg diff --git a/src/assets/icons/icon_matching_off.svg b/src/shared/assets/icons/icon_matching_off.svg similarity index 100% rename from src/assets/icons/icon_matching_off.svg rename to src/shared/assets/icons/icon_matching_off.svg diff --git a/src/assets/icons/icon_matching_on.svg b/src/shared/assets/icons/icon_matching_on.svg similarity index 100% rename from src/assets/icons/icon_matching_on.svg rename to src/shared/assets/icons/icon_matching_on.svg diff --git a/src/assets/icons/icon_number_one_circle_fill.svg b/src/shared/assets/icons/icon_number_one_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_number_one_circle_fill.svg rename to src/shared/assets/icons/icon_number_one_circle_fill.svg diff --git a/src/assets/icons/icon_number_three_circle_fill.svg b/src/shared/assets/icons/icon_number_three_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_number_three_circle_fill.svg rename to src/shared/assets/icons/icon_number_three_circle_fill.svg diff --git a/src/assets/icons/icon_number_two_circle_fill.svg b/src/shared/assets/icons/icon_number_two_circle_fill.svg similarity index 100% rename from src/assets/icons/icon_number_two_circle_fill.svg rename to src/shared/assets/icons/icon_number_two_circle_fill.svg diff --git a/src/assets/icons/icon_profile_circle.svg b/src/shared/assets/icons/icon_profile_circle.svg similarity index 100% rename from src/assets/icons/icon_profile_circle.svg rename to src/shared/assets/icons/icon_profile_circle.svg diff --git a/src/assets/icons/icon_profile_circle_bold.svg b/src/shared/assets/icons/icon_profile_circle_bold.svg similarity index 100% rename from src/assets/icons/icon_profile_circle_bold.svg rename to src/shared/assets/icons/icon_profile_circle_bold.svg diff --git a/src/assets/icons/icon_search.svg b/src/shared/assets/icons/icon_search.svg similarity index 100% rename from src/assets/icons/icon_search.svg rename to src/shared/assets/icons/icon_search.svg diff --git a/src/assets/icons/icon_search_bold.svg b/src/shared/assets/icons/icon_search_bold.svg similarity index 100% rename from src/assets/icons/icon_search_bold.svg rename to src/shared/assets/icons/icon_search_bold.svg diff --git a/src/assets/icons/icon_share.svg b/src/shared/assets/icons/icon_share.svg similarity index 100% rename from src/assets/icons/icon_share.svg rename to src/shared/assets/icons/icon_share.svg diff --git a/src/assets/icons/icon_step_one_designer.svg b/src/shared/assets/icons/icon_step_one_designer.svg similarity index 100% rename from src/assets/icons/icon_step_one_designer.svg rename to src/shared/assets/icons/icon_step_one_designer.svg diff --git a/src/assets/icons/icon_step_one_instructor.svg b/src/shared/assets/icons/icon_step_one_instructor.svg similarity index 100% rename from src/assets/icons/icon_step_one_instructor.svg rename to src/shared/assets/icons/icon_step_one_instructor.svg diff --git a/src/assets/icons/icon_step_three_designer.svg b/src/shared/assets/icons/icon_step_three_designer.svg similarity index 100% rename from src/assets/icons/icon_step_three_designer.svg rename to src/shared/assets/icons/icon_step_three_designer.svg diff --git a/src/assets/icons/icon_step_two_designer.svg b/src/shared/assets/icons/icon_step_two_designer.svg similarity index 100% rename from src/assets/icons/icon_step_two_designer.svg rename to src/shared/assets/icons/icon_step_two_designer.svg diff --git a/src/assets/icons/icon_step_two_instructor.svg b/src/shared/assets/icons/icon_step_two_instructor.svg similarity index 100% rename from src/assets/icons/icon_step_two_instructor.svg rename to src/shared/assets/icons/icon_step_two_instructor.svg diff --git a/src/assets/icons/icon_user_type_designer.svg b/src/shared/assets/icons/icon_user_type_designer.svg similarity index 100% rename from src/assets/icons/icon_user_type_designer.svg rename to src/shared/assets/icons/icon_user_type_designer.svg diff --git a/src/assets/icons/icon_user_type_instructor.svg b/src/shared/assets/icons/icon_user_type_instructor.svg similarity index 100% rename from src/assets/icons/icon_user_type_instructor.svg rename to src/shared/assets/icons/icon_user_type_instructor.svg diff --git a/src/shared/assets/icons/index.ts b/src/shared/assets/icons/index.ts new file mode 100644 index 0000000..20791a9 --- /dev/null +++ b/src/shared/assets/icons/index.ts @@ -0,0 +1,42 @@ +export { default as ArrowDownIcon } from "@/shared/assets/icons/icon_arrow_down.svg"; +export { default as ArrowLeftIcon } from "@/shared/assets/icons/icon_arrow_left.svg"; +export { default as PrevButton } from "@/shared/assets/icons/icon_arrow_left_circle_fill.svg"; +export { default as ArrowRightIcon } from "@/shared/assets/icons/icon_arrow_right.svg"; +export { default as NextButton } from "@/shared/assets/icons/icon_arrow_right_circle_fill.svg"; +export { default as ArrowUpIcon } from "@/shared/assets/icons/icon_arrow_up.svg"; +export { default as CheckCircleFillIcon } from "@/shared/assets/icons/icon_check_circle_fill.svg"; +export { default as CheckboxGrayIcon } from "@/shared/assets/icons/icon_checkbox_border_gray.svg"; +export { default as CheckboxWhiteIcon } from "@/shared/assets/icons/icon_checkbox_border_white.svg"; +export { default as CheckboxFillIcon } from "@/shared/assets/icons/icon_checkbox_fill.svg"; +export { default as CloseIcon } from "@/shared/assets/icons/icon_close.svg"; +export { default as CloseCircleIcon } from "@/shared/assets/icons/icon_close_circle.svg"; +export { default as CloseCircleFillIcon } from "@/shared/assets/icons/icon_close_circle_fill.svg"; +export { default as EnterIcon } from "@/shared/assets/icons/icon_enter.svg"; +export { default as ExclamationMarkCircleIcon } from "@/shared/assets/icons/icon_exclamation_mark_circle.svg"; +export { default as ExitIcon } from "@/shared/assets/icons/icon_exit.svg"; +export { default as ExitBoldIcon } from "@/shared/assets/icons/icon_exit_bold.svg"; +export { default as ClosedEyeIcon } from "@/shared/assets/icons/icon_eye_closed.svg"; +export { default as OpenEyeIcon } from "@/shared/assets/icons/icon_eye_open.svg"; +export { default as FileIcon } from "@/shared/assets/icons/icon_file.svg"; +export { default as FileBoldIcon } from "@/shared/assets/icons/icon_file_bold.svg"; +export { default as FileImageIcon } from "@/shared/assets/icons/icon_file_image.svg"; +export { default as FileImageBoldIcon } from "@/shared/assets/icons/icon_file_image_bold.svg"; +export { default as FolderAddIcon } from "@/shared/assets/icons/icon_folder_add.svg"; +export { default as LoadingIcon } from "@/shared/assets/icons/icon_loading.svg"; +export { default as MatchingOffIcon } from "@/shared/assets/icons/icon_matching_off.svg"; +export { default as MatchingOnIcon } from "@/shared/assets/icons/icon_matching_on.svg"; +export { default as OneCircleIcon } from "@/shared/assets/icons/icon_number_one_circle_fill.svg"; +export { default as ThreeCircleIcon } from "@/shared/assets/icons/icon_number_three_circle_fill.svg"; +export { default as TwoCircleIcon } from "@/shared/assets/icons/icon_number_two_circle_fill.svg"; +export { default as ProfileCircleIcon } from "@/shared/assets/icons/icon_profile_circle.svg"; +export { default as ProfileCircleBoldIcon } from "@/shared/assets/icons/icon_profile_circle_bold.svg"; +export { default as SearchIcon } from "@/shared/assets/icons/icon_search.svg"; +export { default as SearchBoldIcon } from "@/shared/assets/icons/icon_search_bold.svg"; +export { default as ShareIcon } from "@/shared/assets/icons/icon_share.svg"; +export { default as StepOneDesignerIcon } from "@/shared/assets/icons/icon_step_one_designer.svg"; +export { default as StepOneInstructorIcon } from "@/shared/assets/icons/icon_step_one_instructor.svg"; +export { default as StepThreeDesignerIcon } from "@/shared/assets/icons/icon_step_three_designer.svg"; +export { default as StepTwoDesignerIcon } from "@/shared/assets/icons/icon_step_two_designer.svg"; +export { default as StepTwoInstructorIcon } from "@/shared/assets/icons/icon_step_two_instructor.svg"; +export { default as UserTypeDesignerIcon } from "@/shared/assets/icons/icon_user_type_designer.svg"; +export { default as UserTypeInstructorIcon } from "@/shared/assets/icons/icon_user_type_instructor.svg"; diff --git a/src/assets/logos/ditda_logo_black.svg b/src/shared/assets/logos/ditda_logo_black.svg similarity index 100% rename from src/assets/logos/ditda_logo_black.svg rename to src/shared/assets/logos/ditda_logo_black.svg diff --git a/src/assets/logos/ditda_logo_purple.svg b/src/shared/assets/logos/ditda_logo_purple.svg similarity index 100% rename from src/assets/logos/ditda_logo_purple.svg rename to src/shared/assets/logos/ditda_logo_purple.svg diff --git a/src/shared/assets/logos/index.ts b/src/shared/assets/logos/index.ts new file mode 100644 index 0000000..90c0160 --- /dev/null +++ b/src/shared/assets/logos/index.ts @@ -0,0 +1,2 @@ +export { default as BlackLogo } from "@/shared/assets/logos/ditda_logo_black.svg"; +export { default as PurpleLogo } from "@/shared/assets/logos/ditda_logo_purple.svg"; diff --git a/src/lib/hooks/usePagination.ts b/src/shared/lib/hooks/usePagination.ts similarity index 100% rename from src/lib/hooks/usePagination.ts rename to src/shared/lib/hooks/usePagination.ts diff --git a/src/lib/hooks/useUploadedFiles.ts b/src/shared/lib/hooks/useUploadedFiles.ts similarity index 92% rename from src/lib/hooks/useUploadedFiles.ts rename to src/shared/lib/hooks/useUploadedFiles.ts index 81ba6c9..5b3dd3e 100644 --- a/src/lib/hooks/useUploadedFiles.ts +++ b/src/shared/lib/hooks/useUploadedFiles.ts @@ -1,7 +1,7 @@ import { useEffect, useRef, useState } from "react"; -import { formatFileSize } from "@/lib/utils/file"; -import { UploadedFile } from "@/types/file"; +import { formatFileSize } from "@/shared/lib/utils/file"; +import { UploadedFile } from "@/shared/types/file"; export const useUploadedFiles = ( externalFiles?: UploadedFile[], diff --git a/src/lib/hooks/useWheelColumn.ts b/src/shared/lib/hooks/useWheelColumn.ts similarity index 99% rename from src/lib/hooks/useWheelColumn.ts rename to src/shared/lib/hooks/useWheelColumn.ts index bf69e91..e31c452 100644 --- a/src/lib/hooks/useWheelColumn.ts +++ b/src/shared/lib/hooks/useWheelColumn.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useRef, type WheelEvent } from "react"; import { SCROLL_ANIMATION_MS, SNAP_DELAY, STEP, WHEEL_COOLDOWN } from "@/constants/dropdown"; -import { easeOutCubic, getNearestIndex, getScrollTopForIndex } from "@/lib/utils/dropdown"; +import { easeOutCubic, getNearestIndex, getScrollTopForIndex } from "@/shared/lib/utils/dropdown"; interface UseWheelColumnProps { items: string[]; diff --git a/src/lib/utils/cn.ts b/src/shared/lib/utils/cn.ts similarity index 100% rename from src/lib/utils/cn.ts rename to src/shared/lib/utils/cn.ts diff --git a/src/lib/utils/color.ts b/src/shared/lib/utils/color.ts similarity index 100% rename from src/lib/utils/color.ts rename to src/shared/lib/utils/color.ts diff --git a/src/lib/utils/date.ts b/src/shared/lib/utils/date.ts similarity index 100% rename from src/lib/utils/date.ts rename to src/shared/lib/utils/date.ts diff --git a/src/lib/utils/dropdown.ts b/src/shared/lib/utils/dropdown.ts similarity index 100% rename from src/lib/utils/dropdown.ts rename to src/shared/lib/utils/dropdown.ts diff --git a/src/lib/utils/file.ts b/src/shared/lib/utils/file.ts similarity index 100% rename from src/lib/utils/file.ts rename to src/shared/lib/utils/file.ts diff --git a/src/types/file.ts b/src/shared/types/file.ts similarity index 100% rename from src/types/file.ts rename to src/shared/types/file.ts diff --git a/src/components/common/AccordionMenu.tsx b/src/shared/ui/AccordionMenu.tsx similarity index 91% rename from src/components/common/AccordionMenu.tsx rename to src/shared/ui/AccordionMenu.tsx index c9ac8ae..5774cc3 100644 --- a/src/components/common/AccordionMenu.tsx +++ b/src/shared/ui/AccordionMenu.tsx @@ -1,4 +1,4 @@ -import { ArrowDownIcon } from "@/assets/icons"; +import { ArrowDownIcon } from "@/shared/assets/icons"; interface AccordionMenuProps { label: string; diff --git a/src/components/common/Badge.tsx b/src/shared/ui/Badge.tsx similarity index 100% rename from src/components/common/Badge.tsx rename to src/shared/ui/Badge.tsx diff --git a/src/components/common/Button.tsx b/src/shared/ui/Button.tsx similarity index 98% rename from src/components/common/Button.tsx rename to src/shared/ui/Button.tsx index bb0b4f0..b5a08b7 100644 --- a/src/components/common/Button.tsx +++ b/src/shared/ui/Button.tsx @@ -1,6 +1,6 @@ import { ButtonHTMLAttributes } from "react"; -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; type ButtonVariant = | "small_primary" diff --git a/src/components/common/Chip.tsx b/src/shared/ui/Chip.tsx similarity index 95% rename from src/components/common/Chip.tsx rename to src/shared/ui/Chip.tsx index b4b282a..5bf8fc7 100644 --- a/src/components/common/Chip.tsx +++ b/src/shared/ui/Chip.tsx @@ -1,5 +1,5 @@ -import { CloseIcon } from "@/assets/icons"; -import { cn } from "@/lib/utils/cn"; +import { CloseIcon } from "@/shared/assets/icons"; +import { cn } from "@/shared/lib/utils/cn"; type ChipVariant = "selectable" | "removable"; diff --git a/src/components/common/FileDragAndDrop.tsx b/src/shared/ui/FileDragAndDrop.tsx similarity index 94% rename from src/components/common/FileDragAndDrop.tsx rename to src/shared/ui/FileDragAndDrop.tsx index 4968c4c..45e2b65 100644 --- a/src/components/common/FileDragAndDrop.tsx +++ b/src/shared/ui/FileDragAndDrop.tsx @@ -2,9 +2,9 @@ import { DragEvent, useRef, useState } from "react"; -import { FolderAddIcon } from "@/assets/icons"; -import Button from "@/components/common/Button"; -import { cn } from "@/lib/utils/cn"; +import { FolderAddIcon } from "@/shared/assets/icons"; +import { cn } from "@/shared/lib/utils/cn"; +import Button from "@/shared/ui/Button"; interface FileDragAndDropProps { onFilesAdded: (files: File[]) => void; diff --git a/src/components/common/FileUpload.tsx b/src/shared/ui/FileUpload.tsx similarity index 97% rename from src/components/common/FileUpload.tsx rename to src/shared/ui/FileUpload.tsx index 2abb47d..fcbe48b 100644 --- a/src/components/common/FileUpload.tsx +++ b/src/shared/ui/FileUpload.tsx @@ -1,4 +1,4 @@ -import { CheckCircleFillIcon, CloseCircleFillIcon, LoadingIcon } from "@/assets/icons"; +import { CheckCircleFillIcon, CloseCircleFillIcon, LoadingIcon } from "@/shared/assets/icons"; interface FileUploadProps { fileName: string; diff --git a/src/components/common/Header.tsx b/src/shared/ui/Header.tsx similarity index 92% rename from src/components/common/Header.tsx rename to src/shared/ui/Header.tsx index 50db84d..b0c2c5e 100644 --- a/src/components/common/Header.tsx +++ b/src/shared/ui/Header.tsx @@ -3,8 +3,8 @@ import Link from "next/link"; import { useState } from "react"; -import { EnterIcon, ProfileCircleIcon } from "@/assets/icons"; -import { PurpleLogo } from "@/assets/logos"; +import { EnterIcon, ProfileCircleIcon } from "@/shared/assets/icons"; +import { PurpleLogo } from "@/shared/assets/logos"; const Header = () => { const [isLoggedIn, setIsLoggedIn] = useState(true); diff --git a/src/components/common/Modal.tsx b/src/shared/ui/Modal.tsx similarity index 97% rename from src/components/common/Modal.tsx rename to src/shared/ui/Modal.tsx index 3e23377..7becc01 100644 --- a/src/components/common/Modal.tsx +++ b/src/shared/ui/Modal.tsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; -import Button from "@/components/common/Button"; +import Button from "@/shared/ui/Button"; type BaseProps = { isOpen: boolean; diff --git a/src/components/common/PageIndicator.tsx b/src/shared/ui/PageIndicator.tsx similarity index 100% rename from src/components/common/PageIndicator.tsx rename to src/shared/ui/PageIndicator.tsx diff --git a/src/components/common/Radio.tsx b/src/shared/ui/Radio.tsx similarity index 100% rename from src/components/common/Radio.tsx rename to src/shared/ui/Radio.tsx diff --git a/src/components/common/Sidebar.tsx b/src/shared/ui/Sidebar.tsx similarity index 100% rename from src/components/common/Sidebar.tsx rename to src/shared/ui/Sidebar.tsx diff --git a/src/components/common/SidebarMenu.tsx b/src/shared/ui/SidebarMenu.tsx similarity index 100% rename from src/components/common/SidebarMenu.tsx rename to src/shared/ui/SidebarMenu.tsx diff --git a/src/components/common/Tag.tsx b/src/shared/ui/Tag.tsx similarity index 100% rename from src/components/common/Tag.tsx rename to src/shared/ui/Tag.tsx diff --git a/src/components/common/Toggle.tsx b/src/shared/ui/Toggle.tsx similarity index 96% rename from src/components/common/Toggle.tsx rename to src/shared/ui/Toggle.tsx index e802599..874dbc8 100644 --- a/src/components/common/Toggle.tsx +++ b/src/shared/ui/Toggle.tsx @@ -1,4 +1,4 @@ -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; interface ToggleProps { options: [{ value: T; label: string }, { value: T; label: string }]; diff --git a/src/components/common/dropdown/BankDropdown.tsx b/src/shared/ui/dropdown/BankDropdown.tsx similarity index 97% rename from src/components/common/dropdown/BankDropdown.tsx rename to src/shared/ui/dropdown/BankDropdown.tsx index a2a646f..378ca5b 100644 --- a/src/components/common/dropdown/BankDropdown.tsx +++ b/src/shared/ui/dropdown/BankDropdown.tsx @@ -2,14 +2,14 @@ import { useEffect, useRef, useState } from "react"; -import { ArrowDownIcon, ArrowUpIcon } from "@/assets/icons"; import { BANK_DROPDOWN_MAX_HEIGHT, BANK_OPTIONS, type BankCode, type BankOption, } from "@/constants/signup"; -import { cn } from "@/lib/utils/cn"; +import { ArrowDownIcon, ArrowUpIcon } from "@/shared/assets/icons"; +import { cn } from "@/shared/lib/utils/cn"; interface BankDropdownProps { className?: string; diff --git a/src/components/common/dropdown/DateDropdownBox.tsx b/src/shared/ui/dropdown/DateDropdownBox.tsx similarity index 95% rename from src/components/common/dropdown/DateDropdownBox.tsx rename to src/shared/ui/dropdown/DateDropdownBox.tsx index c9bae48..4502364 100644 --- a/src/components/common/dropdown/DateDropdownBox.tsx +++ b/src/shared/ui/dropdown/DateDropdownBox.tsx @@ -1,4 +1,4 @@ -import { ArrowDownIcon } from "@/assets/icons"; +import { ArrowDownIcon } from "@/shared/assets/icons"; interface DropdownBoxProps { label: string; diff --git a/src/components/common/dropdown/DateDropdownMenu.tsx b/src/shared/ui/dropdown/DateDropdownMenu.tsx similarity index 97% rename from src/components/common/dropdown/DateDropdownMenu.tsx rename to src/shared/ui/dropdown/DateDropdownMenu.tsx index e6d8575..18b43bd 100644 --- a/src/components/common/dropdown/DateDropdownMenu.tsx +++ b/src/shared/ui/dropdown/DateDropdownMenu.tsx @@ -3,8 +3,8 @@ import { useCallback, useState } from "react"; import { PAD_TOP, YEAR_RANGE } from "@/constants/dropdown"; -import { cn } from "@/lib/utils/cn"; -import { getDaysInMonth } from "@/lib/utils/dropdown"; +import { cn } from "@/shared/lib/utils/cn"; +import { getDaysInMonth } from "@/shared/lib/utils/dropdown"; import WheelColumn from "./WheelColumn"; diff --git a/src/components/common/dropdown/WheelColumn.tsx b/src/shared/ui/dropdown/WheelColumn.tsx similarity index 93% rename from src/components/common/dropdown/WheelColumn.tsx rename to src/shared/ui/dropdown/WheelColumn.tsx index 040e852..6f9193d 100644 --- a/src/components/common/dropdown/WheelColumn.tsx +++ b/src/shared/ui/dropdown/WheelColumn.tsx @@ -1,8 +1,8 @@ "use client"; import { ITEM_GAP, LIST_H, PAD_BOTTOM, PAD_TOP } from "@/constants/dropdown"; -import { useWheelColumn } from "@/lib/hooks/useWheelColumn"; -import { cn } from "@/lib/utils/cn"; +import { useWheelColumn } from "@/shared/lib/hooks/useWheelColumn"; +import { cn } from "@/shared/lib/utils/cn"; interface WheelColumnProps { items: string[]; diff --git a/src/components/common/input/InputField.tsx b/src/shared/ui/input/InputField.tsx similarity index 98% rename from src/components/common/input/InputField.tsx rename to src/shared/ui/input/InputField.tsx index a3f66ef..0623044 100644 --- a/src/components/common/input/InputField.tsx +++ b/src/shared/ui/input/InputField.tsx @@ -9,8 +9,8 @@ import { ClosedEyeIcon, ExclamationMarkCircleIcon, OpenEyeIcon, -} from "@/assets/icons"; -import { cn } from "@/lib/utils/cn"; +} from "@/shared/assets/icons"; +import { cn } from "@/shared/lib/utils/cn"; const iconButtonClassName = "disabled:text-gray-30 inline-flex size-6 shrink-0 cursor-pointer items-center justify-center transition-colors disabled:cursor-not-allowed"; diff --git a/src/components/common/input/SmallInput.tsx b/src/shared/ui/input/SmallInput.tsx similarity index 94% rename from src/components/common/input/SmallInput.tsx rename to src/shared/ui/input/SmallInput.tsx index a25c76f..41c6bfc 100644 --- a/src/components/common/input/SmallInput.tsx +++ b/src/shared/ui/input/SmallInput.tsx @@ -2,7 +2,7 @@ import type { ComponentPropsWithoutRef } from "react"; -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; export type SmallInputProps = Omit, "children"> & { children?: string | number; diff --git a/src/components/common/input/TextField.tsx b/src/shared/ui/input/TextField.tsx similarity index 97% rename from src/components/common/input/TextField.tsx rename to src/shared/ui/input/TextField.tsx index 19c5ae9..e63a717 100644 --- a/src/components/common/input/TextField.tsx +++ b/src/shared/ui/input/TextField.tsx @@ -3,7 +3,7 @@ import type { ChangeEventHandler, ComponentPropsWithoutRef } from "react"; import { useState } from "react"; -import { cn } from "@/lib/utils/cn"; +import { cn } from "@/shared/lib/utils/cn"; const DEFAULT_TEXT_FIELD_MAX_LENGTH = 300; diff --git a/src/store/writeFormStore.ts b/src/store/writeFormStore.ts index dbdf35e..01c08ea 100644 --- a/src/store/writeFormStore.ts +++ b/src/store/writeFormStore.ts @@ -9,9 +9,9 @@ import { SIZE_API_MAP, type WriteStep, } from "@/constants/write"; -import { type RgbaColor, toHex } from "@/lib/utils/color"; -import { toApiDate } from "@/lib/utils/date"; -import type { UploadedFile } from "@/types/file"; +import { type RgbaColor, toHex } from "@/shared/lib/utils/color"; +import { toApiDate } from "@/shared/lib/utils/date"; +import type { UploadedFile } from "@/shared/types/file"; import type { WriteOrderRequest } from "@/types/write"; const STORAGE_KEY = "write-form"; From 48fe12aff78982633ec4c04a3bc2c201230e4ab9 Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 21:23:08 +0900 Subject: [PATCH 2/6] =?UTF-8?q?#25=20[REFACTOR]=20=EC=83=88=20=EC=99=B8?= =?UTF-8?q?=EC=A3=BC=20=EC=9E=91=EC=84=B1=20=EA=B4=80=EB=A0=A8=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=ED=8E=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/instructor/write/layout.tsx | 3 +-- src/app/instructor/write/page.tsx | 6 ++---- .../instructor/write/config}/write.ts | 0 src/features/instructor/write/index.ts | 2 ++ .../instructor/write/model}/write.ts | 2 +- .../instructor/write/model}/writeFormStore.ts | 4 ++-- .../instructor/write/ui}/ColorChooseCard.tsx | 0 .../instructor/write/ui}/ColorPicker.tsx | 0 .../instructor/write/ui}/ConceptKeywordCard.tsx | 0 .../instructor/write/ui}/PaperSizeCard.tsx | 0 .../instructor/write/ui}/PaymentModal/PaymentModal.tsx | 6 +++--- .../instructor/write/ui}/PaymentModal/Step1.tsx | 8 ++++++-- .../instructor/write/ui}/PaymentModal/Step2.tsx | 4 ++-- .../instructor/write/ui}/PlanChooseCard.tsx | 2 +- .../instructor/write/ui}/ProgressBar.tsx | 2 +- .../instructor/write/ui}/SizeRecommendedCard.tsx | 0 .../instructor/write/ui}/StepHeader.tsx | 4 ++-- src/widgets/instructor/write/index.ts | 3 +++ .../instructor/write/ui}/AttachFileSection.tsx | 2 +- .../instructor/write/ui}/BasicInfoTypingSection.tsx | 7 +++++-- .../instructor/write/ui}/CategorySection.tsx | 4 ++-- .../instructor/write/ui}/ColorChooseSection.tsx | 6 +++--- .../instructor/write/ui}/DeadlineChooseSection.tsx | 2 +- .../instructor/write/ui}/DesignConceptSection.tsx | 6 +++--- .../write/ui}/NecessaryPageChooseSection.tsx | 4 ++-- .../instructor/write/ui}/PlanChooseSection.tsx | 6 +++--- .../instructor/write/ui}/ReferenceSection.tsx | 2 +- .../instructor/write/ui}/SizeSection.tsx | 8 ++++---- .../instructor/write/ui}/Step1Content.tsx | 10 +++++----- .../instructor/write/ui}/Step2Content.tsx | 10 +++++----- .../instructor/write/ui}/Step3Content.tsx | 8 ++++---- 31 files changed, 65 insertions(+), 56 deletions(-) rename src/{constants => features/instructor/write/config}/write.ts (100%) create mode 100644 src/features/instructor/write/index.ts rename src/{types => features/instructor/write/model}/write.ts (93%) rename src/{store => features/instructor/write/model}/writeFormStore.ts (98%) rename src/{components/instructor/write => features/instructor/write/ui}/ColorChooseCard.tsx (100%) rename src/{components/instructor/write => features/instructor/write/ui}/ColorPicker.tsx (100%) rename src/{components/instructor/write => features/instructor/write/ui}/ConceptKeywordCard.tsx (100%) rename src/{components/instructor/write => features/instructor/write/ui}/PaperSizeCard.tsx (100%) rename src/{components/instructor/write => features/instructor/write/ui}/PaymentModal/PaymentModal.tsx (87%) rename src/{components/instructor/write => features/instructor/write/ui}/PaymentModal/Step1.tsx (97%) rename src/{components/instructor/write => features/instructor/write/ui}/PaymentModal/Step2.tsx (93%) rename src/{components/instructor/write => features/instructor/write/ui}/PlanChooseCard.tsx (93%) rename src/{components/instructor/write => features/instructor/write/ui}/ProgressBar.tsx (90%) rename src/{components/instructor/write => features/instructor/write/ui}/SizeRecommendedCard.tsx (100%) rename src/{components/instructor/write => features/instructor/write/ui}/StepHeader.tsx (68%) create mode 100644 src/widgets/instructor/write/index.ts rename src/{containers/instructor/write => widgets/instructor/write/ui}/AttachFileSection.tsx (96%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/BasicInfoTypingSection.tsx (88%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/CategorySection.tsx (94%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/ColorChooseSection.tsx (93%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/DeadlineChooseSection.tsx (97%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/DesignConceptSection.tsx (90%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/NecessaryPageChooseSection.tsx (94%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/PlanChooseSection.tsx (79%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/ReferenceSection.tsx (96%) rename src/{containers/instructor/write => widgets/instructor/write/ui}/SizeSection.tsx (81%) rename src/{containers/instructor/write/Steps => widgets/instructor/write/ui}/Step1Content.tsx (74%) rename src/{containers/instructor/write/Steps => widgets/instructor/write/ui}/Step2Content.tsx (72%) rename src/{containers/instructor/write/Steps => widgets/instructor/write/ui}/Step3Content.tsx (79%) diff --git a/src/app/instructor/write/layout.tsx b/src/app/instructor/write/layout.tsx index f215948..eaa40bb 100644 --- a/src/app/instructor/write/layout.tsx +++ b/src/app/instructor/write/layout.tsx @@ -2,8 +2,7 @@ import { ReactNode, useEffect } from "react"; -import StepHeader from "@/components/instructor/write/StepHeader"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import { StepHeader, useWriteFormStore } from "@/features/instructor/write"; const WriteLayout = ({ children }: { children: ReactNode }) => { const clearAfterSubmit = useWriteFormStore(s => s.clearAfterSubmit); diff --git a/src/app/instructor/write/page.tsx b/src/app/instructor/write/page.tsx index 10c4f1e..1db6de1 100644 --- a/src/app/instructor/write/page.tsx +++ b/src/app/instructor/write/page.tsx @@ -3,11 +3,9 @@ import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; -import Step1Content from "@/containers/instructor/write/Steps/Step1Content"; -import Step2Content from "@/containers/instructor/write/Steps/Step2Content"; -import Step3Content from "@/containers/instructor/write/Steps/Step3Content"; +import { useWriteFormStore } from "@/features/instructor/write"; import Modal from "@/shared/ui/Modal"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import { Step1Content, Step2Content, Step3Content } from "@/widgets/instructor/write"; const WritePageContent = () => { const { currentStep } = useWriteFormStore(); diff --git a/src/constants/write.ts b/src/features/instructor/write/config/write.ts similarity index 100% rename from src/constants/write.ts rename to src/features/instructor/write/config/write.ts diff --git a/src/features/instructor/write/index.ts b/src/features/instructor/write/index.ts new file mode 100644 index 0000000..2e68e18 --- /dev/null +++ b/src/features/instructor/write/index.ts @@ -0,0 +1,2 @@ +export { useWriteFormStore } from "./model/writeFormStore"; +export { default as StepHeader } from "./ui/StepHeader"; diff --git a/src/types/write.ts b/src/features/instructor/write/model/write.ts similarity index 93% rename from src/types/write.ts rename to src/features/instructor/write/model/write.ts index 59d148c..a4346fb 100644 --- a/src/types/write.ts +++ b/src/features/instructor/write/model/write.ts @@ -1,4 +1,4 @@ -import { PageType } from "@/constants/write"; +import { PageType } from "@/features/instructor/write/config/write"; export interface WriteOrderColorRequest { role: "MAIN" | "SUB1" | "SUB2"; diff --git a/src/store/writeFormStore.ts b/src/features/instructor/write/model/writeFormStore.ts similarity index 98% rename from src/store/writeFormStore.ts rename to src/features/instructor/write/model/writeFormStore.ts index 01c08ea..f4cb56e 100644 --- a/src/store/writeFormStore.ts +++ b/src/features/instructor/write/model/writeFormStore.ts @@ -8,11 +8,11 @@ import { type PlanType, SIZE_API_MAP, type WriteStep, -} from "@/constants/write"; +} from "@/features/instructor/write/config/write"; +import type { WriteOrderRequest } from "@/features/instructor/write/model/write"; import { type RgbaColor, toHex } from "@/shared/lib/utils/color"; import { toApiDate } from "@/shared/lib/utils/date"; import type { UploadedFile } from "@/shared/types/file"; -import type { WriteOrderRequest } from "@/types/write"; const STORAGE_KEY = "write-form"; diff --git a/src/components/instructor/write/ColorChooseCard.tsx b/src/features/instructor/write/ui/ColorChooseCard.tsx similarity index 100% rename from src/components/instructor/write/ColorChooseCard.tsx rename to src/features/instructor/write/ui/ColorChooseCard.tsx diff --git a/src/components/instructor/write/ColorPicker.tsx b/src/features/instructor/write/ui/ColorPicker.tsx similarity index 100% rename from src/components/instructor/write/ColorPicker.tsx rename to src/features/instructor/write/ui/ColorPicker.tsx diff --git a/src/components/instructor/write/ConceptKeywordCard.tsx b/src/features/instructor/write/ui/ConceptKeywordCard.tsx similarity index 100% rename from src/components/instructor/write/ConceptKeywordCard.tsx rename to src/features/instructor/write/ui/ConceptKeywordCard.tsx diff --git a/src/components/instructor/write/PaperSizeCard.tsx b/src/features/instructor/write/ui/PaperSizeCard.tsx similarity index 100% rename from src/components/instructor/write/PaperSizeCard.tsx rename to src/features/instructor/write/ui/PaperSizeCard.tsx diff --git a/src/components/instructor/write/PaymentModal/PaymentModal.tsx b/src/features/instructor/write/ui/PaymentModal/PaymentModal.tsx similarity index 87% rename from src/components/instructor/write/PaymentModal/PaymentModal.tsx rename to src/features/instructor/write/ui/PaymentModal/PaymentModal.tsx index bbc75e3..f1905cf 100644 --- a/src/components/instructor/write/PaymentModal/PaymentModal.tsx +++ b/src/features/instructor/write/ui/PaymentModal/PaymentModal.tsx @@ -2,10 +2,10 @@ import { useEffect, useState } from "react"; -import Step1 from "@/components/instructor/write/PaymentModal/Step1"; -import Step2 from "@/components/instructor/write/PaymentModal/Step2"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import Step1 from "@/features/instructor/write/ui/PaymentModal/Step1"; +import Step2 from "@/features/instructor/write/ui/PaymentModal/Step2"; import { CloseIcon } from "@/shared/assets/icons"; -import { useWriteFormStore } from "@/store/writeFormStore"; const PaymentModalContent = ({ onClose }: { onClose?: () => void }) => { const [step, setStep] = useState<1 | 2>(1); diff --git a/src/components/instructor/write/PaymentModal/Step1.tsx b/src/features/instructor/write/ui/PaymentModal/Step1.tsx similarity index 97% rename from src/components/instructor/write/PaymentModal/Step1.tsx rename to src/features/instructor/write/ui/PaymentModal/Step1.tsx index da2d018..e36e4ac 100644 --- a/src/components/instructor/write/PaymentModal/Step1.tsx +++ b/src/features/instructor/write/ui/PaymentModal/Step1.tsx @@ -1,11 +1,15 @@ import { useState } from "react"; -import { PLAN_MAP, SIZE_DISPLAY_MAP, TERMS_CONTENT } from "@/constants/write"; +import { + PLAN_MAP, + SIZE_DISPLAY_MAP, + TERMS_CONTENT, +} from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { ArrowDownIcon, CheckboxFillIcon, CheckboxGrayIcon } from "@/shared/assets/icons"; import { formatDate } from "@/shared/lib/utils/date"; import Button from "@/shared/ui/Button"; import Chip from "@/shared/ui/Chip"; -import { useWriteFormStore } from "@/store/writeFormStore"; /* ───────────────────────────────────────────── InfoRow diff --git a/src/components/instructor/write/PaymentModal/Step2.tsx b/src/features/instructor/write/ui/PaymentModal/Step2.tsx similarity index 93% rename from src/components/instructor/write/PaymentModal/Step2.tsx rename to src/features/instructor/write/ui/PaymentModal/Step2.tsx index 2d4ea33..9f240a0 100644 --- a/src/components/instructor/write/PaymentModal/Step2.tsx +++ b/src/features/instructor/write/ui/PaymentModal/Step2.tsx @@ -2,10 +2,10 @@ import { useRouter } from "next/navigation"; -import { PLAN_MAP } from "@/constants/write"; +import { PLAN_MAP } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { ArrowLeftIcon, ExclamationMarkCircleIcon } from "@/shared/assets/icons"; import Button from "@/shared/ui/Button"; -import { useWriteFormStore } from "@/store/writeFormStore"; const Step2 = ({ onBack }: { onBack: () => void }) => { const router = useRouter(); diff --git a/src/components/instructor/write/PlanChooseCard.tsx b/src/features/instructor/write/ui/PlanChooseCard.tsx similarity index 93% rename from src/components/instructor/write/PlanChooseCard.tsx rename to src/features/instructor/write/ui/PlanChooseCard.tsx index 272427c..b69fa14 100644 --- a/src/components/instructor/write/PlanChooseCard.tsx +++ b/src/features/instructor/write/ui/PlanChooseCard.tsx @@ -1,4 +1,4 @@ -import { PLAN_MAP, PlanType } from "@/constants/write"; +import { PLAN_MAP, PlanType } from "@/features/instructor/write/config/write"; import Badge from "@/shared/ui/Badge"; interface PlanChooseCardProps { diff --git a/src/components/instructor/write/ProgressBar.tsx b/src/features/instructor/write/ui/ProgressBar.tsx similarity index 90% rename from src/components/instructor/write/ProgressBar.tsx rename to src/features/instructor/write/ui/ProgressBar.tsx index f87bbdf..280324c 100644 --- a/src/components/instructor/write/ProgressBar.tsx +++ b/src/features/instructor/write/ui/ProgressBar.tsx @@ -1,4 +1,4 @@ -import { WRITE_STEPS, WriteStep } from "@/constants/write"; +import { WRITE_STEPS, WriteStep } from "@/features/instructor/write/config/write"; interface ProgressBarProps { currentStep?: WriteStep; diff --git a/src/components/instructor/write/SizeRecommendedCard.tsx b/src/features/instructor/write/ui/SizeRecommendedCard.tsx similarity index 100% rename from src/components/instructor/write/SizeRecommendedCard.tsx rename to src/features/instructor/write/ui/SizeRecommendedCard.tsx diff --git a/src/components/instructor/write/StepHeader.tsx b/src/features/instructor/write/ui/StepHeader.tsx similarity index 68% rename from src/components/instructor/write/StepHeader.tsx rename to src/features/instructor/write/ui/StepHeader.tsx index d202ec2..68ce3bc 100644 --- a/src/components/instructor/write/StepHeader.tsx +++ b/src/features/instructor/write/ui/StepHeader.tsx @@ -1,7 +1,7 @@ "use client"; -import ProgressBar from "@/components/instructor/write/ProgressBar"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import ProgressBar from "@/features/instructor/write/ui/ProgressBar"; const StepHeader = () => { const { currentStep } = useWriteFormStore(); diff --git a/src/widgets/instructor/write/index.ts b/src/widgets/instructor/write/index.ts new file mode 100644 index 0000000..c9adb02 --- /dev/null +++ b/src/widgets/instructor/write/index.ts @@ -0,0 +1,3 @@ +export { default as Step1Content } from "./ui/Step1Content"; +export { default as Step2Content } from "./ui/Step2Content"; +export { default as Step3Content } from "./ui/Step3Content"; diff --git a/src/containers/instructor/write/AttachFileSection.tsx b/src/widgets/instructor/write/ui/AttachFileSection.tsx similarity index 96% rename from src/containers/instructor/write/AttachFileSection.tsx rename to src/widgets/instructor/write/ui/AttachFileSection.tsx index 50ef816..eefa4ea 100644 --- a/src/containers/instructor/write/AttachFileSection.tsx +++ b/src/widgets/instructor/write/ui/AttachFileSection.tsx @@ -1,10 +1,10 @@ "use client"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; import FileUpload from "@/shared/ui/FileUpload"; import TextField from "@/shared/ui/input/TextField"; -import { useWriteFormStore } from "@/store/writeFormStore"; const AttachFileSection = () => { const { materialFiles, setMaterialFiles, materialDescription, setMaterialDescription } = diff --git a/src/containers/instructor/write/BasicInfoTypingSection.tsx b/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx similarity index 88% rename from src/containers/instructor/write/BasicInfoTypingSection.tsx rename to src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx index 6b14d03..421ae00 100644 --- a/src/containers/instructor/write/BasicInfoTypingSection.tsx +++ b/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx @@ -1,8 +1,11 @@ "use client"; -import { BASIC_INFO_FIELDS } from "@/constants/write"; +import { BASIC_INFO_FIELDS } from "@/features/instructor/write/config/write"; +import { + type BasicInfo, + useWriteFormStore, +} from "@/features/instructor/write/model/writeFormStore"; import SmallInput from "@/shared/ui/input/SmallInput"; -import { type BasicInfo, useWriteFormStore } from "@/store/writeFormStore"; const BasicInfoTypingSection = () => { const { basicInfo, setBasicInfo } = useWriteFormStore(); diff --git a/src/containers/instructor/write/CategorySection.tsx b/src/widgets/instructor/write/ui/CategorySection.tsx similarity index 94% rename from src/containers/instructor/write/CategorySection.tsx rename to src/widgets/instructor/write/ui/CategorySection.tsx index c1193b8..48ac8a1 100644 --- a/src/containers/instructor/write/CategorySection.tsx +++ b/src/widgets/instructor/write/ui/CategorySection.tsx @@ -2,10 +2,10 @@ import { useState } from "react"; -import { CATEGORIES } from "@/constants/write"; +import { CATEGORIES } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import AccordionMenu from "@/shared/ui/AccordionMenu"; import Radio from "@/shared/ui/Radio"; -import { useWriteFormStore } from "@/store/writeFormStore"; const CategorySection = () => { const { selectedCategory, setSelectedCategory } = useWriteFormStore(); diff --git a/src/containers/instructor/write/ColorChooseSection.tsx b/src/widgets/instructor/write/ui/ColorChooseSection.tsx similarity index 93% rename from src/containers/instructor/write/ColorChooseSection.tsx rename to src/widgets/instructor/write/ui/ColorChooseSection.tsx index ec76fac..6f6765d 100644 --- a/src/containers/instructor/write/ColorChooseSection.tsx +++ b/src/widgets/instructor/write/ui/ColorChooseSection.tsx @@ -2,12 +2,12 @@ import { useEffect, useRef, useState } from "react"; -import ColorChooseCard from "@/components/instructor/write/ColorChooseCard"; -import ColorPicker from "@/components/instructor/write/ColorPicker"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import ColorChooseCard from "@/features/instructor/write/ui/ColorChooseCard"; +import ColorPicker from "@/features/instructor/write/ui/ColorPicker"; import { cn } from "@/shared/lib/utils/cn"; import type { RgbaColor } from "@/shared/lib/utils/color"; import Toggle from "@/shared/ui/Toggle"; -import { useWriteFormStore } from "@/store/writeFormStore"; const ColorChooseSection = () => { const { colorMode, setColorMode, colors, setColors, mainColorIndex, setMainColorIndex } = diff --git a/src/containers/instructor/write/DeadlineChooseSection.tsx b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx similarity index 97% rename from src/containers/instructor/write/DeadlineChooseSection.tsx rename to src/widgets/instructor/write/ui/DeadlineChooseSection.tsx index 8435138..b174bd4 100644 --- a/src/containers/instructor/write/DeadlineChooseSection.tsx +++ b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx @@ -2,10 +2,10 @@ import { useEffect, useRef, useState } from "react"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { formatDate, getMinFinalDate, getYesterday } from "@/shared/lib/utils/date"; import DateDropdownBox from "@/shared/ui/dropdown/DateDropdownBox"; import DateDropdownMenu from "@/shared/ui/dropdown/DateDropdownMenu"; -import { useWriteFormStore } from "@/store/writeFormStore"; const DeadlineChooseSection = () => { const { firstDate, setFirstDate, finalDate, setFinalDate } = useWriteFormStore(); diff --git a/src/containers/instructor/write/DesignConceptSection.tsx b/src/widgets/instructor/write/ui/DesignConceptSection.tsx similarity index 90% rename from src/containers/instructor/write/DesignConceptSection.tsx rename to src/widgets/instructor/write/ui/DesignConceptSection.tsx index 0fdb793..0b7ef04 100644 --- a/src/containers/instructor/write/DesignConceptSection.tsx +++ b/src/widgets/instructor/write/ui/DesignConceptSection.tsx @@ -1,10 +1,10 @@ "use client"; -import ConceptKeywordCard from "@/components/instructor/write/ConceptKeywordCard"; -import { CONCEPT_CATEGORIES, MAX_CONCEPT_SELECT } from "@/constants/write"; +import { CONCEPT_CATEGORIES, MAX_CONCEPT_SELECT } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import ConceptKeywordCard from "@/features/instructor/write/ui/ConceptKeywordCard"; import Chip from "@/shared/ui/Chip"; import TextField from "@/shared/ui/input/TextField"; -import { useWriteFormStore } from "@/store/writeFormStore"; const DesignConceptSection = () => { const { selectedKeywords, setSelectedKeywords, additionalConcept, setAdditionalConcept } = diff --git a/src/containers/instructor/write/NecessaryPageChooseSection.tsx b/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx similarity index 94% rename from src/containers/instructor/write/NecessaryPageChooseSection.tsx rename to src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx index 58acdb8..ecdf7cd 100644 --- a/src/containers/instructor/write/NecessaryPageChooseSection.tsx +++ b/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx @@ -1,9 +1,9 @@ "use client"; -import { PAGE_OPTIONS } from "@/constants/write"; +import { PAGE_OPTIONS } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import Chip from "@/shared/ui/Chip"; import TextField from "@/shared/ui/input/TextField"; -import { useWriteFormStore } from "@/store/writeFormStore"; const NecessaryPageChooseSection = () => { const { selectedPages, setSelectedPages, pageDescriptions, setPageDescription } = diff --git a/src/containers/instructor/write/PlanChooseSection.tsx b/src/widgets/instructor/write/ui/PlanChooseSection.tsx similarity index 79% rename from src/containers/instructor/write/PlanChooseSection.tsx rename to src/widgets/instructor/write/ui/PlanChooseSection.tsx index 74aca82..986d04f 100644 --- a/src/containers/instructor/write/PlanChooseSection.tsx +++ b/src/widgets/instructor/write/ui/PlanChooseSection.tsx @@ -1,8 +1,8 @@ "use client"; -import PlanChooseCard from "@/components/instructor/write/PlanChooseCard"; -import type { PlanType } from "@/constants/write"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import type { PlanType } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import PlanChooseCard from "@/features/instructor/write/ui/PlanChooseCard"; const PLANS: PlanType[] = ["기본", "플러스", "맥스"]; diff --git a/src/containers/instructor/write/ReferenceSection.tsx b/src/widgets/instructor/write/ui/ReferenceSection.tsx similarity index 96% rename from src/containers/instructor/write/ReferenceSection.tsx rename to src/widgets/instructor/write/ui/ReferenceSection.tsx index fe2e694..543a68c 100644 --- a/src/containers/instructor/write/ReferenceSection.tsx +++ b/src/widgets/instructor/write/ui/ReferenceSection.tsx @@ -1,10 +1,10 @@ "use client"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; import FileUpload from "@/shared/ui/FileUpload"; import TextField from "@/shared/ui/input/TextField"; -import { useWriteFormStore } from "@/store/writeFormStore"; const ReferenceSection = () => { const { referenceFiles, setReferenceFiles, referenceDescription, setReferenceDescription } = diff --git a/src/containers/instructor/write/SizeSection.tsx b/src/widgets/instructor/write/ui/SizeSection.tsx similarity index 81% rename from src/containers/instructor/write/SizeSection.tsx rename to src/widgets/instructor/write/ui/SizeSection.tsx index 36060ba..cb02c0d 100644 --- a/src/containers/instructor/write/SizeSection.tsx +++ b/src/widgets/instructor/write/ui/SizeSection.tsx @@ -1,9 +1,9 @@ "use client"; -import PaperSizeCard from "@/components/instructor/write/PaperSizeCard"; -import SizeRecommendedCard from "@/components/instructor/write/SizeRecommendedCard"; -import { SIZE_OPTIONS } from "@/constants/write"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import { SIZE_OPTIONS } from "@/features/instructor/write/config/write"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import PaperSizeCard from "@/features/instructor/write/ui/PaperSizeCard"; +import SizeRecommendedCard from "@/features/instructor/write/ui/SizeRecommendedCard"; const SizeSection = () => { const { selectedCategory, selectedSize, setSelectedSize } = useWriteFormStore(); diff --git a/src/containers/instructor/write/Steps/Step1Content.tsx b/src/widgets/instructor/write/ui/Step1Content.tsx similarity index 74% rename from src/containers/instructor/write/Steps/Step1Content.tsx rename to src/widgets/instructor/write/ui/Step1Content.tsx index b820d07..6ef3819 100644 --- a/src/containers/instructor/write/Steps/Step1Content.tsx +++ b/src/widgets/instructor/write/ui/Step1Content.tsx @@ -1,11 +1,11 @@ "use client"; -import CategorySection from "@/containers/instructor/write/CategorySection"; -import ColorChooseSection from "@/containers/instructor/write/ColorChooseSection"; -import DesignConceptSection from "@/containers/instructor/write/DesignConceptSection"; -import SizeSection from "@/containers/instructor/write/SizeSection"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import Button from "@/shared/ui/Button"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import CategorySection from "@/widgets/instructor/write/ui/CategorySection"; +import ColorChooseSection from "@/widgets/instructor/write/ui/ColorChooseSection"; +import DesignConceptSection from "@/widgets/instructor/write/ui/DesignConceptSection"; +import SizeSection from "@/widgets/instructor/write/ui/SizeSection"; const Step1Content = () => { const { selectedCategory, selectedSize, selectedKeywords, colorMode, colors, setCurrentStep } = diff --git a/src/containers/instructor/write/Steps/Step2Content.tsx b/src/widgets/instructor/write/ui/Step2Content.tsx similarity index 72% rename from src/containers/instructor/write/Steps/Step2Content.tsx rename to src/widgets/instructor/write/ui/Step2Content.tsx index 613c9c1..eddf6e2 100644 --- a/src/containers/instructor/write/Steps/Step2Content.tsx +++ b/src/widgets/instructor/write/ui/Step2Content.tsx @@ -1,11 +1,11 @@ "use client"; -import AttachFileSection from "@/containers/instructor/write/AttachFileSection"; -import BasicInfoTypingSection from "@/containers/instructor/write/BasicInfoTypingSection"; -import NecessaryPageChooseSection from "@/containers/instructor/write/NecessaryPageChooseSection"; -import ReferenceSection from "@/containers/instructor/write/ReferenceSection"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import Button from "@/shared/ui/Button"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import AttachFileSection from "@/widgets/instructor/write/ui/AttachFileSection"; +import BasicInfoTypingSection from "@/widgets/instructor/write/ui/BasicInfoTypingSection"; +import NecessaryPageChooseSection from "@/widgets/instructor/write/ui/NecessaryPageChooseSection"; +import ReferenceSection from "@/widgets/instructor/write/ui/ReferenceSection"; const Step2Content = () => { const { basicInfo, selectedPages, setCurrentStep } = useWriteFormStore(); diff --git a/src/containers/instructor/write/Steps/Step3Content.tsx b/src/widgets/instructor/write/ui/Step3Content.tsx similarity index 79% rename from src/containers/instructor/write/Steps/Step3Content.tsx rename to src/widgets/instructor/write/ui/Step3Content.tsx index 82396c2..be94916 100644 --- a/src/containers/instructor/write/Steps/Step3Content.tsx +++ b/src/widgets/instructor/write/ui/Step3Content.tsx @@ -2,11 +2,11 @@ import { useState } from "react"; -import PaymentModal from "@/components/instructor/write/PaymentModal/PaymentModal"; -import DeadlineChooseSection from "@/containers/instructor/write/DeadlineChooseSection"; -import PlanChooseSection from "@/containers/instructor/write/PlanChooseSection"; +import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import PaymentModal from "@/features/instructor/write/ui/PaymentModal/PaymentModal"; import Button from "@/shared/ui/Button"; -import { useWriteFormStore } from "@/store/writeFormStore"; +import DeadlineChooseSection from "@/widgets/instructor/write/ui/DeadlineChooseSection"; +import PlanChooseSection from "@/widgets/instructor/write/ui/PlanChooseSection"; const Step3Content = () => { const { setCurrentStep, selectedPlan, firstDate, finalDate } = useWriteFormStore(); From 470bdc6a3f517a2568413af06f06efed3f8ce34b Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 21:44:07 +0900 Subject: [PATCH 3/6] =?UTF-8?q?#25=20[REFACTOR]=20=EC=98=A8=EB=B3=B4?= =?UTF-8?q?=EB=94=A9,=20=EA=B0=95=EC=82=AC=20=ED=99=88=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=ED=8E=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/instructor/page.tsx | 8 +++++--- src/app/signup/designer/step1/page.tsx | 2 +- src/app/signup/designer/step2/page.tsx | 7 +++++-- src/app/signup/designer/step3/page.tsx | 2 +- src/app/signup/instructor/step1/page.tsx | 2 +- src/app/signup/instructor/step2/page.tsx | 7 +++++-- src/app/signup/page.tsx | 2 +- src/entities/instructor/home/index.ts | 16 ++++++++++++++++ src/entities/instructor/home/lib/getDDay.ts | 8 ++++++++ .../instructor/home/model}/home.ts | 0 .../instructor/home/ui}/CommissionsHeader.tsx | 0 .../home/ui}/DraftSubmissionStatusRow.tsx | 4 ++-- .../home/ui}/MatchingCommissionsRow.tsx | 4 ++-- .../home/ui}/ModifyingCommissionsRow.tsx | 4 ++-- src/features/instructor/write/index.ts | 4 ++-- .../instructor/write/lib}/color.ts | 0 .../instructor/write/lib}/date.ts | 9 --------- .../instructor/write/model/writeFormStore.ts | 4 ++-- .../instructor/write/ui/ColorChooseCard.tsx | 4 ++-- src/features/instructor/write/ui/ColorPicker.tsx | 4 ++-- .../instructor/write/ui/PaymentModal/Step1.tsx | 2 +- .../signup/config}/signup.ts | 0 src/features/signup/index.ts | 3 +++ .../signup/model}/useSignupStep2Form.ts | 2 +- .../signup/ui}/UserTypeBtn.tsx | 0 src/{constants => shared/config}/dropdown.ts | 0 src/{constants => shared/config}/sidebarMenu.ts | 0 src/shared/lib/hooks/useWheelColumn.ts | 2 +- src/shared/lib/utils/dropdown.ts | 2 +- src/shared/ui/SidebarMenu.tsx | 2 +- src/shared/ui/dropdown/BankDropdown.tsx | 2 +- src/shared/ui/dropdown/DateDropdownMenu.tsx | 5 ++--- src/shared/ui/dropdown/WheelColumn.tsx | 2 +- .../instructor/home/config}/home.ts | 0 src/widgets/instructor/home/index.ts | 3 +++ .../instructor/home/lib}/usePagination.ts | 0 .../home/ui}/DraftSubmissionStatusSection.tsx | 10 +++++----- .../home/ui}/MatchingCommissionsSection.tsx | 10 +++++----- .../home/ui}/ModifyingCommissionsSection.tsx | 10 +++++----- src/widgets/instructor/write/index.ts | 6 +++--- .../instructor/write/ui/ColorChooseSection.tsx | 2 +- .../write/ui/DeadlineChooseSection.tsx | 2 +- 42 files changed, 92 insertions(+), 64 deletions(-) create mode 100644 src/entities/instructor/home/index.ts create mode 100644 src/entities/instructor/home/lib/getDDay.ts rename src/{data/instructor => entities/instructor/home/model}/home.ts (100%) rename src/{components/instructor/home => entities/instructor/home/ui}/CommissionsHeader.tsx (100%) rename src/{components/instructor/home => entities/instructor/home/ui}/DraftSubmissionStatusRow.tsx (91%) rename src/{components/instructor/home => entities/instructor/home/ui}/MatchingCommissionsRow.tsx (88%) rename src/{components/instructor/home => entities/instructor/home/ui}/ModifyingCommissionsRow.tsx (90%) rename src/{shared/lib/utils => features/instructor/write/lib}/color.ts (100%) rename src/{shared/lib/utils => features/instructor/write/lib}/date.ts (69%) rename src/{constants => features/signup/config}/signup.ts (100%) create mode 100644 src/features/signup/index.ts rename src/{lib/hooks => features/signup/model}/useSignupStep2Form.ts (99%) rename src/{components/signup => features/signup/ui}/UserTypeBtn.tsx (100%) rename src/{constants => shared/config}/dropdown.ts (100%) rename src/{constants => shared/config}/sidebarMenu.ts (100%) rename src/{constants => widgets/instructor/home/config}/home.ts (100%) create mode 100644 src/widgets/instructor/home/index.ts rename src/{shared/lib/hooks => widgets/instructor/home/lib}/usePagination.ts (100%) rename src/{containers/instructor/home => widgets/instructor/home/ui}/DraftSubmissionStatusSection.tsx (78%) rename src/{containers/instructor/home => widgets/instructor/home/ui}/MatchingCommissionsSection.tsx (77%) rename src/{containers/instructor/home => widgets/instructor/home/ui}/ModifyingCommissionsSection.tsx (77%) diff --git a/src/app/instructor/page.tsx b/src/app/instructor/page.tsx index 157e9b1..929fcc6 100644 --- a/src/app/instructor/page.tsx +++ b/src/app/instructor/page.tsx @@ -1,6 +1,8 @@ -import DraftSubmissionStatusSection from "@/containers/instructor/home/DraftSubmissionStatusSection"; -import MatchingCommissionsSection from "@/containers/instructor/home/MatchingCommissionsSection"; -import ModifyingCommissionsSection from "@/containers/instructor/home/ModifyingCommissionsSection"; +import { + DraftSubmissionStatusSection, + MatchingCommissionsSection, + ModifyingCommissionsSection, +} from "@/widgets/instructor/home"; const page = () => { return ( diff --git a/src/app/signup/designer/step1/page.tsx b/src/app/signup/designer/step1/page.tsx index 495ddd6..2d43133 100644 --- a/src/app/signup/designer/step1/page.tsx +++ b/src/app/signup/designer/step1/page.tsx @@ -7,7 +7,7 @@ import { DESIGNER_TERMS, SIGNUP_MAX_NAME_LENGTH, SIGNUP_MAX_PHONE_NUMBER_LENGTH, -} from "@/constants/signup"; +} from "@/features/signup"; import { CheckboxFillIcon, CheckboxGrayIcon, diff --git a/src/app/signup/designer/step2/page.tsx b/src/app/signup/designer/step2/page.tsx index 5d0880f..5842e6a 100644 --- a/src/app/signup/designer/step2/page.tsx +++ b/src/app/signup/designer/step2/page.tsx @@ -2,8 +2,11 @@ import { useRouter } from "next/navigation"; -import { SIGNUP_MAX_ID_LENGTH, SIGNUP_MAX_PASSWORD_LENGTH } from "@/constants/signup"; -import { useSignupStep2Form } from "@/lib/hooks/useSignupStep2Form"; +import { + SIGNUP_MAX_ID_LENGTH, + SIGNUP_MAX_PASSWORD_LENGTH, + useSignupStep2Form, +} from "@/features/signup"; import { StepTwoDesignerIcon } from "@/shared/assets/icons"; import Button from "@/shared/ui/Button"; import InputField from "@/shared/ui/input/InputField"; diff --git a/src/app/signup/designer/step3/page.tsx b/src/app/signup/designer/step3/page.tsx index 1957057..6fbe268 100644 --- a/src/app/signup/designer/step3/page.tsx +++ b/src/app/signup/designer/step3/page.tsx @@ -3,7 +3,7 @@ import { useRouter } from "next/navigation"; import { type ChangeEvent, useState } from "react"; -import { type BankCode, type BankOption } from "@/constants/signup"; +import { type BankCode, type BankOption } from "@/features/signup"; import { StepThreeDesignerIcon } from "@/shared/assets/icons"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import Button from "@/shared/ui/Button"; diff --git a/src/app/signup/instructor/step1/page.tsx b/src/app/signup/instructor/step1/page.tsx index 693a17b..9985ff3 100644 --- a/src/app/signup/instructor/step1/page.tsx +++ b/src/app/signup/instructor/step1/page.tsx @@ -7,7 +7,7 @@ import { INSTRUCTOR_TERMS, SIGNUP_MAX_NAME_LENGTH, SIGNUP_MAX_PHONE_NUMBER_LENGTH, -} from "@/constants/signup"; +} from "@/features/signup"; import { CheckboxFillIcon, CheckboxGrayIcon, diff --git a/src/app/signup/instructor/step2/page.tsx b/src/app/signup/instructor/step2/page.tsx index ab275e8..37b0b56 100644 --- a/src/app/signup/instructor/step2/page.tsx +++ b/src/app/signup/instructor/step2/page.tsx @@ -2,8 +2,11 @@ import { useRouter } from "next/navigation"; -import { SIGNUP_MAX_ID_LENGTH, SIGNUP_MAX_PASSWORD_LENGTH } from "@/constants/signup"; -import { useSignupStep2Form } from "@/lib/hooks/useSignupStep2Form"; +import { + SIGNUP_MAX_ID_LENGTH, + SIGNUP_MAX_PASSWORD_LENGTH, + useSignupStep2Form, +} from "@/features/signup"; import { StepTwoInstructorIcon } from "@/shared/assets/icons"; import Button from "@/shared/ui/Button"; import InputField from "@/shared/ui/input/InputField"; diff --git a/src/app/signup/page.tsx b/src/app/signup/page.tsx index c630976..ea40e64 100644 --- a/src/app/signup/page.tsx +++ b/src/app/signup/page.tsx @@ -3,7 +3,7 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; -import UserTypeBtn from "@/components/signup/UserTypeBtn"; +import { UserTypeBtn } from "@/features/signup"; import { UserTypeDesignerIcon, UserTypeInstructorIcon } from "@/shared/assets/icons"; import Button from "@/shared/ui/Button"; diff --git a/src/entities/instructor/home/index.ts b/src/entities/instructor/home/index.ts new file mode 100644 index 0000000..0a2e750 --- /dev/null +++ b/src/entities/instructor/home/index.ts @@ -0,0 +1,16 @@ +export { getDDay } from "@/entities/instructor/home/lib/getDDay"; +export type { + DraftSubmissionItem, + MatchingItem, + ModifyingItem, +} from "@/entities/instructor/home/model/home"; +export { + CATEGORY_DISPLAY_MAP, + draftSubmissionStatusData, + matchingStatusData, + modifyingStatusData, +} from "@/entities/instructor/home/model/home"; +export { default as CommissionsHeader } from "@/entities/instructor/home/ui/CommissionsHeader"; +export { default as DraftSubmissionStatusRow } from "@/entities/instructor/home/ui/DraftSubmissionStatusRow"; +export { default as MatchingCommissionsRow } from "@/entities/instructor/home/ui/MatchingCommissionsRow"; +export { default as ModifyingCommissionsRow } from "@/entities/instructor/home/ui/ModifyingCommissionsRow"; diff --git a/src/entities/instructor/home/lib/getDDay.ts b/src/entities/instructor/home/lib/getDDay.ts new file mode 100644 index 0000000..3e0f265 --- /dev/null +++ b/src/entities/instructor/home/lib/getDDay.ts @@ -0,0 +1,8 @@ +export const getDDay = (deadline: string) => { + const today = new Date(); + today.setHours(0, 0, 0, 0); + const target = new Date(deadline); + target.setHours(0, 0, 0, 0); + const diff = Math.ceil((target.getTime() - today.getTime()) / (1000 * 60 * 60 * 24)); + return diff >= 0 ? `D-${diff}` : `D+${Math.abs(diff)}`; +}; diff --git a/src/data/instructor/home.ts b/src/entities/instructor/home/model/home.ts similarity index 100% rename from src/data/instructor/home.ts rename to src/entities/instructor/home/model/home.ts diff --git a/src/components/instructor/home/CommissionsHeader.tsx b/src/entities/instructor/home/ui/CommissionsHeader.tsx similarity index 100% rename from src/components/instructor/home/CommissionsHeader.tsx rename to src/entities/instructor/home/ui/CommissionsHeader.tsx diff --git a/src/components/instructor/home/DraftSubmissionStatusRow.tsx b/src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx similarity index 91% rename from src/components/instructor/home/DraftSubmissionStatusRow.tsx rename to src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx index 2375399..e4d00a7 100644 --- a/src/components/instructor/home/DraftSubmissionStatusRow.tsx +++ b/src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx @@ -1,6 +1,6 @@ -import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/data/instructor/home"; +import { getDDay } from "@/entities/instructor/home/lib/getDDay"; +import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/entities/instructor/home/model/home"; import { ArrowRightIcon, MatchingOffIcon, MatchingOnIcon } from "@/shared/assets/icons"; -import { getDDay } from "@/shared/lib/utils/date"; import Tag from "@/shared/ui/Tag"; const DraftSubmissionStatusRow = ({ item }: { item: DraftSubmissionItem }) => { diff --git a/src/components/instructor/home/MatchingCommissionsRow.tsx b/src/entities/instructor/home/ui/MatchingCommissionsRow.tsx similarity index 88% rename from src/components/instructor/home/MatchingCommissionsRow.tsx rename to src/entities/instructor/home/ui/MatchingCommissionsRow.tsx index d205d5d..d54c039 100644 --- a/src/components/instructor/home/MatchingCommissionsRow.tsx +++ b/src/entities/instructor/home/ui/MatchingCommissionsRow.tsx @@ -1,6 +1,6 @@ -import { MatchingItem } from "@/data/instructor/home"; +import { getDDay } from "@/entities/instructor/home/lib/getDDay"; +import { MatchingItem } from "@/entities/instructor/home/model/home"; import { ArrowRightIcon } from "@/shared/assets/icons"; -import { getDDay } from "@/shared/lib/utils/date"; import Tag from "@/shared/ui/Tag"; const MatchingCommissionsRow = ({ item }: { item: MatchingItem }) => { diff --git a/src/components/instructor/home/ModifyingCommissionsRow.tsx b/src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx similarity index 90% rename from src/components/instructor/home/ModifyingCommissionsRow.tsx rename to src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx index 66011e0..fcdd416 100644 --- a/src/components/instructor/home/ModifyingCommissionsRow.tsx +++ b/src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx @@ -1,6 +1,6 @@ -import { ModifyingItem } from "@/data/instructor/home"; +import { getDDay } from "@/entities/instructor/home/lib/getDDay"; +import { ModifyingItem } from "@/entities/instructor/home/model/home"; import { cn } from "@/shared/lib/utils/cn"; -import { getDDay } from "@/shared/lib/utils/date"; import Button from "@/shared/ui/Button"; import Tag from "@/shared/ui/Tag"; diff --git a/src/features/instructor/write/index.ts b/src/features/instructor/write/index.ts index 2e68e18..149a4ca 100644 --- a/src/features/instructor/write/index.ts +++ b/src/features/instructor/write/index.ts @@ -1,2 +1,2 @@ -export { useWriteFormStore } from "./model/writeFormStore"; -export { default as StepHeader } from "./ui/StepHeader"; +export { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +export { default as StepHeader } from "@/features/instructor/write/ui/StepHeader"; diff --git a/src/shared/lib/utils/color.ts b/src/features/instructor/write/lib/color.ts similarity index 100% rename from src/shared/lib/utils/color.ts rename to src/features/instructor/write/lib/color.ts diff --git a/src/shared/lib/utils/date.ts b/src/features/instructor/write/lib/date.ts similarity index 69% rename from src/shared/lib/utils/date.ts rename to src/features/instructor/write/lib/date.ts index 0d45b22..73f069d 100644 --- a/src/shared/lib/utils/date.ts +++ b/src/features/instructor/write/lib/date.ts @@ -24,12 +24,3 @@ export const toApiDate = (date: Date) => { const d = String(date.getDate()).padStart(2, "0"); return `${y}-${m}-${d}`; }; - -export const getDDay = (deadline: string) => { - const today = new Date(); - today.setHours(0, 0, 0, 0); - const target = new Date(deadline); - target.setHours(0, 0, 0, 0); - const diff = Math.ceil((target.getTime() - today.getTime()) / (1000 * 60 * 60 * 24)); - return diff >= 0 ? `D-${diff}` : `D+${Math.abs(diff)}`; -}; diff --git a/src/features/instructor/write/model/writeFormStore.ts b/src/features/instructor/write/model/writeFormStore.ts index f4cb56e..79f6418 100644 --- a/src/features/instructor/write/model/writeFormStore.ts +++ b/src/features/instructor/write/model/writeFormStore.ts @@ -9,9 +9,9 @@ import { SIZE_API_MAP, type WriteStep, } from "@/features/instructor/write/config/write"; +import { type RgbaColor, toHex } from "@/features/instructor/write/lib/color"; +import { toApiDate } from "@/features/instructor/write/lib/date"; import type { WriteOrderRequest } from "@/features/instructor/write/model/write"; -import { type RgbaColor, toHex } from "@/shared/lib/utils/color"; -import { toApiDate } from "@/shared/lib/utils/date"; import type { UploadedFile } from "@/shared/types/file"; const STORAGE_KEY = "write-form"; diff --git a/src/features/instructor/write/ui/ColorChooseCard.tsx b/src/features/instructor/write/ui/ColorChooseCard.tsx index 6af2a00..f23a860 100644 --- a/src/features/instructor/write/ui/ColorChooseCard.tsx +++ b/src/features/instructor/write/ui/ColorChooseCard.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; +import type { RgbaColor } from "@/features/instructor/write/lib/color"; +import { clamp, hexToRgb, toHex } from "@/features/instructor/write/lib/color"; import { cn } from "@/shared/lib/utils/cn"; -import type { RgbaColor } from "@/shared/lib/utils/color"; -import { clamp, hexToRgb, toHex } from "@/shared/lib/utils/color"; import Radio from "@/shared/ui/Radio"; type ColorChooseCardProps = { diff --git a/src/features/instructor/write/ui/ColorPicker.tsx b/src/features/instructor/write/ui/ColorPicker.tsx index fef2b63..2ab39b5 100644 --- a/src/features/instructor/write/ui/ColorPicker.tsx +++ b/src/features/instructor/write/ui/ColorPicker.tsx @@ -3,8 +3,8 @@ import { useState } from "react"; import { RgbaColorPicker } from "react-colorful"; -import type { RgbaColor } from "@/shared/lib/utils/color"; -import { clamp, hexToRgb, toHex } from "@/shared/lib/utils/color"; +import type { RgbaColor } from "@/features/instructor/write/lib/color"; +import { clamp, hexToRgb, toHex } from "@/features/instructor/write/lib/color"; interface ColorPickerProps { value?: RgbaColor; diff --git a/src/features/instructor/write/ui/PaymentModal/Step1.tsx b/src/features/instructor/write/ui/PaymentModal/Step1.tsx index e36e4ac..4c74263 100644 --- a/src/features/instructor/write/ui/PaymentModal/Step1.tsx +++ b/src/features/instructor/write/ui/PaymentModal/Step1.tsx @@ -5,9 +5,9 @@ import { SIZE_DISPLAY_MAP, TERMS_CONTENT, } from "@/features/instructor/write/config/write"; +import { formatDate } from "@/features/instructor/write/lib/date"; import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import { ArrowDownIcon, CheckboxFillIcon, CheckboxGrayIcon } from "@/shared/assets/icons"; -import { formatDate } from "@/shared/lib/utils/date"; import Button from "@/shared/ui/Button"; import Chip from "@/shared/ui/Chip"; diff --git a/src/constants/signup.ts b/src/features/signup/config/signup.ts similarity index 100% rename from src/constants/signup.ts rename to src/features/signup/config/signup.ts diff --git a/src/features/signup/index.ts b/src/features/signup/index.ts new file mode 100644 index 0000000..d1f9c04 --- /dev/null +++ b/src/features/signup/index.ts @@ -0,0 +1,3 @@ +export * from "@/features/signup/config/signup"; +export { useSignupStep2Form } from "@/features/signup/model/useSignupStep2Form"; +export { default as UserTypeBtn } from "@/features/signup/ui/UserTypeBtn"; diff --git a/src/lib/hooks/useSignupStep2Form.ts b/src/features/signup/model/useSignupStep2Form.ts similarity index 99% rename from src/lib/hooks/useSignupStep2Form.ts rename to src/features/signup/model/useSignupStep2Form.ts index 07ff5c0..5e876ba 100644 --- a/src/lib/hooks/useSignupStep2Form.ts +++ b/src/features/signup/model/useSignupStep2Form.ts @@ -17,7 +17,7 @@ import { SIGNUP_PASSWORD_CONFIRM_ERROR_MESSAGE, SIGNUP_PASSWORD_CONFIRM_FORMAT_ERROR_MESSAGE, SIGNUP_PASSWORD_ERROR_MESSAGE, -} from "@/constants/signup"; +} from "@/features/signup/config/signup"; type SignupUserIdCheckStatus = "idle" | "available" | "duplicated"; type SignupEmailVerificationStatus = "idle" | "sent" | "verified"; diff --git a/src/components/signup/UserTypeBtn.tsx b/src/features/signup/ui/UserTypeBtn.tsx similarity index 100% rename from src/components/signup/UserTypeBtn.tsx rename to src/features/signup/ui/UserTypeBtn.tsx diff --git a/src/constants/dropdown.ts b/src/shared/config/dropdown.ts similarity index 100% rename from src/constants/dropdown.ts rename to src/shared/config/dropdown.ts diff --git a/src/constants/sidebarMenu.ts b/src/shared/config/sidebarMenu.ts similarity index 100% rename from src/constants/sidebarMenu.ts rename to src/shared/config/sidebarMenu.ts diff --git a/src/shared/lib/hooks/useWheelColumn.ts b/src/shared/lib/hooks/useWheelColumn.ts index e31c452..31db7e6 100644 --- a/src/shared/lib/hooks/useWheelColumn.ts +++ b/src/shared/lib/hooks/useWheelColumn.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef, type WheelEvent } from "react"; -import { SCROLL_ANIMATION_MS, SNAP_DELAY, STEP, WHEEL_COOLDOWN } from "@/constants/dropdown"; +import { SCROLL_ANIMATION_MS, SNAP_DELAY, STEP, WHEEL_COOLDOWN } from "@/shared/config/dropdown"; import { easeOutCubic, getNearestIndex, getScrollTopForIndex } from "@/shared/lib/utils/dropdown"; interface UseWheelColumnProps { diff --git a/src/shared/lib/utils/dropdown.ts b/src/shared/lib/utils/dropdown.ts index 660b3d8..5ccdc3d 100644 --- a/src/shared/lib/utils/dropdown.ts +++ b/src/shared/lib/utils/dropdown.ts @@ -1,4 +1,4 @@ -import { SELECTED_EXTRA, STEP } from "@/constants/dropdown"; +import { SELECTED_EXTRA, STEP } from "@/shared/config/dropdown"; export const easeOutCubic = (progress: number) => 1 - (1 - progress) ** 3; diff --git a/src/shared/ui/SidebarMenu.tsx b/src/shared/ui/SidebarMenu.tsx index 6341c06..aa02a84 100644 --- a/src/shared/ui/SidebarMenu.tsx +++ b/src/shared/ui/SidebarMenu.tsx @@ -4,7 +4,7 @@ import Link from "next/link"; import { usePathname } from "next/navigation"; import { useState } from "react"; -import { SIDEBAR_ICON_MAP } from "@/constants/sidebarMenu"; +import { SIDEBAR_ICON_MAP } from "@/shared/config/sidebarMenu"; interface SidebarMenuProps { label: string; diff --git a/src/shared/ui/dropdown/BankDropdown.tsx b/src/shared/ui/dropdown/BankDropdown.tsx index 378ca5b..8ec9f9e 100644 --- a/src/shared/ui/dropdown/BankDropdown.tsx +++ b/src/shared/ui/dropdown/BankDropdown.tsx @@ -7,7 +7,7 @@ import { BANK_OPTIONS, type BankCode, type BankOption, -} from "@/constants/signup"; +} from "@/features/signup/config/signup"; import { ArrowDownIcon, ArrowUpIcon } from "@/shared/assets/icons"; import { cn } from "@/shared/lib/utils/cn"; diff --git a/src/shared/ui/dropdown/DateDropdownMenu.tsx b/src/shared/ui/dropdown/DateDropdownMenu.tsx index 18b43bd..f7191a1 100644 --- a/src/shared/ui/dropdown/DateDropdownMenu.tsx +++ b/src/shared/ui/dropdown/DateDropdownMenu.tsx @@ -2,11 +2,10 @@ import { useCallback, useState } from "react"; -import { PAD_TOP, YEAR_RANGE } from "@/constants/dropdown"; +import { PAD_TOP, YEAR_RANGE } from "@/shared/config/dropdown"; import { cn } from "@/shared/lib/utils/cn"; import { getDaysInMonth } from "@/shared/lib/utils/dropdown"; - -import WheelColumn from "./WheelColumn"; +import WheelColumn from "@/shared/ui/dropdown/WheelColumn"; interface DropdownMenuProps { onConfirm?: (date: Date) => void; diff --git a/src/shared/ui/dropdown/WheelColumn.tsx b/src/shared/ui/dropdown/WheelColumn.tsx index 6f9193d..3f94c1a 100644 --- a/src/shared/ui/dropdown/WheelColumn.tsx +++ b/src/shared/ui/dropdown/WheelColumn.tsx @@ -1,6 +1,6 @@ "use client"; -import { ITEM_GAP, LIST_H, PAD_BOTTOM, PAD_TOP } from "@/constants/dropdown"; +import { ITEM_GAP, LIST_H, PAD_BOTTOM, PAD_TOP } from "@/shared/config/dropdown"; import { useWheelColumn } from "@/shared/lib/hooks/useWheelColumn"; import { cn } from "@/shared/lib/utils/cn"; diff --git a/src/constants/home.ts b/src/widgets/instructor/home/config/home.ts similarity index 100% rename from src/constants/home.ts rename to src/widgets/instructor/home/config/home.ts diff --git a/src/widgets/instructor/home/index.ts b/src/widgets/instructor/home/index.ts new file mode 100644 index 0000000..eb215b9 --- /dev/null +++ b/src/widgets/instructor/home/index.ts @@ -0,0 +1,3 @@ +export { default as DraftSubmissionStatusSection } from "@/widgets/instructor/home/ui/DraftSubmissionStatusSection"; +export { default as MatchingCommissionsSection } from "@/widgets/instructor/home/ui/MatchingCommissionsSection"; +export { default as ModifyingCommissionsSection } from "@/widgets/instructor/home/ui/ModifyingCommissionsSection"; diff --git a/src/shared/lib/hooks/usePagination.ts b/src/widgets/instructor/home/lib/usePagination.ts similarity index 100% rename from src/shared/lib/hooks/usePagination.ts rename to src/widgets/instructor/home/lib/usePagination.ts diff --git a/src/containers/instructor/home/DraftSubmissionStatusSection.tsx b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx similarity index 78% rename from src/containers/instructor/home/DraftSubmissionStatusSection.tsx rename to src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx index c4d9950..18b8c16 100644 --- a/src/containers/instructor/home/DraftSubmissionStatusSection.tsx +++ b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx @@ -1,12 +1,12 @@ "use client"; -import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; -import DraftSubmissionStatusRow from "@/components/instructor/home/DraftSubmissionStatusRow"; -import { DRAFT_SUBMISSION_ITEMS_PER_PAGE } from "@/constants/home"; -import { draftSubmissionStatusData } from "@/data/instructor/home"; +import { draftSubmissionStatusData } from "@/entities/instructor/home/model/home"; +import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; +import DraftSubmissionStatusRow from "@/entities/instructor/home/ui/DraftSubmissionStatusRow"; 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/containers/instructor/home/MatchingCommissionsSection.tsx b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx similarity index 77% rename from src/containers/instructor/home/MatchingCommissionsSection.tsx rename to src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx index c85f35e..e8373b8 100644 --- a/src/containers/instructor/home/MatchingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx @@ -1,12 +1,12 @@ "use client"; -import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; -import MatchingStatusCommissionsRow from "@/components/instructor/home/MatchingCommissionsRow"; -import { MATCHING_ITEMS_PER_PAGE } from "@/constants/home"; -import { matchingStatusData } from "@/data/instructor/home"; +import { matchingStatusData } from "@/entities/instructor/home/model/home"; +import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; +import MatchingStatusCommissionsRow from "@/entities/instructor/home/ui/MatchingCommissionsRow"; 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/containers/instructor/home/ModifyingCommissionsSection.tsx b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx similarity index 77% rename from src/containers/instructor/home/ModifyingCommissionsSection.tsx rename to src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx index 87284f6..ce0e065 100644 --- a/src/containers/instructor/home/ModifyingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx @@ -1,12 +1,12 @@ "use client"; -import CommissionsHeader from "@/components/instructor/home/CommissionsHeader"; -import ModifyingCommissionsRow from "@/components/instructor/home/ModifyingCommissionsRow"; -import { MODIFYING_ITEMS_PER_PAGE } from "@/constants/home"; -import { modifyingStatusData } from "@/data/instructor/home"; +import { modifyingStatusData } from "@/entities/instructor/home/model/home"; +import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; +import ModifyingCommissionsRow from "@/entities/instructor/home/ui/ModifyingCommissionsRow"; 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/write/index.ts b/src/widgets/instructor/write/index.ts index c9adb02..5391f33 100644 --- a/src/widgets/instructor/write/index.ts +++ b/src/widgets/instructor/write/index.ts @@ -1,3 +1,3 @@ -export { default as Step1Content } from "./ui/Step1Content"; -export { default as Step2Content } from "./ui/Step2Content"; -export { default as Step3Content } from "./ui/Step3Content"; +export { default as Step1Content } from "@/widgets/instructor/write/ui/Step1Content"; +export { default as Step2Content } from "@/widgets/instructor/write/ui/Step2Content"; +export { default as Step3Content } from "@/widgets/instructor/write/ui/Step3Content"; diff --git a/src/widgets/instructor/write/ui/ColorChooseSection.tsx b/src/widgets/instructor/write/ui/ColorChooseSection.tsx index 6f6765d..b73863c 100644 --- a/src/widgets/instructor/write/ui/ColorChooseSection.tsx +++ b/src/widgets/instructor/write/ui/ColorChooseSection.tsx @@ -2,11 +2,11 @@ import { useEffect, useRef, useState } from "react"; +import type { RgbaColor } from "@/features/instructor/write/lib/color"; import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; import ColorChooseCard from "@/features/instructor/write/ui/ColorChooseCard"; import ColorPicker from "@/features/instructor/write/ui/ColorPicker"; import { cn } from "@/shared/lib/utils/cn"; -import type { RgbaColor } from "@/shared/lib/utils/color"; import Toggle from "@/shared/ui/Toggle"; const ColorChooseSection = () => { diff --git a/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx index b174bd4..1f03235 100644 --- a/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx +++ b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx @@ -2,8 +2,8 @@ import { useEffect, useRef, useState } from "react"; +import { formatDate, getMinFinalDate, getYesterday } from "@/features/instructor/write/lib/date"; import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import { formatDate, getMinFinalDate, getYesterday } from "@/shared/lib/utils/date"; import DateDropdownBox from "@/shared/ui/dropdown/DateDropdownBox"; import DateDropdownMenu from "@/shared/ui/dropdown/DateDropdownMenu"; From 0294263531368c03bbefad8600a6bcfd8524f818 Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 21:48:52 +0900 Subject: [PATCH 4/6] =?UTF-8?q?#25=20[MOVE]=20=EA=B0=95=EC=82=AC=20?= =?UTF-8?q?=ED=99=88=20entities=EB=A5=BC=20features=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/instructor/home/index.ts | 16 ---------------- src/features/instructor/home/index.ts | 16 ++++++++++++++++ .../instructor/home/lib/getDDay.ts | 0 .../instructor/home/model/home.ts | 0 .../instructor/home/ui/CommissionsHeader.tsx | 0 .../home/ui/DraftSubmissionStatusRow.tsx | 4 ++-- .../home/ui/MatchingCommissionsRow.tsx | 4 ++-- .../home/ui/ModifyingCommissionsRow.tsx | 4 ++-- .../home/ui/DraftSubmissionStatusSection.tsx | 6 +++--- .../home/ui/MatchingCommissionsSection.tsx | 6 +++--- .../home/ui/ModifyingCommissionsSection.tsx | 6 +++--- 11 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 src/entities/instructor/home/index.ts create mode 100644 src/features/instructor/home/index.ts rename src/{entities => features}/instructor/home/lib/getDDay.ts (100%) rename src/{entities => features}/instructor/home/model/home.ts (100%) rename src/{entities => features}/instructor/home/ui/CommissionsHeader.tsx (100%) rename src/{entities => features}/instructor/home/ui/DraftSubmissionStatusRow.tsx (91%) rename src/{entities => features}/instructor/home/ui/MatchingCommissionsRow.tsx (89%) rename src/{entities => features}/instructor/home/ui/ModifyingCommissionsRow.tsx (90%) diff --git a/src/entities/instructor/home/index.ts b/src/entities/instructor/home/index.ts deleted file mode 100644 index 0a2e750..0000000 --- a/src/entities/instructor/home/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -export { getDDay } from "@/entities/instructor/home/lib/getDDay"; -export type { - DraftSubmissionItem, - MatchingItem, - ModifyingItem, -} from "@/entities/instructor/home/model/home"; -export { - CATEGORY_DISPLAY_MAP, - draftSubmissionStatusData, - matchingStatusData, - modifyingStatusData, -} from "@/entities/instructor/home/model/home"; -export { default as CommissionsHeader } from "@/entities/instructor/home/ui/CommissionsHeader"; -export { default as DraftSubmissionStatusRow } from "@/entities/instructor/home/ui/DraftSubmissionStatusRow"; -export { default as MatchingCommissionsRow } from "@/entities/instructor/home/ui/MatchingCommissionsRow"; -export { default as ModifyingCommissionsRow } from "@/entities/instructor/home/ui/ModifyingCommissionsRow"; diff --git a/src/features/instructor/home/index.ts b/src/features/instructor/home/index.ts new file mode 100644 index 0000000..2b58348 --- /dev/null +++ b/src/features/instructor/home/index.ts @@ -0,0 +1,16 @@ +export { getDDay } from "@/features/instructor/home/lib/getDDay"; +export type { + DraftSubmissionItem, + MatchingItem, + ModifyingItem, +} from "@/features/instructor/home/model/home"; +export { + CATEGORY_DISPLAY_MAP, + draftSubmissionStatusData, + matchingStatusData, + modifyingStatusData, +} from "@/features/instructor/home/model/home"; +export { default as CommissionsHeader } from "@/features/instructor/home/ui/CommissionsHeader"; +export { default as DraftSubmissionStatusRow } from "@/features/instructor/home/ui/DraftSubmissionStatusRow"; +export { default as MatchingCommissionsRow } from "@/features/instructor/home/ui/MatchingCommissionsRow"; +export { default as ModifyingCommissionsRow } from "@/features/instructor/home/ui/ModifyingCommissionsRow"; diff --git a/src/entities/instructor/home/lib/getDDay.ts b/src/features/instructor/home/lib/getDDay.ts similarity index 100% rename from src/entities/instructor/home/lib/getDDay.ts rename to src/features/instructor/home/lib/getDDay.ts diff --git a/src/entities/instructor/home/model/home.ts b/src/features/instructor/home/model/home.ts similarity index 100% rename from src/entities/instructor/home/model/home.ts rename to src/features/instructor/home/model/home.ts diff --git a/src/entities/instructor/home/ui/CommissionsHeader.tsx b/src/features/instructor/home/ui/CommissionsHeader.tsx similarity index 100% rename from src/entities/instructor/home/ui/CommissionsHeader.tsx rename to src/features/instructor/home/ui/CommissionsHeader.tsx diff --git a/src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx b/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx similarity index 91% rename from src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx rename to src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx index e4d00a7..aea3332 100644 --- a/src/entities/instructor/home/ui/DraftSubmissionStatusRow.tsx +++ b/src/features/instructor/home/ui/DraftSubmissionStatusRow.tsx @@ -1,5 +1,5 @@ -import { getDDay } from "@/entities/instructor/home/lib/getDDay"; -import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/entities/instructor/home/model/home"; +import { getDDay } from "@/features/instructor/home/lib/getDDay"; +import { CATEGORY_DISPLAY_MAP, DraftSubmissionItem } from "@/features/instructor/home/model/home"; import { ArrowRightIcon, MatchingOffIcon, MatchingOnIcon } from "@/shared/assets/icons"; import Tag from "@/shared/ui/Tag"; diff --git a/src/entities/instructor/home/ui/MatchingCommissionsRow.tsx b/src/features/instructor/home/ui/MatchingCommissionsRow.tsx similarity index 89% rename from src/entities/instructor/home/ui/MatchingCommissionsRow.tsx rename to src/features/instructor/home/ui/MatchingCommissionsRow.tsx index d54c039..21aa839 100644 --- a/src/entities/instructor/home/ui/MatchingCommissionsRow.tsx +++ b/src/features/instructor/home/ui/MatchingCommissionsRow.tsx @@ -1,5 +1,5 @@ -import { getDDay } from "@/entities/instructor/home/lib/getDDay"; -import { MatchingItem } from "@/entities/instructor/home/model/home"; +import { getDDay } from "@/features/instructor/home/lib/getDDay"; +import { MatchingItem } from "@/features/instructor/home/model/home"; import { ArrowRightIcon } from "@/shared/assets/icons"; import Tag from "@/shared/ui/Tag"; diff --git a/src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx b/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx similarity index 90% rename from src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx rename to src/features/instructor/home/ui/ModifyingCommissionsRow.tsx index fcdd416..af58fb7 100644 --- a/src/entities/instructor/home/ui/ModifyingCommissionsRow.tsx +++ b/src/features/instructor/home/ui/ModifyingCommissionsRow.tsx @@ -1,5 +1,5 @@ -import { getDDay } from "@/entities/instructor/home/lib/getDDay"; -import { ModifyingItem } from "@/entities/instructor/home/model/home"; +import { getDDay } from "@/features/instructor/home/lib/getDDay"; +import { ModifyingItem } from "@/features/instructor/home/model/home"; import { cn } from "@/shared/lib/utils/cn"; import Button from "@/shared/ui/Button"; import Tag from "@/shared/ui/Tag"; diff --git a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx index 18b8c16..9a7680c 100644 --- a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx +++ b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx @@ -1,8 +1,8 @@ "use client"; -import { draftSubmissionStatusData } from "@/entities/instructor/home/model/home"; -import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; -import DraftSubmissionStatusRow from "@/entities/instructor/home/ui/DraftSubmissionStatusRow"; +import { draftSubmissionStatusData } from "@/features/instructor/home/model/home"; +import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; +import DraftSubmissionStatusRow from "@/features/instructor/home/ui/DraftSubmissionStatusRow"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { DRAFT_SUBMISSION_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; diff --git a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx index e8373b8..8c1cbc1 100644 --- a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx @@ -1,8 +1,8 @@ "use client"; -import { matchingStatusData } from "@/entities/instructor/home/model/home"; -import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; -import MatchingStatusCommissionsRow from "@/entities/instructor/home/ui/MatchingCommissionsRow"; +import { matchingStatusData } from "@/features/instructor/home/model/home"; +import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; +import MatchingStatusCommissionsRow from "@/features/instructor/home/ui/MatchingCommissionsRow"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { MATCHING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; diff --git a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx index ce0e065..d07aa83 100644 --- a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx @@ -1,8 +1,8 @@ "use client"; -import { modifyingStatusData } from "@/entities/instructor/home/model/home"; -import CommissionsHeader from "@/entities/instructor/home/ui/CommissionsHeader"; -import ModifyingCommissionsRow from "@/entities/instructor/home/ui/ModifyingCommissionsRow"; +import { modifyingStatusData } from "@/features/instructor/home/model/home"; +import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; +import ModifyingCommissionsRow from "@/features/instructor/home/ui/ModifyingCommissionsRow"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { MODIFYING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; From 3f1a4bbe9f1bd979c9bcb0b533cddd8ee7399efa Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 22:07:54 +0900 Subject: [PATCH 5/6] =?UTF-8?q?#25=20[FEAT]=20features=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=99=B8=EB=B6=80=20=EC=B0=B8=EC=A1=B0=EB=A5=BC=20?= =?UTF-8?q?=EB=B0=B0=EB=9F=B4=20=ED=8C=8C=EC=9D=BC=20=EA=B2=BD=EB=A1=9C?= =?UTF-8?q?=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/instructor/write/index.ts | 11 +++++++++++ src/shared/ui/dropdown/BankDropdown.tsx | 2 +- .../home/ui/DraftSubmissionStatusSection.tsx | 8 +++++--- .../instructor/home/ui/MatchingCommissionsSection.tsx | 8 +++++--- .../home/ui/ModifyingCommissionsSection.tsx | 8 +++++--- src/widgets/instructor/write/ui/AttachFileSection.tsx | 2 +- .../instructor/write/ui/BasicInfoTypingSection.tsx | 6 +----- src/widgets/instructor/write/ui/CategorySection.tsx | 3 +-- .../instructor/write/ui/ColorChooseSection.tsx | 10 ++++++---- .../instructor/write/ui/DeadlineChooseSection.tsx | 8 ++++++-- .../instructor/write/ui/DesignConceptSection.tsx | 9 ++++++--- .../write/ui/NecessaryPageChooseSection.tsx | 3 +-- src/widgets/instructor/write/ui/PlanChooseSection.tsx | 4 +--- src/widgets/instructor/write/ui/ReferenceSection.tsx | 2 +- src/widgets/instructor/write/ui/SizeSection.tsx | 10 ++++++---- src/widgets/instructor/write/ui/Step1Content.tsx | 2 +- src/widgets/instructor/write/ui/Step2Content.tsx | 2 +- src/widgets/instructor/write/ui/Step3Content.tsx | 4 ++-- 18 files changed, 61 insertions(+), 41 deletions(-) diff --git a/src/features/instructor/write/index.ts b/src/features/instructor/write/index.ts index 149a4ca..902734f 100644 --- a/src/features/instructor/write/index.ts +++ b/src/features/instructor/write/index.ts @@ -1,2 +1,13 @@ +export * from "@/features/instructor/write/config/write"; +export type { RgbaColor } from "@/features/instructor/write/lib/color"; +export { formatDate, getMinFinalDate, getYesterday } from "@/features/instructor/write/lib/date"; +export type { BasicInfo } from "@/features/instructor/write/model/writeFormStore"; export { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +export { default as ColorChooseCard } from "@/features/instructor/write/ui/ColorChooseCard"; +export { default as ColorPicker } from "@/features/instructor/write/ui/ColorPicker"; +export { default as ConceptKeywordCard } from "@/features/instructor/write/ui/ConceptKeywordCard"; +export { default as PaperSizeCard } from "@/features/instructor/write/ui/PaperSizeCard"; +export { default as PaymentModal } from "@/features/instructor/write/ui/PaymentModal/PaymentModal"; +export { default as PlanChooseCard } from "@/features/instructor/write/ui/PlanChooseCard"; +export { default as SizeRecommendedCard } from "@/features/instructor/write/ui/SizeRecommendedCard"; export { default as StepHeader } from "@/features/instructor/write/ui/StepHeader"; diff --git a/src/shared/ui/dropdown/BankDropdown.tsx b/src/shared/ui/dropdown/BankDropdown.tsx index 8ec9f9e..66139b5 100644 --- a/src/shared/ui/dropdown/BankDropdown.tsx +++ b/src/shared/ui/dropdown/BankDropdown.tsx @@ -7,7 +7,7 @@ import { BANK_OPTIONS, type BankCode, type BankOption, -} from "@/features/signup/config/signup"; +} from "@/features/signup"; import { ArrowDownIcon, ArrowUpIcon } from "@/shared/assets/icons"; import { cn } from "@/shared/lib/utils/cn"; diff --git a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx index 9a7680c..b0beace 100644 --- a/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx +++ b/src/widgets/instructor/home/ui/DraftSubmissionStatusSection.tsx @@ -1,8 +1,10 @@ "use client"; -import { draftSubmissionStatusData } from "@/features/instructor/home/model/home"; -import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; -import DraftSubmissionStatusRow from "@/features/instructor/home/ui/DraftSubmissionStatusRow"; +import { + CommissionsHeader, + draftSubmissionStatusData, + DraftSubmissionStatusRow, +} from "@/features/instructor/home"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { DRAFT_SUBMISSION_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; diff --git a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx index 8c1cbc1..cb0778a 100644 --- a/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/MatchingCommissionsSection.tsx @@ -1,8 +1,10 @@ "use client"; -import { matchingStatusData } from "@/features/instructor/home/model/home"; -import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; -import MatchingStatusCommissionsRow from "@/features/instructor/home/ui/MatchingCommissionsRow"; +import { + CommissionsHeader, + MatchingCommissionsRow as MatchingStatusCommissionsRow, + matchingStatusData, +} from "@/features/instructor/home"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { MATCHING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; diff --git a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx index d07aa83..2cf2c98 100644 --- a/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx +++ b/src/widgets/instructor/home/ui/ModifyingCommissionsSection.tsx @@ -1,8 +1,10 @@ "use client"; -import { modifyingStatusData } from "@/features/instructor/home/model/home"; -import CommissionsHeader from "@/features/instructor/home/ui/CommissionsHeader"; -import ModifyingCommissionsRow from "@/features/instructor/home/ui/ModifyingCommissionsRow"; +import { + CommissionsHeader, + ModifyingCommissionsRow, + modifyingStatusData, +} from "@/features/instructor/home"; import { NextButton, PrevButton } from "@/shared/assets/icons"; import PageIndicator from "@/shared/ui/PageIndicator"; import { MODIFYING_ITEMS_PER_PAGE } from "@/widgets/instructor/home/config/home"; diff --git a/src/widgets/instructor/write/ui/AttachFileSection.tsx b/src/widgets/instructor/write/ui/AttachFileSection.tsx index eefa4ea..1699e2f 100644 --- a/src/widgets/instructor/write/ui/AttachFileSection.tsx +++ b/src/widgets/instructor/write/ui/AttachFileSection.tsx @@ -1,6 +1,6 @@ "use client"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { useWriteFormStore } from "@/features/instructor/write"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; import FileUpload from "@/shared/ui/FileUpload"; diff --git a/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx b/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx index 421ae00..a9c401a 100644 --- a/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx +++ b/src/widgets/instructor/write/ui/BasicInfoTypingSection.tsx @@ -1,10 +1,6 @@ "use client"; -import { BASIC_INFO_FIELDS } from "@/features/instructor/write/config/write"; -import { - type BasicInfo, - useWriteFormStore, -} from "@/features/instructor/write/model/writeFormStore"; +import { BASIC_INFO_FIELDS, type BasicInfo, useWriteFormStore } from "@/features/instructor/write"; import SmallInput from "@/shared/ui/input/SmallInput"; const BasicInfoTypingSection = () => { diff --git a/src/widgets/instructor/write/ui/CategorySection.tsx b/src/widgets/instructor/write/ui/CategorySection.tsx index 48ac8a1..4fcb8a8 100644 --- a/src/widgets/instructor/write/ui/CategorySection.tsx +++ b/src/widgets/instructor/write/ui/CategorySection.tsx @@ -2,8 +2,7 @@ import { useState } from "react"; -import { CATEGORIES } from "@/features/instructor/write/config/write"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { CATEGORIES, useWriteFormStore } from "@/features/instructor/write"; import AccordionMenu from "@/shared/ui/AccordionMenu"; import Radio from "@/shared/ui/Radio"; diff --git a/src/widgets/instructor/write/ui/ColorChooseSection.tsx b/src/widgets/instructor/write/ui/ColorChooseSection.tsx index b73863c..b9be509 100644 --- a/src/widgets/instructor/write/ui/ColorChooseSection.tsx +++ b/src/widgets/instructor/write/ui/ColorChooseSection.tsx @@ -2,10 +2,12 @@ import { useEffect, useRef, useState } from "react"; -import type { RgbaColor } from "@/features/instructor/write/lib/color"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import ColorChooseCard from "@/features/instructor/write/ui/ColorChooseCard"; -import ColorPicker from "@/features/instructor/write/ui/ColorPicker"; +import { + ColorChooseCard, + ColorPicker, + type RgbaColor, + useWriteFormStore, +} from "@/features/instructor/write"; import { cn } from "@/shared/lib/utils/cn"; import Toggle from "@/shared/ui/Toggle"; diff --git a/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx index 1f03235..ffcea58 100644 --- a/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx +++ b/src/widgets/instructor/write/ui/DeadlineChooseSection.tsx @@ -2,8 +2,12 @@ import { useEffect, useRef, useState } from "react"; -import { formatDate, getMinFinalDate, getYesterday } from "@/features/instructor/write/lib/date"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { + formatDate, + getMinFinalDate, + getYesterday, + useWriteFormStore, +} from "@/features/instructor/write"; import DateDropdownBox from "@/shared/ui/dropdown/DateDropdownBox"; import DateDropdownMenu from "@/shared/ui/dropdown/DateDropdownMenu"; diff --git a/src/widgets/instructor/write/ui/DesignConceptSection.tsx b/src/widgets/instructor/write/ui/DesignConceptSection.tsx index 0b7ef04..11e635d 100644 --- a/src/widgets/instructor/write/ui/DesignConceptSection.tsx +++ b/src/widgets/instructor/write/ui/DesignConceptSection.tsx @@ -1,8 +1,11 @@ "use client"; -import { CONCEPT_CATEGORIES, MAX_CONCEPT_SELECT } from "@/features/instructor/write/config/write"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import ConceptKeywordCard from "@/features/instructor/write/ui/ConceptKeywordCard"; +import { + CONCEPT_CATEGORIES, + ConceptKeywordCard, + MAX_CONCEPT_SELECT, + useWriteFormStore, +} from "@/features/instructor/write"; import Chip from "@/shared/ui/Chip"; import TextField from "@/shared/ui/input/TextField"; diff --git a/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx b/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx index ecdf7cd..3ac6edd 100644 --- a/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx +++ b/src/widgets/instructor/write/ui/NecessaryPageChooseSection.tsx @@ -1,7 +1,6 @@ "use client"; -import { PAGE_OPTIONS } from "@/features/instructor/write/config/write"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { PAGE_OPTIONS, useWriteFormStore } from "@/features/instructor/write"; import Chip from "@/shared/ui/Chip"; import TextField from "@/shared/ui/input/TextField"; diff --git a/src/widgets/instructor/write/ui/PlanChooseSection.tsx b/src/widgets/instructor/write/ui/PlanChooseSection.tsx index 986d04f..43840d7 100644 --- a/src/widgets/instructor/write/ui/PlanChooseSection.tsx +++ b/src/widgets/instructor/write/ui/PlanChooseSection.tsx @@ -1,8 +1,6 @@ "use client"; -import type { PlanType } from "@/features/instructor/write/config/write"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import PlanChooseCard from "@/features/instructor/write/ui/PlanChooseCard"; +import { PlanChooseCard, type PlanType, useWriteFormStore } from "@/features/instructor/write"; const PLANS: PlanType[] = ["기본", "플러스", "맥스"]; diff --git a/src/widgets/instructor/write/ui/ReferenceSection.tsx b/src/widgets/instructor/write/ui/ReferenceSection.tsx index 543a68c..2b0c703 100644 --- a/src/widgets/instructor/write/ui/ReferenceSection.tsx +++ b/src/widgets/instructor/write/ui/ReferenceSection.tsx @@ -1,6 +1,6 @@ "use client"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { useWriteFormStore } from "@/features/instructor/write"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; import FileUpload from "@/shared/ui/FileUpload"; diff --git a/src/widgets/instructor/write/ui/SizeSection.tsx b/src/widgets/instructor/write/ui/SizeSection.tsx index cb02c0d..a333890 100644 --- a/src/widgets/instructor/write/ui/SizeSection.tsx +++ b/src/widgets/instructor/write/ui/SizeSection.tsx @@ -1,9 +1,11 @@ "use client"; -import { SIZE_OPTIONS } from "@/features/instructor/write/config/write"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import PaperSizeCard from "@/features/instructor/write/ui/PaperSizeCard"; -import SizeRecommendedCard from "@/features/instructor/write/ui/SizeRecommendedCard"; +import { + PaperSizeCard, + SIZE_OPTIONS, + SizeRecommendedCard, + useWriteFormStore, +} from "@/features/instructor/write"; const SizeSection = () => { const { selectedCategory, selectedSize, setSelectedSize } = useWriteFormStore(); diff --git a/src/widgets/instructor/write/ui/Step1Content.tsx b/src/widgets/instructor/write/ui/Step1Content.tsx index 6ef3819..fcfa311 100644 --- a/src/widgets/instructor/write/ui/Step1Content.tsx +++ b/src/widgets/instructor/write/ui/Step1Content.tsx @@ -1,6 +1,6 @@ "use client"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { useWriteFormStore } from "@/features/instructor/write"; import Button from "@/shared/ui/Button"; import CategorySection from "@/widgets/instructor/write/ui/CategorySection"; import ColorChooseSection from "@/widgets/instructor/write/ui/ColorChooseSection"; diff --git a/src/widgets/instructor/write/ui/Step2Content.tsx b/src/widgets/instructor/write/ui/Step2Content.tsx index eddf6e2..9996eb4 100644 --- a/src/widgets/instructor/write/ui/Step2Content.tsx +++ b/src/widgets/instructor/write/ui/Step2Content.tsx @@ -1,6 +1,6 @@ "use client"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; +import { useWriteFormStore } from "@/features/instructor/write"; import Button from "@/shared/ui/Button"; import AttachFileSection from "@/widgets/instructor/write/ui/AttachFileSection"; import BasicInfoTypingSection from "@/widgets/instructor/write/ui/BasicInfoTypingSection"; diff --git a/src/widgets/instructor/write/ui/Step3Content.tsx b/src/widgets/instructor/write/ui/Step3Content.tsx index be94916..8d58c97 100644 --- a/src/widgets/instructor/write/ui/Step3Content.tsx +++ b/src/widgets/instructor/write/ui/Step3Content.tsx @@ -2,8 +2,8 @@ import { useState } from "react"; -import { useWriteFormStore } from "@/features/instructor/write/model/writeFormStore"; -import PaymentModal from "@/features/instructor/write/ui/PaymentModal/PaymentModal"; +import { useWriteFormStore } from "@/features/instructor/write"; +import { PaymentModal } from "@/features/instructor/write"; import Button from "@/shared/ui/Button"; import DeadlineChooseSection from "@/widgets/instructor/write/ui/DeadlineChooseSection"; import PlanChooseSection from "@/widgets/instructor/write/ui/PlanChooseSection"; From 6b4d5c43a640660a5c6623d9d375575a292fd865 Mon Sep 17 00:00:00 2001 From: YuminPark Date: Sun, 7 Jun 2026 22:56:48 +0900 Subject: [PATCH 6/6] =?UTF-8?q?#25=20[REFACTOR]=20shared=EC=9D=98=20featur?= =?UTF-8?q?es=20=EC=B0=B8=EC=A1=B0=EB=A5=BC=20=EC=97=86=EC=95=A0=EA=B8=B0?= =?UTF-8?q?=20=EC=9C=84=ED=95=B4=20BankDropdown=EC=9D=84=20features/signup?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/signup/designer/step3/page.tsx | 3 +-- src/features/signup/index.ts | 1 + .../ui/dropdown => features/signup/ui}/BankDropdown.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/{shared/ui/dropdown => features/signup/ui}/BankDropdown.tsx (98%) diff --git a/src/app/signup/designer/step3/page.tsx b/src/app/signup/designer/step3/page.tsx index 6fbe268..5005858 100644 --- a/src/app/signup/designer/step3/page.tsx +++ b/src/app/signup/designer/step3/page.tsx @@ -3,11 +3,10 @@ import { useRouter } from "next/navigation"; import { type ChangeEvent, useState } from "react"; -import { type BankCode, type BankOption } from "@/features/signup"; +import { type BankCode, BankDropdown, type BankOption } from "@/features/signup"; import { StepThreeDesignerIcon } from "@/shared/assets/icons"; import { useUploadedFiles } from "@/shared/lib/hooks/useUploadedFiles"; import Button from "@/shared/ui/Button"; -import BankDropdown from "@/shared/ui/dropdown/BankDropdown"; import FileDragAndDrop from "@/shared/ui/FileDragAndDrop"; import FileUpload from "@/shared/ui/FileUpload"; import InputField from "@/shared/ui/input/InputField"; diff --git a/src/features/signup/index.ts b/src/features/signup/index.ts index d1f9c04..023b545 100644 --- a/src/features/signup/index.ts +++ b/src/features/signup/index.ts @@ -1,3 +1,4 @@ export * from "@/features/signup/config/signup"; export { useSignupStep2Form } from "@/features/signup/model/useSignupStep2Form"; +export { default as BankDropdown } from "@/features/signup/ui/BankDropdown"; export { default as UserTypeBtn } from "@/features/signup/ui/UserTypeBtn"; diff --git a/src/shared/ui/dropdown/BankDropdown.tsx b/src/features/signup/ui/BankDropdown.tsx similarity index 98% rename from src/shared/ui/dropdown/BankDropdown.tsx rename to src/features/signup/ui/BankDropdown.tsx index 66139b5..8ec9f9e 100644 --- a/src/shared/ui/dropdown/BankDropdown.tsx +++ b/src/features/signup/ui/BankDropdown.tsx @@ -7,7 +7,7 @@ import { BANK_OPTIONS, type BankCode, type BankOption, -} from "@/features/signup"; +} from "@/features/signup/config/signup"; import { ArrowDownIcon, ArrowUpIcon } from "@/shared/assets/icons"; import { cn } from "@/shared/lib/utils/cn";