diff --git a/public/images/landing/landing_expert1.png b/public/images/landing/landing_expert1.png index 5abf570..9d5623f 100644 Binary files a/public/images/landing/landing_expert1.png and b/public/images/landing/landing_expert1.png differ diff --git a/public/images/landing/landing_expert2.png b/public/images/landing/landing_expert2.png index 0e9ee14..7d2f7f2 100644 Binary files a/public/images/landing/landing_expert2.png and b/public/images/landing/landing_expert2.png differ diff --git a/public/images/landing/landing_expert3.png b/public/images/landing/landing_expert3.png index 2b70cbd..67f7a2c 100644 Binary files a/public/images/landing/landing_expert3.png and b/public/images/landing/landing_expert3.png differ diff --git a/src/app/_components/landing/Landing.tsx b/src/app/_components/landing/Landing.tsx index 56a2136..80e176c 100644 --- a/src/app/_components/landing/Landing.tsx +++ b/src/app/_components/landing/Landing.tsx @@ -3,13 +3,21 @@ import Image from 'next/image'; import useStickyCta from '@/hooks/useStickyCta'; import StickyBar from './StickyBar'; import { useRouter } from 'next/navigation'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import UploadReportModal from '../common/UploadReportModal'; +import LoginModal from '../common/LoginModal'; +import { useAuthStore } from '@/store/auth.store'; const Landing = () => { const { ctaRef, showSticky } = useStickyCta(); const router = useRouter(); const [isModalOpen, setIsModalOpen] = useState(false); + const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); + const { isAuthenticated, checkAuth } = useAuthStore(); + + useEffect(() => { + checkAuth(); + }, [checkAuth]); return ( <> @@ -23,13 +31,25 @@ const Landing = () => {
@@ -52,6 +72,11 @@ const Landing = () => { setIsModalOpen(false)} /> )} + setIsLoginModalOpen(false)} + /> + ); diff --git a/src/app/_components/landing/LandingPaySection.tsx b/src/app/_components/landing/LandingPaySection.tsx index 032eac7..7aa9ec8 100644 --- a/src/app/_components/landing/LandingPaySection.tsx +++ b/src/app/_components/landing/LandingPaySection.tsx @@ -1,70 +1,128 @@ 'use client'; import Check from '@/assets/icons/big_check.svg'; +import BCheck from '@/assets/icons/black_check.svg'; import RightIcon from '@/assets/icons/white_right.svg'; +import Polygon from '@/assets/icons/polygon.svg'; import { useRouter } from 'next/navigation'; +import { useState, useEffect } from 'react'; +import LoginModal from '../common/LoginModal'; +import { useAuthStore } from '@/store/auth.store'; const LandingPaySection = () => { const router = useRouter(); + const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); + const { isAuthenticated, checkAuth } = useAuthStore(); + + useEffect(() => { + checkAuth(); + }, [checkAuth]); return ( -
-
- - - - - - - 300,000원{' '} - - / 시간당 비대면 멘토링 - - +
+
+ + 멘토링 비용{' '} + + + + 30만 원짜리 멘토링, 80% 비용 + 절감 + + + + 시간당 30만원이던 멘토링을 비대면 구조로 전환해 비용을 합리적으로 + 만들었어요.
-
-
-

Lite 이용권의 기능

+
+
+
+

+ 시간당 대면 멘토링 +

+
+ +
+

+ 300,000원 + + / 1회 + +

+ +
+ +

+ 전문가 비대면 멘토링 1회 +

+
+ +
+
  • 사업계획서 PDF/텍스트 기반 심층 검토
  • +
  • 강·약점 구체 코멘트
  • +
  • AI 리포트 무제한 포함
  • +
    +
    + -
    -

    - 49,000원{' '} - - / 시간당 비대면 멘토링 - -

    - -
    - -

    전문가 비대면 멘토링 1회

    +
    +
    +

    + 스타라이트의 비대면 멘토링 +

    -
    -
  • 사업계획서 PDF/텍스트 기반 심층 검토
  • -
  • 강·약점 구체 코멘트
  • -
  • AI 리포트 무제한 포함
  • +
    +

    + 0원 + + / 1회 49,000원 + +

    + +
    + +

    전문가 비대면 멘토링 1회

    +
    + +
    +
  • 사업계획서 PDF/텍스트 기반 심층 검토
  • +
  • 강·약점 구체 코멘트
  • +
  • AI 리포트 무제한 포함
  • +
    +
    - - -
    -

    - *전문가 대면 멘토링 평균 약 30만 원 수준에서 구조 개선을 통해 최대 - 약 4.9만 원대까지 절감했습니다. -

    -

    - *전문가 대면 멘토링 평균 비용은 1시간 기준 일반적인 시장 시세를 - 참고하였습니다. -

    -
    + + + setIsLoginModalOpen(false)} + /> + +
    +

    + *전문가 대면 멘토링 평균 약 30만 원 수준에서 구조 개선을 통해 최대 약 + 4.9만 원대까지 절감했습니다. +

    +

    + *전문가 대면 멘토링 평균 비용은 1시간 기준 일반적인 시장 시세를 + 참고하였습니다. +

    ); diff --git a/src/app/_components/landing/LandingRelation.tsx b/src/app/_components/landing/LandingRelation.tsx index 1372aec..b431e85 100644 --- a/src/app/_components/landing/LandingRelation.tsx +++ b/src/app/_components/landing/LandingRelation.tsx @@ -39,6 +39,15 @@ const LandingRelation = () => { return (
    + 랜딩 관련기관 +
    관련 기관 @@ -70,15 +79,6 @@ const LandingRelation = () => { ))}
    - - 랜딩 관련기관
    ); }; diff --git a/src/app/_components/landing/StickyBar.tsx b/src/app/_components/landing/StickyBar.tsx index e9f239d..5e15984 100644 --- a/src/app/_components/landing/StickyBar.tsx +++ b/src/app/_components/landing/StickyBar.tsx @@ -1,8 +1,10 @@ 'use client'; import { useRouter } from 'next/navigation'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import UploadReportModal from '../common/UploadReportModal'; +import LoginModal from '../common/LoginModal'; +import { useAuthStore } from '@/store/auth.store'; interface StickyBarProps { show: boolean; @@ -11,6 +13,12 @@ interface StickyBarProps { const StickyBar = ({ show }: StickyBarProps) => { const router = useRouter(); const [isModalOpen, setIsModalOpen] = useState(false); + const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); + const { isAuthenticated, checkAuth } = useAuthStore(); + + useEffect(() => { + checkAuth(); + }, [checkAuth]); return ( <>
    {
    @@ -41,6 +61,7 @@ const StickyBar = ({ show }: StickyBarProps) => { {isModalOpen && ( setIsModalOpen(false)} /> )} + setIsLoginModalOpen(false)} /> ); }; diff --git a/src/app/expert/detail/components/ExpertDetailSidebar.tsx b/src/app/expert/detail/components/ExpertDetailSidebar.tsx index 09c1223..eb5bb3e 100644 --- a/src/app/expert/detail/components/ExpertDetailSidebar.tsx +++ b/src/app/expert/detail/components/ExpertDetailSidebar.tsx @@ -50,7 +50,7 @@ const ExpertDetailSidebar = ({ expert }: ExpertDetailSidebarProps) => { const ButtonIcon = shouldShowCreateButton ? WhitePlus : hasRequested - ? GrayPlus + ? GrayCheck : disabled && !isSelectedPlanOver70 ? GrayCheck : disabled diff --git a/src/app/mypage/components/MyAccount.tsx b/src/app/mypage/components/MyAccount.tsx index 65dc11e..47bdd1d 100644 --- a/src/app/mypage/components/MyAccount.tsx +++ b/src/app/mypage/components/MyAccount.tsx @@ -1,18 +1,15 @@ 'use client'; import Image from 'next/image'; -import React, { useState } from 'react'; -import PayHistoryModal from './PayHistoryModal'; import { useUserStore } from '@/store/user.store'; import Naver from '@/assets/icons/naver_profile.svg'; import KaKao from '@/assets/icons/kakao_profile.svg'; const MyAccount = () => { - const [isModal, setIsModal] = useState(false); const { user } = useUserStore(); return ( -
    -
    +
    +
    내 계정
    @@ -49,29 +46,6 @@ const MyAccount = () => {
    - -
    -
    -
    요금제 관리
    - -
    - -
    - -
    -
    Lite 요금제
    -
    - 잔여횟수 총 1/5회 -
    -
    -
    - - {isModal && setIsModal(false)} />}
    ); }; diff --git a/src/assets/icons/black_check.svg b/src/assets/icons/black_check.svg new file mode 100644 index 0000000..c006b30 --- /dev/null +++ b/src/assets/icons/black_check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/polygon.svg b/src/assets/icons/polygon.svg new file mode 100644 index 0000000..0e62b09 --- /dev/null +++ b/src/assets/icons/polygon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file