diff --git a/src/assets/images/logoImage.png b/src/assets/images/logoImage.png index ee27e78..fbeceb5 100644 Binary files a/src/assets/images/logoImage.png and b/src/assets/images/logoImage.png differ diff --git a/src/pages/collaboration/CollaborationRegister.tsx b/src/pages/collaboration/CollaborationRegister.tsx index 291a3bb..49b2389 100644 --- a/src/pages/collaboration/CollaborationRegister.tsx +++ b/src/pages/collaboration/CollaborationRegister.tsx @@ -81,6 +81,7 @@ const visibilityToEnum: Record = { const MAX_FILE_SIZE = 5 * 1024 * 1024; const BASE_URL = import.meta.env.VITE_BASE_URL; +import { MetaTag } from '../../seoMetaTag'; const OPTIONS = [ '광고 · 홍보', @@ -435,353 +436,363 @@ const CollaborationRegister = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
팀 빌딩
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
-
- -
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + <> + +
+
팀 빌딩
+
+
+
+ +
+
setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))} +
+ )} +
- ) : ( - - )} -
- -
-
-
-
-
-
- 링크 첨부 -
-
+
setLink(e.target.value)} - className={styles.ideaNameInput} + id='fileInput' + type='file' + ref={fileInputRef} + onChange={handleFileUpload} + style={{ display: 'none' }} + accept='image/*' /> + {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
- -
-
- 첨부파일 - (PDF) -
- 내 PC -
-
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - -
- -
-
-
- 모집 분야 및 인원 설정 - (필수) -
- {recruitmentFields.map((field, index) => ( -
- handleFieldChange(index, e.target.value)} - className={styles.recruitmentFieldInput} - /> +
+
{ - const value = e.target.value.replace(/[^0-9]/g, ''); - handleQuantityChange(index, value); - }} - placeholder='모집 인원' - className={styles.recruitmentFieldInput} + placeholder='팀 주제를 입력하세요. (필수)' + className={styles.ideaNameInput} /> - { - setRecruitmentFields((prev) => - prev.filter((_, i) => i !== index), - ); - }}> - 삭제 -
- ))} -
-
-
-
-
- 프로젝트 개최 인원 정보 - (필수) -
- {initialMembers.map((member, index) => ( -
- - handleInitialMemberChange(index, 'identifier', e.target.value) - } - className={styles.recruitmentFieldInput} - /> +
+
+ 링크 첨부 +
+
- handleInitialMemberChange(index, 'domain', e.target.value) - } - className={styles.recruitmentFieldInput} + placeholder='과제 링크를 임베드 하세요.' + value={link} + onChange={(e) => setLink(e.target.value)} + className={styles.ideaNameInput} /> - - { - setInitialMembers((prev) => prev.filter((_, i) => i !== index)); - }}> - 삭제 -
- ))} -
-
-
-
-
- 모집 기한 설정 (필수) - *마감 일자를 입력해주세요 +
+ +
-
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, year: value })); - }} - className={styles.recruitmentDateInput} - placeholder='YYYY' - maxLength={4} - /> -
- -
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, month: value })); - }} - className={styles.recruitmentDateInput} - placeholder='MM' - maxLength={2} - /> +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
- - -
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, day: value })); - }} - className={styles.recruitmentDateInput} - placeholder='DD' - maxLength={2} - /> +
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
- +
-
-
-
- - 공개 여부 +
+
+ 모집 분야 및 인원 설정 (필수) - +
+ {recruitmentFields.map((field, index) => ( +
+ handleFieldChange(index, e.target.value)} + className={styles.recruitmentFieldInput} + /> + { + const value = e.target.value.replace(/[^0-9]/g, ''); + handleQuantityChange(index, value); + }} + placeholder='모집 인원' + className={styles.recruitmentFieldInput} + /> + { + setRecruitmentFields((prev) => + prev.filter((_, i) => i !== index), + ); + }}> + 삭제 + +
+ ))} +
+ +
-
-
-
- - + +
+
+ 프로젝트 개최 인원 정보 + (필수) +
+ {initialMembers.map((member, index) => ( +
+ + handleInitialMemberChange(index, 'identifier', e.target.value) + } + className={styles.recruitmentFieldInput} + /> + + handleInitialMemberChange(index, 'domain', e.target.value) + } + className={styles.recruitmentFieldInput} + /> + { + setInitialMembers((prev) => + prev.filter((_, i) => i !== index), + ); + }}> + 삭제 +
+ ))} +
+
+
-
- {isPortfolioVisible ? : } - - 프로필 공개 +
+
+ 모집 기한 설정 (필수) + *마감 일자를 입력해주세요 +
+
+
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, year: value })); + }} + className={styles.recruitmentDateInput} + placeholder='YYYY' + maxLength={4} + /> +
+ + +
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, month: value })); + }} + className={styles.recruitmentDateInput} + placeholder='MM' + maxLength={2} + /> +
+ + +
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, day: value })); + }} + className={styles.recruitmentDateInput} + placeholder='DD' + maxLength={2} + /> +
+ +
+
+ +
+
+ + 공개 여부 + (필수) - +
+
+
+
+ + + +
+
+ +
+ {isPortfolioVisible ? : } + + 프로필 공개 + + +
-
-
- - +
+ + +
+ setIsModalOpen(false)} + />
- setIsModalOpen(false)} - /> -
+ ); }; diff --git a/src/pages/collaboration/PostDetailWithLink.tsx b/src/pages/collaboration/PostDetailWithLink.tsx index 06951a8..1c10dd8 100644 --- a/src/pages/collaboration/PostDetailWithLink.tsx +++ b/src/pages/collaboration/PostDetailWithLink.tsx @@ -95,6 +95,7 @@ const PostDetailWithLink = () => { description={data?.title} keywords={data?.title} title={`${data.writer.name}님의 글`} + image={data.thumbnailImageUrl} url={`/collaboration/postdetailwithlink/${collaborationId}`} />
diff --git a/src/pages/idea-market/IdeaMarketMain.tsx b/src/pages/idea-market/IdeaMarketMain.tsx index 80852a6..3740b2d 100644 --- a/src/pages/idea-market/IdeaMarketMain.tsx +++ b/src/pages/idea-market/IdeaMarketMain.tsx @@ -14,6 +14,7 @@ import { GetIdeaListRequest } from '../../types/mainType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -214,6 +215,12 @@ const IdeaMarketMain = () => { return ( <> +
아이디어 마켓 diff --git a/src/pages/idea-market/IdeaMarketMarketPlace.tsx b/src/pages/idea-market/IdeaMarketMarketPlace.tsx index 941e4a3..b7757e2 100644 --- a/src/pages/idea-market/IdeaMarketMarketPlace.tsx +++ b/src/pages/idea-market/IdeaMarketMarketPlace.tsx @@ -14,6 +14,7 @@ import { GetIdeaListRequest } from '../../types/mainType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -214,6 +215,12 @@ const IdeaMarketMarketPlace = () => { return ( <> +
아이디어 마켓 diff --git a/src/pages/idea-market/IdeaMarketPayment.tsx b/src/pages/idea-market/IdeaMarketPayment.tsx index cbf4bd8..d98a298 100644 --- a/src/pages/idea-market/IdeaMarketPayment.tsx +++ b/src/pages/idea-market/IdeaMarketPayment.tsx @@ -10,6 +10,7 @@ import { getIdeaMarketPayment } from '../../apis/purchaseAPI'; import { IdeaMarketPurchase } from '../../types/purchaseType'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; +import { MetaTag } from '../../seoMetaTag'; const IdeaMarketPayment = () => { const { ideaId } = useParams<{ ideaId: string }>(); @@ -50,6 +51,13 @@ const IdeaMarketPayment = () => { return ( <> +
diff --git a/src/pages/idea-market/IdeaMarketRegister.tsx b/src/pages/idea-market/IdeaMarketRegister.tsx index a4c6196..75de908 100644 --- a/src/pages/idea-market/IdeaMarketRegister.tsx +++ b/src/pages/idea-market/IdeaMarketRegister.tsx @@ -11,6 +11,7 @@ import CheckButton from '../../assets/icons/checkButton.svg?react'; import DisabledCheckButton from '../../assets/icons/disabledCheckButton.svg?react'; import InfoDropdown from '../../assets/icons/infoDropdown.svg?react'; import { Image } from '../../components/common/image/Image'; +import { MetaTag } from '../../seoMetaTag'; interface IdeaMarketRequestData { title: string; @@ -373,312 +374,322 @@ const IdeaMarketRegister = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
아이디어 등록하기
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
- -
-
- - 페이지 설정 - (필수) - -
-
- - -
- - {pageType === 'Idea Solution' && ( + <> + +
+
아이디어 등록하기
+
+
+
+ +
setShowDetail(!showDetail)}> -
- - Idea Solution이란? - - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 전문가가 제공하는 과제 제작 서비스 - - - {`ex) '블로그 제작을 도와드립니다.' / '로고 제작 서비스를 제공합니다.'`} - + className={styles.select} + onClick={() => setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))}
)}
- )} +
- {pageType === 'Market Place' && ( +
+
+ + 페이지 설정 + (필수) + +
setShowDetail(!showDetail)}> -
- Market Place란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 완성된 과제물과 창의적인 제품을 거래하는 공간 - - - {`ex) '어르신 맞춤형 키오스크 로봇' / '다이어트 식단 관리 앱 개발'`} + className={styles.pageTypeWrapper} + role='group' + aria-labelledby='pageTypeLabel'> + + +
+ + {pageType === 'Idea Solution' && ( +
setShowDetail(!showDetail)}> +
+ + Idea Solution이란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + />
- )} -
- )} -
-
+ {showDetail && ( +
+ + 전문가가 제공하는 과제 제작 서비스 + + + {`ex) '블로그 제작을 도와드립니다.' / '로고 제작 서비스를 제공합니다.'`} + +
+ )} +
+ )} -
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + {pageType === 'Market Place' && ( +
setShowDetail(!showDetail)}> +
+ + Market Place란? + + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 완성된 과제물과 창의적인 제품을 거래하는 공간 + + + {`ex) '어르신 맞춤형 키오스크 로봇' / '다이어트 식단 관리 앱 개발'`} + +
+ )} +
+ )}
- ) : ( - - )} -
+
-
-
+
+ {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
-
-
- 첨부파일 - (PDF) -
- 내 PC +
+
+
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - + +
+ +
- -
-
-
-
- 책정 금액 - (필수) +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
-
- - +
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
+
- {pageType === 'Market Place' && ( -
-
- 수량 설정 +
+
+
+ 책정 금액 (필수)
- -
+ +
+
+ + {pageType === 'Market Place' && ( +
+
+ 수량 설정 + (필수) +
+
+ + +
+ + +
+
+
+ )} +
+ +
+
+ + 공개 여부 + (필수) + +
+
+
+
+
-
- )} -
-
-
- - 공개 여부 - (필수) - -
-
-
-
- - +
+ {isPortfolioVisible ? : } + + 프로필 공개 +
- -
- {isPortfolioVisible ? : } - - 프로필 공개 - - -
-
-
- - +
+ + +
-
+ ); }; diff --git a/src/pages/idea-market/IdeaMarketRegisterComplete.tsx b/src/pages/idea-market/IdeaMarketRegisterComplete.tsx index 4413d53..b973b86 100644 --- a/src/pages/idea-market/IdeaMarketRegisterComplete.tsx +++ b/src/pages/idea-market/IdeaMarketRegisterComplete.tsx @@ -16,28 +16,30 @@ const IdeaMarketRegisterComplete = () => { }; return ( -
-
- + <> +
+
+ +
+

아이디어 등록 완료!

+

+ 아이디어가 브레인픽스에 + 등록되었어요. +

+
+ + +
-

아이디어 등록 완료!

-

- 아이디어가 브레인픽스에 - 등록되었어요. -

-
- - -
-
+ ); }; diff --git a/src/pages/idea-market/IdeaRegisteredPage.tsx b/src/pages/idea-market/IdeaRegisteredPage.tsx index a9153fb..21da9b6 100644 --- a/src/pages/idea-market/IdeaRegisteredPage.tsx +++ b/src/pages/idea-market/IdeaRegisteredPage.tsx @@ -13,6 +13,7 @@ import { getUserIdFromToken } from '../../utils/auth'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; import { Join } from '../join/Join'; +import { MetaTag } from '../../seoMetaTag'; const IdeaRegisteredPage = () => { const { ideaId } = useParams<{ ideaId: string }>(); @@ -62,19 +63,28 @@ const IdeaRegisteredPage = () => { const userId = getUserIdFromToken(); return ( -
- - - + - - -
+
+ + + + + +
+ ); }; diff --git a/src/pages/request-assign/RequestAssignMain.tsx b/src/pages/request-assign/RequestAssignMain.tsx index ef411ae..21eeb1c 100644 --- a/src/pages/request-assign/RequestAssignMain.tsx +++ b/src/pages/request-assign/RequestAssignMain.tsx @@ -17,6 +17,7 @@ import { GetIdeaListRequest } from '../../types/registerType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -217,6 +218,12 @@ const RequestAssignMain = () => { return ( <> +
요청 과제 diff --git a/src/pages/request-assign/RequestAssignRegister.tsx b/src/pages/request-assign/RequestAssignRegister.tsx index 5a68999..a76bab8 100644 --- a/src/pages/request-assign/RequestAssignRegister.tsx +++ b/src/pages/request-assign/RequestAssignRegister.tsx @@ -10,6 +10,7 @@ import CheckButton from '../../assets/icons/checkButton.svg?react'; import DisabledCheckButton from '../../assets/icons/disabledCheckButton.svg?react'; import InfoDropdown from '../../assets/icons/infoDropdown.svg?react'; import { Image } from '../../components/common/image/Image'; +import { MetaTag } from '../../seoMetaTag'; interface RequestAssignRequestData { title: string; @@ -421,381 +422,391 @@ const RequestAssignRegisterNow = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
요청 과제 등록하기
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
- -
-
- - 페이지 설정 - (필수) - -
-
- - -
- - {pageType === 'OPEN_IDEA' && ( + <> + +
+
요청 과제 등록하기
+
+
+
+ +
setShowDetail(!showDetail)}> -
- Open Idea란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 누구나 참여할 수 있는 창의적인 아이디어 과제 - - - {`ex) '새로운 카페 브랜드를 위한 세련되고 기억에 남는 이름을 제안해주세요.' - '환경 보호를 주제로 한 캠페인을 위한 슬로건을 만들어주세요.'`} - + className={styles.select} + onClick={() => setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))}
)}
- )} +
- {pageType === 'TECH_ZONE' && ( +
+
+ + 페이지 설정 + (필수) + +
setShowDetail(!showDetail)}> -
- Tech Zone이란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 전문 지식이 필요한 기술 중심 프로젝트 - - - {` ex) '판매 데이터를 분석하여 다음 분기의 매출 예측 모델을 개발해주세요.' - '간단한 이커머스 웹사이트를 구축하고 결제 시스템을 연동해주세요.'`} - -
- )} + className={styles.pageTypeWrapper} + role='group' + aria-labelledby='pageTypeLabel'> + +
- )} -
-
-
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + {pageType === 'OPEN_IDEA' && ( +
setShowDetail(!showDetail)}> +
+ Open Idea란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 누구나 참여할 수 있는 창의적인 아이디어 과제 + + + {`ex) '새로운 카페 브랜드를 위한 세련되고 기억에 남는 이름을 제안해주세요.' + '환경 보호를 주제로 한 캠페인을 위한 슬로건을 만들어주세요.'`} + +
+ )} +
+ )} + + {pageType === 'TECH_ZONE' && ( +
setShowDetail(!showDetail)}> +
+ Tech Zone이란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 전문 지식이 필요한 기술 중심 프로젝트 + + + {` ex) '판매 데이터를 분석하여 다음 분기의 매출 예측 모델을 개발해주세요.' + '간단한 이커머스 웹사이트를 구축하고 결제 시스템을 연동해주세요.'`} + +
+ )} +
+ )}
- ) : ( - - )} -
+
-
-
+
+ {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
- -
-
- 첨부파일 - (PDF) -
- 내 PC -
-
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - -
- -
-
-
- 모집 기한 설정 (필수) - *마감 일자를 입력해주세요 -
-
-
+
+
{ - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, year: value })); - }} - className={styles.recruitmentDateInput} - placeholder='YYYY' - maxLength={4} + placeholder='과제명이에용..' + className={styles.ideaNameInput} />
- +
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, month: value })); - }} - className={styles.recruitmentDateInput} - placeholder='MM' - maxLength={2} - /> -
- +
+ + +
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, day: value })); - }} - className={styles.recruitmentDateInput} - placeholder='DD' - maxLength={2} - /> +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
+
+
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
- +
-
- {pageType === 'TECH_ZONE' && (
- 모집 분야 및 인원 설정 - (필수) + 모집 기한 설정 (필수) + *마감 일자를 입력해주세요
- {recruitmentFields.map((field) => ( -
+
+
handleFieldChange(field.id, e.target.value)} - className={styles.recruitmentFieldInput} + value={recruitmentDeadline.year} + onChange={(e) => { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, year: value })); + }} + className={styles.recruitmentDateInput} + placeholder='YYYY' + maxLength={4} /> +
+ + +
{ const value = e.target.value.replace(/[^0-9]/g, ''); - handleNumberChange(field.id, parseInt(value) || 0); + setRecruitmentDeadline((prev) => ({ ...prev, month: value })); }} - placeholder='현재 인원 / 모집 인원' - className={styles.recruitmentFieldInput} + className={styles.recruitmentDateInput} + placeholder='MM' + maxLength={2} /> +
+ + +
{ + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, day: value })); + }} + className={styles.recruitmentDateInput} + placeholder='DD' + maxLength={2} /> -
- ))} -
- - +
- )} - -
-
- - 공개 여부 - (필수) - -
-
-
-
- + + {pageType === 'TECH_ZONE' && ( +
+
+ 모집 분야 및 인원 설정 + (필수) +
+ {recruitmentFields.map((field) => ( +
+ handleFieldChange(field.id, e.target.value)} + className={styles.recruitmentFieldInput} + /> + { + const value = e.target.value.replace(/[^0-9]/g, ''); + handleNumberChange(field.id, parseInt(value) || 0); + }} + placeholder='현재 인원 / 모집 인원' + className={styles.recruitmentFieldInput} + /> + + +
+ ))} +
+ )} -
- {isPortfolioVisible ? : } - - 프로필 공개 +
+
+ + 공개 여부 + (필수) - +
+
+
+
+ + + +
+
+ +
+ {isPortfolioVisible ? : } + + 프로필 공개 + + +
-
-
- - +
+ + +
-
+ ); }; diff --git a/src/pages/request-assign/RequestAssignTechZone.tsx b/src/pages/request-assign/RequestAssignTechZone.tsx index 2c26a5a..4eb0af5 100644 --- a/src/pages/request-assign/RequestAssignTechZone.tsx +++ b/src/pages/request-assign/RequestAssignTechZone.tsx @@ -17,6 +17,7 @@ import { GetIdeaListRequest } from '../../types/registerType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -217,6 +218,12 @@ const RequestAssignTechZone = () => { return ( <> +
요청 과제 diff --git a/src/pages/request-assign/RequestRegisteredPage.tsx b/src/pages/request-assign/RequestRegisteredPage.tsx index 03fb6c3..a46e244 100644 --- a/src/pages/request-assign/RequestRegisteredPage.tsx +++ b/src/pages/request-assign/RequestRegisteredPage.tsx @@ -14,6 +14,7 @@ import { getUserIdFromToken } from '../../utils/auth'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; import { Join } from '../join/Join'; +import { MetaTag } from '../../seoMetaTag'; const RequestRegisteredPage = () => { const { taskId } = useParams<{ taskId: string }>(); @@ -65,23 +66,32 @@ const RequestRegisteredPage = () => { const userId = getUserIdFromToken(); return ( -
- - + - - - - -
+
+ + + + + + +
+ ); }; export default RequestRegisteredPage; diff --git a/src/routes.tsx b/src/routes.tsx index 534b81c..b637315 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -195,7 +195,7 @@ export const routes = createBrowserRouter([ element: , }, { - path: 'collaboration/register', + path: '/collaboration/register', element: , }, { diff --git a/src/seoMetaTag.tsx b/src/seoMetaTag.tsx index 467b005..7d31309 100644 --- a/src/seoMetaTag.tsx +++ b/src/seoMetaTag.tsx @@ -50,7 +50,7 @@ export const MetaTag = (data: Props) => { />