From 2c946421b604e1059c1faff190928f8e2b2a3dd0 Mon Sep 17 00:00:00 2001 From: jun-hwan00 <0528klkl@naver.com> Date: Fri, 5 Jun 2026 22:53:23 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat:=20=EC=98=88=EC=8B=9C=EB=A0=88?= =?UTF-8?q?=ED=8F=AC=ED=8A=B8=20=EB=AA=A8=EB=8B=AC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-main/components/DemoReportModal.tsx | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/pages/landing-page/1-main/components/DemoReportModal.tsx diff --git a/src/pages/landing-page/1-main/components/DemoReportModal.tsx b/src/pages/landing-page/1-main/components/DemoReportModal.tsx new file mode 100644 index 0000000..7004bb5 --- /dev/null +++ b/src/pages/landing-page/1-main/components/DemoReportModal.tsx @@ -0,0 +1,81 @@ +import { useState, useEffect } from "react"; +import { useAnalysisStore } from "stores/analysisStore"; +import AnalysisNavBar from "pages/analysis-page/components/AnalysisNavBar"; +import AnalsisSummary from "pages/analysis-page/components/AnalsisSummary"; +import AnalysisDiagnosis from "pages/analysis-page/components/AnalysisDiagnosis"; +import ImproveStrategy from "pages/analysis-page/components/ImproveStrategy"; +import Apply from "pages/analysis-page/components/Apply"; +import { DEMO_FINAL_STATE, DEMO_PASS_SCORE } from "./demoData"; + +const SECTION_IDS = ["분석 요약", "역량 진단", "개선 전략", "적용 · 재평가"]; +const SECTION_COMPONENTS = { + "분석 요약": AnalsisSummary, + "역량 진단": AnalysisDiagnosis, + "개선 전략": ImproveStrategy, + "적용 · 재평가": Apply, +}; + +interface DemoReportModalProps { + onClose: () => void; +} + +export default function DemoReportModal({ onClose }: DemoReportModalProps) { + const [activeNav, setActiveNav] = useState(SECTION_IDS[0]); + const { setFinalData, setPassScoreData, reset } = useAnalysisStore(); + + useEffect(() => { + setFinalData(DEMO_FINAL_STATE); + setPassScoreData(DEMO_PASS_SCORE); + return () => { + reset(); + }; + }, []); + + const handleNext = () => { + const idx = SECTION_IDS.indexOf(activeNav); + if (idx < SECTION_IDS.length - 1) setActiveNav(SECTION_IDS[idx + 1]); + }; + + const handlePrev = () => { + const idx = SECTION_IDS.indexOf(activeNav); + if (idx > 0) setActiveNav(SECTION_IDS[idx - 1]); + }; + + const C = SECTION_COMPONENTS[activeNav as keyof typeof SECTION_COMPONENTS]; + + return ( +
전체 내용을 한 번에 작성·붙여넣기하여 입력할 수 있습니다. + *문항이 많을 경우 분리되는 데 시간이 걸릴 수 있습니다.