diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..f7e0f6b9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,43 @@ +name: Build and Vercel Preview Deployment on Main +permissions: + contents: write + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + VERCEL_ENV: preview + +on: + push: + branches: + - main + + workflow_dispatch: + +jobs: + generate_tag: + uses: ./.github/workflows/headver-tagging.yml + with: {} + + Deploy-Preview: + runs-on: ubuntu-latest + needs: generate_tag + env: + VERSION_TAG: ${{ needs.generate_tag.outputs.version }} + steps: + - uses: actions/checkout@v3 + + - name: Install Vercel CLI + run: npm install --global vercel@latest + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=${{ env.VERCEL_ENV }} --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build --yes --target=${{ env.VERCEL_ENV }} --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts to Vercel + run: vercel deploy --prebuilt --target=${{ env.VERCEL_ENV }} --token=${{ secrets.VERCEL_TOKEN }} + + - name: Output Tag Version + run: echo "Deployment completed for version $VERSION_TAG" diff --git a/.github/workflows/headver-tagging.yml b/.github/workflows/headver-tagging.yml new file mode 100644 index 00000000..bb451a2c --- /dev/null +++ b/.github/workflows/headver-tagging.yml @@ -0,0 +1,63 @@ +name: Generate HeadVer Tag +permissions: + contents: write + +on: + workflow_call: + outputs: + version: + description: "Generated HeadVer version" + value: ${{ jobs.generate_tag.outputs.version }} + +jobs: + generate_tag: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.compute_version.outputs.version }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Compute HeadVer Tag + id: compute_version + run: | + # headver.json에서 head 버전 가져오기 + if [ ! -f headver.json ]; then + echo "headver.json 파일이 없습니다. 기본 head=0을 사용합니다." + HEAD=0 + else + HEAD=$(jq -r '.head' headver.json) + fi + echo "Head number: $HEAD" + + # 현재 연도와 주차(yyww) 가져오기 + YYWW=$(date +"%y%V") + echo "YearWeek: $YYWW" + + # 최신 태그 검색 + LAST_BUILD=$(git tag --list "v*.*.*" | awk -F. '{print $3}' | sort -n | tail -n 1) + + if [ -z "$LAST_BUILD" ]; then + BUILD=1 + else + BUILD=$((LAST_BUILD + 1)) + fi + + echo "Build number: $BUILD" + + # 최종 태그 생성 + VERSION="${HEAD}.${YYWW}.${BUILD}" + echo "Computed version: $VERSION" + + # GitHub Actions 환경 변수로 설정 + echo "version=$VERSION" >> $GITHUB_ENV + echo "::set-output name=version::$VERSION" + + - name: Create Tag + run: | + TAG="v${{ steps.compute_version.outputs.version }}" + echo "Creating tag: $TAG" + + git tag $TAG + git push origin $TAG diff --git a/headver.json b/headver.json new file mode 100644 index 00000000..3f54f65a --- /dev/null +++ b/headver.json @@ -0,0 +1,3 @@ +{ + "head": 22 +} diff --git a/package-lock.json b/package-lock.json index 6851e9e6..6302e488 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "react": "^18", "react-dom": "^18", "react-linkify": "^1.0.0-alpha", - "react-slick": "^0.30.1", "slick-carousel": "^1.8.1" }, "devDependencies": { @@ -6266,12 +6265,6 @@ "dev": true, "license": "ISC" }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", - "license": "MIT" - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -6990,12 +6983,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquire.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", - "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==", - "license": "MIT" - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -9934,15 +9921,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", - "license": "MIT", - "dependencies": { - "string-convert": "^0.2.0" - } - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -10215,6 +10193,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.includes": { @@ -11734,23 +11713,6 @@ "tlds": "^1.199.0" } }, - "node_modules/react-slick": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.30.2.tgz", - "integrity": "sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg==", - "license": "MIT", - "dependencies": { - "classnames": "^2.2.5", - "enquire.js": "^2.1.6", - "json2mq": "^0.2.0", - "lodash.debounce": "^4.0.8", - "resize-observer-polyfill": "^1.5.0" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -11926,12 +11888,6 @@ "node": ">=0.10.0" } }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "license": "MIT" - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -12427,12 +12383,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", - "license": "MIT" - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", diff --git a/package.json b/package.json index eb797d17..fa762a57 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "react": "^18", "react-dom": "^18", "react-linkify": "^1.0.0-alpha", - "react-slick": "^0.30.1", "slick-carousel": "^1.8.1" }, "devDependencies": { diff --git a/src/app/application/apply/LanguageStep.tsx b/src/app/application/apply/LanguageStep.tsx index d718aeff..842fe2ea 100644 --- a/src/app/application/apply/LanguageStep.tsx +++ b/src/app/application/apply/LanguageStep.tsx @@ -1,7 +1,7 @@ import BlockBtn from "@/components/button/BlockBtn"; import Tab from "@/components/ui/Tab"; -import { LanguageTestScore } from "@/types/score"; +import { LanguageTestScore, languageTestMapping } from "@/types/score"; import ScoreCard from "@/app/score/ScoreCard"; @@ -31,7 +31,7 @@ const LanguageStep = ({ > { const [curGpaScore, setCurGpaScore] = useState(null); const [curUniversityList, setCurUniversityList] = useState([]); + const [isSubmitting, setIsSubmitting] = useState(false); + useEffect(() => { const fetchAll = async () => { try { @@ -43,7 +45,21 @@ const ApplyPage = () => { (score: LanguageTestScore) => score.verifyStatus === "APPROVED", ), ); - setUniversityList(universityRes.data); + + // 대학명을 지역/나라, 대학명 가나다 순으로 정렬합니다 + const sortedUniversityList = [...universityRes.data].sort((a, b) => { + // 1) region 비교 + const regionCompare = a.region.localeCompare(b.region); + if (regionCompare !== 0) return regionCompare; + + // 2) country 비교 + const countryCompare = a.country.localeCompare(b.country); + if (countryCompare !== 0) return countryCompare; + + // 3) 같은 region, country라면 대학명을 비교(가나다 순) + return a.koreanName.localeCompare(b.koreanName); + }); + setUniversityList(sortedUniversityList); } catch (err) { if (err.response) { console.error("Axios response error", err.response); @@ -83,6 +99,7 @@ const ApplyPage = () => { return; } + setIsSubmitting(true); // TODO: 현재 임시 submit 처리, 이후에 통합 처리 추가 try { await postApplicationApi({ gpaScoreId: curGpaScore, @@ -96,6 +113,8 @@ const ApplyPage = () => { setStep(99); } catch (err) { alert(err.response.data.message); + } finally { + setIsSubmitting(false); } }; diff --git a/src/app/login/ImageCarousel.tsx b/src/app/login/ImageCarousel.tsx deleted file mode 100644 index 83430ee2..00000000 --- a/src/app/login/ImageCarousel.tsx +++ /dev/null @@ -1,70 +0,0 @@ -"use client"; - -import Image from "next/image"; -import Slider from "react-slick"; - -import "slick-carousel/slick/slick-theme.css"; -import "slick-carousel/slick/slick.css"; - -import styles from "./image-carousel.module.css"; - -// DEPRECATED: 해당 컴포넌트는 더 이상 사용되지 않습니다. 삭제 예정 - -const ImageCarousel = () => { - const settings = { - dots: true, - arrows: false, - infinite: true, - speed: 500, - slidesToShow: 1, - slidesToScroll: 1, - }; - - return ( - // eslint-disable-next-line react/jsx-props-no-spreading - -
-
- onboarding-1 -
-
- 교환학생 맞춤 컨설팅부터 -
- 해외에서 친구 찾기까지! -
-
-
-
- onboarding-2 -
-
- 어떤 대학교를 갈 지 -
- 결정하지 못했다면, -
-
-
-
- onboarding-3 -
-
- 파견교에 대한 -
- 생생한 정보는 멘토에게 -
-
-
-
- onboarding-4 -
-
- 커뮤니티를 통해 -
- 유학생 친구 만나기! -
-
-
- ); -}; - -export default ImageCarousel; diff --git a/src/app/login/image-carousel.module.css b/src/app/login/image-carousel.module.css deleted file mode 100644 index 0edeab88..00000000 --- a/src/app/login/image-carousel.module.css +++ /dev/null @@ -1,41 +0,0 @@ -.onboardingImages { - margin-top: -56px; -} - -.onboardingImages .item { - position: relative; -} - -.onboardingImages .imageWrapper::after { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(211, 211, 211, 0.1); -} -.onboardingImages img { - /* width: 100%; */ - /* height: 439px; */ - max-width: 600px; - height: 72vh; - object-fit: cover; -} - -.onboardingImages .text { - position: absolute; - width: 100%; - /* top: 338px; */ - bottom: 53px; - left: 50%; - transform: translate(-50%, 0); - - color: #fff; - text-align: center; - font-family: Pretendard; - font-size: 24px; - font-style: normal; - font-weight: 600; - line-height: 150%; /* 36px */ -} diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index 443f63b0..52197003 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,13 +1,11 @@ -import Link from "next/link"; +import NotFound from "@/components/loading/NotFound"; -const NotFound = () => { +const NotFoundPage = () => { return (
-

Not Found

-

Could not find requested resource

- Return Home +
); }; -export default NotFound; +export default NotFoundPage; diff --git a/src/app/score/ScoreScreen.tsx b/src/app/score/ScoreScreen.tsx index 9354fc55..fa486ad4 100644 --- a/src/app/score/ScoreScreen.tsx +++ b/src/app/score/ScoreScreen.tsx @@ -6,18 +6,17 @@ import { useEffect, useState } from "react"; import { getMyGpaScoreApi, getMyLanguageTestScoreApi } from "@/services/score"; import BlockBtn from "@/components/button/BlockBtn"; -import Tab from "@/components/ui/Tab"; +import Tab from "@/components/ui/tab"; import ScoreCard from "./ScoreCard"; -import { GpaScore, LanguageTestScore } from "@/types/score"; +import { GpaScore, LanguageTestScore, languageTestMapping } from "@/types/score"; const ScoreScreen = () => { const router = useRouter(); const [curTab, setCurTab] = useState<"공인어학" | "학점">("공인어학"); const [gpaScoreList, setGpaScoreList] = useState([]); const [languageTestScoreList, setLanguageTestScoreList] = useState([]); - const [curUniversityList, setCurUniversityList] = useState([]); useEffect(() => { const fetchGpaScoreList = async () => { @@ -71,7 +70,7 @@ const ScoreScreen = () => { languageTestScoreList.map((score) => ( void; - textRef: React.RefObject; - searchHandler: (e: React.FormEvent) => void; -}; - -const ScoreSearchBar = ({ onClick, textRef, searchHandler }: ScoreSearchBarProps) => ( - // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -
- - -
-); - -export default ScoreSearchBar; diff --git a/src/app/score/ScoreSearchField.tsx b/src/app/score/ScoreSearchField.tsx deleted file mode 100644 index 303278da..00000000 --- a/src/app/score/ScoreSearchField.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import styles from "./score-search-field.module.css"; - -type ScoreSearchFieldProps = { - keyWords: string[]; - setKeyWord: (keyWord: string) => void; -}; - -const ScoreSearchField = ({ keyWords, setKeyWord }: ScoreSearchFieldProps) => ( -
-
인기 검색
-
- {keyWords.map((keyWord) => ( - - ))} -
-
-); - -export default ScoreSearchField; diff --git a/src/app/score/ScoreSheets.tsx b/src/app/score/ScoreSheets.tsx deleted file mode 100644 index fba71ad1..00000000 --- a/src/app/score/ScoreSheets.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import Link from "next/link"; -import { useState } from "react"; - -import styles from "./score-sheets.module.css"; - -import { LANGUAGE_TEST } from "@/constants/application"; -import { ScoreSheet as ScoreSheetType } from "@/types/application"; - -import { IconExpandMoreFilled } from "@/public/svgs/community"; -import { IconEditFilled } from "@/public/svgs/score"; - -const ScoreSheets = ({ scoreSheets }: { scoreSheets: ScoreSheetType[] }) => ( -
- {scoreSheets.map((choice) => ( - - ))} -
-); - -export default ScoreSheets; - -const ScoreSheet = ({ scoreSheet }: { scoreSheet: ScoreSheetType }) => { - const [tableOpened, setTableOpened] = useState(false); - return ( - - - - - - - - {tableOpened && ( - - {scoreSheet.applicants.map((applicant) => ( - - - - - - - - ))} - - )} -
- {scoreSheet.koreanName} ({scoreSheet.applicants.length}/{scoreSheet.studentCapacity}) - - -
{applicant.nicknameForApply}{applicant.gpa.toFixed(2)}{LANGUAGE_TEST[applicant.testType].toUpperCase()}{applicant.testScore} - {applicant.isMine && ( - - - - )} -
- ); -}; diff --git a/src/app/score/legacy-page.tsx b/src/app/score/legacy-page.tsx deleted file mode 100644 index 2e9de833..00000000 --- a/src/app/score/legacy-page.tsx +++ /dev/null @@ -1,201 +0,0 @@ -"use client"; - -import { useRouter } from "next/navigation"; -import { useEffect, useRef, useState } from "react"; - -import { getApplicationListApi, getMyApplicationStatusApi } from "@/services/application"; - -import TopDetailNavigation from "@/components/layout/TopDetailNavigation"; -import CloudSpinnerPage from "@/components/loading/CloudSpinnerPage"; -import NotFound from "@/components/loading/NotFound"; -import CertFinalScreen from "@/components/score/register/cert-final-screen"; -import CollegeFinalScreen from "@/components/score/register/college-final-screen"; -import ButtonTab from "@/components/ui/ButtonTab"; -import Tab from "@/components/ui/Tab"; - -import ScoreSearchBar from "./ScoreSearchBar"; -import ScoreSearchField from "./ScoreSearchField"; -import ScoreSheets from "./ScoreSheets"; - -import { REGIONS_KO } from "@/constants/university"; -import { ApplicationListResponse } from "@/types/application"; -import { RegionKo } from "@/types/university"; - -const PREFERENCE_CHOICE: string[] = ["1순위", "2순위", "3순위"]; - -const ScorePage = () => { - return ( - - - - ); - const router = useRouter(); - const [loading, setLoading] = useState(true); - const [status, setStatus] = useState(""); - // 검색 - const [searchActive, setSearchActive] = useState(false); // 검색 창 활성화 여부 - const searchRef = useRef(null); - // 점수 데이터 - const [scoreData, setScoreData] = useState({ - firstChoice: [], - secondChoice: [], - thirdChoice: [], - }); - const [filteredScoreData, setFilteredScoreData] = useState({ - firstChoice: [], - secondChoice: [], - thirdChoice: [], - }); - const [preference, setPreference] = useState<"1순위" | "2순위" | "3순위">("1순위"); - const [filter, setFilter] = useState(""); - - useEffect(() => { - const fetchData = async () => { - try { - const statusResponse = await getMyApplicationStatusApi(); - - const statusData = statusResponse.data; - setStatus(statusData.status); - - if (statusData.status === "SUBMITTED_APPROVED") { - const scoreResponse = await getApplicationListApi(); - - const scoreResponseData = scoreResponse.data; - scoreResponseData.firstChoice.sort((a, b) => b.applicants.length - a.applicants.length); - scoreResponseData.secondChoice.sort((a, b) => b.applicants.length - a.applicants.length); - scoreResponseData.thirdChoice.sort((a, b) => b.applicants.length - a.applicants.length); - setScoreData(scoreResponseData); - setFilteredScoreData(scoreResponseData); - } - } catch (err) { - if (err.response) { - console.error("Axios response error", err.response); - if (err.response.status === 401 || err.response.status === 403) { - alert("로그인이 필요합니다"); - document.location.href = "/login"; - } else { - alert(err.response.data?.message); - } - } else { - console.error("Error", err.message); - alert(err.message); - } - } finally { - setLoading(false); - } - }; - fetchData(); - }, []); - - const handleSearch = (event: React.FormEvent) => { - event.preventDefault(); - const keyWord = searchRef.current?.value || ""; - setFilter(""); - setFilteredScoreData( - keyWord - ? { - firstChoice: scoreData.firstChoice.filter((sheet) => sheet.koreanName.includes(keyWord)), - secondChoice: scoreData.secondChoice.filter((sheet) => sheet.koreanName.includes(keyWord)), - thirdChoice: scoreData.thirdChoice.filter((sheet) => sheet.koreanName.includes(keyWord)), - } - : scoreData, - ); - setSearchActive(false); - }; - - const handleSearchField = (keyWord: string) => { - if (searchRef.current) { - searchRef.current.value = keyWord; - } - }; - - const handleSearchClick = () => { - setSearchActive(true); - }; - - const hotKeyWords = ["RMIT", "오스트라바", "칼스루에", "그라츠", "추오", "프라하", "보라스", "빈", "메모리얼"]; - - useEffect(() => { - if (filter) { - setFilteredScoreData({ - firstChoice: scoreData.firstChoice.filter((sheet) => sheet.region === filter), - secondChoice: scoreData.secondChoice.filter((sheet) => sheet.region === filter), - thirdChoice: scoreData.thirdChoice.filter((sheet) => sheet.region === filter), - }); - } else { - setFilteredScoreData(scoreData); - } - }, [filter, scoreData]); - - if (loading) { - return ; - } - - if (status === "NO_AUTHORIZATION") { - return
점수 공유 현황을 보려면 로그인이 필요합니다.
; - } - if (status === "NOT_SUBMITTED") { - router.push("/score/register"); - return
점수 공유 현황을 보려면 점수를 제출해주세요.
; - } - if (status === "COLLEGE_SUBMITTED") { - return
점수 공유 현황을 보려면 점수를 인증해야 합니다.
; - } - if (status === "SCORE_SUBMITTED") { - return ( -
- -
- ); - } - if (status === "SUBMITTED_PENDING") { - return ( -
- -
- ); - } - if (status === "SUBMITTED_REJECTED") { - return
점수 인증이 거절되었습니다. 점수 공유 현황을 확인을 위해 다시 제출해 주세요.
; - } - - const getScoreSheet = () => { - if (preference === "1순위") { - return filteredScoreData.firstChoice; - } - if (preference === "2순위") { - return filteredScoreData.secondChoice; - } - if (preference === "3순위") { - return filteredScoreData.thirdChoice; - } - return []; - }; - - if (searchActive) { - return ( - <> - - {}} /> - { - handleSearchField(e); - }} - /> - - ); - } - - return ( - <> - - - - - - - ); -}; - -export default ScorePage; diff --git a/src/components/score/register/cert-final-screen.tsx b/src/components/score/register/cert-final-screen.tsx deleted file mode 100644 index 1c87148e..00000000 --- a/src/components/score/register/cert-final-screen.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import Image from "next/image"; -import { useRouter } from "next/router"; - -import BlockBtn from "@/components/button/block-btn"; - -import styles from "./form.module.css"; - -const CertFinalScreen = () => { - const router = useRouter(); - return ( -
-
- 지원 완료 -

제출 완료 !

-

48시간 이내에 성적 인증이 완료됩니다. 파견 희망 대학을 지원해주세요.

-
-
- router.push("/score")}>성적 공유 현황 확인하기 - router.push("/score/college-register")} backgroundColor="var(--primary-2, #091F5B)"> - 학교 지원하러 가기 - -
-
- ); -}; - -export default CertFinalScreen; diff --git a/src/components/score/register/college-final-screen.tsx b/src/components/score/register/college-final-screen.tsx deleted file mode 100644 index 103b7100..00000000 --- a/src/components/score/register/college-final-screen.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import Image from "next/image"; -import { useRouter } from "next/router"; - -import BlockBtn from "@/components/button/block-btn"; - -import styles from "./form.module.css"; - -const CollegeFinalScreen = () => { - const router = useRouter(); - return ( -
-
- 지원 완료 -

지원 완료 !

-

48시간 이내에 성적 인증이 완료됩니다.

-
-
- router.push("/score")}>성적 공유 현황 확인하기 - router.push("/")} backgroundColor="var(--primary-2, #091F5B)"> - 학교 지원 완료 - -
-
- ); -}; - -export default CollegeFinalScreen; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx deleted file mode 100644 index e70a58e4..00000000 --- a/src/pages/_app.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { AppProps } from "next/app"; -import { Inter } from "next/font/google"; -import Head from "next/head"; -import Script from "next/script"; - -import Layout from "@/components/layout/Layout"; - -import { AlertProvider } from "@/context/AlertContext"; -import { LayoutProvider } from "@/context/LayoutContext"; -import "@/styles/globals.css"; -import { GoogleAnalytics } from "@next/third-parties/google"; - -// eslint-disable-next-line -const inter = Inter({ subsets: ["latin"] }); - -declare global { - interface Window { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - Kakao: any; - } -} - -const App = ({ Component, pageProps }: AppProps) => { - function kakaoInit() { - // 페이지가 로드되면 실행 - } - return ( - - <> - - - - - - - - - - 솔리드 커넥션 - - - - {/* eslint-disable-next-line react/jsx-no-bind */} -